AWS CloudFormation StackSets アクションリファレンスのデプロイ - AWS CodePipeline

翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。

AWS CloudFormation StackSets アクションリファレンスのデプロイ

CodePipeline では、CI/CD プロセスの一環として AWS CloudFormation StackSets オペレーションを実行する機能を提供しています。スタックセットを使用して、1 つの AWS CloudFormation テンプレートを使用して AWS リージョン間で AWS アカウントにスタックを作成します。各スタックに含まれるすべてのリソースは、スタックセットの AWS CloudFormation テンプレートによって定義されます。スタックセットを作成する際、使用するテンプレートに加え、そのテンプレートで必要なパラメータや機能を指定します。

の概念の詳細については AWS CloudFormation StackSets、「 ユーザーガイド」のStackSets 「概念」を参照してください。 AWS CloudFormation

パイプラインは、2 つの異なるアクションタイプ AWS CloudFormation StackSets を使用して と統合します。

  • CloudFormationStackSet アクションはスタックセット、またはパイプラインのソース場所に保存されているテンプレートからのスタックインスタンスを作成または更新します。スタックセットが作成または更新されるたびに、指定したインスタンスへの変更のデプロイが開始されます。コンソールでは、パイプラインを作成または編集するときに、CloudFormation スタックセットアクションプロバイダーを選択できます。

  • CloudFormationStackInstances アクションは、指定したインスタンスへの CloudFormationStackSet アクションからの変更のデプロイ、新しいスタックインスタンスの作成、および指定されたインスタンスに対するパラメータの上書きを定義します。コンソールでは、既存のパイプラインを編集するときに CloudFormation Stack Instances アクションプロバイダーを選択できます。

これらのアクションを使用して、ターゲット AWS アカウントまたはターゲット AWS Organizations 組織単位 にデプロイできますIDs。

注記

AWS Organizations アカウントまたは組織単位をターゲットにデプロイIDsし、サービス管理のアクセス許可モデルを使用するには、 AWS CloudFormation StackSets と AWS Organizations 間の信頼されたアクセスを有効にする必要があります。詳細については、AWS CloudFormation 「Stacksets での信頼されたアクセスの有効化」を参照してください。

AWS CloudFormation StackSets アクションの仕組み

CloudFormationStackSet アクションは、アクションが初めて実行されているかどうかに応じて、リソースを作成または更新します。

CloudFormationStackSet アクションはスタックセットを 作成 または 更新 して、指定されたインスタンスに変更をデプロイします。

注記

このアクションを使用してスタックインスタンスの追加を含む更新を行う場合、新しいインスタンスが最初にデプロイされ、更新は最後に完了します。新しいインスタンスは最初に古いバージョンを受け取り、次に更新がすべてのインスタンスに適用されます。

  • 作成: インスタンスが指定されておらず、スタックセットが存在しない場合、CloudFormationStackSetアクションはインスタンスを作成せずにスタックセットを作成します。

  • 更新: アクションCloudFormationStackSetが既に作成されたスタックセットに対して実行されると、アクションはスタックセットを更新します。インスタンスが指定されておらず、スタックセットがすでに存在する場合は、すべてのインスタンスが更新されます。このアクションを使用して特定のインスタンスを更新すると、残りのインスタンスはすべて OUTDATEDステータスに移行します。

    CloudFormationStackSet アクションを使用して、次の方法でスタックセットを更新できます。

    • 一部またはすべてのインスタンスでテンプレートを更新します。

    • 一部またはすべてのインスタンスのパラメータを更新します。

    • スタックセット の実行ロールを更新します。(これは、管理者ロールで指定された 実行 ロールと一致しなければなりません)。

    • アクセス許可 モデルを変更します (インスタンスが作成されていない場合のみ)。

    • スタックセットのアクセス許可モデルが Service Managed の場合、AutoDeployment を有効または無効にします。

    • スタックセットのアクセス許可モデルが の場合、メンバーアカウントの委任管理者として機能しますService Managed

    • 管理者ロール を更新します。

    • スタックセット の説明を更新します。

    • デプロイターゲットをスタックセットの更新に追加して、新しいスタックインスタンスを作成します。

