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

AWS Elastic Beanstalk - Ebを使ってコマンドラインから簡単操作!

$
0
0

今日はElastic Beanstalk用の新しいコマンドラインツール、eb (イービーと発音します)を紹介します! EbはLinuxやMac OS、Microsoft Windows上のターミナルからの開発、デプロイをよりシンプルにするツールです。コマンドラインからElastic Beanstalkを使いはじめるのはとても簡単です。

  • eb init credentialsのセットアップし、AWSのリージョンとElastic Beanstalkのソリューションスタック(OS + アプリケーションサーバ + 言語環境)を選択するのに使います。
  • eb start Elastic Beanstalkのアプリケーションを作成し、その中で環境を起動するのに使います。
  • git aws.push コードをデプロイするために使います。

最新のElastic Beanstalk Command Line Toolsをダウンロードすることでebを試すことができます。 ebについてさらに詳しく知りたい場合は、AWS Elastic Beanstalk Developer Guideをご覧ください。

それではebを使ったElastic Beanstalk アプリケーションを管理方法を見ていきましょう。

事前準備
まずは最新のElastic Beanstalk Command Line Toolsをダウンロードし、ディスク上のディレクトリに解凍しましょう。ebコマンドにすばやくアクセスできるように、このディレクトリにPATHを通しておくことをお薦めします。これで準備完了です!

アプリケーションの作成
アプリケーションを置いたディレクトリ内で、Gitリポジトリを初期化した後、次のコマンドを実行することでElastic Beanstalk アプリケーションを作成できます。

<devserver>: git init
Initialized empty Git repository in /Users/jeff/blog/.git

<devserver>: eb init
To get your AWS Access Key ID and Secret Access Key, visit "https://aws-portal.amazon.com/gp/aws/securityCredentials".
Enter your AWS Access Key ID: AB...78
Enter your AWS Secret Access Key: abcd...1234
Select an AWS Elastic Beanstalk service region.
Available service regions are:
1) "US East (Virginia)"
2) "EU West (Ireland)"
3) "Asia Pacific (Tokyo)"
Select (1 to 3): 1
Enter an AWS Elastic Beanstalk application name (auto-generated value is "jeffblog"):
Enter an AWS Elastic Beanstalk environment name (auto-generated value is "jeffblog-env"):
Select a solution stack.
Available solution stacks are:
1) "32bit Amazon Linux running Tomcat 7"
2) "64bit Amazon Linux running Tomcat 7"
3) "32bit Amazon Linux running Tomcat 6"
4) "64bit Amazon Linux running Tomcat 6"
5) "32bit Amazon Linux running PHP 5.3"
6) "64bit Amazon Linux running PHP 5.3"
7) "64bit Windows Server 2008 R2 running IIS 7.5"
Select (1 to 7): 6
Successfully updated AWS Credential file at "C:\Users\jeff\.elasticbeanstalk\aws_credential_file".

<devserver>: eb start
Now creating application "jeffblog".
Waiting for environment "jeffblog-env" to launch.
2012-06-26 21:23:05     INFO    createEnvironment is starting.
2012-06-26 21:23:14     INFO    Using elasticbeanstalk-eu-west-1-123456789012 as Amazon S3 storage bucket for environment data.
2012-06-26 21:23:15     INFO    Created Auto Scaling launch configuration named: awseb-jeffblog-env-65rxDnIDWV.
2012-06-26 21:23:16     INFO    Created load balancer named: awseb-jeffblog-env.
2012-06-26 21:23:16     INFO    Created Auto Scaling group named: awseb-jeffblog-env-Bub8kxJmPP.
2012-06-26 21:23:17     INFO    Created Auto Scaling trigger named: awseb-jeffblog-env-Bub8kxJmPP.
2012-06-26 21:23:19     INFO    Waiting for an EC2 instance to launch.
2012-06-26 21:24:05     INFO    Adding EC2 instances to the load balancer. This may take a few minutes.
2012-06-26 21:27:00     INFO    Application available at jeffblog-env-3tqewduwvb.elasticbeanstalk.com.
2012-06-26 21:27:04     INFO    Successfully launched environment: jeffblog-env
Application is available at "jeffblog-env-3tqewduwvb.elasticbeanstalk.com".

