AWS CodeDeploy チュートリアル

AWS Code Deploy のチュートリアルサイト
https://aws.amazon.com/jp/getting-started/tutorials/deploy-code-vm/

2016年12月現在、英語のみの提供なので、ザクッと日本語にしてみます。
※ 正確な翻訳ではないので、原文とは異なる点が多々有ります。また、本筋 (CodeDeploy) と関連の薄い点については一部省略等もしています。


Step1: キーペアの作成

EC2 インスタンスにアクセスするためのキーペアを作成する必要が有ります。もし既にキーペアを持っている場合は、このステップは飛ばして Step2 に進みましょう。

a. ここ をクリックすると AWS マネジメントコンソールが新しいウィンドウで開きます。「キーペアの作成」をクリックします。

※ 上記リンクで AWS コンソールにアクセスすると、バージニア北部リージョンの EC2 コンソールが表示されます。

b. キーペアに名前を付けます。このチュートリアルでは MyFirstKey という名前を使う事にします。名前を入力したら「作成」をクリックします。

Step2: CodeDeploy のコンソールの開始

a. AWS コンソール、画面左上の HOME アイコンをクリックします。「開発者用ツール」の中の「CodeDeploy」を探してクリックし、CodeDeploy のコンソールを開きます。

b. 「今すぐ始める」をクリックします。

既にアプリケーションを作成済の場合は画面右側の「新しいデプロイウォークスルーの作成」をクリックします。

c. 「サンプルデプロイ」を選択して「次のステップ」をクリックします。

Step3: 仮想マシンの起動

コードのデプロイ先として AWS 上の仮想マシン (EC2 インスタンス) を起動する必要が有ります。ここではあらかじめ設定されたテンプレートに従ってインスタンスを起動します。

以下の設定を行って「インスタンスの作成」をクリックします。

  • OS: インスタンスの OS を選択します。このチュートリアルでは Amazon Linux を利用します。
  • インスタンスタイプ: AWS 無料利用枠を利用できるように、t1.micro が選択されています。
  • キーペア名: Step1 で作成した「MyFirstKey」をドロップダウンリストより選択します。既に作成済だったキーペアを選択する事も出来ます。
  • タグのキーと値: CodeDeploy では、タグを使ってデプロイ先のインスタンスを指定します。このチュートリアルでは、ここはデフォルト値のままにしておきます。

※ インスタンスの作成には数分かかります。

Step4: アプリケーション名の指定とリビジョンの確認

a. 「アプリケーション名」に今回作成するサンプルのアプリケーションの名前 HelloWorld を入力し「次のステップ」をクリックします。

b. 「リビジョンの場所」「リビジョンの説明」といったアプリケーションのリビジョンに関する情報を確認して「次のステップ」をクリックします。

※ ここで「サンプルバンドルのダウンロード」をクリックすると、EC2 にデプロイされるアプリケーションのリビジョン (zip ファイル) をダウンロードする事が出来ます。
zip ファイルには AppSpec ファイルと呼ばれる CodeDeploy の設定ファイルやアプリケーション自体 (ソースコード、html ファイル、実行ファイルなど) が含まれます。

Step5: デプロイグループの作成

デプロイグループとはアプリケーションのデプロイ先 EC2 インスタンスをひとまとめにしたものです。デプロイグループにはタグ付けされたインスタンスや AutoScaling Group 等が含まれます。

「デプロイグループ名」は既に入力されている値 (DemoFleet) そのままにします。

「Amazon EC2 タグによる検索」セクションでタグ情報を入力し、デプロイ先の EC2 インスタンスを指定します。

  • 「キー」「値」の列には Step3 で指定した値が自動的に入っているはずなので、そのままにします。(キー: Name, 値: CodeDeployDemo)
  • 「インスタンス」列にはデプロイ先となるインスタンスの数が表示されます。このチュートリアルでは 3 台のインスタンスが起動してデプロイグループに所属するようにタグ付けされているはずです。

「次のステップ」をクリックします。

Step6: サービスロールの作成

インスタンスへデプロイする為に必要な権限を CodeDeploy サービスへ与えます。サービスロールを作成する事で、デプロイに必要なリソースにアクセスする権限を AWS サービス (EC2 や CodeDeploy など) に付与する事が出来ます。

サービスロール: 「新しいサービスロールの作成」を選択します。既にサービスロールを作成済の場合はそれを選択する事が出来ます。

ロール名: デフォルトで表示されている「CodeDeploy_HelloWorld」を利用できます。もし既存のサービスロールを利用する場合は、ドロップダウンリストで利用するロールを選択します。

「次のステップ」をクリックします。

Step7: アプリケーションをデプロイする

デプロイに関する設定を選択して、デプロイを開始します。このステップの最後でデプロイが成功すれば、デプロイしたウェブサイトをオンラインで確認する事が出来るようになります。

a. デプロイ設定では、デプロイ時に同時にいくつのインスタンスにデプロイを実行するかと、どうなるとデプロイが成功 / 失敗したとみなすのかを設定します。例えば、デフォルト設定「1回に1個」を利用して3つのインスタンスにデプロイを行う場合は、各インスタンスに1つずつデプロイを行います。

「デフォルトデプロイ設定」を選択して「次のステップ」をクリックします。

b. デプロイに関する設定を確認して「今すぐデプロイ」をクリックします。

※ デプロイの環境までには数分かかります。

c. このサンプルでは WEB ページを 1 つ各インスタンスにデプロイします。3つ全てのインスタンスが完了したら「すべてのインスタンスを表示」をクリックします。

d. デプロイしたインスタンスのインスタンス IDをどれか1つクリックします。するとそのインスタンスの情報が EC2 コンソールに表示されます。

e. デプロイが成功したか確認する為に、下パネルの「パブリックDNS」の値をコピーして、ブラウザに貼り付けます。デプロイされた Web ページが確認できるはずです。

Step8: インスタンスのクリーンアップ

料金が発生するのを避けるため、このチュートリアルで使ったインスタンスをクリーンアップしなければいけません。このチュートリアルで起動したインスタンスは削除するまで起動し続けます。

a. Step7 で起動した EC2 のコンソールでは、インスタンスIDが検索フィルタとして設定されています。このフィルタを削除すれば CodeDeploy によって起動されたすべてのインスタンスが確認できます。

b. ターミネートするインスタンスのチェックボックスを選択し「アクション」-「インスタンスの状態」-「削除」をクリックします。

本当に削除してよいか確認されるので「はい、削除する」をクリックします。


書いてる途中で

[新サービス] AWS CodeDeployを触ってみた #reinvent

この記事を発見。↑の方がしっかり解説されてます。AWS 関連の記事はどうしても使う事になったタイミングで書くことになるので、そうするとちゃんと発表等を追い、しっかり検証されているクラスメソッドさんの劣化記事になってしまいますな…。