CloudFormationStackInstances アクションは、新しいスタックインスタンスを作成するか、古いスタックインスタンスを更新します。スタックセットが更新されると、インスタンスは古くなりますが、その中のすべてのインスタンスが更新されるわけではありません。

  • 作成: スタックがすでに存在する場合には、CloudFormationStackInstances アクションはインスタンスの更新のみを行い、スタックインスタンスは作成しません。

  • 更新: CloudFormationStackSet アクションが実行された後に、テンプレートまたはパラメータが一部のインスタンスでのみ更新された場合、残りは OUTDATED とマークされます。後期のパイプラインのステージでは、CloudFormationStackInstances は断続的にスタックセット内の残りのインスタンスを更新して、すべてのインスタンスが CURRENT とマークされるようにします。このアクションは、インスタンスを追加、または新しいインスタンスまたは既存のインスタンスでパラメータをオーバーライドするために使用できます。

アップデートの一環として、CloudFormationStackSet そして CloudFormationStackInstances アクションは、新しいデプロイターゲットを指定して、新しいスタックインスタンスを作成します。

アップデートの一環として、CloudFormationStackSet そして CloudFormationStackInstances アクションは、スタックセット、インスタンス、またはリソースを削除しません。アクションがスタックを更新する一方、すべてのインスタンスが更新されないよう指定する場合、更新を指定しなかったインスタンスは更新から除外され、ステータスが OUTDATED に設定されます。

デプロイ中、インスタンスへのデプロイが失敗した場合、スタックインスタンスは、OUTDATED のステータスを表示することもできます。

パイプラインでアクションを構造化 StackSetsする方法

ベストプラクティスとして、スタックセットが作成され、最初にサブセットまたは単一のインスタンスにデプロイされるようにパイプラインを構築する必要があります。デプロイをテストし、生成されたスタックセットを表示したら、CloudFormationStackInstances アクションを追加し、残りのインスタンスが作成および更新されるようにします。

コンソールまたは CLIを使用して、次のように推奨パイプライン構造を作成します。

  1. ソースアクションを持つパイプラインを作成し (必須)、CloudFormationStackSet アクションをデプロイアクションとして指定します。パイプラインを実行します。

  2. パイプラインが最初に実行されると、CloudFormationStackSet アクションがスタックセットと少なくとも 1 つの初期インスタンスを作成します。スタックセットの作成を確認し、初期インスタンスへのデプロイを確認します。例えば、us-east-1 が指定されたリージョンであるアカウント Account-A のスタックセットの初期作成では、スタックインスタンスは次のスタックセットで作成されます。

    スタックインスタンス リージョン ステータス
    StackInstanceID-1 us-east-1 CURRENT
  3. パイプラインを編集して、指定したターゲットのスタックインスタンスを作成または更新する 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
  4. 必要に応じてパイプラインを実行して、スタックセットを更新し、スタックインスタンスを更新または作成します。

アクション設定からデプロイターゲットを削除したスタック更新を開始すると、更新用に指定されていないスタックインスタンスがデプロイから削除され、 OUTDATEDステータスに移行します。例えば、us-east-2リージョンがアクション設定から削除Account-Aされたアカウントのスタックインスタンスの更新の場合、残りのスタックインスタンスが作成され、削除されたインスタンスは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 のような省略構文のフォーマットで入力できます。これらのデータタイプの詳細については、「テンプレートパラメータのデータタイプ」を参照してください。

    次の例は、 値 BucketName を持つ という名前のパラメータを示していますamzn-s3-demo-source-bucket

    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 Organizations が管理するアカウントにデプロイするために必要なIAMロール AWS CloudFormation StackSets を自動的に作成します。これには、アカウントが組織のメンバーである必要があります。

