例 2 : AWS CloudFormation を使用して Amazon S3 パイプラインを作成します。
このチュートリアルでは、AWS CloudFormation コンソールを使用して、Amazon S3 ソースバケットに接続したパイプラインを含むインフラストラクチャの作成方法を示します。このチュートリアルでは、提供されたサンプルテンプレートファイルを使用して、Amazon CloudWatch Events ルールや CloudTrail 証跡などのサービスバケット、アーティファクトストア、パイプライン、変更検出リソースを含むリソーススタックを作成します。AWS CloudFormation でリソーススタックを作成したら、AWS CodePipeline コンソールでパイプラインを表示することができます。パイプラインは、Amazon S3 ソースステージと CodeDeploy デプロイステージの 2 つのステージパイプラインになります。
前提条件
AWS CloudFormation サンプルテンプレートで使用する以下のリソースを作成しておく必要があります。
-
Amazon EC2 インスタンスを作成して CodeDeploy エージェントをインスタンスにインストールしておく必要があります。CodeDeploy アプリケーションとデプロイグループを作成しておく必要があります。チュートリアル: シンプルなパイプラインを作成する (CodeCommit リポジトリ) で作成した Amazon EC2 リソースと CodeDeploy リソースを使用します。
-
Amazon S3 サービスでパイプラインを作成するサンプル AWS CloudFormation テンプレートファイルをダウンロードするには、次のリンクを選択します。
-
SampleApp_Linux.zip からサンプルアプリケーションファイルをダウンロードします。
.zip ファイルをローカルコンピューターに保存します。スタックの作成後、.zip ファイルをアップロードします。
AWS CloudFormation でパイプラインを作成する
-
AWS CloudFormation コンソールを開き、[スタックの作成] を選択します。[With new resources (standard)] (新しいリソースの使用 (標準)) を選択します。
-
[テンプレートの選択] で、[テンプレートのアップロード] を選択します。[ファイルの選択] を選択し、ローカルコンピュータからテンプレートファイルを選択します。[次へ] を選択します。
-
[スタック名] に、パイプラインの名前を入力します。サンプルテンプレートで指定されたパラメータが表示されます。以下のパラメータを入力します。
-
ApplicationName に、CodeDeploy アプリケーションの名前を入力します。
DemoApplicationデフォルト名は置き換えることができます。 -
BetaFleet に CodeDeploy デプロイグループの名前を入力します。
DemoFleetデフォルト名は置き換えることができます。 -
[SourceObjectKey] に
SampleApp_Linux.zipと入力します。このファイルは、テンプレートによってバケットとパイプラインが作成された後に、バケットにアップロードします。
-
-
[次へ] を選択します。以下のページのデフォルト値を受け入れ、[次へ] を選択します。
-
[機能] で、[AWS CloudFormation が IAM リソースを作成する場合もあることを承認します] を選択してから、[スタックの作成] を選択します。
-
スタックの作成が完了したら、イベントリストを表示して、エラーがないか確認します。
トラブルシューティング:
AWS CloudFormation でパイプラインを作成する IAM ユーザーには、パイプラインのリソースを作成するための追加のアクセス許可が必要な場合があります。AWS CloudFormation で Amazon S3 パイプラインに必要な Amazon CloudWatch Events リソースを作成するためには、ポリシーに次のアクセス許可が必要です。
{ "Effect": "Allow", "Action": [ "events:PutRule", "events:PutEvents", "events:PutTargets", "events:DeleteRule", "events:RemoveTargets", "events:DescribeRule" ], "Resource": "resource_ARN" } -
CloudFormation の、スタックの [リソース] タブで、スタック用に作成されたリソースを表示します。
注記
作成されたパイプラインを表示するには、CloudFormation のスタックの [リソース] タブで [論理 ID] 列を見つけます。パイプラインの [物理 ID] 列の名前をメモします。CodePipeline で、スタックを作成したリージョン内の同じ物理 ID (パイプライン名) のパイプラインを表示できます。
名前に
sourcebucketラベルが付いた S3 バケットを選択します (s3-cfn-codepipeline-sourcebucket-y04EXAMPLE.など)。パイプラインアーティファクトバケットは選択しないでください。リソースは CloudFormation によって新しく作成されたため、ソースバケットは空です。Amazon S3 コンソールを開き、
sourcebucketバケットを見つけます。[アップロード] を選択し、指示に従ってSampleApp_Linux.zip.zip ファイルをアップロードします。注記
Amazon S3 がパイプラインのサービスプロバイダである場合、すべてのサービスファイルを 1 つの .zip ファイルとしてパッケージ化したバケットにアップロードする必要があります。それ以外の場合、ソースアクションは失敗します。
-
AWS マネジメントコンソール にサインインして、https://console.aws.amazon.com/codepipeline/
で CodePipeline コンソールを開きます。 [パイプライン] で、パイプラインを選択してから、[表示] を選択します。この図は、パイプラインのソースとデプロイのステージを示しています。
-
AWS CloudTrail リソースを作成するには、以下の手順を実行します。
AWS CloudTrail で AWS CloudFormation リソースを作成する
-
AWS CloudFormation コンソールを開き、[スタックの作成] を選択します。
-
[テンプレートの選択] で、[テンプレートを Amazon S3 にアップロード] を選択します。[参照] を選択して、ローカルコンピュータから AWS CloudTrail リソースのテンプレートファイルを選択します。[次へ] を選択します。
-
[スタックの名前] にリソーススタックの名前を入力します。サンプルテンプレートで指定されたパラメータが表示されます。以下のパラメータを入力します。
-
SourceObjectKey では、サンプルアプリケーションの zip ファイルのデフォルトを受け入れます。
-
-
[次へ] を選択します。以下のページのデフォルト値を受け入れ、[次へ] を選択します。
-
[機能] で、[AWS CloudFormation が IAM リソースを作成する場合もあることを承認します] を選択してから、[作成] を選択します。
-
スタックの作成が完了したら、イベントリストを表示して、エラーがないか確認します。
Amazon S3 パイプラインに必要な CloudTrail リソースの作成をAWS CloudFormation に許可するには、ポリシーに次のアクセス許可が必要です。
{ "Effect": "Allow", "Action": [ "cloudtrail:CreateTrail", "cloudtrail:DeleteTrail", "cloudtrail:StartLogging", "cloudtrail:StopLogging", "cloudtrail:PutEventSelectors" ], "Resource": "resource_ARN" } -
AWS マネジメントコンソール にサインインして、https://console.aws.amazon.com/codepipeline/
で CodePipeline コンソールを開きます。 [パイプライン] で、パイプラインを選択してから、[表示] を選択します。この図は、パイプラインのソースとデプロイのステージを示しています。
-
ソースバケットで、変更をコミットしてプッシュします。変更検出リソースが変更を受け取り、パイプラインが開始されます。