Amazon Web Services ブログ

[AWS Black Belt Online Seminar] Amazon Elastic Container Service (Amazon ECS) 資料及び QA 公開

先日 (2020/04/22) 開催しました AWS Black Belt Online Seminar「Amazon Elastic Container Service (Amazon ECS)」の資料を公開しました。当日、参加者の皆様から頂いた QA の一部についても共有しております。

AWS クラウドサービス活用資料集(すべての過去資料が閲覧できます)

Q. AWS CodeDeploy を利用してデプロイをしていますが、一時的にタスクが2つ立ち上がってしまうため、コンテナインスタンスを通常時の2倍のメモリ量で用意しておかないとデプロイが成功しません。通常時はコンテナインスタンスのメモリの半分しか利用できずもったいないと感じているのですが、何か良い方法はありませんでしょうか?
A. ご質問より、現在は EC2 起動タイプにてAWS CodeDeploy を使用した Blue/Green デプロイ利用されているものと推察します。余剰リソースを常時確保しておかなくても済むようにするためには EC2/Fargate 起動タイプごとにそれぞれ考えられる解決策が異なります。

    • Fargate 起動タイプの場合
      Fargate 起動タイプではタスク実行のための仮想マシンを AWS 側がお客様に代わって管理・運用するため、お客様は前もって必要な量の仮想マシンの準備について考える必要はありません。デプロイの最中に一時的にタスクの数が増えることによりその分の料金は発生しますが、足回りの仮想マシンについての準備や料金を考慮する必要がなくなるため、現在の課題を解決できる可能性が高いと考えられます。
    • EC2 起動タイプの場合
      EC2 起動タイプでは、タスクを実行するための仮想マシンを用意し、それらを管理・運用することはお客様の責務になるため、Fargate 起動モードと比べると多少検討が必要です。
      この場合に常時余剰リソースを確保しておかなくても済むようにするためには大きく分けて2つの戦略が考えられます。

      1. これは Blue/Green デプロイではなくECS の「ローリング更新」の機能を利用することを意味します。
        Blue/Green デプロイはその性質上、デプロイ時に必要となるマシンリソースの量が必ず2倍になります。
        そのため、質問にて言及されていた通り、EC2 起動タイプにおいてはデプロイ時に必ず2倍のリソース容量を確保しておく必要があります。対して、ローリング更新では新旧タスクを1つずつ置き換えるデプロイ方式であるため、多くのマシンリソースを確保せずに少しずつ新バージョンをロールアウトしていくことが可能となります。
        この際、maximumPercent / minimumHealthyPercent という ECS サービスの設定項目によりどれくらいの量のタスクを一度に置き換えるかを設定することが可能です。
        例えば ECS サービスにて「タスクの必要数」(desired count)が「5」 と設定されているケースにおいてmaximumPercent = 120, minimumHealthyPercent = 100 のように設定すれば、必要な余剰リソースは1タスク分だけ用意すれば良いことになります。
        詳細は ECS ドキュメントも合わせてご覧ください。
        (※ ローリング更新ではデプロイ中に新旧両方のバージョンがサービスインした状態が並行する点が Blue/Green デプロイと異なります。アプリケーション要件に応じてローリング更新が利用可能かどうかを判断してください。)
      2. デプロイ時に必要となるリソース量は2倍になるが、デプロイ時のみそれらの仮想マシンを用意する戦略
        1. 2-1: Amazon ECS クラスター Auto Scaling のマネージドスケーリングを利用する:
          • Amazon ECS クラスター Auto Scaling のマネージドスケーリングを利用すると、新しいタスクを実行する際に
            仮想マシンのリソースが足りなければ自動的に仮想マシンの数を増やす(スケールアウト)ことが可能になります。
            本機能を利用することで通常時はアプリケーションの実行に最低限必要な数の仮想マシンだけを実行しつつ、
            デプロイ時に動的に仮想マシンの台数を増やし、デプロイ完了後に不要になった仮想マシンを停止する(スケールイン)といった挙動を自動的に実行させることが可能となります。
            詳細は ECS ドキュメントも合わせてご覧ください。
            (※ 仮想マシンのスケールインに合わせて安全にタスクを停止するための仕組みを実現する方法についてはこちらも合わせてご覧ください)
          • ただし、現時点では Amazon ECS クラスター Auto Scaling は CodeDeploy Blue/Green デプロイをサポートしておりません。
            ローリング更新を maximumPercent = 200, minimumHealthyPercent = 100 のような設定で利用することで新バージョンのロールアウトまでのデプロイ時間を短くすることが期待できます。ただし、ローリング更新ではデプロイ中に新旧両方のバージョンがサービスインした状態が並行する点はご注意ください。
        2. 2-2: Amazon EC2 Auto Scalingグループを活用してデプロイ時のみ仮想マシンを増やす:
          • 前述の通り、ECS クラスター Auto Scaling は現時点では CodeDeploy Blue/Green デプロイをサポートしていません。
            「デプロイ時のみ仮想マシンを増やす」ことを CodeDeploy Blue/Green デプロイを併用しつつ実現するために、ECS クラスター Auto Scaling ではなく EC2 Auto Scaling の API を呼び出す形でデプロイ時のノードの一時的追加とデプロイ後の削除を実装していただくことも方法の一つとして挙げられます。

    Q. AWS Fargate は実行環境をAWS が管理するとのことでしたが、Amazon ElastiCache やAmazon RDS のような自分たちで作成したVPC の中で稼働するサービスと連携することはできますか?
    A. はい、可能です。AWS Fargate を利用する場合、ネットワークモードはawsvpc モードをご利用いただきます。
    この場合、それぞれのタスクにお客様が指定したVPC 内のENI がアタッチされますので、通常のVPC 内のリソースと同様に相互に通信いただくことが可能です。また、セキュリティグループをご利用いただけますので、そちらでアクセスの制御が可能です。

    Q. Windowsサーバの場合、ネットワークモードで、noneモードに設定して、独自でネットワーク設定が必要という理解ですが、初回、該当コンテナへ接続はどのようになるのでしょうか?

    A. ご質問はWindows コンテナの質問と考えております。
    Windows コンテナの場合、ネットワークモードは”none”に設定するのではなく、指定しないようにご注意ください。
    json ファイル定義する場合、”networkMode” パラメータ自体を指定しない形になります。
    マネジメントコンソールから設定する場合、”default”ネットワークモードを選択してください。
    詳しくはこちらをご参照ください。

    Windows コンテナのECS での利用については、こちらのドキュメントの手順をご参照ください。

    今後の AWS Webinar | イベントスケジュール

    直近で以下を予定しています。各詳細およびお申し込み先は下記URLからご確認いただけます。皆様のご参加をお待ちしております。


    AWS Innovate Online Conference / AWS Startup Day Online

    【42セッション公開中】AWS Innovate は、AWS クラウドを活用してビジネス革新を目指しているすべての IT リーダー及び IT プロフェッショナルを対象とした、最新のクラウド情報をお届けするためのオンラインカンファレンスです。人気教育系 Youtuber ヨビノリたくみ氏による招待講演「機械学習の「そと」と「なか」」他、全 42 のセッションを公開中です。

    また、皆さまよりいただいたアンケートを元に、人気が高かったセッションを Top 10 形式で掲載しております。視聴するセッションを迷われる場合は、参考にしてみてください。

    NEW! ランキング情報公開

    【17セッション公開中】AWS Startup Day は、アーリーステージのスタートアップ、または、起業を検討中の方を対象として、AWS クラウドを活用してビジネスを飛躍するヒントが満載のイベントです。コンテナ、機械学習、モバイルなど、モダンアプリケーションの開発に欠かせないテクノロジーに関するセッションも、アーリーステージの方々にとって必要な視点で編集しており、明日から使える実践的な内容となっています。

    AWS Innovate 開催: 3 月 10 日 ~ 5 月 8 日  |  詳細・お申込みについてはこちら≫
    AWS Startup Day 開催:3 月 17 日 ~ 5 月 8 日   | 詳細・お申込みについてはこちら≫

    AWSome Day Online Conference

    「AWSome Day Online」は、AWSの主要サービスや基礎知識を約 2.5 時間という短い時間で、ポイントを押さえて紹介いたします。技術的な面だけではなく、AWS クラウドを学ぶために必要となる知識を身に付けたい方、エンジニアのみならず、営業職、プリセールス職、学生まで幅広い方々におすすめします。

    ※5月の特別企画:AWSエキスパートがチャットでQ&A対応をいたします。

    日時: 5 月 11 日(月) 15:00 – 17:40 終了予定 | 詳細・お申込みについてはこちら≫

    AWS Black Belt Online Seminar

    5 月のアジェンダが公開されました。配信当日は Q&A ができます。参加された方だけの特権です。ぜひ、ご登録・ご視聴ください。

    5 月分の詳細・お申込はこちら≫

    • Amazon Managed Blockchain (AMB) | 2020 年 5 月 19 日 (火) | 12:00 – 13:00
    • AWS Amplify | 2020 年 5 月 20 日 (水) | 18:00 – 19:00
    • AWS X-Ray | 2020 年 5 月 26 日 (火) | 12:00 – 13:00
    • VMware Cloud on AWS | 2020 年 5 月 27 日 (水) | 18:00 – 19:00