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

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

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

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

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

重要

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

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

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

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

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

    "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 し、http://console.aws.amazon.com/codesuite/codepipeline/home で CodePipeline コンソールを開きます。

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

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

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

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

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

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

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

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

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

    注記

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

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

    [Next (次へ)] を選択します。

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

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

    2. リポジトリ名 で、 で作成した CodeCommit リポジトリの名前を選択しますステップ 1: 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. [保存] をクリックしてポリシーを保存します。

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