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

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

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

このチュートリアルでは、AWS CodePipeline コンソールでデプロイアクションを使用してパイプラインを作成します。パイプラインが実行されると、テンプレートはスタックを作成し、さらに outputs ファイルを作成します。スタックテンプレートによって生成される出力は、CodePipeline の AWS CloudFormation アクションによって生成される変数です。

テンプレートからスタックを作成するアクションに、変数の名前空間を指定します。outputs ファイルによって生成された変数は、以降のアクションで使用できます。次の例では、AWS CloudFormation アクションによって生成された StackName 変数に基づいて変更セットを作成します。手動承認の後で、変更セットを実行し、StackName 変数に基づいてスタックを削除するスタック削除アクションを作成します。

前提条件: AWS CloudFormation サービスロールと CodeCommit リポジトリを作成します。

以下のものを用意しておく必要があります。

  • CodeCommit リポジトリ。「チュートリアル: シンプルなパイプラインを作成する (CodeCommit リポジトリ)」で作成した AWS CodeCommit リポジトリを使用できます。

  • 次の例では、テンプレートから Amazon DocumentDB スタックを作成します。Amazon DocumentDB で次のアクセス許可を持つ AWS Identity and Access Management サービスロールを作成するには、AWS CloudFormation (IAM) を使用する必要があります。

    "rds:DescribeDBClusters", "rds:CreateDBCluster", "rds:DeleteDBCluster", "rds:CreateDBInstance"

ステップ 1: AWS CloudFormation のサンプルテンプレートをダウンロード、編集、アップロードする

サンプル AWS CloudFormation テンプレートファイルをダウンロードし、それを CodeCommit リポジトリにアップロードします。

  1. リージョンのサンプルテンプレートページに移動します。例えば、us-west-2 のページは https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/sample-templates-services-us-west-2.html にあります。Amazon DocumentDB で、Amazon DocumentDB クラスターのテンプレートをダウンロードします。ファイル名は documentdb_full_stack.yaml です。

  2. documentdb_full_stack.yaml ファイルを解凍し、テキストエディタで開きます。以下の変更を加えます。

    1. 次の例では、テンプレートの Parameters セクションに次の Purpose: パラメータを追加します。

      Purpose: Type: String Default: testing AllowedValues: - testing - production Description: The purpose of this instance.
    2. 次の例では、テンプレートの Outputs: セクションに次の StackName 出力を追加します。

      StackName: Value: !Ref AWS::StackName
  3. テンプレートファイルを AWS CodeCommit リポジトリにアップロードします。解凍および編集したテンプレートファイルを、リポジトリのルートディレクトリにアップロードする必要があります。

    CodeCommit コンソールを 使用して、ファイルをアップロードします。

    1. CodeCommit コンソールを開き、リポジトリ リストから自分のリポジトリを選択します。

    2. [Add file]、[Upload file] の順に選択します。

    3. [ファイルの選択] を選択し、ファイルを参照します。ユーザー名とメールアドレスを入力して、変更をコミットします。[Commit changes] (変更のコミット) を選択します。

    ファイルは、リポジトリのルートレベルに次のように表示されます。

    documentdb_full_stack.yaml

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

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

  • 出典アーティファクトがテンプレートファイルであるCodeCommitアクションを含む出典ステージ。

  • デプロイステージでの AWS CloudFormation デプロイアクション。

ウィザードによって作成されたソースステージとデプロイステージの各アクションには、変数の名前空間として SourceVariablesDeployVariables がそれぞれ割り当てられます。アクションには名前空間が割り当てられるため、この例で設定した変数はダウンストリームアクションで使用可能になります。詳細については、「可変」を参照してください。

ウィザードを使用してパイプラインを作成するには
  1. AWS Management Console にサインインして、 CodePipeline コンソール https://console.aws.amazon.com/codesuite/codebuild/home を開きます。

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

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

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

  5. [Service role (サービスロール)] で、次のいずれかの操作を行います。

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

    • [Existing service role (既存のサービスロール)] を選択します。[ロール名] で、リストからサービスロールを選択します。

  6. アーティファクトストア:

    1. パイプライン用に選択したリージョンのパイプラインに、デフォルトとして指定された Amazon S3 アーティファクトバケットなどのデフォルトのアーティファクトストアを使用するには、デフォルトの場所 を選択します。

    2. Amazon S3 アーティファクトバケットなどのアーティファクトストアがパイプラインと同じリージョンに既に存在する場合は、カスタムの場所 を選択します。

    注記

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

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

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

  7. [ステップ 2: ソースステージを追加する] で次の操作を行います

    1. [ソースプロバイダ] で、AWS CodeCommit を選択します。

    2. リポジトリ名 で、ステップ 1: CodeCommit リポジトリを作成する で作成した CodeCommit リポジトリの名前を選択します。

    3. [Branch name] で、最新のコード更新を含むブランチの名前を選択します。

    リポジトリ名とブランチを選択した後、このパイプライン用に作成される Amazon CloudWatch Events ルールが表示されます。

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

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

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

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

    1. [アクション名] で、[デプロイ] をクリックします。[デプロイプロバイダー] で、[CloudFormation] を選択します。

    2. [アクションモード] で、[スタックを作成または更新する] をクリックします。

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

    4. [出力ファイル名] に、出力ファイルの名前 (outputs など) を入力します。これは、スタックの作成後にアクションによって作成されるファイルの名前です。

    5. [Advanced] を展開します。[パラメータの上書き] で、テンプレートの上書きをキーと値のペアとして入力します。例えば、このテンプレートには、次の上書きが必要です。

      { "DBClusterName": "MyDBCluster", "DBInstanceName": "MyDBInstance", "MasterUser": "UserName", "MasterPassword": "Password", "DBInstanceClass": "db.r4.large", "Purpose": "testing"}

      上書きを入力しない場合、テンプレートはスタックをデフォルト値で作成します。

    6. [Next] (次へ) をクリックします。

    7. [パイプラインの作成] を選択します。パイプラインの実行を許可します。2 つのステージで構成されたパイプラインが完成し、他のステージを追加する準備が整いました。

