翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。
チュートリアル: AWS CloudFormation StackSets デプロイアクションでパイプラインを作成する
このチュートリアルでは、 AWS CodePipeline コンソールを使用して、スタックセットとスタックインスタンスを作成するためのデプロイアクションを含むパイプラインを作成します。パイプラインが実行されると、テンプレートはスタックセットを作成し、スタックセットをデプロイするインスタンスを作成および更新します。
重要
パイプライン作成の一環として、CodePipeline は、ユーザーが指定した S3 アーティファクトバケットをアーティファクトとして使用します (これは S3 ソースアクションで使用するバケットとは異なります)。S3 アーティファクトバケットがパイプラインのアカウントとは異なるアカウントにある場合は、S3 アーティファクトバケットが によって所有 AWS アカウント されており、安全で信頼できることを確認してください。
スタックセットのアクセス許可を管理するには、セルフマネージド IAM ロールとマネージド IAM AWSロールの 2 つの方法があります。このチュートリアルでは、セルフマネージド型の許可の例を示します。
CodePipeline で Stacksets を最も効果的に使用するには、 AWS CloudFormation StackSets の背後にある概念とその仕組みを明確に理解している必要があります。AWS CloudFormation ユーザーガイドの「StackSets の概念」を参照してください。
トピック
前提条件
スタックセットオペレーションでは、管理者アカウントとターゲットアカウントの 2 つの異なるアカウントを使用します。管理者アカウントでは、スタックセットを作成します。ターゲットアカウントでは、スタックセットに属する個別のスタックを作成します。
管理者アカウントで管理者ロールを作成するには
-
「スタックセットオペレーションの基本アクセス許可の設定」の手順に従います。ロールは
AWSCloudFormationStackSetAdministrationRole
という名前にする必要があります。
ターゲットアカウントにサービスロールを作成するには
-
管理者アカウントを信頼するターゲットアカウントにサービスロールを作成します。「スタックセットオペレーションの基本アクセス許可の設定」の手順に従います。ロールは
AWSCloudFormationStackSetExecutionRole
という名前にする必要があります。
ステップ 1: サンプル AWS CloudFormation テンプレートとパラメータファイルをアップロードする
スタックセットテンプレートとパラメータファイルのソースバケットを作成します。サンプル AWS CloudFormation テンプレートファイルをダウンロードし、パラメータファイルをセットアップしてから、S3 ソースバケットにアップロードする前にファイルを圧縮します。
注記
ソースファイルが唯一のテンプレートであっても、S3 ソースバケットにアップロードする前に、必ずソースファイルを圧縮してください。
S3 ソースバケットを作成するには
にサインイン AWS Management Console し、https://console.aws.amazon.com/s3/
で Amazon S3 コンソールを開きます。 -
[バケットを作成] を選択します。
-
[バケット名] にバケットの名前を入力します。
[リージョン] で、パイプラインを作成するリージョンを選択します。[バケットを作成] を選択します。
-
バケットが作成されると、成功バナーが表示されます。[バケットの詳細に移動] を選択します。
-
[プロパティ] タブで、[バージョニング] を選択します。[バージョニングの有効化] を選択し、[保存] を選択します。
AWS CloudFormation テンプレートファイルを作成するには
-
スタックセットの CloudTrail 設定を生成するために、サンプルテンプレートファイル https://s3.amazonaws.com/cloudformation-stackset-sample-templates-us-east-1/EnableAWSCloudtrail.yml
をダウンロードします。 -
template.yml
という名前でファイルを保存します。
parameters.txt ファイルを作成するには
-
デプロイのパラメータでファイルを作成します。パラメータは、実行時にスタック内で更新する値です。次のサンプルファイルは、スタックセットのテンプレートパラメータを更新して、ログ記録検証とグローバルイベントを有効にします。
[ { "ParameterKey": "EnableLogFileValidation", "ParameterValue": "true" }, { "ParameterKey": "IncludeGlobalEvents", "ParameterValue": "true" } ]
-
parameters.txt
という名前でファイルを保存します。
accounts.txt ファイルを作成するには
-
次のサンプルファイルに示されているように、インスタンスを作成するアカウントでファイルを作成します。
[ "111111222222","333333444444" ]
-
accounts.txt
という名前でファイルを保存します。
ソースファイルを作成してアップロードするには
-
ファイルを単一の zip ファイルに結合します。ファイルは zip ファイルで以下のようになっています。
template.yml parameters.txt accounts.txt
-
zip ファイルを S3 バケットにアップロードします。このファイルは、CodePipeline でのデプロイアクションのために [パイプラインを作成する] ウィザードによって作成されたソースアーティファクトです。
ステップ 2: パイプラインを作成する
このセクションでは、次のアクションを使用してパイプラインを作成します。
-
ソースアーティファクトがテンプレートファイルやサポートソースファイルである S3 ソースアクションのあるソースステージ。
-
AWS CloudFormation スタックセットを作成する スタックセットデプロイアクションを含むデプロイステージ。
-
ターゲットアカウント内に AWS CloudFormation スタックとインスタンスを作成する スタックインスタンスのデプロイアクションを含むデプロイステージ。
CloudFormationStackSet アクションを使用してパイプラインを作成するには
にサインイン AWS Management Console し、http://console.aws.amazon.com/codesuite/codepipeline/home
で CodePipeline コンソールを開きます。 -
[ようこそ] ページ、[開始方法] ページ、または [パイプライン] ページで、[パイプラインの作成] を選択します。
-
[ステップ 1: 作成オプションを選択する] ページの [作成オプション] で、[カスタムパイプラインを構築する] オプションを選択します。[次へ] を選択します。
-
[ステップ 2: パイプラインの設定を選択する] で、[パイプライン名] に「
MyStackSetsPipeline
」と入力します。 -
このチュートリアルの目的では、[パイプラインタイプ] で、[V1] を選択します。[V2] を選択することもできますが、パイプラインタイプは特性と価格が異なることに注意してください。詳細については、「パイプラインのタイプ」を参照してください。
-
[サービスロール] で、[新しいサービスロール] を選択し、CodePipeline に IAM でのサービスロールの作成を許可します。
-
[アーティファクトストア] では、デフォルト値はそのままにしておきます。
注記
これはソースコードのソースバケットではありません。パイプラインのアーティファクトストアです。パイプラインごとに S3 バケットなどの個別のアーティファクトストアが必要です。パイプラインを作成または編集するときは、パイプラインリージョンにアーティファクトバケットと、アクションを実行している AWS リージョンごとに 1 つのアーティファクトバケットが必要です。
詳細については、入力および出力アーティファクトおよびCodePipeline パイプライン構造リファレンスを参照してください。
[Next (次へ)] を選択します。
-
[ステップ 3: ソースステージを追加する] ページの [ソースプロバイダー] で、[Amazon S3] を選択します。
-
[バケット] に、このチュートリアル用に作成した S3 ソースバケット (
BucketName
など) を入力します。[S3 オブジェクトキー] に、zip ファイルのファイルパスとファイル名 (MyFiles.zip
など) を入力します。 -
[Next (次へ)] を選択します。
-
[ステップ 4: ビルドステージを追加する] で、[ビルドステージをスキップ] を選択し、もう一度 [スキップ] を選択して警告メッセージを受け入れます。
[Next (次へ)] を選択します。
-
ステップ 5: テストステージを追加し、テストステージをスキップを選択し、もう一度スキップを選択して警告メッセージを受け入れます。
[Next (次へ)] を選択します。
-
ステップ 6: デプロイステージを追加する:
-
[デプロイプロバイダー] で、[AWS CloudFormation スタックセット] を選択します。
-
[スタックセット名] に、スタックセットの名前を入力します。これは、テンプレートが作成するスタックセットの名前です。
注記
スタックセット名を記録します。この名前は、パイプラインに 2 番目の StackSets デプロイアクションを追加するときに使用します。
-
[テンプレートパス] に、テンプレートファイルをアップロードしたアーティファクト名とファイルパスを入力します。例えば、デフォルトのソースアーティファクト名
SourceArtifact
を使用して次のように入力します。SourceArtifact::template.yml
-
[デプロイターゲット] に、アカウントファイルをアップロードしたアーティファクト名とファイルパスを入力します。例えば、デフォルトのソースアーティファクト名
SourceArtifact
を使用して次のように入力します。SourceArtifact::accounts.txt
-
デプロイターゲット AWS リージョンで、 などの初期スタックインスタンスをデプロイするためのリージョンを 1 つ入力します
us-east-1
。 -
[デプロイオプション] を拡張します。[パラメータ] に、パラメータファイルをアップロードしたアーティファクト名とファイルパスを入力します。例えば、デフォルトのソースアーティファクト名
SourceArtifact
を使用して次のように入力します。SourceArtifact::parameters.txt
パラメータをファイルパスではなく、リテラル入力として入力するには、次のように入力します。
ParameterKey=EnableLogFileValidation,ParameterValue=true ParameterKey=IncludeGlobalEvents,ParameterValue=true
-
[Capabilities] (機能) で、[CAPABILITY_IAM] と [CAPABILITY_NAMED_IAM] を選択します。
-
[アクセス許可モデル] で、[SELF_MANAGED] を選択します。
-
[障害耐性の割合] に「
20
」と入力します。 -
[最大同時割合] に「
25
」と入力します。 -
[Next (次へ)] を選択します。
-
ステップ 7: 確認で、パイプラインの作成を選択します。パイプラインが表示されます。
-
パイプラインの実行を許可します。
-
ステップ 3: 初期デプロイを表示する
初期デプロイのリソースとステータスを表示します。デプロイでスタックセットが正常に作成されたことを確認したら、2 番目のアクションを [デプロイ] ステージに追加します。
リソースを表示するには
CodePipeline コンソール (https://console.aws.amazon.com/codepipeline/
) を開きます。 -
[パイプライン] で、パイプラインを選択してから、[表示] を選択します。この図は、パイプラインのソースとデプロイのステージを示しています。
-
パイプラインの CloudFormationStackSet AWS CloudFormation アクションで アクションを選択します。スタックセットのテンプレート、リソース、イベントが AWS CloudFormation コンソールに表示されます。
-
左のナビゲーションメニューから [StackSets] を選択します。リストで、新しいスタックセットを選択します。
-
[スタックインスタンス] タブを選択します。us-east-1 リージョンでは、提供したアカウントごとに 1 つのスタックインスタンスが作成されていることを確認します。各スタックインスタンスのステータスが
CURRENT
になっていることを確認します。
ステップ 4: CloudFormationsStackInstances アクションを追加する
パイプラインに次のアクションを作成し、 AWS CloudFormation StackSets が残りのスタックインスタンスを作成できるようにします。
パイプラインで次のアクションを作成するには
-
CodePipeline コンソール (https://console.aws.amazon.com/codepipeline/
) を開きます。 [パイプライン] で、パイプラインを選択してから、[表示] を選択します。この図は、パイプラインのソースとデプロイのステージを示しています。
-
パイプラインの編集を選択します。パイプラインは [編集] モードで表示されます。
-
[デプロイ] ステージで、[編集] を選択します。
-
[AWS CloudFormation スタックセット] デプロイアクションで、[アクショングループの追加] を選択します。
-
[アクションの編集] ページで、アクションの詳細を追加します。
-
[アクション名] に、アクションの名前を入力します。
-
[アクションプロバイダー] で、[AWS CloudFormation スタックインスタンス] を選択します。
-
[入力アーティファクト] で、[ソースアーティファクト] を選択します。
-
[スタックセット名] に、スタックセットの名前を入力します。これは、最初のアクションで指定したスタックセットの名前です。
-
[デプロイターゲット] に、アカウントファイルをアップロードしたアーティファクト名とファイルパスを入力します。例えば、デフォルトのソースアーティファクト名
SourceArtifact
を使用して次のように入力します。SourceArtifact::accounts.txt
-
デプロイターゲット AWS リージョンで、
eu-central-1
次のようにus-east-2
や などの残りのスタックインスタンスをデプロイするリージョンを入力します。us-east2, eu-central-1
-
[障害耐性の割合] に「
20
」と入力します。 -
[最大同時割合] に「
25
」と入力します。 -
[保存] を選択します。
-
手動で変更を解除します。更新されたパイプラインがデプロイステージに 2 つのアクションと共に表示されます。
-
ステップ 5: デプロイのスタックセットリソースを表示する
スタックセットのデプロイのリソースとステータスを表示します。
リソースを表示するには
CodePipeline コンソール (https://console.aws.amazon.com/codepipeline/
) を開きます。 -
[パイプライン] で、パイプラインを選択してから、[表示] を選択します。この図は、パイプラインのソースとデプロイのステージを示しています。
-
パイプライン内の AWS CloudFormation アクションの
AWS CloudFormation Stack Instances
アクションを選択します。スタックセットのテンプレート、リソース、イベントが AWS CloudFormation コンソールに表示されます。 -
左のナビゲーションメニューから [StackSets] を選択します。リストで、スタックセットを選択します。
-
[スタックインスタンス] タブを選択します。提供した各アカウントの残りのスタックインスタンスが、すべて想定したリージョンで作成または更新されていることを確認します。各スタックインスタンスのステータスが
CURRENT
になっていることを確認します。
ステップ 6: スタックセットを更新する
スタックセットを更新し、インスタンスに更新をデプロイします。この例では、更新用に指定するデプロイターゲットも変更します。更新のパートではないインスタンスは、古いステータスに移行します。
CodePipeline コンソール (https://console.aws.amazon.com/codepipeline/
) を開きます。 -
[パイプライン] で、パイプラインを選択してから、[編集] を選択します。[デプロイ] ステージで、[編集] を選択します。
-
パイプラインで、[AWS CloudFormation スタックセット] アクションを選択して編集します。[説明] で、既存の説明をスタックセットの新しい説明に書き直します。
-
パイプラインで、[AWS CloudFormation スタックインスタンス] アクションを選択して編集します。デプロイターゲット AWS リージョンで、アクションの作成時に入力された
us-east-2
値を削除します。 -
変更を保存します。[変更のリリース] を選択して、パイプラインを実行します。
-
AWS CloudFormationでアクションを開きます。[StackSet の情報] タブを選択します。[StackSet の説明] で、新しい説明が表示されていることを確認します。
-
[スタックインスタンス] タブを選択します。[ステータス] で、us-east-2 のスタックインスタンスのステータスが
OUTDATED
であることを確認します。