AWS CodeDeployを使ってみたら思いの外、簡単に設定できてデプロイができたので覚書きです!
そういえばAWSには結構お世話になってるけど記事を書くのは初めてという事実…
CodeDeployとは
AWS CodeDeployは読んで字のごとくEC2インスタンスなどにコードをデプロイしてくれるサービスです。
デプロイ対象のEC2にエージェントをインストールする
CodeDeployを利用するためにはCodeDeployのエージェントをEC2インスタンスにインストールしておく必要があります。
エージェントのインストールにはaws-cliでS3からエージェントをダウンロードする必要があるのでEC2にS3のread権限のロールを設定してあげる必要があります。
EC2にロールを設定する
まずはIAMにアクセスします。
https://console.aws.amazon.com/iam
ロール>新しいロールの作成でロールの作成を行う。
作成するロールは以下
| ロールタイプ | ポリシー |
|---|---|
| Amazon EC2 | AmazonS3ReadOnlyAccess |
作成したロールをデプロイ対象のEC2に設定します。
CodeDeployのエージェントをインストールする
EC2にロールを設定後、EC2にSSHログインをします。
以下コマンドを実行していきCodeDeployのエージェントをインストールします。
$ sudo yum install aws-cli $ aws s3 cp s3://aws-codedeploy-ap-northeast-1/latest/install . --region ap-northeast-1 $ chmod +x ./install $ sudo ./install auto
エージェントのインストールはこれで完了です!!
デプロイするアプリケーションにappspec.ymlを作成
CodeDeployでどのようにデプロイを実行するかを設定するファイルappspec.ymlをデプロイするアプリケーションのプロジェクトルートに配置します。
今回はAmazonLinuxを想定しています。
version: 0.0
os: linux
files:
- source: /
destination: /var/www/application
上記の設定はアプリケーションのファイル全体をEC2の/var/wwwapplication配下にデプロイするという設定を行っています。
設定内容は今回は省略しますが、以下の記事がわかりやすかったです。
appspec.ymlを作成したらコミットしてGitHubにプッシュしておきます。
(CodeDeployはGitHubのデフォルトブランチをデプロイするのでプッシュしたブランチがデフォルトブランチではない場合はマージしておきます。)
CodeDeployを使ってデプロイを実行する
いよいよCodeDeployを利用してデプロイしていきます。
CodeDeploy用のロールを作成する
実行する前にCodeDeployのアプリケーションを作成するためにはCodeDeployのロールが必要なので再びIAMのダッシュボードにアクセスします。
作成するロールは以下になります。
| ロールタイプ | ポリシー |
|---|---|
| AWS CodeDeploy | AWSCodeDeployRole |
アプリケーションを作成する
AWSのダッシュボードからCodeDeployにアクセスします。
初めてCodeDeployを利用する際は以下のような画面になるので今すぐ始めるをクリックする。

チュートリアルをやるか問われますが実施しなくても良いのでカスタムデプロイを選択してウォークスルーのスキップをクリックする。

ウォークスルーをスキップするとアプリケーションの作成画面に遷移するので、以下の設定を行う。
| 項目 | 設定内容 |
|---|---|
| アプリケーション名 | 任意 |
| デプロイグループ名 | 任意 |
| デプロイタイプ | インプレースデプロイ |
| 環境設定 | Amazon EC2インスタンス > デプロイしたいインスタンス |
| デプロイ設定 | CodeDeployDefault.OneAtATime |
| サービスロール | CodeDeploy用に作成したロール |
デプロイを実行する
CodeDeployダッシュボードから先ほど作成したアプリケーションのリンクにアクセスします。
デプロイグループを選択して、新しいリビジョンのデプロイをクリックします。

画面遷移したら以下の設定を行います。
| 項目 | 設定内容 |
|---|---|
| リポジトリタイプ | アプリケーションはGitHubに格納されています |
| デプロイメントの説明 | 任意 |
| GitHubアカウント | GitHubの認証を行います |
| リポジトリ名 | GitHubのリポジトリ名(アカウント名/リポジトリ名の形式で) |
| コミットID | デプロイしたいコミットID(省略形のコミットIDではなくフルの方で) |
その他の設定は任意で行いデプロイボタンをクリックします。
するとデプロイが開始され指定したEC2へデプロイが実行されます!
最後に
設定する内容はちょいちょいありますが設定さえ行ってしまえば簡単にデプロイを実行することができるようになります!
さらにGitHubの設定をもう少し行うことでデフォルトブランチに変更が加わったのを検知して自動でデプロイを起動するといったことも可能です!(次の記事はそれかこうかな…笑)
いやー、AWSは本当に便利。設定するだけでなんでもできちゃうんじゃないかな。(ただし財力が必要)