搭配 使用 ARC 整備檢查 API 操作的範例 AWS CLI - Amazon 應用程式復原控制器 (ARC)

本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。

搭配 使用 ARC 整備檢查 API 操作的範例 AWS CLI

本節會逐步解說簡單的應用程式範例,使用 AWS Command Line Interface 來使用 API 操作在 Amazon Application Recovery Controller (ARC) 中使用整備檢查功能。這些範例旨在協助您了解如何使用 CLI 使用整備檢查功能。

對應用程式複本中資源的不相符進行 ARC 稽核中的準備程度檢查。若要為您的應用程式設定準備度檢查,您必須在 ARC 儲存格中設定或建模您的應用程式資源,以符合您為應用程式建立的複本。然後,您可以設定準備度檢查來稽核這些複本,以協助您確保待命應用程式複本及其資源持續符合您的生產複本

讓我們來看一個簡單的案例,其中您有一個名為 的應用程式Simple-Service目前在美國東部 (維吉尼亞北部) 區域 (us-east-1) 執行。您也可以在美國西部 (奧勒岡) 區域 (us-west-2) 取得應用程式的待命副本。在此範例中,我們將設定整備檢查來比較這兩個版本的應用程式。這可讓我們確保待命美國西部 (奧勒岡) 區域準備好在容錯移轉案例中需要 時接收流量。

如需使用 的詳細資訊 AWS CLI,請參閱 AWS CLI 命令參考。如需整備 API 動作和詳細資訊連結的清單,請參閱 準備檢查 API 操作

ARC 中的儲存格代表故障界限 (例如可用區域或區域),並收集到復原群組中。復原群組代表您要檢查容錯移轉準備狀態的應用程式。如需整備檢查元件的詳細資訊,請參閱 準備度檢查元件

注意

ARC 是一種全域服務,支援多個端點, AWS 區域 但您必須在大多數 ARC CLI 命令中指定美國西部 (奧勒岡) 區域 (即指定 參數 --region us-west-2)。例如,建立資源,例如復原群組或整備檢查。

在我們的應用程式範例中,我們將從為每個擁有資源的區域建立一個儲存格開始。然後,我們將建立復原群組,然後完成準備度檢查的設定。

1. 建立儲存格

1a. 建立 us-east-1 儲存格。

aws route53-recovery-readiness --region us-west-2 create-cell \ --cell-name east-cell
{ "CellArn": "arn:aws:route53-recovery-readiness::111122223333:cell/east-cell", "CellName": "east-cell", "Cells": [], "ParentReadinessScopes": [], "Tags": {} }

1b. 建立 us-west-1 儲存格。

aws route53-recovery-readiness --region us-west-2 create-cell \ --cell-name west-cell
{ "CellArn": "arn:aws:route53-recovery-readiness::111122223333:cell/west-cell", "CellName": "west-cell", "Cells": [], "ParentReadinessScopes": [], "Tags": {} }

1c. 現在我們有兩個儲存格。您可以呼叫 list-cells API 來驗證它們是否存在。

aws route53-recovery-readiness --region us-west-2 list-cells
{ "Cells": [ { "CellArn": "arn:aws:route53-recovery-readiness::111122223333:cell/east-cell", "CellName": "east-cell", "Cells": [], "ParentReadinessScopes": [], "Tags": {} }, { "CellArn": "arn:aws:route53-recovery-readiness::111122223333:cell/west-cell", "CellName": "west-cell" "Cells": [], "ParentReadinessScopes": [], "Tags": {} } ] }

2. 建立復原群組

復原群組是 ARC 中復原準備的最上層資源。復原群組代表應用程式整體。在此步驟中,我們將建立復原群組來建立整體應用程式的模型,然後新增我們建立的兩個儲存格。

2a. 建立復原群組。

aws route53-recovery-readiness --region us-west-2 create-recovery-group \ --recovery-group-name simple-service-recovery-group \ --cells "arn:aws:route53-recovery-readiness::111122223333:cell/east-cell"\ "arn:aws:route53-recovery-readiness::111122223333:cell/west-cell"
{ "Cells": [], "RecoveryGroupArn": "arn:aws:route53-recovery-readiness::111122223333:recovery-group/simple-service-recovery-group", "RecoveryGroupName": "simple-service-recovery-group", "Tags": {} }

2b. (選用) 您可以呼叫 list-recovery-groups API 來驗證您的復原群組是否已正確建立。

aws route53-recovery-readiness --region us-west-2 list-recovery-groups
{ "RecoveryGroups": [ { "Cells": [ "arn:aws:route53-recovery-readiness::111122223333:cell/east-cell", "arn:aws:route53-recovery-readiness::111122223333:cell/west-cell" ], "RecoveryGroupArn": "arn:aws:route53-recovery-readiness::111122223333:recovery-group/simple-service-recovery-group", "RecoveryGroupName": "simple-service-recovery-group", "Tags": {} } ] }