注記

このパラメータは、スタックセットにスタックインスタンスが存在しない場合にのみ変更できます。

AdministrationRoleArn
注記

は複数のアカウントでオペレーション AWS CloudFormation StackSets を実行するため、スタックセットを作成する前に、それらのアカウントに必要なアクセス許可を定義する必要があります。

必須:いいえ

注記

このパラメータは SELF_MANAGED アクセス許可モデルではオプションであり、SERVICE_MANAGED アクセス許可モデルでは使用されません。

スタックセットオペレーションの実行に使用される管理者アカウントのARNIAMロール。

名前には、英数字と記号 _+=,.@-, を使用できます。スペースは使用できません。名前では、大文字と小文字は区別されません。このロール名は、最小 20 文字、最大 2048 文字の長さでなければなりません。ロール名はアカウント内で一意である必要があります。ここで指定するロール名は、既存のロール名である必要があります。ロール名を指定しない場合、 に設定されます AWSCloudFormationStackSetAdministrationRole。を指定する場合は ServiceManaged、ロール名を定義しないでください。

ExecutionRoleName
注記

は複数のアカウントでオペレーション AWS CloudFormation StackSets を実行するため、スタックセットを作成する前に、それらのアカウントに必要なアクセス許可を定義する必要があります。

必須:いいえ

注記

このパラメータは SELF_MANAGED アクセス許可モデルではオプションであり、SERVICE_MANAGED アクセス許可モデルでは使用されません。

スタックセットオペレーションの実行に使用されるターゲットアカウントのIAMロールの名前。名前には、英数字と記号 _+=,.@-, を使用できます。スペースは使用できません。名前では、大文字と小文字は区別されません。このロール名は、最小 1 文字、最大 64 文字の長さでなければなりません。ロール名はアカウント内で一意である必要があります。ここで指定するロール名は、既存のロール名である必要があります。カスタマイズされた実行ロールを使用している場合は、このロールを指定しないでください。ロール名を指定しない場合は、AWSCloudFormationStackSetExecutionRole に設定されます。Service_Managed を true に設定する場合は、ロール名を定義してはいけません。

OrganizationsAutoDeployment

必須:いいえ

注記

このパラメータは SERVICE_MANAGED アクセス許可モデルではオプションであり、SELF_MANAGED アクセス許可モデルでは使用されません。

がターゲット組織または組織単位 (OU) に追加された Organizations アカウントに AWS CloudFormation StackSets 自動的にデプロイ AWS されるかどうかについて説明します。もし OrganizationsAutoDeployment が指定されている場合は、DeploymentTargets そして Regions を指定しないでください。

注記

OrganizationsAutoDeployment に入力が指定されていない場合、デフォルト値は Disabled です。

有効な値は次のとおりです。

  • Enabled。必須: いいえ

    StackSets は、指定されたリージョンのターゲット組織または組織単位 (OU) に追加された AWS Organizations アカウントに、追加のスタックインスタンスを自動的にデプロイします。アカウントがターゲット組織または OU から削除されると、 は指定されたリージョンのアカウントからスタックインスタンス AWS CloudFormation StackSets を削除します。

  • Disabled。必須: いいえ

    StackSets は、指定されたリージョンのターゲット組織または組織単位 (OU) に追加された AWS Organizations アカウントに追加のスタックインスタンスを自動的にデプロイしません。

  • EnabledWithStackRetention。必須: いいえ

    ターゲット組織または OU からアカウントを削除したときに スタックリソースは保持されます。

DeploymentTargets

必須:いいえ

注記

SERVICE_MANAGED アクセス許可モデルでは、IDsデプロイターゲットに組織のルート ID または組織単位を指定できます。SELF_MANAGED アクセス許可モデルでは、 アカウントのみを指定できます。

注記

このパラメータを選択する場合は、リージョン も選択する必要があります。

