ごぶさたです。
今趣味で作っているプロダクトのテスト環境を、AWS Elastic Beanstakで実装してみたので備忘録をば。
Contents
Beanstalk でのデプロイメント
AWS Elastic Beanstalk (以下EB) で構築した環境へデプロイするには、ソースコード一式をzipに固めたソースバンドルファイルを作成し、マネジメントコンソール等からアップロードします。
この方法ではデプロイの度に手作業でzipアーカイブを作成しなくてはならず、CI環境を構築した自動化を行わない限り、毎回のデプロイに待ち時間が発生してしまいます。
もっと簡単にデプロイするために、今回は gitとEB CLIを使ったデプロイメントを紹介します。
gitを使ったデプロイといえば、SalesforceのHeroku等もPaaSとして有名なのですが、まさにソースバンドルのバージョン管理等も似た感覚で利用できます。Herokuと違い、直接インスタンスへのSSHも可能なので何か問題が発生したときも簡単に対応できます。
EB CLI をインストール
まずはAWSがリリースしている、EB用のコマンドラインツールをインストールします。
python + pip を用いてインストールするので、入っていない方は事前にインストールしてください。
pipが使えるようになれば、 awsebcli
パッケージをインストールします。
1 |
$ sudo pip install awsebcli |
eb コマンドが使えるかテストします。
1 2 |
$ eb --version EB CLI 3.7.3 (Python 2.7.1) |
EB CLIの設定
コンソールで、デプロイ対象のコードのルートディレクトリへ移動します。
gitリポジトリの確認
今回はgitデプロイの構成なので、EBを設定する前にgitの管理対象になっているか確認してください。
また、現在のブランチがEB環境と紐付くため、デプロイ対象のブランチ(ここではmaster)を事前にチェックアウトしてください。
1 2 3 |
$ git status On branch master ...(略)... |
もし Not a git repository..
と表示された場合はディレクトリが間違っているか、gitが構成されていません。
適宜 git init
コマンドでリポジトリを作ってください。
EB 環境の構成
次のコマンドで、既存のEB環境とリンクさせます。
ここではAWSに作られているEB環境の一覧から選択しますので、事前にAWSのマネジメントコンソールなどからアプリケーションと環境を1つずつ設定、起動しておいてください。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 |
$ eb init Select a default region 1) us-east-1 : US East (N. Virginia) 2) us-west-1 : US West (N. California) 3) us-west-2 : US West (Oregon) 4) eu-west-1 : EU (Ireland) 5) eu-central-1 : EU (Frankfurt) 6) ap-southeast-1 : Asia Pacific (Singapore) 7) ap-southeast-2 : Asia Pacific (Sydney) 8) ap-northeast-1 : Asia Pacific (Tokyo) 9) ap-northeast-2 : Asia Pacific (Seoul) 10) sa-east-1 : South America (Sao Paulo) 11) cn-north-1 : China (Beijing) (default is 3): 8 You have not yet set up your credentials or your credentials are incorrect You must provide your credentials. (aws-access-id): AKIAJOUAASEXAMPLE (aws-secret-key): 5ZRIrtTM4ciIAvd4EXAMPLEDtm+PiPSzpoK Select an application to use 1) my-app 2) [ Create new Application ] (default is 2): 1 |
なお、ここで入力した認証情報は、awsebcliやaws-cliなどで一度でも入力していると聞かれなくなります。
また aws-cliで複数のプロファイルを利用している場合、 --profile name
を追加することで利用できます。
設定を確認します。
1 2 3 4 |
$ eb status Environment details for: my-app-dev Application name: my-app ...(略)... |
EB CLI からのデプロイメント
デプロイの前に、まず変更を加えたアプリケーションコードをコミットして・・・
1 |
$ git commit -m "awesome changes!" |
あとは deploy コマンドを実行するだけ
1 2 3 4 5 6 7 |
$ eb deploy Creating application version archive "app-d451-160720_190640". Uploading: [##################################################] 100% Done... INFO: Environment update is starting. INFO: Deploying new version to instance(s). INFO: New application version was deployed to running EC2 instances. INFO: Environment update completed successfully. |
手元の環境では、およそ1分でデプロイを実施できました。
変更が反映されているか確認してみます。
openコマンドを使うことで、現在のEB環境に割り当てられているCNAMEのURLをブラウザで開けます。
1 |
$ eb open |
以上です