スタックセットの更新 - AWS CloudFormation

スタックセットの更新

AWS Management Console 内で、または AWS CLI で AWS CloudFormation コマンドを使用することでスタックセットを更新できます。このウォークスルーでは、送信チャネル構成のデフォルトスナップショット送信頻度を、[24hours (24 時間)] から [12hours (12 時間)] に変更します。

特定のスタックインスタンスのパラメータ値を上書きするには、「スタックインスタンスのパラメータを上書きする」を参照してください。

AWS CloudFormation コンソールを使用してスタックセットを更新する

  1. https://console.aws.amazon.com/cloudformation で AWS CloudFormation コンソール を開きます。

  2. ナビゲーションペインから [StackSets] を選択します。

  3. StackSets ページで、スタックセットの作成 で作成したスタックセットを選択します。このウォークスルーで、my-awsconfig-stackset という名前のスタックセットを作成しました。

  4. スタックセットを選択した状態で、[Actions] (アクション) メニューから [Edit StackSet details] (StackSet 詳細の編集) を選択します。

    スタックセットページでスタックセットを更新する
  5. [テンプレートの選択] ページで、現在のテンプレートを更新するか、他のテンプレートに S3 URL を指定するか、AWS CloudFormation に新しいテンプレートをアップロードするかを選択します。このウォークスルーでは、現在のテンプレートを使用しています。[現在のテンプレートの使用] を選択し、[次へ] を選択します。

  6. [Specify StackSet details (スタックセットの詳細の指定)]ページで、パラメータ値を変更し、デプロイターゲットを指定します。

    1. [セルフマネージド型のアクセス許可] [Deployment targets (デプロイターゲット)] で、[Deploy stacks in accounts (スタックをアカウントにデプロイ)] を選択します。ターゲットアカウント番号をテキストボックスに貼り付け、複数の数字をカンマで区切ります。

      [サービスマネージド型のアクセス許可] [Deployment targets (デプロイターゲット)] で、デプロイ先の組織のアカウントを選択します。

    2. リージョンを選択します。

    3. [頻度] パラメータの値を [24hours] から [12hours] に変更します。

      この手順の詳細、および AWS Config で使用される値を指定する他のパラメータの詳細については、「AWS Config デベロッパーガイド」の「コンソールによる AWS Config の設定」を参照してください。

      他のパラメータは変更しないでください。このウォークスルーでは、Amazon SNS の更新は設定しません。

      終了したら、[次へ] を選択します。

  7. [Configure StackSet options (StackSet オプションの設定)] ページでは、変更は必要ありませんが、必要に応じてタグを更新、削除、または新しいタグを追加することができます。AWS でのタグの使用方法に関する詳細については、「AWS Billing and Cost Management ユーザーガイド」の「Using cost allocation tags」(コスト配分タグの使用) を参照してください。実行構成を管理して、StackSets が競合しないオペレーションを同時に実行し、競合するオペレーションをキューに入れるかどうかを指定することもできます。競合するオペレーションが終了すると、StackSets はキューに入っているオペレーションをリクエスト順に開始します。

    注記

    既に実行中のオペレーションまたはキューに入っているオペレーションがある場合、StackSets はオペレーションが競合しない場合でもすべての受信オペレーションをキューに入れます。

    そのスタックセットに実行中のオペレーションまたはキューに入っているオペレーションがある間は、スタックセットの実行構成を変更することはできません。

    [Permissions] (アクセス許可) を変更せずに、[Next] (次へ) を選択します。

  8. [Set deployment options] (セットデプロイオプション) ページで、デフォルト値の 1 および [Maximum concurrent accounts] (同時アカウントの最大数) の [By number] (数値) を保持します。[Failure tolerance (障害耐性)] をデフォルトの [0] のままにし、By number (数値) デフォルトオプションをそのままにします。[Next] を選択します。

    注記

    ここではアカウントとリージョンを変更することはできません。つまり、いくつかのアカウントやリージョンにはスタックセットの変更をデプロイし、他のアカウントやリージョンにはデプロイしない、ということはできません。

  9. [確認] ページで、設定とスタックセットのプロパティを確認します。変更するには、プロパティを変更する領域の右上隅で [Edit (編集)] を選択します。スタックセットを更新する前に、[CAPABILITY] 領域のチェックボックスをオンにし、スタックセットで更新しているリソースの一部が IAM リソースやアクセス権限を必要とする場合があることを認識します。必要なアクセス許可の詳細については、「AWS CloudFormation テンプレートでの IAM リソースの承認」を参照してください。スタックセットを作成する準備ができたら、[Submit] (送信) を選択します。

    AWS CloudFormation によってスタックセットへの更新の適用が開始され、スタックセット詳細ページの [オペレーション] タブが表示されます。

  10. [オペレーション] タブで更新オペレーションの進捗と状況を確認できます。更新された [頻度] パラメータは [パラメータ] タブに表示されます。