IDs スタックセットインスタンスを作成/更新する AWS アカウントまたは組織単位のリスト。

  • Accounts:

    アカウントは、リテラルリストまたはファイルパスとして指定できます。

    • リテラル: 次の例に示すように、パラメータを省略構文のフォーマット account_ID,account_ID で入力します。

      111111222222,333333444444
    • ファイルパス: スタックセットインスタンスを作成/更新し、 形式で入力する AWS アカウントのリストを含むファイルの場所InputArtifactName::AccountsFileName。ファイルパスを使用してアカウントまたは を指定する場合OrganizationalUnitIds、次の例に示すようにJSON、ファイル形式は である必要があります。

      SourceArtifact::accounts.txt

      次の例では、accounts.txt のファイルの内容を示します。

      [ "111111222222" ]

      以下の例では、複数のアカウントを一覧表示したときの accounts.txt のファイルの内容を示しています。

      [ "111111222222","333333444444" ]
  • OrganizationalUnitIds:

    注記

    このパラメータは SERVICE_MANAGED アクセス許可モデルではオプションであり、SELF_MANAGED アクセス許可モデルでは使用されません。を選択した場合は、これを使用しないでくださいOrganizationsAutoDeployment

    関連付けられたスタックインスタンスを更新する AWS 組織単位。

    組織単位はリテラルリストまたはファイルパスIDsとして指定できます。

    • リテラル: 次の例に示すように、カンマで区切って文字列の配列を入力します。

      ou-examplerootid111-exampleouid111,ou-examplerootid222-exampleouid222
    • ファイルパス: スタックセットインスタンスを作成または更新する OrganizationalUnitIds のリストを含むファイルの場所。ファイルパスを使用してアカウントまたは を指定する場合OrganizationalUnitIds、次の例に示すようにJSON、ファイル形式は である必要があります。

      ファイルのパスをフォーマット InputArtifactName::OrganizationalUnitIdsFileName で入力します。

      SourceArtifact::OU-IDs.txt

      次の例では、OU-IDs.txt のファイルの内容を示します。

      [ "ou-examplerootid111-exampleouid111","ou-examplerootid222-exampleouid222" ]
リージョン

必須:いいえ

注記

このパラメータを選択した場合は、 も選択する必要がありますDeploymentTargets

スタックセットインスタンスを作成または更新する AWS リージョンのリスト。リージョンは、入力された順序で更新されます。

次の例に示すようにRegion1,Region2、有効な AWS リージョンのリストを 形式で入力します。

us-west-2,us-east-1
FailureTolerancePercentage

必須:いいえ

このスタックオペレーションが失敗する可能性のあるリージョンあたりのアカウントの割合。 は、そのリージョンのオペレーションを AWS CloudFormation 停止します。リージョンでオペレーションが停止した場合、後続のリージョンでオペレーションを試み AWS CloudFormation ません。指定されたパーセンテージに基づいてアカウント数を計算する場合、 AWS CloudFormation は次の整数に切り捨てます。

MaxConcurrentPercentage

必須:いいえ

このオペレーションを一度に実行するアカウントの最大の割合。指定された割合に基づいてアカウント数を計算する場合、 AWS CloudFormation は次の整数に切り捨てます。切り捨てるとゼロになる場合、 は代わりに数値を 1 として AWS CloudFormation 設定します。この設定で 最大値 を指定する場合でも、大規模なデプロイでは、同時に処理される実際のアカウント数はサービスのスロットリングのために低くなる可能性があります。

RegionConcurrencyType

必須:いいえ

リージョン同時デプロイパラメータを設定することで、スタックセットを AWS リージョン 全体に順次デプロイするか、並列デプロイするかを指定できます。リージョンの同時実行を指定してスタックを複数の AWS リージョン に並行してデプロイすると、全体的なデプロイ時間が短縮される可能性があります。

  • 並列: スタックセットのデプロイは、指定された失敗許容回数をリージョンのデプロイ失敗が超えない限り、同時に行われます。

  • 順次: スタックセットのデプロイは、リージョンのデプロイ失敗が指定された失敗許容回数を超えない限り、一度に 1 つずつ行われます。デフォルトでは、順次デプロイが選択されています。

