チュートリアル: AWS CloudFormation StackSets デプロイアクションでパイプラインを作成する - AWS CodePipeline

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

チュートリアル: AWS CloudFormation StackSets デプロイアクションでパイプラインを作成する

このチュートリアルでは、AWS CodePipeline コンソールを使用して、スタックセットとスタックインスタンスを作成するためのデプロイアクションを使用したパイプラインを作成します。パイプラインが実行されると、テンプレートはスタックセットを作成し、スタックセットをデプロイするインスタンスを作成および更新します。

重要

パイプライン作成の一環として、CodePipeline は、ユーザーが指定した S3 アーティファクトバケットをアーティファクトとして使用します (これは S3 ソースアクションで使用するバケットとは異なります)。S3 アーティファクトバケットがパイプラインのアカウントとは異なるアカウントにある場合は、S3 アーティファクトバケットを所有している AWS アカウントが安全で信頼できることを確認してください。

スタックセットの許可を管理する方法には、セルフマネージド型の IAM ロールと AWS マネージド型の IAM ロールの 2 つがあります。このチュートリアルでは、セルフマネージド型の許可の例を示します。

CodePipeline で StackSets を最も効果的に使用するには、CloudFormation StackSets の背後にある概念とその仕組みを明確に理解しておく必要があります。AWS CloudFormation ユーザーガイドの「StackSets の概念」を参照してください。

前提条件

スタックセットオペレーションでは、管理者アカウントとターゲットアカウントの 2 つの異なるアカウントを使用します。管理者アカウントでは、スタックセットを作成します。ターゲットアカウントでは、スタックセットに属する個別のスタックを作成します。

管理者アカウントで管理者ロールを作成するには
ターゲットアカウントにサービスロールを作成するには

ステップ 1: サンプル AWS CloudFormation テンプレートとパラメータファイルをアップロードする

スタックセットテンプレートとパラメータファイルのソースバケットを作成します。サンプル AWS CloudFormation テンプレートファイルをダウンロードし、パラメータファイルを設定後、S3 ソースバケットにアップロードする前にファイルを圧縮します。

注記

ソースファイルが唯一のテンプレートであっても、S3 ソースバケットにアップロードする前に、必ずソースファイルを圧縮してください。

