続・AWS CodePipelineを利用してWEBコンテンツ更新を行ってみる

以下の記事で、CodePipelineを利用したWEBコンテンツ更新を行いました。
内容としては、

  1. 更新したWEBコンテンツをGitリポジトリ(CodeCommit)にアップロード
  2. Pipelineが発動し、WEBサーバに自動で更新後のコンテンツを展開

というものでした。

AWS CodePipelineを利用してWEBコンテンツ更新を行ってみる

今回は、同じくCodePipelineを利用して以下のようなチュートリアルを行います。

  1. 更新したWEBコンテンツをGitリポジトリ(CodeCommit)にアップロード
  2. Pipelineが発動し、WEBサーバ(ステージング環境)に自動で更新後のコンテンツを展開
  3. Pipelineが承認プロセスに移行するので、ステージング環境をチェック後 承認する
  4. WEBサーバ(本番環境)に自動で更新後のコンテンツを展開

なお、前回の記事のチュートリアルを行った前提で進めますので、先にこちらをご覧ください。

設定方法

EC2インスタンス作成

前回のチュートリアルで作成したEC2インスタンスをステージング環境とみなして、今回は本番環境用のインスタンスを起動します。
前回と同様のユーザーデータを指定しましょう。

#!/bin/bash
yum -y update
yum install -y ruby
yum install -y aws-cli
cd /home/ec2-user
aws s3 cp s3://aws-codedeploy-us-east-2/latest/install . --region us-east-2
chmod +x ./install
./install auto

Nameタグは MyCodePipelineDemo-PRD としました。

また、前回の記事では書き忘れていたのですが、EC2にIAMロールを設定しましょう。
IAMポリシーは「AmazonEC2RoleforAWSCodeDeploy」を利用します。

CodeDeploy デプロイグループの作成

本番環境用のデプロイグループを作成します。

デプロイグループ名などを入力します。

[タググループ]で、先ほど設定したNameタグの値(MyCodePipelineDemo-PRD)を指定します。

デプロイグループを作成します。

CodePipeline パイプラインの編集

パイプラインに、承認プロセスと本番環境デプロイのステージを追加していきます。

ステージを追加します。

適当なステージ名を入力します。承認プロセスなのでConfirm(確認する)という名前にしました。

作成されたステージにアクショングループを追加します。

以下のように設定します。

承認ステージの内容を確定させます。

次に本番環境デプロイのステージを追加します。

ステージ名を入力してステージを作成します。

アクショングループを追加します。

以下の通り設定します。

本番環境デプロイのステージの内容を確定させます。

承認ステージ、本番環境デプロイのステージが追加されたので、パイプラインの内容を保存します。

保存します。

コンテンツをデプロイしてみる

実際にWEBコンテンツをデプロイしてみましょう。
適当にファイルを編集し、Gitリポジトリ(CodeCommit)にアップします。

# メモ帳で index.html を編集
C:\Temp\my-demo-repo>notepad index.html

# commit, push
C:\Temp\my-demo-repo>git commit -am "Updated sample application files"
C:\Temp\my-demo-repo>git push

AWSマネジメントコンソールで、パイプラインの進行状況が確認できます。

Deployステージ(ステージング環境へのデプロイ)が完了すると、Confirmステージ(承認)に移行します。
その際、指定したSNSトピック(今回の場合はメールアドレス)へ通知が届きます。

ステージング環境でコンテンツが更新されていることを確認します。

AWSマネジメントコンソール上で[レビュー]を選択します。

コメントを付与し、承認します。

承認すると、PRD-Deployステージ(本番環境へのデプロイ)が開始されます。

本番環境でもコンテンツが更新されたことを確認しましょう。