ConcurrencyMode

必須:いいえ

同時実行モードでは、スタックセットオペレーション時の同時実行レベルの動作を、厳密な耐障害性またはソフトな耐障害性のいずれかを選択できます。厳密な障害耐性では、障害が発生するたびに同時実行性が低下するため、スタックセットの操作に障害が発生するため、デプロイ速度が低下します。Soft Failure Tolerance は、 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アクション設定を示しています。

自己管理型のアクセス許可モデルの例

次の例は、入力されたデプロイターゲットが AWS アカウント ID であるCloudFormationStackSetアクションを示しています。

YAML
Name: CreateStackSet ActionTypeId: Category: Deploy Owner: AWS Provider: CloudFormationStackSet Version: '1' RunOrder: 1 Configuration: DeploymentTargets: '111111222222' FailureTolerancePercentage: '20' MaxConcurrentPercentage: '25' PermissionModel: SELF_MANAGED Regions: us-east-1 StackSetName: my-stackset TemplatePath: 'SourceArtifact::template.json' OutputArtifacts: [] InputArtifacts: - Name: SourceArtifact Region: us-west-2 Namespace: DeployVariables
JSON
{ "Name": "CreateStackSet", "ActionTypeId": { "Category": "Deploy", "Owner": "AWS", "Provider": "CloudFormationStackSet", "Version": "1" }, "RunOrder": 1, "Configuration": { "DeploymentTargets": "111111222222", "FailureTolerancePercentage": "20", "MaxConcurrentPercentage": "25", "PermissionModel": "SELF_MANAGED", "Regions": "us-east-1", "StackSetName": "my-stackset", "TemplatePath": "SourceArtifact::template.json" }, "OutputArtifacts": [], "InputArtifacts": [ { "Name": "SourceArtifact" } ], "Region": "us-west-2", "Namespace": "DeployVariables" }

サービス管理型のアクセス許可モデルの例

次の例は、 AWS Organizations への自動デプロイオプションがスタック保持で有効になっている、サービスマネージドアクセス許可モデルのCloudFormationStackSetアクションを示しています。

YAML
Name: Deploy ActionTypeId: Category: Deploy Owner: AWS Provider: CloudFormationStackSet Version: '1' RunOrder: 1 Configuration: Capabilities: 'CAPABILITY_IAM,CAPABILITY_NAMED_IAM' OrganizationsAutoDeployment: EnabledWithStackRetention PermissionModel: SERVICE_MANAGED StackSetName: stacks-orgs TemplatePath: 'SourceArtifact::template.json' OutputArtifacts: [] InputArtifacts: - Name: SourceArtifact Region: eu-central-1 Namespace: DeployVariables
JSON
{ "Name": "Deploy", "ActionTypeId": { "Category": "Deploy", "Owner": "AWS", "Provider": "CloudFormationStackSet", "Version": "1" }, "RunOrder": 1, "Configuration": { "Capabilities": "CAPABILITY_IAM,CAPABILITY_NAMED_IAM", "OrganizationsAutoDeployment": "EnabledWithStackRetention", "PermissionModel": "SERVICE_MANAGED", "StackSetName": "stacks-orgs", "TemplatePath": "SourceArtifact::template.json" }, "OutputArtifacts": [], "InputArtifacts": [ { "Name": "SourceArtifact" } ], "Region": "eu-central-1", "Namespace": "DeployVariables" }

CloudFormationStackInstances アクション

このアクションは 新しいインスタンスを作成し、指定されたインスタンスに スタックセットをデプロイします。スタックインスタンスは、リージョン内のターゲットアカウントのスタックへのリファレンスです。スタックインスタンスは、スタックがなくても存在することができます。たとえば、スタックの作成が失敗した場合は、スタック作成の失敗理由がスタックインスタンスに表示されます。スタックインスタンスに関連付けられるスタックセットは、1 つのみです。

