AWS CloudFormation StackSets デプロイアクションリファレンス
CodePipeline は、AWS CloudFormation StackSets オペレーションを CI/CD プロセスの一部として実行する機能を提供します。スタックセットを使用して、1 つの AWS テンプレートを使用して、AWS リージョンの AWS CloudFormation アカウントにスタックを作成します。各スタックに含まれるリソースはすべて、スタックセットの AWS CloudFormation テンプレートで定義されます。スタックセットを作成する際、使用するテンプレートに加え、そのテンプレートで必要なパラメータや機能を指定します。
AWS CloudFormation StackSets の概念の詳細については、AWS CloudFormation ユーザーガイドの「StackSets の概念」を参照してください。
パイプラインと AWS CloudFormation StackSets を統合するには、次の 2 つの異なるアクションタイプを使用します。
-
CloudFormationStackSet
アクションはスタックセット、またはパイプラインのソース場所に保存されているテンプレートからのスタックインスタンスを作成または更新します。スタックセットが作成または更新されるたびに、指定したインスタンスへの変更のデプロイが開始されます。コンソールでは、パイプラインを作成または編集するとき、[ CloudFormation スタックセット ] アクションプロバイダーを選択します。 -
CloudFormationStackInstances
アクションは、指定したインスタンスへのCloudFormationStackSet
アクションからの変更のデプロイ、新しいスタックインスタンスの作成、および指定されたインスタンスに対するパラメータの上書きを定義します。コンソールでは、パイプラインを作成または編集するとき、[ CloudFormation スタックインスタンス ] アクションプロバイダーを選択します。
これらのアクションを使用して、AWS アカウントまたは AWS Organizations の組織単位 ID をターゲットにデプロイします。
注記
AWS Organizations のアカウントまたは組織単位 ID をターゲットにデプロイし、サービスマネージドアクセス許可モデルを使用する場合は、AWS CloudFormation StackSets と AWS Organizations の間で信頼されたアクセスを有効にする必要があります。詳細については、「AWS CloudFormation Stacksets で信頼されたアクセスを有効にする」を参照してください。
トピック
AWS CloudFormation StackSets アクションの機能
CloudFormationStackSet
アクションは、アクションが初めて実行されているかどうかに応じて、リソースを作成または更新します。
CloudFormationStackSet
アクションはスタックセットを 作成 または 更新 して、指定されたインスタンスに変更をデプロイします。
注記
このアクションを使用してスタックインスタンスの追加を含む更新を行う場合、新しいインスタンスが最初にデプロイされ、更新は最後に完了します。新しいインスタンスは最初に古いバージョンを受け取り、次に更新がすべてのインスタンスに適用されます。
-
作成: インスタンスが指定されておらず、スタックセットが存在しない場合は、 CloudFormationsStackSet アクション は、インスタンスを作成せずにスタックセットを作成します。
-
更新 : CloudFormationsStackSet アクションがすでに作成されたスタックセットに対して実行されているとき、アクションはスタックセットを更新します。インスタンスが指定されておらず、スタックセットがすでに存在する場合は、すべてのインスタンスが更新されます。このアクションが 特定の インスタンスの更新に使用されている場合、残りのすべてのインスタンスが OUTDATED ステータスに移行します。
CloudFormationsStackSet アクションを使用して、次の方法でスタックセットを更新します。
-
一部またはすべてのインスタンスでテンプレートを更新します。
-
一部またはすべてのインスタンスのパラメータを更新します。
-
スタックセット の実行ロールを更新します。(これは、管理者ロールで指定された 実行 ロールと一致しなければなりません)。
-
アクセス許可 モデルを変更します (インスタンスが作成されていない場合のみ)。
-
スタックセットのアクセス許可モデルが
Service Managed
の場合、AutoDeployment
を有効または無効にします。 -
スタックセットのアクセス許可モデルが
Service Managed
の場合は、メンバーアカウントの委任管理者となります。 -
管理者ロール を更新します。
-
スタックセット の説明を更新します。
-
デプロイターゲットをスタックセットの更新に追加して、新しいスタックインスタンスを作成します。
-
CloudFormationStackInstances
アクションは、新しいスタックインスタンスを作成するか、古いスタックインスタンスを更新します。スタックセットが更新されると、インスタンスは古くなりますが、その中のすべてのインスタンスが更新されるわけではありません。
-
作成: スタックがすでに存在する場合には、
CloudFormationStackInstances
アクションはインスタンスの更新のみを行い、スタックインスタンスは作成しません。 -
更新:
CloudFormationStackSet
アクションが実行された後に、テンプレートまたはパラメータが一部のインスタンスでのみ更新された場合、残りはOUTDATED
とマークされます。後期のパイプラインのステージでは、CloudFormationStackInstances
は断続的にスタックセット内の残りのインスタンスを更新して、すべてのインスタンスがCURRENT
とマークされるようにします。このアクションは、インスタンスを追加、または新しいインスタンスまたは既存のインスタンスでパラメータをオーバーライドするために使用できます。
アップデートの一環として、CloudFormationStackSet
そして CloudFormationStackInstances
アクションは、新しいデプロイターゲットを指定して、新しいスタックインスタンスを作成します。
アップデートの一環として、CloudFormationStackSet
そして CloudFormationStackInstances
アクションは、スタックセット、インスタンス、またはリソースを削除しません。アクションがスタックを更新する一方、すべてのインスタンスが更新されないよう指定する場合、更新を指定しなかったインスタンスは更新から除外され、ステータスが OUTDATED
に設定されます。
デプロイ中、インスタンスへのデプロイが失敗した場合、スタックインスタンスは、OUTDATED
のステータスを表示することもできます。
パイプラインで StackSets アクションを構成する方法
ベストプラクティスとして、スタックセットが作成され、最初にサブセットまたは単一のインスタンスにデプロイされるようにパイプラインを構築する必要があります。デプロイをテストし、生成されたスタックセットを表示したら、CloudFormationStackInstances
アクションを追加し、残りのインスタンスが作成および更新されるようにします。
コンソールまたは CLI を使用して、次のように推奨されるパイプライン構造を作成します。
-
ソースアクションを持つパイプラインを作成し (必須)、
CloudFormationStackSet
アクションをデプロイアクションとして指定します。パイプラインを実行します。 -
パイプラインが最初に実行されると、
CloudFormationStackSet
アクションがスタックセットと少なくとも 1 つの初期インスタンスを作成します。スタックセットの作成を確認し、初期インスタンスへのデプロイを確認します。例えば、us-east-1
が指定されたリージョンであるアカウント Account-A のスタックセットの初期作成では、スタックインスタンスは次のスタックセットで作成されます。スタックインスタンス リージョン ステータス StackInstanceID-1 us-east-1 CURRENT -
パイプラインを編集して、指定したターゲットのスタックインスタンスを作成または更新する 2 番目のデプロイアクションとして
CloudFormationStackInstances
を追加します。例えば、us-east-2
およびeu-central-1
リージョンが指定されるアカウントAccount-A
のスタックインスタンスの作成の場合、残りのスタックインスタンスが作成され、初期インスタンスは次のように更新されます。スタックインスタンス リージョン ステータス StackInstanceID-1 us-east-1 CURRENT StackInstanceID-2 us-east-2 CURRENT StackInstanceID-3 eu-central-1 CURRENT -
必要に応じてパイプラインを実行して、スタックセットを更新し、スタックインスタンスを更新または作成します。
アクション設定からデプロイターゲットを削除したスタックの更新を開始すると、更新用に指定されていなかったスタックインスタンスがデプロイから削除され、OUTDATED ステータスに移行します。たとえば、Account-A
リージョンがアクション設定から削除されたアカウント us-east-2
のスタックインスタンスの更新の場合、残りのスタックインスタンスが作成され、削除されたインスタンスは OUTDATED に設定されます。
スタックインスタンス | リージョン | ステータス |
---|---|---|
StackInstanceID-1 | us-east-1 | CURRENT |
StackInstanceID-2 | us-east-2 | OUTDATED |
StackInstanceID-3 | eu-central-1 | CURRENT |
スタックセットのデプロイのベストプラクティスの詳細については、AWS CloudFormation ユーザーガイドで StackSets のベストプラクティスを参照してください。
CloudFormationStackSet
アクション
アクションはパイプラインのソース場所に保存されているテンプレートからのスタックセットを作成または更新します。
スタックセットを定義したら、設定パラメータに指定されたターゲットアカウントや リージョンでスタックを作成、更新、削除できるようになります。スタックの作成、更新、削除の際に、オペレーションを実行するリージョンの順序、スタックオペレーションを停止するフォールトトレランスパーセンテージ、スタックでオペレーションを同時に実行するアカウント数など、その他の環境設定を指定することができます。
スタックセットはリージョンのリソースです。1 つの AWS リージョンでスタックを作成した場合、他のリージョンからそのスタックにアクセスすることはできません。
このアクションをスタックセットに対する更新アクションとして使用する場合、少なくとも 1 つの スタック インスタンスにデプロイがないと、スタックの更新は許可されません。
アクションタイプ
-
カテゴリ:
Deploy
-
所有者:
AWS
-
プロバイダー:
CloudFormationStackSet
-
バージョン:
1
設定パラメータ
- StackSetName
-
必須: はい
スタックセットに関連付ける名前。この名前は作成されるリージョンで一意であることが必要です。
名前には、英数字とハイフンのみを使用することができます。アルファベットで始まり、また 128 文字以下である必要があります。
- 説明
-
必須:いいえ
スタックセットの説明。これを使用して、スタックセットの目的やその他の関連情報を記述できます。
- TemplatePath
-
必須: はい
スタックセット内のリソースを定義するテンプレートのロケーション。これは、最大サイズ 460,800 byte のテンプレートを指定する必要があります。
フォーマット
"InputArtifactName::TemplateFileName"
で、ソースアーティファクト名とテンプレートファイルへのパスを次の例に示すように入力します。SourceArtifact::template.txt
- パラメータ
-
必須:いいえ
デプロイ中に更新されるスタックセットのテンプレートパラメータのリスト。
パラメータはリテラルリストまたはファイルパスとして提供できます。
-
パラメータは、次の
ParameterKey=string,ParameterValue=string,UsePreviousValue=boolean,ResolvedValue=string ParameterKey=string,ParameterValue=string,UsePreviousValue=boolean,ResolvedValue=string
のような省略構文のフォーマットで入力できます。これらのデータタイプの詳細については、「テンプレートパラメータのデータタイプ」を参照してください。次の例は、
amzn-s3-demo-source-bucket
という名前のパラメータの値BucketName
を示しています。ParameterKey=BucketName,ParameterValue=amzn-s3-demo-source-bucket
次の例は、複数のパラメータを持つエントリを示しています。
ParameterKey=BucketName,ParameterValue=amzn-s3-demo-source-bucket ParameterKey=Asset1,ParameterValue=true ParameterKey=Asset2,ParameterValue=true
-
次の例で示すように、フォーマット
"InputArtifactName::ParametersFileName"
で入力されたテンプレートパラメータのオーバーライドのリストを含むファイルのロケーションを入力できます。SourceArtifact::parameters.txt
次の例では、
parameters.txt
のファイルの内容を示します。[ { "ParameterKey": "KeyName", "ParameterValue": "true" }, { "ParameterKey": "KeyName", "ParameterValue": "true" } ]
-
- 機能
-
必須:いいえ
テンプレート内のリソースのタイプに応じて、テンプレートがリソースを作成および更新できることを示します。
このプロパティは、スタックテンプレートに IAM リソースがある場合、またはマクロを含むテンプレートから直接スタックを作成する場合に使用する必要があります。AWS CloudFormation アクションがこの方法で正常に動作するためには、以下のいずれかの機能を使用する必要があります。
-
CAPABILITY_IAM
-
CAPABILITY_NAMED_IAM
機能間にカンマ (スペースなし) を使用して、複数の機能を指定できます。例 CloudFormationStackSet アクションの設定 の例は、複数の機能を持つエントリを示しています。
-
- PermissionModel
-
必須:いいえ
IAM ロールの作成および管理方法を決定します。フィールドを指定しない場合、デフォルトが使用されます。詳細については、スタックセットオペレーションのアクセス許可モデル を参照してください。
有効な値は次のとおりです。
-
SELF_MANAGED
(デフォルト): ターゲットアカウントにデプロイするには、管理者ロールと実行ロールを作成する必要があります。 -
SERVICE_MANAGED
: AWS CloudFormation Organizations が管理するアカウントへのデプロイに必要な IAM ロールが AWS StackSets によって自動的に作成されます。これには、アカウントが組織のメンバーである必要があります。
注記
このパラメータは、スタックセットにスタックインスタンスが存在しない場合にのみ変更できます。
-
- AdministrationRoleARN
-
注記
AWS CloudFormation スタックセットでは複数のアカウントでオペレーションが実行されるため、スタックセットを作成する前に、それらのアカウントで必要なアクセス許可を定義しなければなりません。
必須:いいえ
注記
このパラメータは SELF_MANAGED アクセス許可モデルの場合はオプションで、SERVICE_MANAGED アクセス許可モデルには使用されません。
スタックセットオペレーションの実行に使用される管理者アカウントの IAM ロールの ARN。
名前には、英数字と記号 _+=,.@-, を使用できます。スペースは使用できません。名前では、大文字と小文字は区別されません。このロール名は、最小 20 文字、最大 2048 文字の長さでなければなりません。ロール名はアカウント内で一意である必要があります。ここで指定するロール名は、既存のロール名である必要があります。ロール名を指定しない場合は、AWSCloudFormationStackSetAdministrationRole に設定されます。ServiceManaged を指定する場合は、ロール名を定義してはいけません。
- ExecutionRoleName
-
注記
AWS CloudFormation スタックセットでは複数のアカウントでオペレーションが実行されるため、スタックセットを作成する前に、それらのアカウントで必要なアクセス許可を定義しなければなりません。
必須:いいえ
注記
このパラメータは SELF_MANAGED アクセス許可モデルの場合はオプションで、SERVICE_MANAGED アクセス許可モデルには使用されません。
スタックセットオペレーションの実行に使用されるターゲットアカウントの IAM ロールの名前。名前には、英数字と記号 _+=,.@-, を使用できます。スペースは使用できません。名前では、大文字と小文字は区別されません。このロール名は、最小 1 文字、最大 64 文字の長さでなければなりません。ロール名はアカウント内で一意である必要があります。ここで指定するロール名は、既存のロール名である必要があります。カスタマイズされた実行ロールを使用している場合は、このロールを指定しないでください。ロール名を指定しない場合は、
AWSCloudFormationStackSetExecutionRole
に設定されます。Service_Managed を true に設定する場合は、ロール名を定義してはいけません。 - OrganizationsAutoDeployment
-
必須:いいえ
注記
このパラメータは SERVICE_MANAGED アクセス許可モデルの場合はオプションで、SELF_MANAGED アクセス許可モデルには使用されません。
ターゲットの組織または組織単位 (OU) に追加した AWS CloudFormation Organizations アカウントに AWS StackSets が自動的にデプロイされるかどうかを示します。もし
OrganizationsAutoDeployment
が指定されている場合は、DeploymentTargets
そしてRegions
を指定しないでください。注記
OrganizationsAutoDeployment
に入力が指定されていない場合、デフォルト値はDisabled
です。有効な値は次のとおりです。
-
Enabled
。必須: いいえStackSets は、指定したリージョンのターゲット組織または組織単位 (OU) に追加した AWS Organizations アカウントに追加のスタックインスタンスを自動的にデプロイします。ターゲット組織または OU からアカウントを削除すると、AWS CloudFormation StackSets は指定したリージョンのアカウントからスタックインスタンスを削除します。
-
Disabled
。必須: いいえStackSets は、指定したリージョンのターゲット組織または組織単位 (OU) に追加した AWS Organizations アカウントに追加のスタックインスタンスを自動的にデプロイしません。
-
EnabledWithStackRetention
。必須: いいえターゲット組織または OU からアカウントを削除したときに スタックリソースは保持されます。
-
- DeploymentTargets
-
必須:いいえ
注記
SERVICE_MANAGED アクセス許可モデルの場合、デプロイターゲットに組織ルート ID または組織単位 ID を提供できます。SELF_MANAGED アクセス許可モデルの場合、アカウントのみを提供できます。
注記
このパラメータを選択する場合は、リージョン も選択する必要があります。
スタックセットインスタンスを作成および更新する必要がある AWS アカウントまたは組織単位 IDのリスト。
-
Accounts:
アカウントは、リテラルリストまたはファイルパスとして指定できます。
-
リテラル: 次の例に示すように、パラメータを省略構文のフォーマット
account_ID,account_ID
で入力します。111111222222,333333444444
-
ファイルパス: フォーマット
InputArtifactName::AccountsFileName
で入力された、スタックセットインスタンスを作成および更新する必要がある AWS アカウントのリストを含むファイルのロケーション。ファイルパスを使用して accounts または OrganizationalUnitIds のいずれかを指定する場合、以下の例に示すように、ファイル形式は JSON であることが必要です。SourceArtifact::accounts.txt
次の例では、
accounts.txt
のファイルの内容を示します。[ "111111222222" ]
以下の例では、複数のアカウントを一覧表示したときの
accounts.txt
のファイルの内容を示しています。[ "111111222222","333333444444" ]
-
-
OrganizationalUnitIds
注記
このパラメータは SERVICE_MANAGED アクセス許可モデルの場合はオプションで、SELF_MANAGED アクセス許可モデルには使用されません。OrganizationsAutoDeployment を選択した場合は、これを使用しないでください。
関連するスタックインスタンスを更新する AWS 組織単位。
組織単位 ID は、リテラルリストまたはファイルパスとして提供できます。
-
リテラル: 次の例に示すように、カンマで区切って文字列の配列を入力します。
ou-examplerootid111-exampleouid111,ou-examplerootid222-exampleouid222
-
ファイルパス: スタックセットインスタンスを作成または更新する OrganizationalUnitIds のリストを含むファイルの場所。ファイルパスを使用して accounts または OrganizationalUnitIds のいずれかを指定する場合、以下の例に示すように、ファイル形式は JSON であることが必要です。
ファイルのパスをフォーマット
InputArtifactName::OrganizationalUnitIdsFileName
で入力します。SourceArtifact::OU-IDs.txt
次の例では、
OU-IDs.txt
のファイルの内容を示します。[ "ou-examplerootid111-exampleouid111","ou-examplerootid222-exampleouid222" ]
-
-
- リージョン
-
必須:いいえ
注記
このパラメータを選択する場合は、DeploymentTargets も選択する必要があります。
スタックセットインスタンスが作成または更新される AWS リージョンのリスト。リージョンは、入力された順序で更新されます。
次の例に示すように、AWS フォーマットに有効な
Region1,Region2
リージョンのリストを入力してください。us-west-2,us-east-1
- FailureTolerancePercentage
-
必須:いいえ
AWS CloudFormation がリージョンでのオペレーションを停止するまでに、このスタックオペレーションの失敗を許容する、リージョンあたりのアカウントの割合 (%)。リージョンでのオペレーションが停止すると、AWS CloudFormation は以降のリージョンでオペレーションを試行しません。指定した割合に基づいてアカウント数を計算する際に、AWS CloudFormation は最も近い整数に 切り捨てます。
- MaxConcurrentPercentage
-
必須:いいえ
このオペレーションを一度に実行するアカウントの最大の割合。指定した割合に基づいてアカウント数を計算する際に、AWS CloudFormation は最も近い整数に 切り捨てます。四捨五入すると 0 になる場合、代わりに AWS CloudFormation によって数字は 1 に設定されます。この設定で 最大値 を指定する場合でも、大規模なデプロイでは、同時に処理される実際のアカウント数はサービスのスロットリングのために低くなる可能性があります。
- RegionConcurrencyType
-
必須:いいえ
リージョン同時デプロイパラメータを設定することで、スタックセットを AWS リージョン 全体に順次デプロイするか、並列デプロイするかを指定できます。複数の AWS リージョン にスタックを並列デプロイするようにリージョンの同時実行数を指定している場合は、全体のデプロイ時間が短縮される可能性があります。
-
並列: スタックセットのデプロイは、指定された失敗許容回数をリージョンのデプロイ失敗が超えない限り、同時に行われます。
-
順次: スタックセットのデプロイは、リージョンのデプロイ失敗が指定された失敗許容回数を超えない限り、一度に 1 つずつ行われます。デフォルトでは、順次デプロイが選択されています。
-
- ConcurrencyMode
-
必須:いいえ
同時実行モードでは、スタックセットオペレーション時の同時実行レベルの動作を、厳密な耐障害性またはソフトな耐障害性のいずれかを選択できます。厳密な障害耐性では、障害が発生するたびに同時実行性が低下するため、スタックセットの操作に障害が発生するため、デプロイ速度が低下します。ソフト障害耐性は、AWS CloudFormation 安全機能を活用しながらデプロイ速度を優先させます。
-
STRICT_FAILURE_TOLERANCE
: このオプションでは、失敗したアカウントの数が特定の耐障害性を超えないように、同時実行レベルを動的に下げます。これがデフォルトの動作です。 -
SOFT_FAILURE_TOLERANCE
: このオプションは実際の同時実行性から耐障害性を切り離します。これにより、障害の数に関係なく、スタックセットの操作を設定された同時実行レベルで実行できます。
-
- CallAs
-
必須:いいえ
注記
このパラメータは
SERVICE_MANAGED
アクセス許可モデルではオプションであり、SELF_MANAGED
アクセス許可モデルでは使用しません。組織の管理アカウントで行動するか、メンバーアカウントで委任管理者として行動するかを指定します。
注記
このパラメータを
DELEGATED_ADMIN
に設定する場合は、パイプライン IAM ロールにorganizations:ListDelegatedAdministrators
アクセス許可があることを確認してください。それ以外の場合、アクションは実行中に失敗し、「Account used is not a delegated administrator
」のようなエラーが発生します。-
SELF
: スタックセットのデプロイでは、管理アカウントにサインインしている間、サービスマネージドアクセス許可を使用します。 -
DELEGATED_ADMIN
: スタックセットのデプロイでは、委任管理者アカウントにサインインしている間、サービスマネージドアクセス許可を使用します。
-
入力アーティファクト
CloudFormationStackSet
アクションでスタックセットのテンプレートを含む入力アーティファクトを少なくとも 1 つ含める必要があります。デプロイターゲット、アカウント、およびパラメータのリストには、より多くの入力アーティファクトを含めることができます。
-
アーティファクトの数:
1 to 3
-
説明: アーティファクトを含めて、以下を提供できます。
-
スタックテンプレートファイル (
TemplatePath
パラメータを参照。) -
パラメータファイル (
Parameters
パラメータを参照。) -
アカウントファイル (
DeploymentTargets
パラメータを参照。)
-
出力アーティファクト
-
アーティファクトの数:
0
-
説明: 出力アーティファクトは、このアクションタイプには適用されません。
出力変数
このアクションを設定すると、パイプライン内のダウンストリームアクションのアクション設定によって参照できる変数が生成されます。名前空間を使用してアクションを設定し、これらの変数をダウンストリームアクションの設定で使用できるようにします。
-
StackSetId: スタックセットの ID。
-
OperationId: スタックセットオペレーションの ID。
詳細については、「変数リファレンス」を参照してください。
例 CloudFormationStackSet アクションの設定
次の例は、CloudFormationStackSet アクションのアクション設定を示しています。
自己管理型のアクセス許可モデルの例
次の例は CloudFormationStackSet アクションで、入力されたデプロイターゲットが AWS アカウント ID であることを示しています。
サービス管理型のアクセス許可モデルの例
次の例は、サービス管理アクセス許可モデルの CloudFormationStackSet アクションで、AWS Organizations の自動デプロイのオプションがスタックリテンションによって有効になっていることを示しています。
CloudFormationStackInstances アクション
このアクションは 新しいインスタンスを作成し、指定されたインスタンスに スタックセットをデプロイします。スタックインスタンスは、リージョン内のターゲットアカウントのスタックへのリファレンスです。スタックインスタンスは、スタックがなくても存在することができます。たとえば、スタックの作成が失敗した場合は、スタック作成の失敗理由がスタックインスタンスに表示されます。スタックインスタンスに関連付けられるスタックセットは、1 つのみです。
スタックセットの最初の作成後、CloudFormationStackInstances
を使用して新しいスタックインスタンスを追加できます。テンプレートパラメータ値は、スタックセットインスタンスの作成または更新オペレーション中にスタックインスタンスレベルでオーバーライドできます。
各スタックセットには、1 つのテンプレートとテンプレートパラメータのセットがあります。テンプレートまたはテンプレートパラメータを更新すると、セット全体のパラメータが更新されます。次に、変更がそのインスタンスにデプロイされるまですべてのインスタンスステータスが OUTDATED
に設定されます。
特定のインスタンスのパラメータ値をオーバーライドするには、たとえばテンプレートに stage
のパラメータが prod
の値で含まれている場合、そのパラメータ値を beta
または gamma
にオーバーライドできます。
アクションタイプ
-
カテゴリ:
Deploy
-
所有者:
AWS
-
プロバイダー:
CloudFormationStackInstances
-
バージョン:
1
設定パラメータ
- StackSetName
-
必須: はい
スタックセットに関連付ける名前。この名前は作成されるリージョンで一意であることが必要です。
名前には、英数字とハイフンのみを使用することができます。アルファベットで始まり、また 128 文字以下である必要があります。
- DeploymentTargets
-
必須:いいえ
注記
SERVICE_MANAGED アクセス許可モデルの場合、デプロイターゲットに組織ルート ID または組織単位 ID を提供できます。SELF_MANAGED アクセス許可モデルの場合、アカウントのみを提供できます。
注記
このパラメータを選択する場合は、リージョン も選択する必要があります。
スタックセットインスタンスを作成および更新する必要がある AWS アカウントまたは組織単位 IDのリスト。
-
Accounts:
アカウントは、リテラルリストまたはファイルパスとして指定できます。
-
リテラル: 次の例に示すように、パラメータを省略構文のフォーマット
account_ID,account_ID
で入力します。111111222222,333333444444
-
ファイルパス: フォーマット
InputArtifactName::AccountsFileName
で入力された、スタックセットインスタンスを作成および更新する必要がある AWS アカウントのリストを含むファイルのロケーション。ファイルパスを使用して accounts または OrganizationalUnitIds のいずれかを指定する場合、以下の例に示すように、ファイル形式は JSON であることが必要です。SourceArtifact::accounts.txt
次の例では、
accounts.txt
のファイルの内容を示します。[ "111111222222" ]
以下の例では、複数のアカウントを一覧表示したときの
accounts.txt
のファイルの内容を示しています。[ "111111222222","333333444444" ]
-
-
OrganizationalUnitIds
注記
このパラメータは SERVICE_MANAGED アクセス許可モデルの場合はオプションで、SELF_MANAGED アクセス許可モデルには使用されません。OrganizationsAutoDeployment を選択した場合は、これを使用しないでください。
関連するスタックインスタンスを更新する AWS 組織単位。
組織単位 ID は、リテラルリストまたはファイルパスとして提供できます。
-
リテラル: 次の例に示すように、カンマで区切って文字列の配列を入力します。
ou-examplerootid111-exampleouid111,ou-examplerootid222-exampleouid222
-
ファイルパス: スタックセットインスタンスを作成または更新する OrganizationalUnitIds のリストを含むファイルの場所。ファイルパスを使用して accounts または OrganizationalUnitIds のいずれかを指定する場合、以下の例に示すように、ファイル形式は JSON であることが必要です。
ファイルのパスをフォーマット
InputArtifactName::OrganizationalUnitIdsFileName
で入力します。SourceArtifact::OU-IDs.txt
次の例では、
OU-IDs.txt
のファイルの内容を示します。[ "ou-examplerootid111-exampleouid111","ou-examplerootid222-exampleouid222" ]
-
-
- リージョン
-
必須: はい
注記
このパラメータを選択する場合は、DeploymentTargets も選択する必要があります。
スタックセットインスタンスが作成または更新される AWS リージョンのリスト。リージョンは、入力された順序で更新されます。
次の例に示すように、AWS のフォーマットに有効な
Region1,Region2
リージョンのリストを入力します。us-west-2,us-east-1
- ParameterOverrides
-
必須:いいえ
選択したスタックインスタンスでオーバーライドしたいスタックセットパラメータのリスト。オーバーライドされたパラメータ値は、指定されたアカウントおよびリージョン内のすべてのスタックインスタンスに適用されます。
パラメータはリテラルリストまたはファイルパスとして提供できます。
-
パラメータは、次の
ParameterKey=string,ParameterValue=string,UsePreviousValue=boolean,ResolvedValue=string ParameterKey=string,ParameterValue=string,UsePreviousValue=boolean,ResolvedValue=string
のような省略構文のフォーマットで入力できます。これらのデータタイプの詳細については、「テンプレートパラメータのデータタイプ」を参照してください。次の例は、
amzn-s3-demo-source-bucket
という名前のパラメータの値BucketName
を示しています。ParameterKey=BucketName,ParameterValue=amzn-s3-demo-source-bucket
次の例は、複数のパラメータを持つエントリを示しています。
ParameterKey=BucketName,ParameterValue=amzn-s3-demo-source-bucket ParameterKey=Asset1,ParameterValue=true ParameterKey=Asset2,ParameterValue=true
-
次の例で示すように、フォーマット
InputArtifactName::ParameterOverridessFileName
で入力されたテンプレートパラメータのオーバーライドのリストを含むファイルのロケーションを入力できます。SourceArtifact::parameter-overrides.txt
次の例では、
parameter-overrides.txt
のファイルの内容を示します。[ { "ParameterKey": "KeyName", "ParameterValue": "true" }, { "ParameterKey": "KeyName", "ParameterValue": "true" } ]
-
- FailureTolerancePercentage
-
必須:いいえ
AWS CloudFormation がリージョンでのオペレーションを停止するまでに、このスタックオペレーションの失敗を許容する、リージョンあたりのアカウントの割合 (%)。リージョンでのオペレーションが停止すると、AWS CloudFormation は以降のリージョンでオペレーションを試行しません。指定した割合に基づいてアカウント数を計算する際に、AWS CloudFormation は最も近い整数に 切り捨てます。
- MaxConcurrentPercentage
-
必須:いいえ
このオペレーションを一度に実行するアカウントの最大の割合。指定した割合に基づいてアカウント数を計算する際に、AWS CloudFormation は最も近い整数に 切り捨てます。四捨五入すると 0 になる場合、代わりに AWS CloudFormation によって数字は 1 に設定されます。最大値 を指定する場合でも、大規模なデプロイでは、同時に処理される実際のアカウント数はサービスのスロットリングのために低くなる可能性があります。
- RegionConcurrencyType
-
必須:いいえ
リージョン同時デプロイパラメータを設定することで、スタックセットを AWS リージョン 全体に順次デプロイするか、並列デプロイするかを指定できます。複数の AWS リージョン にスタックを並列デプロイするようにリージョンの同時実行数を指定している場合は、全体のデプロイ時間が短縮される可能性があります。
-
並列: スタックセットのデプロイは、指定された失敗許容回数をリージョンのデプロイ失敗が超えない限り、同時に行われます。
-
順次: スタックセットのデプロイは、リージョンのデプロイ失敗が指定された失敗許容回数を超えない限り、一度に 1 つずつ行われます。デフォルトでは、順次デプロイが選択されています。
-
- ConcurrencyMode
-
必須:いいえ
同時実行モードでは、スタックセットオペレーション時の同時実行レベルの動作を、厳密な耐障害性またはソフトな耐障害性のいずれかを選択できます。厳密な障害耐性では、障害が発生するたびに同時実行性が低下するため、スタックセットの操作に障害が発生するため、デプロイ速度が低下します。ソフト障害耐性は、AWS CloudFormation 安全機能を活用しながらデプロイ速度を優先させます。
-
STRICT_FAILURE_TOLERANCE
: このオプションでは、失敗したアカウントの数が特定の耐障害性を超えないように、同時実行レベルを動的に下げます。これがデフォルトの動作です。 -
SOFT_FAILURE_TOLERANCE
: このオプションは実際の同時実行性から耐障害性を切り離します。これにより、障害の数に関係なく、スタックセットの操作を設定された同時実行レベルで実行できます。
-
- CallAs
-
必須:いいえ
注記
このパラメータは、
SERVICE_MANAGED
アクセス許可モデルではオプションであり、SELF_MANAGED
アクセス許可モデルでは使用しません。組織の管理アカウントで行動するか、メンバーアカウントで委任管理者として行動するかを指定します。
注記
このパラメータを
DELEGATED_ADMIN
に設定する場合は、パイプライン IAM ロールにorganizations:ListDelegatedAdministrators
アクセス許可があることを確認してください。それ以外の場合、アクションは実行中に失敗し、「Account used is not a delegated administrator
」のようなエラーが発生します。-
SELF
: スタックセットのデプロイでは、管理アカウントにサインインしている間、サービスマネージドアクセス許可を使用します。 -
DELEGATED_ADMIN
: スタックセットのデプロイでは、委任管理者アカウントにサインインしている間、サービスマネージドアクセス許可を使用します。
-
入力アーティファクト
CloudFormationStackInstances
にデプロイターゲットとパラメータをリストするアーティファクトを含めることができます。
-
アーティファクトの数:
0 to 2
-
説明: 入力として、 スタックセットアクションはオプションでこれらの目的でアーティファクトを受け入れます。
-
使用するパラメータファイルを提供するには (
ParameterOverrides
パラメータを参照。) -
使用するターゲットアカウントファイルを提供するには (
DeploymentTargets
パラメータを参照。)
-
出力アーティファクト
-
アーティファクトの数:
0
-
説明: 出力アーティファクトは、このアクションタイプには適用されません。
出力変数
このアクションを設定すると、パイプライン内のダウンストリームアクションのアクション設定によって参照できる変数が生成されます。名前空間を使用してアクションを設定し、これらの変数をダウンストリームアクションの設定で使用できるようにします。
-
StackSetId: スタックセットの ID。
-
OperationId: スタックセットオペレーションの ID。
詳細については、「変数リファレンス」を参照してください。
アクション設定の例
次の例は、CloudFormationStackInstances アクションのアクション設定を示しています。
自己管理型のアクセス許可モデルの例
次の例は CloudFormationStackInstances アクションで、入力されたデプロイターゲットが AWS アカウント ID 111111222222
であることを示しています。
サービス管理型のアクセス許可モデルの例
次の例は、サービスマネージドアクセス許可モデルの CloudFormationStackInstances アクションで、デプロイターゲットが AWS Organizations の組織単位 ID ou-1111-1example
であることを示しています。
スタックセットオペレーションのアクセス許可モデル
AWS CloudFormation スタックセットでは複数のアカウントでオペレーションが実行されるため、スタックセットを作成する前に、それらのアカウントで必要なアクセス許可を定義しなければなりません。アクセス許可は、自己管理型のアクセス許可またはサービス管理型のアクセス許可を使用して定義できます。
自己管理アクセス許可を使用して、StackSets で必要な 2 つの IAM ロールを作成します。これは、スタックセットを定義するアカウント内の AWSCloudFormationStackSetAdministrationRole などの管理者ロールと、スタックセットインスタンスをデプロイする各アカウントの AWSCloudFormationStackSetExecutionRole などの実行ロールです。このアクセス許可モデルを使用すると、StackSets は、IAM ロールを作成するアクセス許可を持つ任意の AWS アカウントにデプロイできます。詳細については、[AWS CloudFormation ユーザーガイド ] の「自己管理型のアクセス許可の承認」を参照してください。
注記
AWS CloudFormation スタックセットでは複数のアカウントでオペレーションが実行されるため、スタックセットを作成する前に、それらのアカウントで必要なアクセス許可を定義しなければなりません。
サービス管理型のアクセス許可を使用する場合、AWS Organizations が管理するアカウントにスタックインスタンスをデプロイできます。このアクセス許可モデルを使用すると、必要な IAM ロールを作成する必要はありません。ユーザーに代わって StackSets が IAM ロールを作成します。このモデルでは、将来組織に追加されるアカウントへの自動デプロイを有効にすることもできます。[AWS ユーザーガイド ] の「AWS CloudFormation Organizations で信頼されたアクセスを有効にする」を参照してください。
テンプレートパラメータのデータタイプ
スタックセットオペレーションで使用されるテンプレートパラメータには、次のデータタイプが含まれます。詳細については、「DescribeStackset」を参照してください。
- ParameterKey
-
-
説明: パラメータに関連付けられたキー。特定のパラメータにキーと値が指定されていない場合、AWS CloudFormation はテンプレートに指定されているデフォルト値を使用します。
-
例:
"ParameterKey=BucketName,ParameterValue=amzn-s3-demo-source-bucket"
-
- ParameterValue
-
-
説明: パラメータに関連付けられた入力値。
-
例:
"ParameterKey=BucketName,ParameterValue=amzn-s3-demo-source-bucket"
-
- UsePreviousValue
-
-
スタックの更新中に、スタックが特定のパラメータキーに使用している既存のパラメータ値を使用します。
true
を指定した場合は、パラメータ値を指定しないでください。 -
例:
"ParameterKey=Asset1,UsePreviousValue=true"
-
各スタックセットには、1 つのテンプレートとテンプレートパラメータのセットがあります。テンプレートまたはテンプレートパラメータを更新すると、セット全体のパラメータが更新されます。次に、変更がそのインスタンスにデプロイされるまですべてのインスタンスステータスが OUTDATED に設定されます。
特定のインスタンスのパラメータ値をオーバーライドするには、たとえばテンプレートに stage
のパラメータが prod
の値で含まれている場合、そのパラメータ値を beta
または gamma
にオーバーライドできます。
以下も参照してください。
このアクションを利用する際に役立つ関連リソースは以下の通りです。
-
パラメータタイプ - [AWS CloudFormation ユーザーガイド ] 内のこのリファレンスチャプターでは、CloudFormation テンプレートパラメータの詳細と例をより詳しく提供します。
-
ベストプラクティス - スタックセットのデプロイのベストプラクティスの詳細については、AWS CloudFormation ユーザーガイドの「https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/stacksets-bestpractices.html」を参照してください。
-
AWS CloudFormation API リファレンス - スタックセットオペレーションで使用されるパラメータの詳細については、[AWS CloudFormation API リファレンス] の次の CloudFormation アクションを参照できます。
-
CreateStackSet アクションでスタックセットを作成します。
-
UpdateStackSet アクションで、指定されたアカウントおよびリージョン内のスタックセットおよび関連するスタックインスタンスを更新します。スタックセットの更新で作成されたスタックセットオペレーションが (完全または部分的に、指定されたフォルトトレランス値以下または以上となり) 失敗しても、スタックセットはこれらの変更で更新されます。指定されたスタックセットに対する後続の CreateStackInstances 呼び出しでは、更新されたスタックセットが使用されます。
-
CreateStackInstances アクションで、自己管理アクセス許可モデルで指定されたすべてのアカウント内、またはサービス管理アクセス許可モデルで指定されたすべてのデプロイターゲット内に、指定されたすべてのリージョンのスタックインスタンスを作成します。このアクションによって作成されたインスタンスのパラメータをオーバーライドできます。インスタンスがすでに存在する場合、CreateStackInstances は同じ入力パラメータで UpdateStackInstances を呼び出します。このアクションを使用してインスタンスを作成しても、他のスタックインスタンスのステータスは変更されません。
-
UpdateStackInstances アクションで、自己管理アクセス許可モデルで指定されたすべてのアカウント内、またはサービス管理アクセス許可モデルで指定されたすべてのデプロイターゲット内で、指定されたすべてのリージョンのスタックセットによってスタックインスタンスを最新にします。このアクションによって更新されたインスタンスのパラメータをオーバーライドできます。このアクションを使用してインスタンスのサブセットを更新しても、他のスタックインスタンスのステータスは変更されません。
-
DescribeStackSetOperation アクションで、指定されたスタックセットオペレーションの説明を返します。
-
DescribeStackSet アクションで、指定されたスタックセットの説明を返します。
-