翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。
チュートリアル: AWS CloudFormation デプロイアクションの変数を使用するパイプラインを作成する
このチュートリアルでは、AWS CodePipeline コンソールでデプロイアクションを使用してパイプラインを作成します。パイプラインが実行されると、テンプレートはスタックを作成し、さらに outputs
ファイルを作成します。スタックテンプレートによって生成される出力は、 CodePipeline の AWS CloudFormation アクションによって生成される変数です。
テンプレートからスタックを作成するアクションに、変数の名前空間を指定します。outputs
ファイルによって生成された変数は、以降のアクションで使用できます。次の例では、AWS CloudFormation アクションによって生成された StackName
変数に基づいて変更セットを作成します。手動承認の後で、変更セットを実行し、StackName
変数に基づいてスタックを削除するスタック削除アクションを作成します。
トピック
- 前提条件:AWS CloudFormationサービスロールと CodeCommit リポジトリを作成します。
- ステップ 1: AWS CloudFormation のサンプルテンプレートをダウンロード、編集、アップロードする
- ステップ 2: パイプラインを作成する
- ステップ 3: 変更セットを作成するための AWS CloudFormation デプロイアクションを追加する
- ステップ 4: 手動承認アクションを追加する
- ステップ 5: CloudFormation 変更セットを実行するデプロイアクションを追加する
- ステップ 6: CloudFormation スタックを削除するデプロイアクションを追加する
前提条件: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 リポジトリにアップロードします。
-
リージョンのサンプルテンプレートページに移動します。例えば、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
です。 -
documentdb_full_stack.yaml
ファイルを解凍し、テキストエディタで開きます。以下の変更を加えます。-
次の例では、テンプレートの
Parameters
セクションに次のPurpose:
パラメータを追加します。Purpose: Type: String Default: testing AllowedValues: - testing - production Description: The purpose of this instance.
-
次の例では、テンプレートの
Outputs:
セクションに次のStackName
出力を追加します。StackName: Value: !Ref AWS::StackName
-
-
テンプレートファイルを AWS CodeCommit リポジトリにアップロードします。解凍および編集したテンプレートファイルを、リポジトリのルートディレクトリにアップロードする必要があります。
CodeCommit コンソールを使用してファイルをアップロードするには:
-
CodeCommit コンソールを開き、リポジトリリストから自分のリポジトリを選択します。
-
[Add file]、[Upload file] の順に選択します。
-
[ファイルの選択] を選択し、ファイルを参照します。ユーザー名とメールアドレスを入力して、変更をコミットします。[Commit changes] (変更のコミット) を選択します。
ファイルは、リポジトリのルートレベルに次のように表示されます。
documentdb_full_stack.yaml
-
ステップ 2: パイプラインを作成する
このセクションでは、次のアクションを使用してパイプラインを作成します。
-
CodeCommit アクションを含むソースステージ。ソースアーティファクトはテンプレートファイルです。
-
デプロイステージでの AWS CloudFormation デプロイアクション。
ウィザードによって作成されたソースステージとデプロイステージの各アクションには、変数の名前空間として SourceVariables
、DeployVariables
がそれぞれ割り当てられます。アクションには名前空間が割り当てられるため、この例で設定した変数はダウンストリームアクションで使用可能になります。詳細については、「可変」を参照してください。
ウィザードを使用してパイプラインを作成するには
にサインインしてAWS Management Console、http://console.aws.amazon.com/codesuite/codepipeline/home CodePipeline
でコンソールを開きます。 -
[ようこそ] ページ、[Getting started] (開始方法) ページ、または [パイプライン] ページで、[パイプラインの作成] を選択します。
-
[ステップ 1: パイプラインの設定を選択する] の [パイプライン名] に「
MyCFNDeployPipeline
」と入力します。 -
[Service role (サービスロール)] で、次のいずれかの操作を行います。
-
New service role を選択して、IAM CodePipeline でのサービスロールの作成を許可します。
-
[Existing service role (既存のサービスロール)] を選択します。[ロール名] で、リストからサービスロールを選択します。
-
-
アーティファクトストア:
-
パイプライン用に選択したリージョンのパイプラインに、デフォルトとして指定された Amazon S3 アーティファクトバケットなどのデフォルトのアーティファクトストアを使用するには、デフォルトの場所 を選択します。
-
Amazon S3 アーティファクトバケットなどのアーティファクトストアがパイプラインと同じリージョンに既に存在する場合は、カスタムの場所 を選択します。
注記
これはソースコードのソースバケットではありません。パイプラインのアーティファクトストアです。パイプラインごとに S3 バケットなどの個別のアーティファクトストアが必要です。パイプラインを作成または編集する場合は、パイプラインリージョンにアーティファクトバケットが必要であり、アクションを実行する AWS リージョンごとに 1 つのアーティファクトバケットが必要です。
詳細については、入力および出力アーティファクト および CodePipeline パイプライン構造リファレンス を参照してください。
[次へ] を選択します。
-
-
[ステップ 2: ソースステージを追加する] で次の操作を行います
-
[ソースプロバイダ] で、AWS CodeCommit を選択します。
-
リポジトリ名で、 CodeCommit で作成したリポジトリの名前を選択しますステップ 1: CodeCommit レポジトリを作成する。
-
[Branch name] で、最新のコード更新を含むブランチの名前を選択します。
リポジトリ名とブランチを選択した後、このパイプラインのために作成される Amazon CloudWatch Events ルールが表示されます。
[Next] (次へ) を選択します。
-
-
[Step 3: Add build stage] (ステップ 3: ビルドステージを追加する) で、[Skip build stage] (ビルドステージのスキップ) を選択し、もう一度 [スキップ] を選択して警告メッセージを受け入れます。
[Next] (次へ) を選択します。
-
ステップ 4: デプロイステージを追加する:
-
[アクション名] で、[デプロイ] をクリックします。[デプロイプロバイダ] で、[CloudFormation] を選択します。
-
[アクションモード] で、[スタックを作成または更新する] をクリックします。
-
[スタック名] に、スタックの名前を入力します。これは、テンプレートが作成するスタックの名前です。
-
[出力ファイル名] に、出力ファイルの名前 (
outputs
など) を入力します。これは、スタックの作成後にアクションによって作成されるファイルの名前です。 -
[Advanced] を展開します。[パラメータの上書き] で、テンプレートの上書きをキーと値のペアとして入力します。例えば、このテンプレートには、次の上書きが必要です。
{ "DBClusterName": "MyDBCluster", "DBInstanceName": "MyDBInstance", "MasterUser": "
UserName
", "MasterPassword": "Password
", "DBInstanceClass": "db.r4.large", "Purpose": "testing"}上書きを入力しない場合、テンプレートはスタックをデフォルト値で作成します。
-
[Next] (次へ) を選択します。
-
[パイプラインの作成] を選択します。パイプラインの実行を許可します。2 つのステージで構成されたパイプラインが完成し、他のステージを追加する準備が整いました。
-
ステップ 3: 変更セットを作成するための AWS CloudFormation デプロイアクションを追加する
手動承認アクションの前に変更セットを作成することを AWS CloudFormation に許可するアクションをパイプラインに作成します。
-
https://console.aws.amazon.com/codepipeline/ CodePipeline
でコンソールを開きます。 [パイプライン] で、パイプラインを選択してから、[表示] を選択します。この図は、パイプラインのソースとデプロイのステージを示しています。
-
[編集] モードで、パイプラインを編集するか、引き続きパイプラインを表示するかを選択します。
-
Deploy ステージの編集を選択します。
-
前のアクションで作成されたスタックの変更セットを作成するデプロイアクションを追加します。このアクションは、ステージ内の既存のアクションの後に追加します。
-
[アクション名] に、「Change_Set」と入力します。アクションプロバイダーで、を選択しますAWS CloudFormation。
-
入力アーティファクトで、を選択しますSourceArtifact。
-
[Action mode] (アクションモード) で [Create or replace a change set] (変更セットの作成または置換) を選択します。
-
[スタック名] に、次のように変数の構文を入力します。これは、変更セットを作成する対象のスタックの名前です。アクションには、デフォルトの名前空間
DeployVariables
が割り当てられます。#{DeployVariables.StackName}
-
[変更セット名] に、変更セットの名前を入力します。
my-changeset
-
[パラメータの上書き] で、
Purpose
パラメータをtesting
からproduction
に変更します。{ "DBClusterName": "MyDBCluster", "DBInstanceName": "MyDBInstance", "MasterUser": "UserName", "MasterPassword": "Password", "DBInstanceClass": "db.r4.large", "Purpose": "production"}
-
[完了] をクリックしてアクションを保存します。
-
ステップ 4: 手動承認アクションを追加する
パイプラインで手動承認アクションを作成します。
-
[編集] モードで、パイプラインを編集するか、引き続きパイプラインを表示するかを選択します。
-
Deploy ステージの編集を選択します。
-
変更セットを作成するデプロイアクションの後に、手動承認アクションを追加します。このアクションを使用すると、パイプラインで変更セットを実行する前に、AWS CloudFormation で作成したリソース変更セットを確認できます。
ステップ 5: CloudFormation 変更セットを実行するデプロイアクションを追加する
手動承認アクションの後に変更セットを実行することを AWS CloudFormation に許可するアクションをパイプラインに作成します。
-
https://console.aws.amazon.com/codepipeline/ CodePipeline
でコンソールを開きます。 [パイプライン] で、パイプラインを選択してから、[表示] を選択します。この図は、パイプラインのソースとデプロイのステージを示しています。
-
[編集] モードで、パイプラインを編集するか、引き続きパイプラインを表示するかを選択します。
-
Deploy ステージの編集を選択します。
-
前の手動アクションで承認された変更セットを実行するデプロイアクションを追加します。
-
[アクション名] に、「Execute_Change_Set」と入力します。アクションプロバイダーで、を選択しますAWS CloudFormation。
-
入力アーティファクトで、を選択しますSourceArtifact。
-
[Action mode] (アクションモード) で、 [Execute a change set] (変更セットの実行) を選択します。
-
[スタック名] に、次のように変数の構文を入力します。これは、変更セットを作成する対象のスタックの名前です。
#{DeployVariables.StackName}
-
[変更セット名] に、前のアクションで作成した変更セットの名前を入力します。
my-changeset
-
[完了] をクリックしてアクションを保存します。
-
パイプラインの実行を続行します。
-
ステップ 6: CloudFormation スタックを削除するデプロイアクションを追加する
出力ファイルの変数からスタック名を取得し、スタックを削除することを AWS CloudFormation に許可する最後のアクションをパイプラインに作成します。
-
https://console.aws.amazon.com/codepipeline/ CodePipeline
でコンソールを開きます。 [パイプライン] で、パイプラインを選択してから、[表示] を選択します。この図は、パイプラインのソースとデプロイのステージを示しています。
-
パイプラインの編集を選択します。
-
Deploy ステージの編集を選択します。
-
スタックを削除するデプロイアクションを追加します。
-
[アクション名] で、を選択しますDeleteStack。[デプロイプロバイダ] で、[CloudFormation] を選択します。
-
[アクションモード] で、[スタックを削除する] をクリックします。
-
[スタック名] に、次のように変数の構文を入力します。これは、アクションで削除するスタックの名前です。
-
[完了] をクリックしてアクションを保存します。
-
[保存] をクリックしてポリシーを保存します。
パイプラインは保存すると実行されます。
-