現在我們的應用程式已有模型,讓我們新增要監控的資源。在 ARC 中,您要監控的一組資源稱為資源集。資源集包含所有相同類型的資源。我們將資源集中的資源相互比較,以協助判斷儲存格的容錯移轉準備程度。

3. 建立資源集

假設我們的Simple-Service應用程式確實非常簡單,且僅使用 DynamoDB 資料表。它在 us-east-1 中有 DynamoDB 資料表,在 us-west-2 中有另一個資料表。資源集也包含整備範圍,可識別每個資源包含在其中的儲存格。

3a. 建立反映Simple-Service應用程式資源的資源集。

aws route53-recovery-readiness --region us-west-2 create-resource-set \ --resource-set-name ImportantInformationTables \ --resource-set-type AWS::DynamoDB::Table \ --resources ResourceArn="arn:aws:dynamodb:us-west-2:111122223333:table/TableInUsWest2",ReadinessScopes="arn:aws:route53-recovery-readiness::111122223333:cell/west-cell" ResourceArn="arn:aws:dynamodb:us-west-2:111122223333:table/TableInUsEast1",ReadinessScopes="arn:aws:route53-recovery-readiness::111122223333:cell/east-cell"
{ "ResourceSetArn": "arn:aws:route53-recovery-readiness::111122223333:resource-set/sample-resource-set", "ResourceSetName": "ImportantInformationTables", "Resources": [ { "ReadinessScopes": [ "arn:aws:route53-recovery-readiness::111122223333:cell/west-cell" ], "ResourceArn": "arn:aws:dynamodb:us-west-2:111122223333:table/TableInUsWest2" }, { "ReadinessScopes": [ "arn:aws:route53-recovery-readiness::111122223333:cell/east-cell" ], "ResourceArn": "arn:aws:dynamodb:us-west-2:111122223333:table/TableInUsEast1" } ], "Tags": {} }

3b. (選用) 您可以呼叫 list-resource-sets API 來驗證資源集中包含的內容。這會列出 AWS 帳戶的所有資源集。在這裡,您可以看到我們只有上面建立的一個資源集。

aws route53-recovery-readiness --region us-west-2 list-resource-sets
{ "ResourceSets": [ { "ResourceSetArn": "arn:aws:route53-recovery-readiness::111122223333:resource-set/ImportantInformationTables", "ResourceSetName": "ImportantInformationTables", "Resources": [ { "ReadinessScopes": [ "arn:aws:route53-recovery-readiness::111122223333:cell/west-cell" ], "ResourceArn": "arn:aws:dynamodb:us-west-2:111122223333:table/TableInUsWest2" }, { "ReadinessScopes": [ "arn:aws:route53-recovery-readiness::111122223333:cell/east-cell" ], "ResourceArn": "arn:aws:dynamodb:us-west-2:111122223333:table/TableInUsEast1" } ], "Tags": {} } ] }{ "ResourceSets": [ { "ResourceSetArn": "arn:aws:route53-recovery-readiness::111122223333:resource-set/ImportantInformationTables", "ResourceSetName": "ImportantInformationTables", "Resources": [ { "ReadinessScopes": [ "arn:aws:route53-recovery-readiness::111122223333:cell/west-cell" ], "ResourceArn": "arn:aws:dynamodb:us-west-2:111122223333:table/TableInUsWest2" }, { "ReadinessScopes": [ "arn:aws:route53-recovery-readiness::&ExampleAWSAccountNo1;:cell/east-cell" ], "ResourceArn": "arn:aws:dynamodb:us-west-2:111122223333:table/TableInUsEast1" } ], "Tags": {} } ] }

現在,我們已建立儲存格、復原群組和資源集,以在 ARC 中建立Simple-Service應用程式模型。接下來,我們將設定準備度檢查,以監控資源是否準備容錯移轉。

4. 建立整備檢查

整備檢查會將一組規則套用至附加至檢查的資源集中的每個資源。規則專屬於每個資源類型。也就是說,AWS::DynamoDB::TableAWS::EC2::Instance等有不同的規則。規則會檢查資源的各種維度,包括組態、容量 (如果可用且適用)、限制 (如果可用且適用),以及路由組態。

注意

若要查看套用至整備檢查中資源的規則,您可以使用 get-readiness-check-resource-status API,如步驟 5 所述。若要查看 ARC 中所有整備規則的清單,請使用 list-rules或參閱 ARC 中的就緒規則描述。ARC 有一組特定的規則,其會針對每個資源類型執行;目前這些規則無法自訂。

4a. 建立資源集 的整備檢查ImportantInformationTables。