上記の例では、‘eb init’を実行した後、いくつかの質問に答える形で、簡単にアプリケーションの設定を行っています。このコマンドでGitリポジトリの設定も行いますので、直接Elastic Beanstalkにpushできるようになります。 ‘eb start’により、リソースを作成し、Elastic Beanstalk上にサンプルアプリケーションを起動します。アプリケーションは上記のURLからアクセスすることが可能です。

コードをデプロイする
Elastic Beanstalkにコードをデプロイするには、次のようにgit aws.pushを実行するだけです。

<devserver>: echo "<html><body><h1><?='Hello eb!'?></h1></body></html>" > index.php

<devserver>: git add index.php

<devserver>:  git commit –m “v1”
[master (root-commit) 23159c7] v1
 1 files changed, 1 insertions(+), 0 deletions(-)
 create mode 100644 index.php

<devserver>:  git aws.push
Counting objects: 3, done.
Delta compression using up to 2 threads.
Compressing objects: 100% (2/2), done.
Writing objects: 100% (3/3), 249 bytes, done.
Total 3 (delta 0), reused 0 (delta 0)
remote:
To https://abcd:1234@git.elasticbeanstalk.us-east-1.amazonaws.com/repos/6a656666626c6f67/jeffblog-env
 * [new branch]      HEAD -> master

アップロードしたアプリケーションをテストするためにアプリケーションのURLにアクセスしてみます。

コンフィグの設定を更新する
Eb.elasticbeanstalkディレクトリ内の.optionsettingsというファイルに設定を保存しています。設定を更新するには、単に.optionsettingsファイルを開いて、変更を加えた後、eb updateコマンドを実行するだけです。

例えば、インスタンスタイプをt1.microからm1.smallに更新したい場合は、単に‘instancetype’の値を‘m1.small’に変更し、次のコマンドを実行するだけです。

 

<devserver>: eb update
Updating environment "jeffblog-env". This may take a few minutes.
2012-06-26 21:31:41     INFO    Switched configuration attached to environment.
Environment "jeffblog-env" has been successfully updated.

アプリケーションについての情報を取得する
Elastic Beanstalkのアプリケーションについての情報を得るためには、eb statusコマンドを実行します。

<devserver>: eb status
URL     : jeffblog-env-3tqewduwvb.elasticbeanstalk.com
Status  : Ready
Health  : Green

クリーンアップする
Ebはクリーンアップのために2つのメカニズムを提供します。eb stopeb deleteです。

eb stopコマンドはアプリケーションを運用しているAWSリソース(ELBとEC2インスタンスのような)を削除します。しかしこの際、今までデプロイをしたアプリケーションのバージョンとコンフィグの設定全てが残されますので、すぐに再び始めることができます。 Eb stopは一晩中AWSリソースを運用し続ける必要のない、開発やアプリケーションのテストの際に理想的です。 再びはじめるにはeb startを使います。

eb deleteコマンドはAWSリソースだけでなく、全てのアプリケーションのバージョンとアプリケーションに紐づけられたコンフィグの設定を削除します。 Eb deleteはテストアプリケーションをクリーンアップして、スクラッチから新しいアプリケーションを作りはじめるような場合に理想的です。

<devserver>: eb stop
Are you sure? [y/n]:y
Stopping environment "jeffblog-env". This may take a few minutes.
$   2012-06-26 21:36:48     INFO    terminateEnvironment is starting.
2012-06-26 21:36:53     INFO    Deleted Auto Scaling trigger named: awseb-jeffblog-env-Bub8kxJmPP.
2012-06-26 21:36:55     INFO    Set Auto Scaling group named: awseb-jeffblog-env-Bub8kxJmPP to zero ec2 instances.
2012-06-26 21:36:58     INFO    Deleted load balancer named: awseb-jeffblog-env.
2012-06-26 21:37:02     INFO    Terminating Environment jeffblog-env.
2012-06-26 21:37:05     INFO    Waiting for Auto Scaling groups to terminate ec2 instances.
2012-06-26 21:38:12     INFO    Waiting for Auto Scaling groups to terminate ec2 instances.
2012-06-26 21:39:04     INFO    Waiting for Auto Scaling groups to terminate ec2 instances.
2012-06-26 21:39:04     INFO    Auto Scaling groups terminated all ec2 instances
Environment "jeffblog-env" has been successfully stopped.

このように、ebを使えば、コマンドラインから、Elastic Beanstalkのアプリケーションをセットアップ、管理、更新が簡単にできるようになります。ぜひお試しください!

堀内康弘 (Facebook, Twitter)


Viewing all articles
Browse latest Browse all 906

Trending Articles