步骤 1:准备应用程序 - AWS 弹性中心

本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。

步骤 1:准备应用程序

要准备应用程序,必须先创建应用程序,分配弹性策略,然后从输入源导入应用程序资源。有关准备应用程序所用的 AWS Resilience Hub API 的更多信息,请参阅以下主题:

创建应用程序

要在 AWS Resilience Hub 中创建新应用程序,必须调用 CreateApp API 并提供唯一的应用程序名称。相关此 API 的更多信息,请参阅 https://docs.aws.amazon.com/resilience-hub/latest/APIReference/API_CreateApp.html

以下示例演示了如何在 AWS Resilience Hub 中使用 CreateApp API 创建新应用程序 newApp

请求

aws resiliencehub create-app --name newApp

响应

{ "app": { "appArn": "<App_ARN>", "name": "newApp", "creationTime": "2022-10-26T19:48:00.434000+03:00", "status": "Active", "complianceStatus": "NotAssessed", "resiliencyScore": 0.0, "tags": {}, "assessmentSchedule": "Disabled" } }

创建弹性策略

创建应用程序后,必须创建弹性策略,以便能够使用 CreateResiliencyPolicy API 了解应用程序的弹性状态。相关此 API 的更多信息,请参阅 https://docs.aws.amazon.com/resilience-hub/latest/APIReference/API_CreateResiliencyPolicy.html

以下示例演示了如何在 AWS Resilience Hub 中使用 CreateResiliencyPolicy API 为您的应用程序创建 newPolicy

请求

aws resiliencehub create-resiliency-policy \ --policy-name newPolicy --tier NonCritical \ --policy '{"AZ": {"rtoInSecs": 172800,"rpoInSecs": 86400}, \ "Hardware": {"rtoInSecs": 172800,"rpoInSecs": 86400}, \ "Software": {"rtoInSecs": 172800,"rpoInSecs": 86400}}'

响应

{ "policy": { "policyArn": "<Policy_ARN>", "policyName": "newPolicy", "policyDescription": "", "dataLocationConstraint": "AnyLocation", "tier": "NonCritical", "estimatedCostTier": "L1", "policy": { "AZ": { "rtoInSecs": 172800, "rpoInSecs": 86400 }, "Hardware": { "rtoInSecs": 172800, "rpoInSecs": 86400 }, "Software": { "rtoInSecs": 172800, "rpoInSecs": 86400 } }, "creationTime": "2022-10-26T20:48:05.946000+03:00", "tags": {} } }

从输入源导入资源并监控导入状态

AWS Resilience Hub 提供了以下 API 以将资源导入您的应用程序:

以下示例演示了如何在 AWS Resilience Hub 中使用 ImportResourcesToDraftAppVersion API 将资源导入应用程序。

请求

aws resiliencehub import-resources-to-draft-app-version \ --app-arn <App_ARN> \ --terraform-sources '[{"s3StateFileUrl": <S3_URI>}]'

响应

{ "appArn": "<App_ARN>", "appVersion": "draft", "sourceArns": [], "status": "Pending", "terraformSources": [ { "s3StateFileUrl": <S3_URI> } ] }

以下示例演示了如何在 AWS Resilience Hub 中使用 CreateAppVersionResource API 手动向应用程序添加资源。

请求

aws resiliencehub create-app-version-resource \ --app-arn <App_ARN> \ --resource-name "backup-efs" \ --logical-resource-id '{"identifier": "backup-efs"}' \ --physical-resource-id '<Physical_resource_id_ARN>' \ --resource-type AWS::EFS::FileSystem \ --app-components '["new-app-component"]'

响应

{ "appArn": "<App_ARN>", "appVersion": "draft", "physicalResource": { "resourceName": "backup-efs", "logicalResourceId": { "identifier": "backup-efs" }, "physicalResourceId": { "identifier": "<Physical_resource_id_ARN>", "type": "Arn" }, "resourceType": "AWS::EFS::FileSystem", "appComponents": [ { "name": "new-app-component", "type": "AWS::ResilienceHub::StorageAppComponent", "id": "new-app-component" } ] } }

以下示例演示了如何在 AWS Resilience Hub 中使用 DescribeDraftAppVersionResourcesImportStatus API 监控资源的导入状态。

请求

aws resiliencehub describe-draft-app-version-resources-import-status \ --app-arn <App_ARN>

响应

{ "appArn": "<App_ARN>", "appVersion": "draft", "status": "Success", "statusChangeTime": "2022-10-26T19:55:18.471000+03:00" }

发布您的应用程序的草稿版本并分配弹性策略

在运行评估之前,必须先发布应用程序的草稿版本,并为已发布的应用程序版本分配弹性策略。

发布您的应用程序的草稿版本并分配弹性策略
  1. 要发布应用程序的草稿版本,请使用 PublishAppVersion API。相关此 API 的更多信息,请参阅 https://docs.aws.amazon.com/resilience-hub/latest/APIReference/API_PublishAppVersion.html

    以下示例演示了如何在 AWS Resilience Hub 中使用 PublishAppVersion API 发布应用程序的草稿版本。

    请求

    aws resiliencehub publish-app-version \ --app-arn <App_ARN>
    响应

    { "appArn": "<App_ARN>", "appVersion": "release" }
  2. 使用 UpdateApp API 将弹性策略应用于已发布的应用程序版本。相关此 API 的更多信息,请参阅 https://docs.aws.amazon.com/resilience-hub/latest/APIReference/API_UpdateApp.html

    以下示例演示了如何在 AWS Resilience Hub 中使用 UpdateApp API 将弹性策略应用于已发布的应用程序版本。

    请求

    aws resiliencehub update-app \ --app-arn <App_ARN> \ --policy-arn <Policy_ARN>
    响应

    { "app": { "appArn": "<App_ARN>", "name": "newApp", "policyArn": "<Policy_ARN>", "creationTime": "2022-10-26T19:48:00.434000+03:00", "status": "Active", "complianceStatus": "NotAssessed", "resiliencyScore": 0.0, "tags": { "resourceArn": "<App_ARN>" }, "assessmentSchedule": "Disabled" } }