ステップ 3: 変更セットを作成するための AWS CloudFormation デプロイアクションを追加する

手動承認アクションの前に変更セットを作成することを AWS CloudFormation に許可するアクションをパイプラインに作成します。

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

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

  2. [編集] モードで、パイプラインを編集するか、引き続きパイプラインを表示するかを選択します。

  3. デプロイステージを編集することを選択します。

  4. 前のアクションで作成したスタックに対する変更セットを作成するデプロイアクションを追加します。このアクションは、ステージ内の既存のアクションの後に追加します。

    1. [アクション名] に、「Change_Set」と入力します。[アクションプロバイダー] で、[AWS CloudFormation ] を選択します。

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

    3. [Action mode] (アクションモード) で [Create or replace a change set] (変更セットの作成または置換) を選択します。

    4. [スタック名] に、次のように変数の構文を入力します。これは、変更セットを作成する対象のスタックの名前です。アクションには、デフォルトの名前空間 DeployVariables が割り当てられます。

      #{DeployVariables.StackName}
    5. [変更セット名] に、変更セットの名前を入力します。

      my-changeset
    6. [パラメータの上書き] で、Purpose パラメータを testing から production に変更します。

      { "DBClusterName": "MyDBCluster", "DBInstanceName": "MyDBInstance", "MasterUser": "UserName", "MasterPassword": "Password", "DBInstanceClass": "db.r4.large", "Purpose": "production"}
    7. [完了] をクリックしてアクションを保存します。

ステップ 4: 手動承認アクションを追加する

パイプラインで手動承認アクションを作成します。

  1. [編集] モードで、パイプラインを編集するか、引き続きパイプラインを表示するかを選択します。

  2. デプロイステージを編集することを選択します。

  3. 変更セットを作成するデプロイアクションの後に、手動承認アクションを追加します。このアクションを使用すると、パイプラインで変更セットを実行する前に、AWS CloudFormation で作成したリソース変更セットを確認できます。

ステップ 5: 変更セットを実行するための CloudFormation デプロイアクションを追加する

手動承認アクションの後に変更セットを実行することを AWS CloudFormation に許可するアクションをパイプラインに作成します。

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

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

  2. [編集] モードで、パイプラインを編集するか、引き続きパイプラインを表示するかを選択します。

  3. デプロイステージを編集することを選択します。

  4. 前の手動アクションで承認した変更セットを実行するデプロイアクションを追加します。

    1. [アクション名] に、「Execute_Change_Set」と入力します。[アクションプロバイダー] で、[AWS CloudFormation ] を選択します。

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

    3. [Action mode] (アクションモード) で、 [Execute a change set] (変更セットの実行) を選択します。

    4. [スタック名] に、次のように変数の構文を入力します。これは、変更セットを作成する対象のスタックの名前です。

      #{DeployVariables.StackName}
    5. [変更セット名] に、前のアクションで作成した変更セットの名前を入力します。

      my-changeset
    6. [完了] をクリックしてアクションを保存します。

    7. パイプラインの実行を続行します。

ステップ 6: スタックを削除するための CloudFormation デプロイアクションを追加する

出力ファイルの変数からスタック名を取得し、スタックを削除することを AWS CloudFormation に許可する最後のアクションをパイプラインに作成します。

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

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

  2. パイプラインの編集を選択します。

  3. デプロイステージを編集することを選択します。

  4. スタックを削除するデプロイアクションを追加します。

    1. [アクション名] で、[DeleteStack] を選択します。[デプロイプロバイダー] で、[CloudFormation] を選択します。

    2. [アクションモード] で、[スタックを削除する] をクリックします。

    3. [スタック名] に、次のように変数の構文を入力します。これは、アクションで削除するスタックの名前です。

    4. [完了] をクリックしてアクションを保存します。

    5. [保存] をクリックしてポリシーを保存します。

    パイプラインは保存すると実行されます。