大瀧隆太(430)24この記事は公開されてから1年以上経過しています。情報が古い可能性がありますので、ご注意ください。Tokyoで担当した同タイトルのセッションで紹介した内容を、サンプルコードと手順としてまとめてみました。セッションのスライドはエントリー末尾をご覧ください。AWSの新デプロイツールCodeDeployは、アプリケーションをEC2インスタンス上に効率的にデプロイするサービスです。CodeDeployでは、デプロイ対象のEC2インスタンスを以下2つの方法で指定します。Scalingが新規インスタンスを自動起動する際にDeploymentを自動実行するようになっています。Hookを手軽に活用する一例として見ることもできます。Hookの様子をご紹介してみます。IAMロールの作成CodeDeployではIAMロールを前提とした設計になっていて、以下2つのIAMロールを準備しておく必要があります。Relationshipの部分が複雑なので、インスタンスのロールとセットでCloudFormationで作成するテンプレートを用意しました。手動で作成する場合は、こちらのブログエントリーを参考にしてください。CloudFormationスタックを作成CloudFormationスタックの作成画面が表示されたら、ウィザードを進めていきます。オレゴンリージョン(us-west-2)が指定されますが、バージニアリージョン(us-east-1)で試したい場合は画面右上のリージョン一覧から切り替えてください。resources.」のチェックをオンにし、[Create]で作成がスタートします。スタックの[Status]列が「CREATE_COMPLETE」になったら完了です。[Output]タブを確認します。CodeDeployTrustRoleARNがCodeDeployサービスのロールのARN(このあとCodeDeployの設定で必要)、InstanceProfileがインスタンスに紐付けるロールです。Scalingの設定を行います。Configurationで以下2点を設定し作成します。auto他の項目は任意の設定で構いません。Groupも任意の設定で作成します。Policyなし)を選択し、インスタンス1台で構成しました。History]タブと[Instances]タブを確認しておきましょう。この後、CodeDeployの構成時に再度確認することがあります。CodeDeployの構成つづいて、CodeDeployを設定していきます。Walkthrough]ボタンをクリックします。Group名を適当に入力します。Group名を選択します。Application]ボタンをクリックしApplicationを作成します。RevisionのアップロードAWSが提供するサンプルのRevisionをベースにします。Hookの様子を確認しやすいように、BeforeInstallフックのスクリプトにsleepコマンドの実行を追加しました。startあとは、Revisionを配置するためのS3バケットを作成しておきます。CodeDeployエージェントからはIAMロールの権限でアクセスするため、S3バケットの設定を変更する必要は特にありません。pushコマンドでRevisionをS3にアップロードします。<description>$アップロードできました。初回デプロイの実行Deploymentの自動実行のためには、最低1回手動でDeploymentを実行しておく必要があります。Scalingのインスタンス1台が起動しているので、これに対してDeploymentを手動で実行してみます。Revision]ボタンをクリックします。Location]から先ほどアップロードしたRevisionを選択します。Now]をクリックしてデプロイを実行します。[Deployments]画面に切り替わり、Deploymentの進捗が表示されます。待つと[Status]が「Succeeded」になり、デプロイが成功したことを確認します。Scalingのインスタンス数を増やし、インスタンス起動時にDeploymentが自動実行される様子を確認してみます。Groupの設定画面から[Edit]ボタンをクリックし、[Desired]と[Max]を2以上に増やし、[Save]をクリックします。History]タブに切り替え、少し待つとインスタンスが起動します。Stateにフックを登録し、Deploymentを実行します。Actionが今回のCodeDeployにあたります。Action」になりCodeDeployのDeployment実行を待っていることがわかります(上図のPending:Wait)。CodeDeployの画面を見ると、Deploymentが起動インスタンスごとに自動で作成、実行されることがわかります。Scalingにフック処理の完了(上図のPending:Proceed)が通知され、[Status]の表示が「Successful」に変わります。GroupにELBを登録している場合はこの完了を待ってインスタンスがELBに登録されるため、Deploymentが終わっていないインスタンスにトラフィックが転送されるのを防げるわけですね。検証して気になった点をいくつか挙げます。"最近の"Revisionをデプロイするために最低1回、先にデプロイを実行しなければならない。Hookを利用した、自動デプロイの様子をご紹介しました。CodeDeployは機能は地味ですが、細かいところでAWSと密に連携する良くできたデプロイツールだと思います。4,306,796ゲストブロガーです。株式会社ソラコムでソリューションアーキテクトやってます。クラウドの自動化やIoT周りについての記事を書きます。リモート】クラスメソッドの会社説明会を開催しますクラスメソッドでは、AWS・AI・ビッグデータ・モバイルなどの技術職や営業のメンバーとして一緒にお仕事をする仲間を大募集しています。#cmdevio新型コロナウイルスの感染拡大を受け、本イベントを延期させていただくことになりました(開催時期未定)。お申し込みいただいた皆様には大変申し訳ございませんが、何卒ご理解いただけますようよろしくお願いいたします。AWSについてライトに色んな情報交換をしましょう。カフェ店長のオカノです。今日はオフィスに用があるので、通勤ラッシュを避けて出社しました。この子は新メンバーのさめくんです。在宅勤務が推奨されているのでオフィスが閑散としており、すこしさみしそうです。本が出ていたので読んでみたところよかったので紹介させていただきます。使いたいときの注意点を書きました。新井成一64最近Sphinxつかってドキュメントを書いてるのですがなかなかイケています。臼田佳祐295ワークフロー自動化OSSのn8nをAWS環境で建てて検証してみました。非常に期待できるサービスです。Fargateの勉強をしています。使ってみたい方は参考にしてください。洋介255SnowflakeがAWSの東京リージョン上で稼働するようになりました。データを日本に置けます。芳賀健232こんにちは!猫様の忠実なるしもべ、芳賀健です。Tokyoで開催されました。カフェ店長のオカノです。クラスメソッド株式会社が運営するAWS・iOS・HTML5に関する技術情報サイトです。