スタックセットの最初の作成後、CloudFormationStackInstances を使用して新しいスタックインスタンスを追加できます。テンプレートパラメータ値は、スタックセットインスタンスの作成または更新オペレーション中にスタックインスタンスレベルでオーバーライドできます。

各スタックセットには、1 つのテンプレートとテンプレートパラメータのセットがあります。テンプレートまたはテンプレートパラメータを更新すると、セット全体のパラメータが更新されます。次に、変更がそのインスタンスにデプロイされるまですべてのインスタンスステータスが OUTDATED に設定されます。

特定のインスタンスのパラメータ値をオーバーライドするには、たとえばテンプレートに stage のパラメータが prod の値で含まれている場合、そのパラメータ値を beta または gamma にオーバーライドできます。

アクションタイプ

  • カテゴリ:Deploy

  • 所有者: AWS

  • プロバイダー: CloudFormationStackInstances

  • バージョン: 1

設定パラメータ

StackSetName

必須:はい

スタックセットに関連付ける名前。この名前は作成されるリージョンで一意であることが必要です。

名前には、英数字とハイフンのみを使用することができます。アルファベットで始まり、また 128 文字以下である必要があります。

DeploymentTargets

必須:いいえ

注記

SERVICE_MANAGED アクセス許可モデルでは、IDsデプロイターゲットに組織のルート ID または組織単位を指定できます。SELF_MANAGED アクセス許可モデルでは、 アカウントのみを指定できます。

注記

このパラメータを選択する場合は、リージョン も選択する必要があります。

IDs スタックセットインスタンスを作成/更新する AWS アカウントまたは組織単位のリスト。

  • Accounts:

    アカウントは、リテラルリストまたはファイルパスとして指定できます。

    • リテラル: 次の例に示すように、パラメータを省略構文のフォーマット account_ID,account_ID で入力します。

      111111222222,333333444444
    • ファイルパス: スタックセットインスタンスを作成/更新し、 形式で入力する AWS アカウントのリストを含むファイルの場所InputArtifactName::AccountsFileName。ファイルパスを使用してアカウントまたは を指定する場合OrganizationalUnitIds、次の例に示すようにJSON、ファイル形式は である必要があります。

      SourceArtifact::accounts.txt

      次の例では、accounts.txt のファイルの内容を示します。

      [ "111111222222" ]

      以下の例では、複数のアカウントを一覧表示したときの accounts.txt のファイルの内容を示しています。

      [ "111111222222","333333444444" ]
  • OrganizationalUnitIds:

    注記

    このパラメータは SERVICE_MANAGED アクセス許可モデルではオプションであり、SELF_MANAGED アクセス許可モデルでは使用されません。を選択した場合は、これを使用しないでくださいOrganizationsAutoDeployment

    関連付けられたスタックインスタンスを更新する AWS 組織単位。

    組織単位はリテラルリストまたはファイルパスIDsとして指定できます。

    • リテラル: 次の例に示すように、カンマで区切って文字列の配列を入力します。

      ou-examplerootid111-exampleouid111,ou-examplerootid222-exampleouid222
    • ファイルパス: スタックセットインスタンスを作成または更新する OrganizationalUnitIds のリストを含むファイルの場所。ファイルパスを使用してアカウントまたは を指定する場合OrganizationalUnitIds、次の例に示すようにJSON、ファイル形式は である必要があります。

      ファイルのパスをフォーマット InputArtifactName::OrganizationalUnitIdsFileName で入力します。

      SourceArtifact::OU-IDs.txt

      次の例では、OU-IDs.txt のファイルの内容を示します。

      [ "ou-examplerootid111-exampleouid111","ou-examplerootid222-exampleouid222" ]
リージョン

必須:はい

注記

