使用目標帳戶閘道來防止失敗的 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 主控台建立堆疊

範本位置

Description

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 狀態) 的堆疊。