Code4兄弟の連携デプロイを東京リージョンで試す

記事タイトルとURLをコピーする

こんにちは、技術4課の多田です。

2016年も終わりますが、皆さんにとってどんな一年だったでしょうか?
私は、サーバーワークスに入っていろいろと変化があった1年だったなぁと思います。
来年も引き続き頑張っていきたいと思います。

さて、今回は、CodePipelineが東京リージョンの他以下のリージョンに展開されたので、Code4兄弟の連携による東京リージョンのEC2へのデプロイを試したいと思います。

  • オハイオ
  • フランクフルト
  • シンガポール
  • シドニー
  • サンパウロ

AWSの発表記事は、以下になります。

AWS CodePipeline Available in Asia Pacific (Tokyo) Region

今回の構成イメージ

今回は、バージニアに配置したCodeCommit/CodeBuildの連携をCodePipelineのワークフローで作り、ビルド/テストしたビルド済みのデプロイモジュールをS3に出力します。

その後、東京リージョンに配置したS3バケットへデプロイモジュールをコピーして、CodePipeline/CodeDeployを使ってEC2へデプロイします。

architechtimage

 

Code系のサービスでは利用するのが東京リージョンの場合、連携する他のサービスも東京リージョンのものでないとエラーが発生してしまうため、S3バケットも東京リージョンで別途作って、そのバケットへビルド済みのデプロイモジュールをコピーする必要があります。

Code4兄弟の連携

0. S3バケットを作成する

まずは、バージニアリージョンからビルド済みのデプロイモジュールを受け取る、東京リージョンにS3バケットを作成します。

私は、以下のものを作りました。

  • 20161215-codedeploybucket

尚、バージニアリージョンのS3バケットは、CodePipelineのセットアップの過程で作成されます。

1. バージニアリージョンのCodePipelineでCodeCommit/CodeBuildを連携

次に、バージニアリージョンの CodePipelineでCodeCommit/CodeBuildを連携します。
CodeCommitとCodeBuildのセットアップについては、下記のブログを併せて確認いただけますと幸いです。

尚、最終的にEC2へデプロイするのは、こちらのサンプルプログラムになります(英語のドキュメントになります)。

このサンプルプログラムをCodeCommitにプッシュしたソースコード群をCodeBuildでビルド/テストしていきます。

CodePipelineのセットアップを行います。セットアップに関しては、こちらのブログを参照ください。
上記のブログのセットアップで違いがあるのは、ビルドとベータのセクションになります。

ビルドでは、CodeBuildを選択できます。セットアップしたプロジェクトを選択できるので、選択します。

codepipeline-tokyo-1

バージニアリージョンでは、デプロイしませんので、[デプロイなし]で進みます。

codepipeline-tokyo-2

CodePipelineで、CodeCommit/CodeBuildの連携設定が完了したら、処理を実行してみます。
以下のようにオールグリーンの状態になりましたら、S3バケットへ成果物が出力されます。

codepipeline-tokyo-4

S3のバケットを確認してみると、ビルド済みのデプロイモジュールが出力されています。

codepipeline-tokyo-5

2.CodeBuildの成果物を東京リージョンのバケットへコピー

次に、CodeBuildの成果物をバージニアリージョンのバケットから東京リージョンのバケットへコピーします。

今回はCLIを使って手作業でバケット間コピーを行い、東京リージョンのバケットへビルド済みのデプロイモジュールがコピーされたことを確認しました。

codepipeline-tokyo-6

3. CodeDeployでEC2へデプロイ

S3のバケットへビルド済みのデプロイモジュールをコピー後、東京リージョンのCodePipelineの設定を行います。

ビルド済みのアプリパッケージの置き場所は、S3バケット、デプロイにCodeDeployを指定します。
S3をソースコードの指定場所にする場合の注意として、S3バケットのバージョニングを有効化する必要がありますので、有効化を実施します。
また、S3バケットから対象のデプロイファイルを指定する必要があります。今回は、バージニアリージョンからコピーしたファイル名を入力しましたが、何度も同じフローを回す場合、ファイル名を統一しておく必要があります。
codepipeline-tokyo-8

CodePipelineの設定後、東京リージョンのCodePipelineの処理を実行してみます。
S3からCodeDeploy、EC2へのデプロイフローは実行されました。

codepipeline-tokyo-7

EC2を確認すると、対象のディレクトリにJARファイルの存在を確認できましたので、サンプルプログラムのデプロイは成功です。

[ec2-user@ip-172-31-xxx-xxx ~]$ ls -l /tmp/
合計 20
-rw-r--r-- 1 root root 8843 12月 16 12:40 codedeploy-agent.update.log
drwxr-xr-x 2 root root 4096 12月 16 03:06 hsperfdata_root
-rw-r--r-- 1 root root 2287 12月 16 03:42 my-app-1.0-SNAPSHOT.jar

まとめ

ビルド/テストしたデプロイモジュールをバージニアから東京リージョンへ展開できたので、東京リージョンへのCode系サービスを使ったデプロイフロー作成やマルチリージョンのデプロイも視野に入ってくるのではないかと思います。

ただ、まだまだ自動化でききれていないところがありますので、この点は改良してまたブログに記事を投稿したいと思います。

この記事が少しでもお役に立てば幸いです。それでは!