StackSet のアカウント除外時のスタック保持の確認

StackSet の自動デプロイ対象からアカウントを除外するときに、必要なスタックとデータを保持してください。

説明

サービスマネージド型 StackSet で自動デプロイが有効な場合、対象の組織や OU からアカウントを削除・移動すると、関連するスタックが削除される場合があります。AutoDeployment.RetainStacksOnAccountRemoval: true は、その際にスタックとリソースを保持する設定です。

保持したリソースは、その StackSet の管理対象ではなくなります。この設定はあらゆるスタック削除を防ぐものではなく、データのバックアップも代替しません。

想定される影響

  • アカウントの移動や組織変更で本番スタックが削除されると、サービス停止やデータ損失につながる可能性があります。
  • 復旧に再デプロイやデータの復元が必要になる場合があります。

対処方法

  • アカウントをデプロイ対象から除外した後もリソースが必要なら、RetainStacksOnAccountRemoval を true に設定してください。
  • 組織変更の前に、影響を受けるスタック、リソースの削除ポリシー、バックアップを確認してください。
  • 保持するリソースの管理担当者、アクセス制御、費用管理、後の削除手順を決めてください。

例

以下では、SERVICE_MANAGED StackSet のアカウント除外時の動作を比較します。必要な AWS Organizations 連携を設定し、StackTemplateUrl にアクセス可能な S3 テンプレート URL を指定してください。

変更前

yaml
Resources:
  StackSet:
    Type: AWS::CloudFormation::StackSet
    Properties:
      PermissionModel: SERVICE_MANAGED
      StackSetName: some-stack-name
      TemplateURL: !Ref StackTemplateUrl
      AutoDeployment:
        Enabled: true
        RetainStacksOnAccountRemoval: false

自動デプロイは有効ですが、アカウントの除外時にスタックを保持しません。削除対象はテンプレートや各リソースの削除ポリシーにも依存します。

変更後

yaml
Resources:
  StackSet:
    Type: AWS::CloudFormation::StackSet
    Properties:
      PermissionModel: SERVICE_MANAGED
      StackSetName: some-stack-name
      TemplateURL: !Ref StackTemplateUrl
      AutoDeployment:
        Enabled: true
        RetainStacksOnAccountRemoval: true

アカウントがデプロイ対象から外れてもスタックとリソースを保持します。その後は StackSet の外で管理する必要があり、費用も引き続き発生する場合があります。

参考資料