« 【AWS発表】プレビュー:AWS Database Migration Service | メイン | 【AWS発表】AWS Lambdaのアップデート – Python, VPC, 実行時間の延長, スケジュールなど »

【AWS発表】EC2 Container Serviceアップデート - Container Registry, ECS CLI, AZを意識したスケジュリング、その他

Dockerによるコンテナベースのデプロイモデルが、新しいアプリケーションを作りスケールしそして素早く更新するための好ましい方法としてこれほどまでに早く広がっていることに本当に興奮しています。我々は昨年Amazon EC2 Container Serviceを提供し始めてから現在まで、マイクロサービスやウェブアプリケーション、バッチジョブなどを動かすためにAmazon ECSを使っているお客様を見てきました。

多くの開発者が言っていたのは、コンテナによって開発、テスト、そしてデプロイを高速化させることができたということです。個々のコンテナが”標準化された”アプリケーションのコンポーネントを保持することができ、それぞれがそのタスクをこなすのに最適な言語、フレームワーク、ミドルウェアで作ることができるという事実を非常に好ましく思っています。コンテナによる隔離によって、大規模な変更に伴ってシステム全体をリスクにさらすことなく、より粒度の高いレベルでイノベーションする自由を開発者は得られています。

Amazon ECSとDockerのユーザから受け取ったフィードバックを元に、我々はいくつかの強力な新機能を発表したいと思います - それはAmazon EC2 Container RegistryとAmazon EC2 Container Service CLIです。また、Amazon ECSのスケジューラがAvailability Zoneをより意識するようにしたり、いくつかの新しいコンテナの設定オプションを追加もしています。

それでは見てみましょう!

Amazon EC2 Container Registry

Docker (そしてEC2 Container Service)はイメージという概念の元に作られています。コンテナを起動するときにイメージを参照しますが、それはDockerレジストリからpullされます。このレジストリがデプロイプロセスの中で重要な役割を担っています。我々はお客様と会話するなかで、高可用性があり並外れてスケーラブルで、2箇所以上のAWSリージョンに渡ってデプロイ可能とするために世界中からアクセスできるレジストリが求められているということを学びました。また、それはAWS Identity and Access Management(IAM)と連携してシンプルな認証ときめ細かい制御が可能になっていて欲しいと思われています。

これらの要求の多くを満たすためにお客様はご自身のレジストリを持っていますが、これはできることなら避けたい運用の負担を強いていると教えてくれました。

年内には我々はAmazon EC2 Container Registry (Amazon ECR)を利用可能とします。このフルマネージドなレジストリは、簡単にDockerのコンテナイメージを保存、管理、配布、そして共同作業することができ、それによって上に述べた問題に対処します。

Amazon ECRはECSと連携していて、簡単に本番環境のワークフローと連携することができます。開発環境ではDocker CLIを使ってAmazon ECRにイメージをpushすることができ、Amazon ECSが本番環境でのデプロイのためにそこからイメージを取得することができます。

イメージはS3に保存されるので耐久性が高く、転送中も保存後も暗号化されていて、IAMユーザやロールを使ってアクセス制御されます。保存のために使ったデータとインターネットを転送したデータに対してのみ課金されます。

こちらがコンソール画面のプレビューになります:

Ecr_repo_2

より詳細な情報と先行アクセスのためのサインアップについてはサインアップページをご覧ください。このプログラムへの参加に興味があれば、今日サインアップすることをオススメします。

サービス開始時のパートナーとして、ShippableCloudBeesCodeShipWerckerという複数社で、Dockerイメージの自動ビルドとデプロイに注目したAmazon ECSとAmazon ECRとの連携の提供に向けて既に動き出しています。より詳しいことは、コンテナパートナーページをご覧下さい。

Amazon EC2 Container Service CLI

ECS Command Line Interface (ECS CLI)は、ローカルの開発環境からクラスタやタスクを作ったり更新したり監視したりするのを簡単にする、ハイレベルなコマンドを提供するAmazon EC2 Container Service (ECS)のためのコマンドラインツールになります。

Amazon ECS CLIは、複数コンテナのアプリケーションを定義し実行するツールとして人気のあるオープンソースツールであるDocker Composeをサポートしています。AWSマネージメントコンソールの代わりとして、毎日のデプロイやテストサイクルの一部としてECS CLIを使うことができます。

ECS CLIはすぐに使いはじめることができます。ダウンロードして(最初に説明を読んで下さい)、インストールして、以下に従って設定をするだけです(もちろん他の方法やオプションもあります)

$ ecs-cli configure --region us-east-1 --cluster my-cluster