このパラメータを選択すると、 も選択する必要がありますDeploymentTargets

スタックセットインスタンスを作成または更新する AWS リージョンのリスト。リージョンは、入力された順序で更新されます。

次の例に示すようにRegion1,Region2、有効な AWS リージョンのリストを の形式で入力します。

us-west-2,us-east-1
ParameterOverrides

必須:いいえ

選択したスタックインスタンスでオーバーライドしたいスタックセットパラメータのリスト。オーバーライドされたパラメータ値は、指定されたアカウントおよびリージョン内のすべてのスタックインスタンスに適用されます。

パラメータはリテラルリストまたはファイルパスとして提供できます。

  • パラメータは、次の ParameterKey=string,ParameterValue=string,UsePreviousValue=boolean,ResolvedValue=string ParameterKey=string,ParameterValue=string,UsePreviousValue=boolean,ResolvedValue=string のような省略構文のフォーマットで入力できます。これらのデータタイプの詳細については、「テンプレートパラメータのデータタイプ」を参照してください。

    次の例は、 値 BucketName を持つ という名前のパラメータを示していますamzn-s3-demo-source-bucket

    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 は次の整数に切り下げます。切り捨てるとゼロになる場合、 は代わりに数値を 1 として AWS CloudFormation 設定します。最大値 を指定する場合でも、大規模なデプロイでは、同時に処理される実際のアカウント数はサービスのスロットリングのために低くなる可能性があります。

RegionConcurrencyType

必須:いいえ

リージョン同時デプロイパラメータを設定することで、スタックセットを AWS リージョン 全体に順次デプロイするか、並列デプロイするかを指定できます。リージョンの同時実行を指定してスタックを複数の AWS リージョン に並行してデプロイすると、全体的なデプロイ時間が短縮される可能性があります。

  • 並列: スタックセットのデプロイは、指定された失敗許容回数をリージョンのデプロイ失敗が超えない限り、同時に行われます。

  • 順次: スタックセットのデプロイは、リージョンのデプロイ失敗が指定された失敗許容回数を超えない限り、一度に 1 つずつ行われます。デフォルトでは、順次デプロイが選択されています。

ConcurrencyMode

必須:いいえ

同時実行モードでは、スタックセットオペレーション時の同時実行レベルの動作を、厳密な耐障害性またはソフトな耐障害性のいずれかを選択できます。厳密な障害耐性では、障害が発生するたびに同時実行性が低下するため、スタックセットの操作に障害が発生するため、デプロイ速度が低下します。Soft Failure Tolerance は、 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アクション設定を示しています。

自己管理型のアクセス許可モデルの例

次の例は、入力されたデプロイターゲットが AWS アカウント ID であるCloudFormationStackInstancesアクションを示しています111111222222

YAML
Name: my-instances ActionTypeId: Category: Deploy Owner: AWS Provider: CloudFormationStackInstances Version: '1' RunOrder: 2 Configuration: DeploymentTargets: '111111222222' Regions: 'us-east-1,us-east-2,us-west-1,us-west-2' StackSetName: my-stackset OutputArtifacts: [] InputArtifacts: - Name: SourceArtifact Region: us-west-2
JSON
{ "Name": "my-instances", "ActionTypeId": { "Category": "Deploy", "Owner": "AWS", "Provider": "CloudFormationStackInstances", "Version": "1" }, "RunOrder": 2, "Configuration": { "DeploymentTargets": "111111222222", "Regions": "us-east-1,us-east-2,us-west-1,us-west-2", "StackSetName": "my-stackset" }, "OutputArtifacts": [], "InputArtifacts": [ { "Name": "SourceArtifact" } ], "Region": "us-west-2" }

サービス管理型のアクセス許可モデルの例

次の例は、デプロイターゲットが AWS Organizations 組織単位 ID であるサービスマネージドアクセス許可モデルのCloudFormationStackInstancesアクションを示していますou-1111-1example