AWS CLI を使用してスタックセットを更新する

委任された管理者として行動する場合は、StackSets コマンドを実行するたびに --call-as パラメータを DELEGATED_ADMIN に設定する必要があります。

--call-as DELEGATED_ADMIN

update-stack-set AWS CLI コマンドを実行して、スタックセットを変更します。このウォークスルーでは、MaximumExecutionFrequency パラメータの値を更新します。AWS Config ルールを作成または更新するためのパラメータ名、および値の詳細については、AWS CLI リファレンスの put-config-rule を参照してください。テンプレートのパラメータ値を変更するには、--parameters パラメータを追加します。--parameters の値として指定できるものについての詳細は、「AWS CloudFormation API リファレンス」の「Parameter」および、「AWS CLI コマンドリファレンス」の「update-stack」を参照してください。

ここで示すサンプルコマンドでは、--parameters を使用してスタックセットを更新します。具体的には、送信チャネル構成のデフォルトスナップショット送信頻度を [TwentyFour_Hours] から [Twelve_Hours] に変更します。現在のテンプレートをまだ使用しているため、--use-previous-template パラメータを追加します。

  1. 以下のコマンドを実行します。stack set name には、スタックセット名 my-awsconfig-stackset を指定します。

    次の例で示している通り、FailureToleranceCount パラメータで 0MaxConcurrentCount に、1--operation-preferences に設定することで、障害耐性および同時アカウントの最大数を設定します。代わりに割合を適用するには、FailureTolerancePercentage または MaxConcurrentPercentage を使用します。このウォークスルーでは、割合ではなくカウントを使用します。

    注記

    MaxConcurrentCount の値は、FailureToleranceCount の値に依存します。MaxConcurrentCount は、最大で FailureToleranceCount より 1 だけ多くなります。

    [セルフマネージド型のアクセス許可] 更新のターゲットにするアカウント ID を指定します。

    aws cloudformation update-stack-set --stack-set-name my-awsconfig-stackset --use-previous-template --parameters ParameterKey=MaximumExecutionFrequency,ParameterValue=TwentyFour_Hours\\,Twelve_Hours --operation-preferences FailureToleranceCount=0,MaxConcurrentCount=1 --accounts '["account_ID_1","account_ID_2"]'

    [Service-managed permissions (サービスマネージド型のアクセス許可)] 更新のターゲットにする組織 (ルート) ID、OU ID、AWS Organizations のアカウント ID のいずれかを指定します。

    aws cloudformation update-stack-set --stack-set-name my-awsconfig-stackset --use-previous-template --parameters ParameterKey=MaximumExecutionFrequency,ParameterValue=TwentyFour_Hours\\,Twelve_Hours --operation-preferences FailureToleranceCount=0,MaxConcurrentCount=1 --deployment-targets OrganizationalUnitIds='["ou-rcuk-1x5j1lwo", "ou-rcuk-slr5lh0a"]' --regions '["eu-west-1"]'
  2. describe-stack-set-operation コマンドを実行して更新オペレーションのステータスおよび結果を表示し、スタックセットが正常に更新されたことを確認します。--operation-id には、update-stack-set コマンドに返されたオペレーション ID を使用します。

    aws cloudformation describe-stack-set-operation --operation-id operation_ID