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

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

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

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

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

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

前提条件

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

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

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

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

注記

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

S3 ソースバケットを作成するには
  1. にサインイン AWS Management Console し、https://console.aws.amazon.com/s3/ で Amazon 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 ソースアクションのあるソースステージ。

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

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

CloudFormationStackSet アクションを使用してパイプラインを作成するには
  1. にサインイン AWS Management Console し、http://console.aws.amazon.com/codesuite/codepipeline/home で CodePipeline コンソールを開きます。

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

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

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

  5. サービスロール で、IAM でサービスロールを作成することを許可する新しいサービスロール を選択します。 CodePipeline

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

    注記

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

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

    [次へ] を選択します。

  7. [Step 2: Add source stage] (ステップ 2: ソースステージを追加する) ページの [ソースプロバイダー] で [Amazon S3] を選択します。

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

  9. [次へ] をクリックします。

  10. [Step 3: Add build stage] (ステップ 3: ビルドステージを追加する) で、[Skip build stage] (ビルドステージのスキップ) を選択し、もう一度 [スキップ] を選択して警告メッセージを受け入れます。

    [次へ] をクリックします。

  11. ステップ 4: デプロイステージを追加する:

    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. [パイプラインの作成] を選択します。パイプラインが表示されます。

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

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

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

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

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

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

  4. 左側のナビゲーションパネルで、 を選択しますStackSets。リストで、新しいスタックセットを選択します。

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

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

パイプラインに、 が残りのスタックインスタンス AWS CloudFormation StackSets を作成できるようにする次のアクションを作成します。

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

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

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

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

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

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

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

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

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

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

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

      SourceArtifact::accounts.txt
    6. デプロイターゲット で AWS リージョンus-east-2や など、残りのスタックインスタンスをデプロイするリージョンをeu-central-1次のように入力します。

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

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

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

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

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

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

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

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

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

  4. 左側のナビゲーションパネルで、 を選択しますStackSets。リストで、スタックセットを選択します。

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

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

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

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

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

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

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

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

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

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