YAML
Name: Instances ActionTypeId: Category: Deploy Owner: AWS Provider: CloudFormationStackInstances Version: '1' RunOrder: 2 Configuration: DeploymentTargets: ou-1111-1example Regions: us-east-1 StackSetName: my-stackset OutputArtifacts: [] InputArtifacts: - Name: SourceArtifact Region: eu-central-1
JSON
{ "Name": "Instances", "ActionTypeId": { "Category": "Deploy", "Owner": "AWS", "Provider": "CloudFormationStackInstances", "Version": "1" }, "RunOrder": 2, "Configuration": { "DeploymentTargets": "ou-1111-1example", "Regions": "us-east-1", "StackSetName": "my-stackset" }, "OutputArtifacts": [], "InputArtifacts": [ { "Name": "SourceArtifact" } ], "Region": "eu-central-1" }

スタックセットオペレーションのアクセス許可モデル

は複数のアカウントでオペレーション AWS CloudFormation StackSets を実行するため、スタックセットを作成する前に、それらのアカウントに必要なアクセス許可を定義する必要があります。アクセス許可は、自己管理型のアクセス許可またはサービス管理型のアクセス許可を使用して定義できます。

セルフマネージドアクセス許可では、 に必要な 2 つのIAMロールを作成します。 StackSets スタックセットを定義する AWSCloudFormationStackSetAdministrationRole アカウントの などの管理者ロールと、スタックセットインスタンスをデプロイする AWSCloudFormationStackSetExecutionRole 各アカウントの などの実行ロールです。このアクセス許可モデルを使用すると、ユーザーがIAMロールを作成するアクセス許可を持つ任意の AWS アカウントに をデプロイ StackSets できます。詳細については、[AWS CloudFormation ユーザーガイド ] の「自己管理型のアクセス許可の承認」を参照してください。

注記

は複数のアカウントでオペレーション AWS CloudFormation StackSets を実行するため、スタックセットを作成する前に、それらのアカウントに必要なアクセス許可を定義する必要があります。

サービス管理アクセス許可を使用すると、 AWS Organizations が管理するアカウントにスタックインスタンスをデプロイできます。このアクセス許可モデルを使用すると、 がユーザーに代わってIAMロールを作成するため、必要なIAMロール StackSets を作成する必要はありません。このモデルでは、将来組織に追加されるアカウントへの自動デプロイを有効にすることもできます。AWS CloudFormation 「 ユーザーガイド」の AWS 「 組織で信頼されたアクセスを有効にする」を参照してください。

テンプレートパラメータのデータタイプ

スタックセットオペレーションで使用されるテンプレートパラメータには、次のデータタイプが含まれます。詳細については、「」を参照してください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 アクションは、セルフマネージドアクセス許可モデルで指定されたすべてのアカウント内、またはサービスマネージドアクセス許可モデルで指定されたすべてのデプロイターゲット内に、指定されたすべてのリージョンのスタックインスタンスを作成します。このアクションによって作成されたインスタンスのパラメータをオーバーライドできます。インスタンスがすでに存在する場合、 は同じ入力パラメータ UpdateStackInstances を持つ を CreateStackInstances 呼び出します。このアクションを使用してインスタンスを作成しても、他のスタックインスタンスのステータスは変更されません。

    • このUpdateStackInstancesアクションでは、自己管理型アクセス許可モデルで指定されたすべてのアカウント、またはサービス管理型アクセス許可モデルで指定されたすべてのデプロイターゲット内の指定されたすべてのリージョンについて、スタックセットのスタックインスタンスが最新になります。このアクションによって更新されたインスタンスのパラメータをオーバーライドできます。このアクションを使用してインスタンスのサブセットを更新しても、他のスタックインスタンスのステータスは変更されません。

    • DescribeStackSetOperation アクションは、指定されたスタックセットオペレーションの説明を返します。

    • DescribeStackSet アクションは、指定されたスタックセットの説明を返します。