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

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

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

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

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

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

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

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

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

    "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. [ファイルの選択] を選択し、ファイルを参照します。ユーザー名とメールアドレスを入力して、変更をコミットします。[変更のコミット] を選択します。

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

    documentdb_full_stack.yml

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

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

  • CodeCommit アクションを持つソースステージ。ソースアーティファクトがテンプレートファイルである。

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

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

ウィザードを使用してパイプラインを作成するには

  1. にサインインします。AWS Management Consoleを開き、CodePipeline コンソールをhttp://console.aws.amazon.com/codesuite/codepipeline/home

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

  3. Eclipseステップ 1: パイプラインの設定の選択, でパイプライン名「」と入力します。MyCFNDeployPipeline

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

    • 選択新しいサービスロールCodePipeline が IAM でのサービスロールの作成を許可します。[ロール名] では、ロールとポリシーの名前はいずれもデフォルトで AWSCodePipelineServiceRole-region-pipeline_name という形式になります。

      例えば、このチュートリアルで作成したサービスロールは AWSCodePipelineServiceRole-us-west-2-MyS3DeployPipeline となります。

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

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

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

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

    注記

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

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

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

  6. Eclipseステップ 2: ソースステージの追加:

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

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

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

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

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

  7. Eclipseステップ 3: ビルドステージの追加] で、ビルドステージのスキップを選択し、[スキップをクリックします。

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

  8. Eclipseステップ 4: デプロイステージの追加:

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

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

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

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

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

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

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

      
                ステップ 4 のフィールドを示すコンソールのスクリーンショット: デプロイステージの追加。
    6. [Next (次へ)] を選択します。

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

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

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

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

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

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

  3. 前のアクションで作成したスタックに対する変更セットを作成するデプロイアクションを追加します。

    1. [アクション名] に、「Change_Set」と入力します。Eclipseアクションプロバイダ] で、AWSCloudFormation

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

    3. [アクションモード] で [変更セットの作成または置換] を選択します。

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

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

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

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

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

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

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

    1. [アクション名] に、「Execute_Change_Set」と入力します。Eclipseアクションプロバイダ] で、AWSCloudFormation

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

    3. [アクションモード] で [変更セットの実行] を選択します。

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

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

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

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

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

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

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

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

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

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

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

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

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

      
                スタックを削除するためのデプロイアクションを追加する方法を示すコンソールのスクリーンショット。
    4. [完了] をクリックしてアクションを保存します。

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

      
                ソース、デプロイ、承認、スタック削除のパイプラインステージを示す図。

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