Quantcast
Channel: Amazon Web Services ブログ
Viewing all articles
Browse latest Browse all 906

【AWS発表】AWS Elastic Beanstalk for Docker

$
0
0

AWS Elastic Beanstalkを使えば、簡単に、AWSクラウド内でアプリケーションをデプロイおよび管理することができます。 アプリケーションをアップロードすると、Elastic Beanstalkはキャパシティ(Amazon EC2インスタンス)をデプロイ、監視、スケールし、ロードバランサーを使って、正常に稼働しているインスタンスにリクエストを分散してくれます。

Dockerは、さまざまな環境で実行することができる、軽量、ポータブルで、カスタマイズ可能なコンテナという形でアプリケーションのデプロイを自動化します。 コンテナは事前に構築されたDocker イメージや、Dockerfileとして知られるシンプルなレシピから作成することができます。

Dockerのコンテナベースのモデルは非常に柔軟です。例えば、コンテナをローカルで構築、テストしてから、デプロイおよびスケーラビリティを確保のために、AWS Cloudにそれをアップロードするといったことができます。Dockerの自動化されたデプロイモデルは、アプリケーションをどこでホストする場合でも、アプリケーションのランタイム環境が、常に正しくインストール、設定されていることを保証します。

本日、Elastic Beanstalkを拡張し、Dockerイメージを含んだアプリケーションやDockerfileで表現されたアプリケーションを起動できるようにいたしました。 既存の Node.JS、PHP、Python、.NET、Java、Ruby環境に加えて、Elastic Beanstalk用のエキサイティングで強力な新しいランタイム環境として、Dockerを選択することができます。

Beanstalk, Meet Docker
本日の発表で、アプリケーションをローカルデスクトップで構築、テストしてから、Elastic Beanstalkを介して、AWSクラウドにデプロイすることができるようになりました。

お好きなバージョンのプログラミング言語、ウェブサーバー、アプリケーションサーバーを選択することができますし、それらをお好きなように設定することができます。必要に応じて、パッケージやライブラリをインストールすることも出来ます。

既存の公開されているDockerイメージおよびプライベートなDockerイメージを使って起動することができます。 各イメージはアプリケーションおよびそれに関連するもののスナップショットを含んでいて、いくつかの簡単なDockerコマンドを使ってローカルで作成することができます。 Elastic Beanstalkでイメージを使用するためには、Dockerrun.aws.jsonというファイル名のファイルを作成します。 このファイルは使用するイメージを特定し、コンテナのポートおよび、ホスト環境からコンテナにマッピングされるボリュームを設定することもできます。 プライベートなDockerイメージを使用する場合は、上記に加えて、.dockercfgファイルを作成し、それをAmazon S3に保存し、Dockerrun.aws.jsonのAuthenticationセクションでそれを参照する必要があります。

Dockerfileを作成することもできます。このファイルに記述されたDockerコマンドがElastic Beanstalkによって、確立されたオートスケーリングの設定の一部として処理、実行されます。つまり、Elastic Beanstalkアプリケーションをホストするために使用されるEC2インスタンスは、新しく作成される毎に、Dockerfileの指示どおりに設定されます。

どのオプションを選択するかに関わらず、Elastic Beanstalkに1つのファイルをアップロードします。アップロードするファイルは次のいずれかです。:

  1. Dockerfile
  2. Docker.aws.jsonファイル
  3. DockerfileかDocker.aws.jsonのどちらかと、その他のアプリケーションの設定を含んだZipファイル

3つ目の選択肢は、インスタンスに"可動部分"を持つ必要があるアプリケーションの場合に便利です。 Dockerfileを使う場合は、この部分を、ファイル内に埋め込んだシェルコマンドを使って行うこともできます。

Docker in Action
Elastic Beanstalkを使って、Docker用のシンプルなPHPアプリケーションを作ってみましょう!最初のステップは、全てのElastic Beanstalkアプリケーションで同じです。単にアプリケーション名前と説明を入力します。:

それから、Predefined Configrationとして、Dockerを選択します。このアプリケーションは、高度なスケーリングを必要としないので、シングルインスタンス環境で十分でしょう:

可動部分は、ルートにsrcwebサブディレクトリとDockerfileを持った単一のディレクトリの中です。:

次のように、それらを1つzipファイルに圧縮しました。(.ebextensionsディレクトリについて、明示的に言及しなければならなかったことに注意してください。)

その後、作成したファイルをElastic Beanstalkにアップロードしました。:

ファイルのアップロードにより、Elastc Beanstalkの環境を作成することができます。これは私のテスト環境です。後で、本番用に独立した別の環境を作成することができます。Elastic Beanstalkは各環境を個別に設定することができます。また、異なるバージョンのアプリケーションを各環境で実行することもできます。 :

PHPアプリケーションは、MySQLデータベースを使用するので、Elastic Beanstalkにそれを作成するように指示します。:

インスタンスタイプを選択します。EC2のキーペアも選択します。これにより、アプリケーションが実行されているEC2インスタンスにSSHを介して接続できるようになり、デバッグなどが便利になります。:

さらにElastic Beanstalkアプリケーションと作成されるAWSリソースにタグを付けました。(これは、今週初めに発表された新機能です。):

RDSインスタンスを設定することができます。ユーザー名とパスワードは環境変数の形でEC2インスタンスが利用可能となります。

次のPHPのコードはユーザー名とパスワードを取得するものです::

<?phpdefine('DB_NAME', getenv('RDS_DB_NAME'));define('DB_USER', getenv('RDS_USERNAME'));define('DB_PASSWORD', getenv('RDS_PASSWORD'));define('DB_HOST', getenv('RDS_HOSTNAME'));define('DB_TABLE', 'urler');?>

起動前の最後のステップは今までの設定の確認です。:

Elastic Beanstalkはアプリケーションおよび環境のステータスを、自動的に更新して表示します。:

数分後、環境が立ち上がり、実行されます。:

アプリケーションが動作していることが確認できました。:

環境を作成した後は、ソースコードをアップデートし、新しいZIPファイルを作成し、ほんの数秒で環境をデプロイすることができます。

AWS Elastic Beanstalk for Dockerは全てのAWSリージョンで利用可能です。いますぐお試しいただけます!

-- Jeff;

PS - The Elastic Beanstalk チームは毎週木曜の朝にオフィスアワーを実施しています。今週開催されるシリーズパート3に参加すれば、Elastic Beanstalk と CloudFormationを使った開発、デプロイ、スケーリングの管理を学ぶことができます。


この記事はAWSシニアエバンジェリスト Jeff BarrのAmazon Web Services Blogの記事、 AWS Elastic Beanstalk for Dockerを 堀内康弘 (Facebook, Twitter)が翻訳したものです。


Viewing all articles
Browse latest Browse all 906

Trending Articles