aws route53-recovery-readiness --region us-west-2 create-readiness-check \ --readiness-check-name ImportantInformationTableCheck --resource-set-name ImportantInformationTables
{ "ReadinessCheckArn": "arn:aws:route53-recovery-readiness::111122223333:readiness-check/ImportantInformationTableCheck", "ReadinessCheckName": "ImportantInformationTableCheck", "ResourceSet": "ImportantInformationTables", "Tags": {} }

4b. (選用) 若要驗證是否已成功建立整備檢查,請執行 list-readiness-checks API。此 API 會顯示 帳戶中的所有準備度檢查。

aws route53-recovery-readiness --region us-west-2 list-readiness-checks
{ "ReadinessChecks": [ { "ReadinessCheckArn": "arn:aws:route53-recovery-readiness::111122223333:readiness-check/ImportantInformationTableCheck", "ReadinessCheckName": "ImportantInformationTableCheck", "ResourceSet": "ImportantInformationTables", "Tags": {} } ] }

5. 監控準備度檢查

現在我們已將應用程式建模並新增準備度檢查,我們已準備好監控資源。您可以在四個層級建立應用程式的準備度模型:準備度檢查層級 (一組資源)、個別資源層級、儲存格層級 (可用區域或區域中的所有資源),以及復原群組層級 (應用程式整體)。以下提供取得每種準備狀態的命令。

5a. 查看整備檢查的狀態。

aws route53-recovery-readiness --region us-west-2 get-readiness-check-status\ --readiness-check-name ImportantInformationTableCheck
{ "Readiness": "READY", "Resources": [ { "LastCheckedTimestamp": "2021-01-07T00:53:39Z", "Readiness": "READY", "ResourceArn": "arn:aws:dynamodb:us-west-2:111122223333:table/TableInUsWest2" }, { "LastCheckedTimestamp": "2021-01-07T00:53:39Z", "Readiness": "READY", "ResourceArn": "arn:aws:dynamodb:us-west-2:111122223333:table/TableInUsEast2" ] }

5b. 在整備檢查中查看單一資源的詳細整備狀態,包括已檢查的每個規則的狀態。

aws route53-recovery-readiness --region us-west-2 get-readiness-check-resource-status \ --readiness-check-name ImportantInformationTableCheck \ --resource-identifier "arn:aws:dynamodb:us-west-2:111122223333:table/TableInUsWest2"
{"Readiness": "READY", "Rules": [ { "LastCheckedTimestamp": "2021-01-07T00:55:41Z", "Messages": [], "Readiness": "READY", "RuleId": "DynamoTableStatus" }, { "LastCheckedTimestamp": "2021-01-07T00:55:41Z", "Messages": [], "Readiness": "READY", "RuleId": "DynamoCapacity" }, { "LastCheckedTimestamp": "2021-01-07T00:55:41Z", "Messages": [], "Readiness": "READY", "RuleId": "DynamoPeakRcuWcu" }, { "LastCheckedTimestamp": "2021-01-07T00:55:41Z", "Messages": [], "Readiness": "READY", "RuleId": "DynamoGSIsPeakRcuWcu" }, { "LastCheckedTimestamp": "2021-01-07T00:55:41Z", "Messages": [], "Readiness": "READY", "RuleId": "DynamoGSIsConfig" }, { "LastCheckedTimestamp": "2021-01-07T00:55:41Z", "Messages": [], "Readiness": "READY", "RuleId": "DynamoGSIsStatus" }, { "LastCheckedTimestamp": "2021-01-07T00:55:41Z", "Messages": [], "Readiness": "READY", "RuleId": "DynamoGSIsCapacity" }, { "LastCheckedTimestamp": "2021-01-07T00:55:41Z", "Messages": [], "Readiness": "READY", "RuleId": "DynamoReplicationLatency" }, { "LastCheckedTimestamp": "2021-01-07T00:55:41Z", "Messages": [], "Readiness": "READY", "RuleId": "DynamoAutoScalingConfiguration" }, { "LastCheckedTimestamp": "2021-01-07T00:55:41Z", "Messages": [], "Readiness": "READY", "RuleId": "DynamoLimits" } ] }

5c. 請參閱儲存格的整體準備程度。

aws route53-recovery-readiness --region us-west-2 get-cell-readiness-summary \ --cell-name west-cell
{ "Readiness": "READY", "ReadinessChecks": [ { "Readiness": "READY", "ReadinessCheckName": "ImportantTableCheck" } ] }

5d. 最後,在復原群組層級查看應用程式的頂層整備。

aws route53-recovery-readiness --region us-west-2 get-recovery-group-readiness-summary \ --recovery-group-name simple-service-recovery-group
{ "Readiness": "READY", "ReadinessChecks": [ { "Readiness": "READY", "ReadinessCheckName": "ImportantTableCheck" } ] }