こんばんは。ファガイです。
本日は、AWSのElastic Beanstalkを利用して、コマンドラインツールインストールからデプロイまでの一通りの処理をやってみました。
確認環境
- Windows7
- Git Bash
- Gow
導入
http://aws.amazon.com/developertools/AWS-Elastic-Beanstalk/6752709412171743
ここからインストールします。
解凍します。
フォルダ毎C直下に起きます。
中にあるebディレクトリのwindowsディレクトリのパスを取得して、環境変数にパスを通します。
コマンドラインを起動してバージョン確認コマンドを打って、ちゃんと表示されればOK。
$ eb --version
AWS Elastic Beanstalk Command Line Interface v2.6.4
セットアップの実行
フォルダ内にある
AWSDevTools\Windows\AWSDevTools-OneTimeSetup.bat
を実行するだけです。何が起きたのか分かんないです。
プロジェクト配置用のフォルダを設置します。
今回はC:\work\testとします。
testフォルダに移動して、git initをやっておきましょう。
awsのコンフィグの設定を行う
awsの設定をするには、先程のAWSDevTools-OneTimeSetup.batと同じ場所においてあったAWSDevTools-RepositorySetup.batをtestフォルダに移動して、実行してください。
これも、何も出ませんが、問題有りません。
$ git aws.config
Reading Credentials from C:\Users\username\.elasticbeanstalk\aws_credential_file.
The file does not exist. You can supply credentials by creating the file or editing .elasticbeanstalk/config to reference a different file.
The credential file should have the following format:
AWSAccessKeyId=your key
AWSSecretKey=your secret
AWS Access Key: AWSのアクセスキー
AWS Secret Key: AWSのシークレットキー
AWS Region [default to us-east-1]: ap-northeast-1 // ap-northeast-1が日本
AWS Elastic Beanstalk Application: test-app
AWS Elastic Beanstalk Environment: development
これでawsの設定はいいのかな。
追記
ここで指定したEnvironmentですが、URLの最初の文字列に使用されます。http://development-xxxxxxx.elasticbeanstalk.com/
なので、このenvironmentは考えて付けるべきかもしれません。
一応ファイル状況はこんな感じ。
$ ls -al
drwx 0 2015-02-12 16:21 ./
drwx 0 2015-02-12 16:21 ../
drwx 0 2015-02-12 16:21 .elasticbeanstalk/
drwx 0 2015-02-12 16:00 .git/
-rwx 140 2014-04-21 11:22 AWSDevTools-RepositorySetup.bat*
eb initコマンドを実行する
$ 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: AWSのアクセスキーを入力
Enter your AWS Secret Access Key: AWSのシークレットアクセスキーを入力
リージョンを選択する
Tokyoなので、7を選択。
Select an AWS Elastic Beanstalk service region (current value is "Asia Pacific (Tokyo)").
Available service regions are:
1) US East (Virginia)
2) US West (Oregon)
3) US West (North California)
4) EU West (Ireland)
5) EU Central (Frankfurt)
6) Asia Pacific (Singapore)
7) Asia Pacific (Tokyo)
8) Asia Pacific (Sydney)
9) South America (Sao Paulo)
Select (1 to 9): 7
その他設定
先程aws.configで設定した内容がデフォルト値になっているので、そのままEnter
Enter an AWS Elastic Beanstalk application name (current value is "test-app"):
Enter an AWS Elastic Beanstalk environment name (current value is "development"):
WebServerとして動かすのか、Workerとして動かすのか、聞いてくるので1のWebServerを選択。
Select an environment tier.
Available environment tiers are:
1) WebServer::Standard::1.0
2) Worker::SQS/HTTP::1.0
Select (1 to 2): 1
だらーっとAMIが出てくるので、今回は1番を選択します。
Select a solution stack.
Available solution stacks are:
1) 64bit Amazon Linux 2014.09 v1.1.0 running PHP 5.5
2) 64bit Amazon Linux 2014.09 v1.1.0 running PHP 5.4
3) 64bit Amazon Linux 2014.03 v1.1.0 running PHP 5.5
4) 32bit Amazon Linux 2014.03 v1.1.0 running PHP 5.5
5) 64bit Amazon Linux 2014.03 v1.1.0 running PHP 5.4
6) 32bit Amazon Linux 2014.03 v1.1.0 running PHP 5.4
7) 32bit Amazon Linux running PHP 5.3
8) 64bit Amazon Linux running PHP 5.3
9) 64bit Amazon Linux 2014.09 v1.1.0 running Node.js
10) 64bit Amazon Linux 2014.03 v1.1.0 running Node.js
11) 32bit Amazon Linux 2014.03 v1.1.0 running Node.js
12) 64bit Windows Server 2008 R2 running IIS 7.5
13) 64bit Windows Server 2012 running IIS 8
14) 64bit Windows Server 2012 R2 running IIS 8.5
15) 64bit Windows Server Core 2012 R2 running IIS 8.5
16) 64bit Amazon Linux 2014.09 v1.1.0 running Tomcat 8 Java 8
17) 64bit Amazon Linux 2014.09 v1.1.0 running Tomcat 7 Java 7
18) 64bit Amazon Linux 2014.09 v1.1.0 running Tomcat 7 Java 6
19) 64bit Amazon Linux 2014.03 v1.1.0 running Tomcat 7 Java 7
20) 32bit Amazon Linux 2014.03 v1.1.0 running Tomcat 7 Java 7
21) 64bit Amazon Linux 2014.03 v1.1.0 running Tomcat 7 Java 6
22) 32bit Amazon Linux 2014.03 v1.1.0 running Tomcat 7 Java 6
23) 32bit Amazon Linux running Tomcat 7
24) 64bit Amazon Linux running Tomcat 7
25) 32bit Amazon Linux running Tomcat 6
26) 64bit Amazon Linux running Tomcat 6
27) 64bit Amazon Linux 2014.09 v1.1.0 running Python 2.7
28) 64bit Amazon Linux 2014.09 v1.1.0 running Python
29) 64bit Amazon Linux 2014.03 v1.1.0 running Python 2.7
30) 32bit Amazon Linux 2014.03 v1.1.0 running Python 2.7
31) 64bit Amazon Linux 2014.03 v1.1.0 running Python
32) 32bit Amazon Linux 2014.03 v1.1.0 running Python
33) 32bit Amazon Linux running Python
34) 64bit Amazon Linux running Python
35) 64bit Amazon Linux 2014.09 v1.1.0 running Ruby 2.1 (Puma)
36) 64bit Amazon Linux 2014.09 v1.1.0 running Ruby 2.1 (Passenger Standalone)
37) 64bit Amazon Linux 2014.09 v1.1.0 running Ruby 2.0 (Puma)
38) 64bit Amazon Linux 2014.09 v1.1.0 running Ruby 2.0 (Passenger Standalone)
39) 64bit Amazon Linux 2014.09 v1.1.0 running Ruby 1.9.3
40) 64bit Amazon Linux 2014.03 v1.1.0 running Ruby 2.1 (Puma)
41) 64bit Amazon Linux 2014.03 v1.1.0 running Ruby 2.1 (Passenger Standalone)
42) 64bit Amazon Linux 2014.03 v1.1.0 running Ruby 2.0 (Puma)
43) 64bit Amazon Linux 2014.03 v1.1.0 running Ruby 2.0 (Passenger Standalone)
44) 64bit Amazon Linux 2014.03 v1.1.0 running Ruby 1.9.3
45) 32bit Amazon Linux 2014.03 v1.1.0 running Ruby 1.9.3
46) 64bit Amazon Linux 2014.09 v1.1.0 running Docker 1.3.3
47) 64bit Debian jessie v1.1.0 running GlassFish 4.1 Java 8 (Preconfigured - Docker)
48) 64bit Debian jessie v1.1.0 running GlassFish 4.0 Java 7 (Preconfigured - Docker)
49) 64bit Debian jessie v1.1.0 running Python 3.4 (Preconfigured - Docker)
50) 64bit Debian jessie v1.1.0 running Go 1.4 (Preconfigured - Docker)
51) 64bit Debian jessie v1.1.0 running Go 1.3 (Preconfigured - Docker)
Select (1 to 51):1
ロードバランサーを組むかどうかを聞かれます。今回はテストで触るだけだったので2を選択。
Select an environment type.
Available environment types are:
1) LoadBalanced
2) SingleInstance
Select (1 to 2):2
RDBも立ち上げるかどうか聞かれます。RDSは別で建てたいので、nを選択します。
Create an RDS DB Instance? [y/n]:
インスタンスプロファイルは無くても良いですか?と聞かれるので、とりあえずyで無しに。
Attach an instance profile (current value is "[Create a default instance profile]"):
You IAM user does not have sufficient permission. User: arn:aws:iam::XXXXXXXX:user/XXXXXX is not authorized to perform: iam:ListInstanceProfiles on resource: arn:aws:iam::XXXXXXXXX:instance-profile/
Do you want to proceed without attaching an instance profile? [y/n]:y
設定を作れたよーと出ます。
Updated AWS Credential file at "C:\Users\username\.elasticbeanstalk\aws_credential_file".
もう一度ディレクトリ情報を調べてみます。
$ ls -al
drwx 0 2015-02-12 16:48 ./
drwx 0 2015-02-12 16:48 ../
drwx 0 2015-02-12 16:21 .elasticbeanstalk/
drwx 0 2015-02-12 16:48 .git/
-rw- 21 2015-02-12 16:48 .gitignore
-rwx 140 2014-04-21 11:22 AWSDevTools-RepositorySetup.bat*
このように、.gitignoreファイルが追加されましたね。
実際は、.elasticbeanstalkの方にも設定情報が追加されてるはず・・・。
これで設定は終わりました。
起動
eb startで起動させてみましょう。
$ eb start
Starting application "test-app".
Waiting for environment "development" to launch.
2015-02-12 16:57:09 INFO createEnvironment is starting.
2015-02-12 16:57:10 INFO Using elasticbeanstalk-ap-northeast-1-XXXXXXXXX as Amazon S3 storage bucket for environment data.
2015-02-12 16:57:44 INFO Created EIP: 54.178.XXX.XXX
2015-02-12 16:57:46 INFO Created security group named: awseb-e-xxxxxxxxxx-stack-AWSEBSecurityGroup-XXXXXXXXXXXX
2015-02-12 16:58:48 INFO Waiting for EC2 instances to launch. This may take a few minutes.
2015-02-12 17:00:10 INFO Successfully launched environment: development
完了したら、作られたEIPである54.178.XXX.XXXにアクセスすると、起動したことが分かります。
デプロイ
では、ファイルをデプロイしてみましょう。
vim index.php
ファイルの中身は何でもいいです。
<?php
echo "Hello! AWS!";
とりあえずリポジトリにコミットします。
git add index.php
git commit -m "first commit."
では、awsにpushしましょう。
$ git aws.push
Pushing to environment: development
Counting objects: 3, done.
Writing objects: 100% (3/3), 245 bytes | 0 bytes/s, done.
Total 3 (delta 0), reused 0 (delta 0)
remote:
To https://XXXXXXXXXXXXXXXX:20150212T080619ZXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX@git.elasticbeanstalk.ap-northeast-1.amazonaws.com/v1/repos/XXXXXXXXXXXXXXX/commitid/XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX/environment/XXXXXXXXXXXXXXX
* [new branch] 9ad7d5e356e069fb6b17919843d65a4540220f31 -> master
このようにpushがされ、masterが作成されたことが分かります。
もう一度先程のページにアクセスしてみると、Hello! AWS!と表示されているはずです。
これでAWSのデプロイは終わりです。ただし、これはAWSにデプロイがされただけで、リモートリポジトリには更新がされてないと思うので、ここは注意。
削除作業
あとは使用したelasticbeanstalkを削除しちゃいましょう。
削除するには、
$ eb stop
これだけです。terminateしますか?って聞かれるのでyで。
Terminate environment? [y/n]: y
Stopping environment "development". This may take a few minut
2015-02-12 17:17:39 INFO terminateEnvironment is start
2015-02-12 17:17:56 INFO Waiting for EC2 instances to
take a few minutes.
2015-02-12 17:19:21 INFO Deleted security group named:
-stack-AWSEBSecurityGroup-XXXXXXXXXXX
2015-02-12 17:19:21 INFO Deleted EIP: 54.178.XXX.XXX
2015-02-12 17:19:33 INFO Deleting SNS topic for enviro
Stop of environment "development" has completed.
まとめ
実際に使ってみて、Elastic Beanstalkは非常に簡単でした!
もっと細かいことをやるとなると少し面倒なのかもしれませんが、これくらいだったら良さそうですね。
コメント