ちょっと話題の記事

ECRへのPushでECSをデプロイするだけのシンプルなCodePipelineを試す

2019.05.25

この記事は公開されてから1年以上経過しています。情報が古い可能性がありますので、ご注意ください。

はじめに

瀬田@大阪オフィスです。1年に一つ、何か新しいことに手を出すことを目標にしているんですが、理解の浅いCode兄弟に入門してみることにしました。だってCodePipeline楽しそうなんだもの。

今回の構成

シンプルにECRへのPushでCodePipelineを発火させ、ECSにデプロイするだけの構成を作ります。 CodeCommitもCodeDeployも使用せず、S3から設定ファイルを取得します。

前提

ECRのリポジトリと、ECSは構成されているものとします。

手順

CodePipelineでSorceを作る(ECR+S3)

ソースステージの編集からECRのソースを作成します。

ソースステージの編集から「アクションの追加」を押してS3のソースを作成します。

ポイントは、「S3 object key」に「imagedefinitions.json.zip」を入力しておくこと。あとで解説します。

こうなります。

CodePipelineでデプロイを作る

デプロイステージでECSへのデプロイを作ります。 入力アーティファクトをS3のソースアクションの出力アーティファクトにしてください。「S3OutArtifuct」のところですね。

ECRとECSを繋ぐ設定ファイルを作成します。

ファイル名 imagedefinitions.json
内容 [{"name":"コンテナ名","imageUri":"ECRのリポジトリ内のImage URI"}]

各情報は以下から取得してください。

  • 「コンテナ名」・・・ECSでタスク定義するときに指定したコンテナ名称
  • 「ECRのリポジトリ内のImage URI」・・・ECRの以下の部分

これをzip圧縮して、imagedefinitions.json.zipを作成してください。

S3に設置ファイルを格納する。

S3のソースで指定したS3バケットの直下にimagedefinitions.json.zipを置きます。

(※バケットはバージョニングを有効にしておく必要があります。)

試してみる

ECRにイメージをpushしてみると、Piplineが起動し、デプロイされました。

OKですね。

最後に

これは便利。 Code兄弟は苦手意識があったわけですが、やれることはシンプルなので一回使ってみれば仲良くやっていけそうです。 他の兄弟達も触ってみようと思います!