使用目標帳戶閘道防止失敗的 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 許可的範例政策聲明。

    JSON
    { "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

建立實作 Lambda 帳戶閘道函數 (將傳回 SUCCEEDED 狀態) 的堆疊。

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

建立實作 Lambda 帳戶閘道函數 (將傳回 FAILED 狀態) 的堆疊。