ターゲットアカウントゲートを使用して失敗した StackSets デプロイを防止する - AWS CloudFormation

ターゲットアカウントゲートを使用して失敗した StackSets デプロイを防止する

アカウントゲートは、CloudFormation がターゲットアカウントで StackSets オペレーションを開始する前に、そのアカウントが特定の要件を満たしていることを検証できるオプション機能です。この検証は、前提条件チェックとして機能する AWS Lambda 関数を通じて実行されます。

アカウントゲートの一般的な例としては、ターゲットアカウントにアクティブまたは未解決の CloudWatch アラームがないことを検証することが挙げられます。CloudFormation は、ターゲットアカウントのスタックオペレーションを開始する度に Lambda 関数を呼び出し、SUCCEEDED コードが返る場合のみ次に進みます。Lambda 関数より FAILED ステータスが返される場合、CloudFormation は要求されたオペレーションを続行しません。Lambda 関数でアカウントゲートを設定していない場合、CloudFormation はこの確認をスキップし、オペレーションを継続します。

ターゲットアカウントでアカウントのゲートチェックを行うことができない場合、失敗したオペレーションは、スタックの指定した障害耐性の数または割合 (%) に含められます。障害耐性の詳細については、「StackSet オペレーションのオプション」を参照してください。

アカウントゲート機能は、StackSets オペレーションでのみ使用できます。この機能は、StackSets 以外の他の CloudFormation オペレーションでは使用できません。

要件

アカウントゲートでは、次の要件を満たす必要があります。

  • この機能を使用するには、Lambda 関数に AWSCloudFormationStackSetAccountGate という名前を付ける必要があります。

  • AWSCloudFormationStackSetExecutionRole では、Lambda 関数を呼び出すためのアクセス許可が必要です。これらのアクセス許可がない場合、CloudFormation はアカウントゲート機能の確認をスキップし、スタックオペレーションを続行します。

  • アカウントのゲート作成を行うには、Lambda InvokeFunction のアクセス許可をターゲットアカウントに追加する必要があります。ターゲットアカウントの信頼ポリシーには、管理者アカウントとの信頼関係が必要です。Lambda のアクセス許可 (InvokeFunction) を付与するポリシーステートメントの例を次に示します。

    { "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "lambda:InvokeFunction" ], "Resource": "*" } ] }

Lambda 関数を作成するための CloudFormation テンプレート

次のサンプルテンプレートを使用して Lambda AWSCloudFormationStackSetAccountGate 関数を作成します。これらのいずれかのテンプレートを使用して新しいスタックを作成するには、「CloudFormation コンソールからスタックを作成する」を参照してください。

テンプレートの場所

説明

https://s3.amazonaws.com/cloudformation-stackset-sample-templates-us-east-1/AccountGateSucceeded.yml

スタックを作成して、SUCCEEDED ステータスを返す Lambda アカウントゲート関数を実装します。

https://s3.amazonaws.com/cloudformation-stackset-sample-templates-us-east-1/AccountGateFailed.yml

スタックを作成して、FAILED ステータスを返す Lambda アカウントゲート関数を実装します。