S3 ソースバケットを作成するには
  1. AWS マネジメントコンソール にサインインし、Amazon S3 コンソール (https://console.aws.amazon.com/s3/) を開きます。

  2. [バケットを作成] を選択します。

  3. [バケット名] にバケットの名前を入力します。

    [リージョン] で、パイプラインを作成するリージョンを選択します。[バケットを作成] を選択します。

  4. バケットが作成されると、成功バナーが表示されます。[バケットの詳細に移動] を選択します。

  5. [プロパティ] タブで、[バージョニング] を選択します。[バージョニングの有効化] を選択し、[保存] を選択します。

AWS CloudFormation テンプレートファイルを作成するには
  1. スタックセットの CloudTrail 設定を生成するために、サンプルテンプレートファイル https://s3.amazonaws.com/cloudformation-stackset-sample-templates-us-east-1/EnableAWSCloudtrail.yml をダウンロードします。

  2. template.yml という名前でファイルを保存します。

parameters.txt ファイルを作成するには
  1. デプロイのパラメータでファイルを作成します。パラメータは、実行時にスタック内で更新する値です。次のサンプルファイルは、スタックセットのテンプレートパラメータを更新して、ログ記録検証とグローバルイベントを有効にします。

    [ { "ParameterKey": "EnableLogFileValidation", "ParameterValue": "true" }, { "ParameterKey": "IncludeGlobalEvents", "ParameterValue": "true" } ]
  2. parameters.txt という名前でファイルを保存します。

accounts.txt ファイルを作成するには
  1. 次のサンプルファイルに示されているように、インスタンスを作成するアカウントでファイルを作成します。

    [ "111111222222","333333444444" ]
  2. accounts.txt という名前でファイルを保存します。

ソースファイルを作成してアップロードするには
  1. ファイルを単一の zip ファイルに結合します。ファイルは zip ファイルで以下のようになっています。

    template.yml parameters.txt accounts.txt
  2. zip ファイルを S3 バケットにアップロードします。このファイルは、CodePipeline でのデプロイアクションのために [パイプラインを作成する] ウィザードによって作成されたソースアーティファクトです。

ステップ 2: パイプラインを作成する

このセクションでは、次のアクションを使用してパイプラインを作成します。

  • ソースアーティファクトがテンプレートファイルやサポートソースファイルである S3 ソースアクションのあるソースステージ。

  • スタックセットを作成する CloudFormation スタックセットデプロイアクションのあるデプロイステージ。

  • ターゲットアカウント内にスタックとインスタンスを作成する CloudFormation スタックインスタンスデプロイアクションのあるデプロイステージ。

CloudFormationStackSet アクションを使用してパイプラインを作成するには
  1. AWS マネジメントコンソール にサインインして、CodePipeline コンソール (https://console.aws.amazon.com/codesuite/codebuild/home) を開きます。

  2. [ようこそ] ページ、[開始方法] ページ、または [パイプライン] ページで、[パイプラインの作成] を選択します。

  3. [ステップ 1: 作成オプションを選択する] ページの [作成オプション] で、[カスタムパイプラインを構築する] オプションを選択します。[次へ] を選択します。

  4. [ステップ 2: パイプラインの設定を選択する] で、[パイプライン名] に「MyStackSetsPipeline」と入力します。

  5. このチュートリアルの目的では、[パイプラインタイプ] で、[V1] を選択します。[V2] を選択することもできますが、パイプラインタイプは特性と価格が異なることに注意してください。詳細については、「パイプラインのタイプ」を参照してください。

  6. サービスロール で、新しいサービスロール を選択し、CodePipeline に IAM でのサービスロールの作成を許可します。

  7. [アーティファクトストア] では、デフォルト値はそのままにしておきます。

    注記

    これはソースコードのソースバケットではありません。パイプラインのアーティファクトストアです。パイプラインごとに S3 バケットなどの個別のアーティファクトストアが必要です。パイプラインを作成または編集する場合は、パイプラインリージョンにアーティファクトバケットが必要であり、アクションを実行する AWS リージョンごとに 1 つのアーティファクトバケットが必要です。

    詳細については、「入力および出力アーティファクト」および「CodePipeline パイプライン構造リファレンス」を参照してください。

    [次へ] を選択します。

  8. [ステップ 3: ソースステージの追加] ページの [ソースプロバイダー] で、[Amazon S3] を選択します。

  9. [バケット] に、このチュートリアル用に作成した S3 ソースバケット (BucketName など) を入力します。[S3 オブジェクトキー] に、zip ファイルのファイルパスとファイル名 (MyFiles.zip など) を入力します。

  10. [次へ] を選択します。

  11. [ステップ 4: ビルドステージの追加] で、[ビルドステージをスキップ] を選択し、もう一度 [スキップ] を選択して警告メッセージを受け入れます。

    [次へ] を選択します。

  12. [ステップ 5: テストステージの追加] で、[テストステージをスキップ] を選択し、もう一度 [スキップ] を選択して警告メッセージを受け入れます。

    [次へ] を選択します。

  13. ステップ 6: デプロイステージの追加:

    1. [デプロイプロバイダー] で、[AWS CloudFormation スタックセット] を選択します。

    2. [スタックセット名] に、スタックセットの名前を入力します。これは、テンプレートが作成するスタックセットの名前です。

      注記

      スタックセット名を記録します。この名前は、パイプラインに 2 番目の StackSets デプロイアクションを追加するときに使用します。

    3. [テンプレートパス] に、テンプレートファイルをアップロードしたアーティファクト名とファイルパスを入力します。例えば、デフォルトのソースアーティファクト名 SourceArtifact を使用して次のように入力します。

      SourceArtifact::template.yml
    4. [デプロイターゲット] に、アカウントファイルをアップロードしたアーティファクト名とファイルパスを入力します。例えば、デフォルトのソースアーティファクト名 SourceArtifact を使用して次のように入力します。

      SourceArtifact::accounts.txt
    5. [デプロイ先の AWS リージョン] に、最初のスタックインスタンスをデプロイする 1 つのリージョン (us-east-1 など) を入力します。

    6. [デプロイオプション] を拡張します。[パラメータ] に、パラメータファイルをアップロードしたアーティファクト名とファイルパスを入力します。例えば、デフォルトのソースアーティファクト名 SourceArtifact を使用して次のように入力します。

      SourceArtifact::parameters.txt

      パラメータをファイルパスではなく、リテラル入力として入力するには、次のように入力します。

      ParameterKey=EnableLogFileValidation,ParameterValue=true ParameterKey=IncludeGlobalEvents,ParameterValue=true
    7. [Capabilities] (機能) で、[CAPABILITY_IAM] と [CAPABILITY_NAMED_IAM] を選択します。

    8. [アクセス許可モデル] で、[SELF_MANAGED] を選択します。

    9. [障害耐性の割合] に「20」と入力します。

    10. [最大同時割合] に「25」と入力します。

    11. [次へ] を選択します。

    12. [ステップ 7: レビュー] で、[パイプラインを作成する] を選択します。パイプラインが表示されます。

    13. パイプラインの実行を許可します。

ステップ 3: 初期デプロイを表示する

初期デプロイのリソースとステータスを表示します。デプロイでスタックセットが正常に作成されたことを確認したら、2 番目のアクションを [デプロイ] ステージに追加します。

リソースを表示するには
  1. CodePipeline コンソール (https://console.aws.amazon.com/codepipeline/) を開きます。

  2. [パイプライン] で、パイプラインを選択してから、[表示] を選択します。この図は、パイプラインのソースとデプロイのステージを示しています。

  3. パイプラインの CloudFormations StackSet アクションで CloudFormation アクションを選択します。スタックセットのテンプレート、リソース、イベントが CloudFormation コンソールに表示されます。

  4. 左のナビゲーションメニューから [StackSets] を選択します。リストで、新しいスタックセットを選択します。

  5. [スタックインスタンス] タブを選択します。us-east-1 リージョンでは、提供したアカウントごとに 1 つのスタックインスタンスが作成されていることを確認します。各スタックインスタンスのステータスが CURRENT になっていることを確認します。

ステップ 4: CloudFormationsStackInstances アクションを追加する

次のアクションを、CloudFormation StackSets に remainingstack インスタンスの作成を許可するパイプラインで作成します。

パイプラインで次のアクションを作成するには
  1. CodePipeline コンソール (https://console.aws.amazon.com/codepipeline/) を開きます。

    [パイプライン] で、パイプラインを選択してから、[表示] を選択します。この図は、パイプラインのソースとデプロイのステージを示しています。

  2. パイプラインの編集を選択します。パイプラインは [編集] モードで表示されます。

  3. [デプロイ] ステージで、[編集] を選択します。

  4. [AWS CloudFormation スタックセット] デプロイアクションで、[アクショングループの追加] を選択します。

  5. [アクションの編集] ページで、アクションの詳細を追加します。

    1. [アクション名] に、アクションの名前を入力します。

    2. [アクションプロバイダー] で、[AWS CloudFormation スタックインスタンス] を選択します。

    3. [入力アーティファクト] で、[ソースアーティファクト] を選択します。

    4. [スタックセット名] に、スタックセットの名前を入力します。これは、最初のアクションで指定したスタックセットの名前です。

    5. [デプロイターゲット] に、アカウントファイルをアップロードしたアーティファクト名とファイルパスを入力します。例えば、デフォルトのソースアーティファクト名 SourceArtifact を使用して次のように入力します。

      SourceArtifact::accounts.txt
    6. [デプロイ先の AWS リージョン] に、残りのスタックインスタンスをデプロイするリージョン (us-east-2eu-central-1 など) を以下のように入力します。

      us-east2, eu-central-1
    7. [障害耐性の割合] に「20」と入力します。

    8. [最大同時割合] に「25」と入力します。

    9. [保存] を選択します。

    10. 手動で変更を解除します。更新されたパイプラインがデプロイステージに 2 つのアクションと共に表示されます。

ステップ 5: デプロイのスタックセットリソースを表示する

スタックセットのデプロイのリソースとステータスを表示します。

リソースを表示するには
  1. CodePipeline コンソール (https://console.aws.amazon.com/codepipeline/) を開きます。

  2. [パイプライン] で、パイプラインを選択してから、[表示] を選択します。この図は、パイプラインのソースとデプロイのステージを示しています。

  3. パイプラインの AWS CloudFormation Stack Instances アクションで、CloudFormation アクションを選択します。スタックセットのテンプレート、リソース、イベントが CloudFormation コンソールに表示されます。

  4. 左のナビゲーションメニューから [StackSets] を選択します。リストで、スタックセットを選択します。

  5. [スタックインスタンス] タブを選択します。提供した各アカウントの残りのスタックインスタンスが、すべて想定したリージョンで作成または更新されていることを確認します。各スタックインスタンスのステータスが CURRENT になっていることを確認します。

ステップ 6: スタックセットを更新する

スタックセットを更新し、インスタンスに更新をデプロイします。この例では、更新用に指定するデプロイターゲットも変更します。更新のパートではないインスタンスは、古いステータスに移行します。

  1. CodePipeline コンソール (https://console.aws.amazon.com/codepipeline/) を開きます。

  2. [パイプライン] で、パイプラインを選択してから、[編集] を選択します。[デプロイ] ステージで、[編集] を選択します。

  3. パイプラインで、[AWS CloudFormation スタックセット] アクションを選択して編集します。[説明] で、既存の説明をスタックセットの新しい説明に書き直します。

  4. パイプラインで、[AWS CloudFormation スタックインスタンス] アクションを選択して編集します。[デプロイ先の AWS リージョン] で、アクションの作成時に入力された値 us-east-2 を削除します。

  5. 変更を保存します。[変更のリリース] を選択して、パイプラインを実行します。

  6. CloudFormation でアクションを開きます。[StackSet の情報] タブを選択します。[StackSet の説明] で、新しい説明が表示されていることを確認します。

  7. [スタックインスタンス] タブを選択します。[ステータス] で、us-east-2 のスタックインスタンスのステータスが OUTDATED であることを確認します。