この様にして、最初のクラスタを起動することができます:

$ ecs-cli up --keypair my-keys --capability-iam --size 2

Docker Composeは設定ファイルを必要とします。こちらがシンプルな例になります(これをdocker-compose.ymlというファイルに保存して下さい):

web:
  image: amazon/amazon-ecs-sample
  ports:
  - "80:80"

あとはこれをクラスタ上で実行します:

$ ecs-cli compose up
INFO[0000] Found task definition TaskDefinition=arn:aws:ecs:us-east-1:980116778723:task-definition/ecscompose-bin:1
INFO[0000] Started task with id:arn:aws:ecs:us-east-1:9801167:task/fd8d5a69-87c5-46a4-80b6-51918092e600

そうしたら、走っているTaskを確認してみます:

$ ecs-cli compose ps
Name                                      State    Ports
fd8d5a69-87c5-46a4-80b6-51918092e600/web  RUNNING  54.209.244.64:80->80/tcp

サンプルアプリがクラスタ上で動いていることを見るために、このアドレスをブラウザで開いて見ましょう。

ECS CLIは他にもたくさんのオプションを持っています(全てを見るために--helpを実行してみてください)。例えば、ロングランニングなServiceの作成と管理も行うことができます。こちらがオプションのリストになります:

Ecs_cli_2

ECS CLIはApache 2.0ライセンス下で利用可能(コードはhttps://github.com/aws/amazon-ecs-cliで利用可能)で、みなさんのpull requestを見ることを楽しみにしています。

新しいDockerコンテナ設定オプション

Task Definitionは1つのEC2インスタンス上で一緒にスケジュールされるコンテナ群を定義できるアプリケーションの記述です。いくつかのパラメータをTask Definitionで指定することができます。例えばどのDockerイメージを使うか、どれくらいのCPUとメモリをそれぞれのコンテナで使うか、(もしあるなら)コンテナのどのポートがホストのどのポートに紐付けされるか、といったものがあります。

Task Definitionは今日から更に多くのDockerのオプションをサポートします。Dockerラベル、作業ディレクトリ、ネットワーク無効化、特権実行、読み込み専用のルートファイルシステム、DNSサーバ、DNSサーチドメイン、ulimits、ログの設定、追加のhosts(/etc/ hostsに追記されます)、そしてSELinuxなどのMulti-Level Security (MLS)システムのためのセキュリティのオプションが含まれています。

ECSコンソールのTask Definitionエディタも既に更新されていて、新しい設定オプションを使うことができます:

Ecs_task_def_editor_new_options_dude_1

詳細な情報については、Task Definitionパラメータをお読み下さい。

Availability Zoneを意識してスケジューリングできます

ロングランニングなステートレスサービスやアプリケーションのコンテナを簡単にスケジュールする方法として、我々は今年の前半にAmazon ECS Serviceスケジューラを提供し始めました。ServiceスケジューラはオプションでElastic Load Balancingと連携します。指定した数のTaskが継続して実行していることを保証し、もし失敗があったらTaskをリスタートします。ServiceスケジューラはECS上に本番環境のサービスをデプロイし実行するための主たる方法であり、我々はもっと簡単にそれができるように継続して改善していきたいと思っています。

今日からServiceスケジューラはAvailability Zoneを意識することができるようになりました。AWS Availability Zone間でのバランスを維持するために、ServiceスケジューラはTaskをAvailability Zoneを広く使って実行します。

Amazon ECS at re:Invent

もしAWS re:Inventにいらしていて、あなたの同僚(あなたの競合とは言いません)がコンテナベースの計算やAmazon ECSをどの様に活用しているかを学びたいと思ったら、以下のセッションを確認してみてください:

  • CMP302 – Amazon EC2 Container Service: Distributed Applications at Scale (to be live streamed).
  • CMP406 – Amazon ECS at Coursera.
  • DVO305 – Turbocharge Your Continuous Deployment Pipeline with Containers.
  • DVO308 – Docker & ECS in Production: How We Migrated Our Infrastructure from Heroku to AWS.
  • DVO313 – Building Next-Generation Applications with Amazon ECS.
  • DVO317 – From Local Docker Development to Production Deployments.

-- Jeff;

原文: https://aws.amazon.com/blogs/aws/ec2-container-service-update-container-registry-ecs-cli-az-aware-scheduling-and-more/ (翻訳: SA岩永)

コメント

Featured Event

2016年3 月

    1 2 3 4 5
6 7 8 9 10 11 12
13 14 15 16 17 18 19
20 21 22 23 24 25 26
27 28 29 30 31