はじめてのAWS CodeDeploy~Get Started編~

こんにちは、中の人です。

【re:Invent 2014】で新しく発表されたサービスの1つ CodeDeployを試してみました。

○ CodeDeployとは

CodeDeployとは、新しく発表されたコードの管理&デプロイサービス郡の1つで、名前の通り管理しているコードをデプロイするためのサービスとなります。
このサービスは、AWSを辞めた人ですら使い続けたいというくらい魅力的なApolloという社内ツールを外部向けサービスとして提供したものだそうです。

S3またはgithubに保存されているコードを利用してデプロイすることが出来ます。
なお、2014年11月14日現在 他のCodeCommit, CodePipelineとの連携についてはどのように連携するかわかっておりません。

1. AWS CodeDeployのサービスページから「Get Started」に移動し、「Deploy Sample」をクリックします。

Get Started

2. Welcome to AWS CodeDeployの画面が表示されるので、Sample Deployを選択します。
Sample Deployの場合、CloudFormationにより自動的に3台のインスタンスが立ち上がりますが、自分で指定した台数やインスタンスを利用したい場合は「Custom Deployment」を選択します。
Welcome to AWS CodeDeploy

3. Instance SettingsではOSの種別や利用するキーや起動するインスタンスのNameなどを指定します。
必要項目を入力したら「Launch Instances」をクリックすると、ポップアップでCloudFormationの画面に遷移します。
Instance Setting

4. CloudFormationに遷移するとCodeDeploySampleStackという名称の新しいスタックが確認できます。
数分〜10分程度でStatusがCREATE_COMPLETEとなったら準備完了なのでポップアップウィンドウを閉じます。
CloudFormation
CloudFormation

5.Instance Settingsのページに戻ると「Next Step」がクリックできるようになっておりますので、クリックします。
Instance Setting

6.Application Nameでアプリケーションの名称を入力します。
サンプルで入っているままで問題ありません。
Application Name

7.Revisionではソースの指定がされており、ダウンロードすることが出来ます。
Customやバージョンアップの際にはココで新しいソースが置いてあるバケットやgithubを指定します。
Revision

なお添付ファイルは以下が含まれており、appspec.ymlにてインストール先や必要モジュールのインストールの指定がされています。

appspec.yml
index.html
LICENSE.txt
scripts/install_dependencies
scripts/start_server
scripts/stop_server

どれも非常に簡単なファイルなのでカスタマイズが容易なこともわかります。

8.Deployment Groupではグループ名を設定します。
グループ単位でアプリケーションのデプロイをすることが出来ます。
こちらもデフォルトのままで問題ありません。
Deployment Group

9.Service Roleでロールの設定をします。
既存のを利用することも可能ですが、デフォルトのままで問題ありません。
Sevice Role

10.Deployment Configuration でインスタンスの起動方法を選ぶことが出来ます。
今回のケースでは3台立ち上がりますが、以下の選択肢があります。

・一気に全部起動
・50%のインスタンスを起動
・1台ずつ起動

ただし、いずれの方法でも自動起動なので今回はデフォルトの「One at a Time」を選択します。
Depolyment Configuration

11. Reviewで特に問題なければそのまま起動させます。
Review

12. 完了すると以下の様な画面となり、StatusがSuccessedとなれば完了です。
Created
Successed

13. デプロイが完了すると起動したインスタンス情報などが表示されます。
Deployment

14.ブラウザから各インスタンスにアクセスすると以下の画面が表示されます。
CodeDeploy

サーバにログインして確認すると、appspec.ymlで指定したとおり以下にHTMLファイルが設置されていることが確認できます。
/var/www/html/index.html

いかがでしたでしょうか?

非常に簡単な操作だけでデプロイすることが出来ました。
ただし、現状ではソースをS3に上げるかgithub上に置く必要があるのでそれほど大きなメリットが不明ですが、残りの2つがリリースされることでパワフルな開発環境となると思われます。
リリースされ次第、追って記載したいと思います。

お楽しみに!

この記事を書いた人

aws-recipe-user