Elastic Beanstalk 開発者ガイド

AWS Elastic Beanstalk
開発者ガイド
API Version 2010-12-01
AWS Elastic Beanstalk 開発者ガイド
AWS Elastic Beanstalk: 開発者ガイド
Copyright © 2016 Amazon Web Services, Inc. and/or its affiliates. All rights reserved.
Abstract
Elastic Beanstalk 開発者ガイドは、アプリケーションを実行するインフラストラクチャを考慮せずに、
Elastic Beanstalk を使用して AWS クラウド上にアプリケーションを迅速にデプロイして管理するための、
概念と詳細な説明を提供しています。
Amazon's trademarks and trade dress may not be used in connection with any product or service that is not Amazon's, in any manner
that is likely to cause confusion among customers, or in any manner that disparages or discredits Amazon. All other trademarks not
owned by Amazon are the property of their respective owners, who may or may not be affiliated with, connected to, or sponsored by
Amazon.
AWS Elastic Beanstalk 開発者ガイド
Table of Contents
AWS Elastic Beanstalk とは? .......................................................................................................... 1
ストレージ ........................................................................................................................... 2
料金表 ................................................................................................................................. 2
コミュニティ ........................................................................................................................ 2
次の段階 .............................................................................................................................. 3
はじめに ...................................................................................................................................... 4
ステップ 1: サービスへのサインアップ ..................................................................................... 4
ステップ 2: アプリケーションの作成 ........................................................................................ 5
ステップ 3: 環境に関する情報の表示 ........................................................................................ 6
ステップ 4: 新しいバージョンのデプロイ .................................................................................. 7
ステップ 5: 設定の変更する .................................................................................................... 9
ステップ 6: クリーンアップ .................................................................................................. 11
次の段階 ............................................................................................................................ 12
EB CLI ....................................................................................................................... 12
AWS SDK for Java ....................................................................................................... 12
AWS Toolkit for Eclipse ................................................................................................ 13
AWS SDK for .NET ...................................................................................................... 13
AWS Toolkit for Visual Studio ........................................................................................ 13
AWS SDK for Node.js ................................................................................................... 13
AWS SDK for PHP ....................................................................................................... 14
Boto(AWS SDK for Python) ....................................................................................... 14
AWS SDK for Ruby ...................................................................................................... 14
Elastic Beanstalk の詳細 ............................................................................................................... 15
コンポーネント ................................................................................................................... 15
アプリケーション ........................................................................................................ 15
Application Version] .................................................................................................... 16
環境 .......................................................................................................................... 16
環境設定 .................................................................................................................... 16
設定テンプレート ........................................................................................................ 16
アーキテクチャの概要 .......................................................................................................... 16
ウェブサーバー環境枠 .................................................................................................. 17
ワーカー環境枠 ........................................................................................................... 18
アクセス許可 ...................................................................................................................... 19
Elastic Beanstalk サービスロール ................................................................................... 20
Elastic Beanstalk インスタンスプロファイル ................................................................... 21
Elastic Beanstalk ユーザーポリシー ................................................................................ 23
サポートされているプラットフォーム .................................................................................... 25
Docker ....................................................................................................................... 26
事前設定済み Docker ................................................................................................... 26
Go ............................................................................................................................ 27
Java SE ..................................................................................................................... 27
Java と Tomcat ........................................................................................................... 28
IIS を使用する Windows Server での .NET ...................................................................... 28
Node.js ...................................................................................................................... 30
PHP .......................................................................................................................... 30
Python ....................................................................................................................... 31
Ruby ......................................................................................................................... 31
設計上の考慮事項 ................................................................................................................ 33
スケーラビリティ ........................................................................................................ 33
セキュリティ .............................................................................................................. 34
永続的ストレージ ........................................................................................................ 34
耐障害性 .................................................................................................................... 34
コンテンツ配信 ........................................................................................................... 35
ソフトウェアの更新プログラムと修正プログラム ............................................................. 35
接続 .......................................................................................................................... 35
API Version 2010-12-01
iii
AWS Elastic Beanstalk 開発者ガイド
次の段階 ............................................................................................................................ 36
チュートリアルとサンプル ............................................................................................................ 37
アプリケーションを管理する ......................................................................................................... 39
アプリケーションを作成します。 .......................................................................................... 39
アプリケーションバージョンを作成する ................................................................................. 40
アプリケーションバージョンを削除する ................................................................................. 41
ソースバンドルを作成する .................................................................................................... 42
.NET アプリケーションのソースバンドルの作成 .............................................................. 42
Mac OS X Finder または Windows エクスプローラでファイルを圧縮する ............................. 43
コマンドラインからソースバンドルを作成する ................................................................ 46
Git を使用してソースバンドルを作成する ....................................................................... 47
ソースバンドルをテストする ......................................................................................... 47
アプリケーションのフィルタリング ....................................................................................... 48
環境を管理する ........................................................................................................................... 49
環境マネジメントコンソール ................................................................................................. 50
環境ダッシュボード ..................................................................................................... 51
環境マネジメントのアクション ..................................................................................... 52
環境の作成 ......................................................................................................................... 53
コンソールの迅速な起動 ............................................................................................... 54
New Environment Wizard .............................................................................................. 55
環境のクローンを作成する ............................................................................................ 63
環境を終了する ........................................................................................................... 66
AWS CLI を使用する .................................................................................................... 68
API を使用した Elastic Beanstalk 環境の作成 ................................................................... 69
................................................................................................................................. 72
環境を構成する ........................................................................................................... 74
デプロイ ............................................................................................................................ 76
ローリングデプロイ ..................................................................................................... 77
Blue-Green Deployment ................................................................................................ 79
設定変更 ............................................................................................................................ 82
ローリング設定更新 ..................................................................................................... 82
環境のタグ付け ........................................................................................................... 85
プラットフォームの更新 ....................................................................................................... 86
レガシー環境をアップグレードする ............................................................................... 86
更新のキャンセル ................................................................................................................ 89
環境タイプ ......................................................................................................................... 90
ロードバランシングでオートスケーリングの環境 ............................................................. 90
シングルインスタンス環境 ............................................................................................ 91
環境タイプの変更 ........................................................................................................ 91
ワーカー環境 ...................................................................................................................... 92
ワーカー環境の仕組み .................................................................................................. 93
ワーカー環境枠での Auto Scaling のための Amazon CloudWatch の使用 .............................. 96
ワーカー環境を作成する ............................................................................................... 97
Elastic Beanstalk でのワーカー環境の設定 ...................................................................... 97
環境設定 .................................................................................................................................. 100
設定オプション ................................................................................................................. 101
環境を作成する前 ...................................................................................................... 101
作成時 ..................................................................................................................... 105
作成後 ..................................................................................................................... 110
汎用オプション ......................................................................................................... 117
プラットフォーム固有のオプション .............................................................................. 138
優先順位 .................................................................................................................. 145
推奨値 ..................................................................................................................... 145
.ebextensions .................................................................................................................... 147
オプション設定 ......................................................................................................... 148
サーバーのカスタマイズ(Linux) ............................................................................... 150
サーバーのカスタマイズ(Windows) .......................................................................... 161
カスタムリソース ...................................................................................................... 167
API Version 2010-12-01
iv
AWS Elastic Beanstalk 開発者ガイド
保存された設定 .................................................................................................................
env.yaml ........................................................................................................................
Auto Scaling グループ ........................................................................................................
AWS マネジメントコンソール .....................................................................................
コマンドラインインターフェイス(CLI) ......................................................................
ヘルスチェックの設定 ................................................................................................
EC2 インスタンス .............................................................................................................
AWS マネジメントコンソール .....................................................................................
コマンドラインインターフェイス(CLI) ......................................................................
API ..........................................................................................................................
個のロードバランサー ........................................................................................................
AWS マネジメントコンソール で環境のロードバランサーを設定する ................................
ロードバランサー設定の名前空間 .................................................................................
データベース ....................................................................................................................
AWS マネジメントコンソール .....................................................................................
VPC ................................................................................................................................
SNS Notifications ...............................................................................................................
Elastic Beanstalk コンソールで Amazon SNSトピックを設定する .....................................
aws:elasticbeanstalk:sns:topics 名前空間 ..........................................................
ドメイン名 .......................................................................................................................
HTTPS を設定する ............................................................................................................
証明書を作成する ......................................................................................................
証明書をアップロードする ..........................................................................................
ロードバランサーで HTTPS を終了する ........................................................................
インスタンスで HTTPS を終了する ..............................................................................
エンドツーエンドの暗号化 ..........................................................................................
TCP パススルー ........................................................................................................
キーを安全に保存する ................................................................................................
カスタム イメージ .............................................................................................................
環境リンク .......................................................................................................................
環境のモニタリング ...................................................................................................................
モニタリングコンソール .....................................................................................................
概要 .........................................................................................................................
モニタリンググラフ ...................................................................................................
モニタリングコンソールのカスタマイズ .......................................................................
基本ヘルスレポート ...........................................................................................................
ヘルスステータスの色 ................................................................................................
Elastic Load Balancing ヘルスチェック .........................................................................
単一インスタンス環境のヘルスチェック .......................................................................
追加のチェック .........................................................................................................
Amazon CloudWatch のメトリックス ............................................................................
ヘルスに関するトラブルシューティング .......................................................................
拡張ヘルスレポートとモニタリング ......................................................................................
拡張ヘルスレポートの有効化 .......................................................................................
ヘルスコンソール ......................................................................................................
EB CLI ヘルスコマンド ...............................................................................................
状態の色とステータス ................................................................................................
インスタンスメトリックス ..........................................................................................
CloudWatch ..............................................................................................................
API ユーザー .............................................................................................................
拡張ヘルスログ形式 ...................................................................................................
通知とトラブルシューティング ....................................................................................
Elastic Beanstalk 状態エージェント ..............................................................................
インスタンスと環境の状態を判断するための要素 ...........................................................
拡張ヘルスレポートのロール .......................................................................................
拡張ヘルスレポートのイベント ....................................................................................
更新、デプロイ、およびスケーリング中の拡張ヘルスレポートの動作 ................................
アラームの管理 .................................................................................................................
API Version 2010-12-01
v
185
188
189
189
195
197
199
199
202
203
205
205
208
209
209
212
213
214
214
215
217
218
220
221
222
247
250
251
251
254
256
256
257
257
258
259
260
260
261
261
261
262
263
264
267
269
273
275
276
282
283
286
287
288
289
290
290
291
AWS Elastic Beanstalk 開発者ガイド
イベントの表示 .................................................................................................................
AWS マネジメントコンソール .....................................................................................
コマンドライン .........................................................................................................
API ..........................................................................................................................
インスタンスの監視 ...........................................................................................................
インスタンスログ ..............................................................................................................
インスタンス上のログの場所 .......................................................................................
S3 のログの場所 ........................................................................................................
デフォルトのログタスク設定の拡張 ..............................................................................
ローカルインスタンスログのローテーションの設定 ........................................................
AWS の統合 ..............................................................................................................................
アーキテクチャの概要 ........................................................................................................
CloudFront ........................................................................................................................
CloudTrail .........................................................................................................................
CloudWatch ......................................................................................................................
CloudWatch ......................................................................................................................
IAM アクセス許可の付与 .............................................................................................
設定ファイルを使って CloudWatch Logs 統合をセットアップする ....................................
CloudWatch Logs 統合のトラブルシューティング ...........................................................
DynamoDB .......................................................................................................................
ElastiCache ......................................................................................................................
Amazon RDS ....................................................................................................................
デフォルトの VPC で外部 RDS インスタンスを起動して接続 ...........................................
EC2 Classic で外部 RDS インスタンスを起動して接続する ..............................................
Amazon S3 に接続文字列を保存する ............................................................................
Amazon S3 .......................................................................................................................
Amazon VPC ....................................................................................................................
必要な VPC 設定の確認 ..............................................................................................
VPC のシングルインスタンス環境 ................................................................................
専用インスタンスによる負荷分散環境 ...........................................................................
拠点ホスト ...............................................................................................................
Amazon RDS ............................................................................................................
パブリックインスタンスによる負荷分散環境 .................................................................
IAM .................................................................................................................................
IAM ロールの使用 ......................................................................................................
管理ユーザーポリシー ................................................................................................
カスタムユーザーのポリシー .......................................................................................
ARN 形式 .................................................................................................................
リソースと条件 .........................................................................................................
ポリシーの例 ............................................................................................................
リソース許可に基づいたポリシーの例 ..........................................................................
ローカルの開発環境 ...................................................................................................................
プロジェクトフォルダの作成 ...............................................................................................
ソースコントロールをセットアップする ...............................................................................
リモートリポジトリを設定する ............................................................................................
EB CLI をインストールする .................................................................................................
AWS CLI のインストール ....................................................................................................
EB CLI .....................................................................................................................................
EB CLI のインストール .......................................................................................................
Python および pip を使用して EB CLI をインストールする ...............................................
Linux で Python、pip、EB CLI をインストールする ........................................................
Windows で Python、pip、EB CLI をインストールする ....................................................
OS X で EB CLI をインストールする ............................................................................
EB CLI の設定 ...................................................................................................................
.ebignore ファイルを無視する .....................................................................................
名前を指定されたプロファイルを使用する ....................................................................
プロジェクトフォルダの代わりに圧縮ファイルをデプロイする .........................................
構成設定と優先順位 ...................................................................................................
API Version 2010-12-01
vi
293
293
294
294
294
296
298
298
299
300
301
301
302
302
303
303
305
306
307
307
308
308
309
313
317
319
319
320
322
326
332
335
340
344
345
355
356
360
361
386
389
400
400
400
401
401
402
403
403
404
405
407
408
409
411
412
412
412
AWS Elastic Beanstalk 開発者ガイド
インスタンスメタデータ .............................................................................................
EB CLI の基本 ...................................................................................................................
eb の作成 .................................................................................................................
eb ステータス ...........................................................................................................
eb イベント ..............................................................................................................
eb logs .....................................................................................................................
eb open ....................................................................................................................
eb デプロイ ..............................................................................................................
eb config ..................................................................................................................
eb terminate ..............................................................................................................
EB CLI での Git の使用 .......................................................................................................
環境を構成する .................................................................................................................
EB CLI コマンド ................................................................................................................
一般的なオプション ...................................................................................................
eb abort ...................................................................................................................
eb clone ...................................................................................................................
eb config ..................................................................................................................
eb console ................................................................................................................
eb の作成 .................................................................................................................
eb デプロイ ..............................................................................................................
eb イベント ..............................................................................................................
eb health ..................................................................................................................
eb init .......................................................................................................................
eb ラボ ....................................................................................................................
eb list .......................................................................................................................
eb ローカル ..............................................................................................................
eb logs .....................................................................................................................
eb open ....................................................................................................................
eb プラットフォーム ..................................................................................................
eb printenv ................................................................................................................
eb スケール ..............................................................................................................
eb setenv .................................................................................................................
eb ssh ......................................................................................................................
eb ステータス ...........................................................................................................
eb swap ...................................................................................................................
eb terminate ..............................................................................................................
eb upgrade ...............................................................................................................
eb 使用 ....................................................................................................................
トラブルシューティング .....................................................................................................
デプロイのトラブルシューティング ..............................................................................
EB CLI 2.6(廃止) ............................................................................................................
EB CLI のバージョン 3 との違い ..................................................................................
eb 入門 ....................................................................................................................
Git ブランチを 1 つの環境にデプロイする .....................................................................
eb の一般的なオプション ............................................................................................
EB CLI 2 コマンド .....................................................................................................
EB API CLI(廃止) ...........................................................................................................
準備作業 ..................................................................................................................
一般的なオプション ...................................................................................................
運用 .........................................................................................................................
Docker の使用 ...........................................................................................................................
Docker プラットフォームの設定 ..........................................................................................
単一コンテナの Docker ...............................................................................................
マルチコンテナの Docker ............................................................................................
事前設定済み Docker コンテナ .....................................................................................
Docker イメージ ................................................................................................................
Amazon ECR リポジトリからのイメージを使用する .......................................................
プライベートリポジトリからイメージを使用する ...........................................................
API Version 2010-12-01
vii
413
413
414
414
415
415
415
415
416
417
417
418
420
420
421
422
424
427
427
434
436
437
438
441
441
442
445
446
447
449
450
450
451
454
455
456
458
459
459
460
461
461
462
468
471
471
493
493
496
497
549
549
550
550
550
550
551
552
AWS Elastic Beanstalk 開発者ガイド
単一コンテナの Docker .......................................................................................................
単一コンテナの Docker の設定 .....................................................................................
PHP サンプルアプリケーション ...................................................................................
Python サンプルアプリケーション ...............................................................................
Dockerfile サンプルアプリケーション ...........................................................................
複数コンテナの Docker .......................................................................................................
複数コンテナの Docker 設定 ........................................................................................
チュートリアル - 複数コンテナの Docker ......................................................................
複数コンテナの Docker プラットフォーム .....................................................................
Dockerrun.aws.json ファイル .......................................................................................
Docker イメージ ........................................................................................................
コンテナインスタンスロール .......................................................................................
Elastic Beanstalk によって作成された Amazon ECS リソース ...........................................
複数の Elastic Load Balancing リスナーの使用 ...............................................................
失敗したコンテナのデプロイ .......................................................................................
事前設定済みのコンテナ .....................................................................................................
事前設定された Docker コンテナの使用を開始する .........................................................
例: 事前設定された Docker プラットフォームをカスタマイズおよび設定する ......................
環境設定 ..........................................................................................................................
ローカルでコンテナを実行する ............................................................................................
Docker アプリケーションをローカルで実行するための前提条件 .......................................
EB CLI で使用するために Docker アプリケーションを準備する ........................................
Docker アプリケーションをローカルで実行する .............................................................
Docker アプリケーションのローカルでの実行後にクリーンアップする ..............................
Go の使用 .................................................................................................................................
Go プラットフォーム .........................................................................................................
シンプルな Go アプリケーションをデプロイする ............................................................
複雑な Go アプリケーションをデプロイする ..................................................................
実行順序 ..................................................................................................................
設定オプションの設定 ................................................................................................
リバースプロキシを設定する .......................................................................................
Go の事前設定済み Docker コンテナ .....................................................................................
ローカルの開発環境のセットアップ ..............................................................................
Docker を使用してローカルで開発しテストする .............................................................
Elastic Beanstalk へのデプロイ ....................................................................................
Java の使用 ..............................................................................................................................
はじめに ..........................................................................................................................
サンプル Java アプリケーションで環境を起動する .........................................................
次のステップ ............................................................................................................
開発環境 ..........................................................................................................................
Java 開発キットをインストールする ............................................................................
ウェブ コンテナをインストールする .............................................................................
ライブラリをダウンロードする ....................................................................................
AWS SDK for Java をインストールする ........................................................................
IDE またはテキストエディタをインストールする ...........................................................
AWS Toolkit for Eclipse をインストールする ..................................................................
Tomcat プラットフォーム ...................................................................................................
WAR ファイルのバンドル ...........................................................................................
Tomcat ソフトウェア設定オプションを使用する ............................................................
プロジェクト フォルダを構築する ................................................................................
.gitignore を使用する .............................................................................................
Java SE プラットフォーム ..................................................................................................
[Procfile] でアプリケーションプロセスを設定する .......................................................
[Buildfile] で JARs On-Server を構築する ..................................................................
実行順序 ..................................................................................................................
ソフトウェア設定のオプション ....................................................................................
リバースプロキシを設定する .......................................................................................
環境設定 ..........................................................................................................................
API Version 2010-12-01
viii
553
553
557
558
558
559
559
563
570
571
571
572
572
573
574
574
575
576
578
578
579
580
580
582
584
584
585
585
587
587
587
588
588
589
590
591
592
592
610
610
611
611
611
611
612
612
612
613
614
615
617
617
618
619
620
620
620
621
AWS Elastic Beanstalk 開発者ガイド
環境プロパティの設定 ................................................................................................
環境プロパティへのアクセス .......................................................................................
データベースを追加する .....................................................................................................
JDBC ドライバのダウンロード ....................................................................................
データベースへの接続(Java SE プラットフォーム) .....................................................
データベースへの接続(Tomcat プラットフォーム) ......................................................
データベース接続のトラブルシューティング .................................................................
Eclipse ツールキット ..........................................................................................................
既存の環境を Eclipse にインポートする ........................................................................
環境を管理する .........................................................................................................
複数の AWS アカウントを管理する ..............................................................................
イベントを表示する ..................................................................................................
サーバーインスタンスの一覧表示と接続 .......................................................................
環境を終了するには ...................................................................................................
リソース ..........................................................................................................................
.NET の使用 ..............................................................................................................................
チュートリアル: AWS Elastic Beanstalk を使用して .NET サンプルアプリケーションをデプロイす
る方法 .............................................................................................................................
ステップ 1. 環境の作成 ...............................................................................................
ステップ 2. Elastic Beanstalk へのアプリケーションの公開 ..............................................
ステップ 3. AWS リソースのクリーンアップ ..................................................................
開発、テスト、デプロイ .....................................................................................................
プロジェクトの作成 ...................................................................................................
ローカル環境でテストする ..........................................................................................
AWS Elastic Beanstalk にデプロイする ........................................................................
ログのデバッグ/表示 .................................................................................................
アプリケーションを編集して再デプロイする .................................................................
本番環境にデプロイする .............................................................................................
既存のアプリケーションバージョンを既存の環境にデプロイする ......................................
.NET 環境設定 ...................................................................................................................
環境設定にアクセスする .............................................................................................
Amazon RDS の使用 ..........................................................................................................
.NET で新しい Amazon RDS DB インスタンスを使用する ...............................................
.NET で既存の Amazon RDS DB インスタンスを使用する ...............................................
複数のアカウントを管理する ...............................................................................................
................................................................................................................................
アプリケーションの状態を監視する ......................................................................................
アプリケーションの状態と環境ステータスを表示する .....................................................
................................................................................................................................
イベントを表示する ...........................................................................................................
環境を管理する .................................................................................................................
環境設定を変更する ...................................................................................................
EC2 サーバーインスタンス .........................................................................................
Elastic Load Balancing ................................................................................................
Auto Scaling .............................................................................................................
Notifications ..............................................................................................................
コンテナ ..................................................................................................................
サーバーインスタンスの一覧表示と接続 ...............................................................................
環境を終了するには ...........................................................................................................
................................................................................................................................
ツール .............................................................................................................................
AWS SDK for .NET ....................................................................................................
AWS Toolkit for Visual Studio .......................................................................................
デプロイツール .........................................................................................................
リソース ..........................................................................................................................
v1.0.0 Elastic Beanstalk Windows Server プラットフォームへの移行 .........................................
Node.js の使用 ..........................................................................................................................
はじめに ..........................................................................................................................
API Version 2010-12-01
ix
621
622
622
623
623
624
626
628
628
629
640
641
642
642
643
644
645
645
652
658
659
659
660
660
667
667
668
673
674
675
675
676
677
678
678
679
679
679
680
680
681
681
684
687
689
690
691
692
693
693
693
694
694
696
697
699
700
AWS Elastic Beanstalk 開発者ガイド
Node.js サンプルアプリケーションでの環境の起動 .........................................................
次のステップ ............................................................................................................
開発環境 ..........................................................................................................................
Node.js のインストール ..............................................................................................
NPM のインストール ..................................................................................................
Node.js 用 AWS SDK のインストール ...........................................................................
Express のインストール .............................................................................................
Geddy のインストール ...............................................................................................
環境設定 ..........................................................................................................................
Node.js 環境をカスタマイズし設定する .........................................................................
AWS マネジメントコンソール .....................................................................................
開発、テスト、デプロイ .....................................................................................................
設定 .........................................................................................................................
ローカルで開発 .........................................................................................................
ローカル環境でテストする ..........................................................................................
AWS Elastic Beanstalk にデプロイする ........................................................................
ログのデバッグ/表示 .................................................................................................
アプリケーションを編集して再デプロイする .................................................................
本番環境にデプロイする .............................................................................................
既存のアプリケーションバージョンを既存の環境にデプロイする ......................................
Express アプリケーションをデプロイする .............................................................................
ステップ 1: Git リポジトリの設定 .................................................................................
ステップ 2: Express 開発環境の設定 .............................................................................
ステップ 3: Elastic Beanstalk の設定 .............................................................................
ステップ 4: アプリケーションの表示 ............................................................................
ステップ 5: アプリケーションの更新 ............................................................................
ステップ 6: クリーンアップ .........................................................................................
クラスタリング付き Geddy アプリケーションをデプロイする ..................................................
ステップ 1: Git リポジトリの設定 .................................................................................
ステップ 2: Geddy 開発環境の設定 ...............................................................................
ステップ 3: Elastic Beanstalk の設定 .............................................................................
ステップ 5: アプリケーションの表示 ............................................................................
ステップ 6: アプリケーションの更新 ............................................................................
ステップ 7: クリーンアップ .........................................................................................
データベースを追加する .....................................................................................................
Node.js で新しい Amazon RDS DB インスタンスを使用する ............................................
Node.js で既存の Amazon RDS DB インスタンスを使用する ............................................
リソース ..........................................................................................................................
PHP の使用 ..............................................................................................................................
チュートリアル - Laravel 5.2 ...............................................................................................
前提条件 ..................................................................................................................
Composer をインストールする ....................................................................................
Laravel をインストールしてウェブサイトを生成する ......................................................
Elastic Beanstalk 環境を作成してアプリケーションをデプロイする ...................................
お客様の環境にデータベースを追加する .......................................................................
クリーンアップと次のステップ ....................................................................................
チュートリアル - CakePHP 3.2 ............................................................................................
前提条件 ..................................................................................................................
Composer をインストールする ....................................................................................
CakePHP をインストールしてウェブサイトを生成する ...................................................
Elastic Beanstalk 環境を作成してアプリケーションをデプロイする ...................................
お客様の環境にデータベースを追加する .......................................................................
クリーンアップと次のステップ ....................................................................................
チュートリアル - Symfony2 .................................................................................................
ステップ 1: Git リポジトリの設定 .................................................................................
ステップ 2: Symfony2 開発環境の設定 ..........................................................................
ステップ 3: Elastic Beanstalk の設定 .............................................................................
ステップ 4: アプリケーションの表示 ............................................................................
API Version 2010-12-01
x
700
701
701
702
702
702
702
703
704
704
706
708
708
709
709
709
711
712
712
713
713
713
713
715
716
716
718
719
719
719
721
722
722
730
730
730
731
732
734
734
735
736
736
736
739
742
742
743
743
744
744
747
749
749
750
750
751
753
AWS Elastic Beanstalk 開発者ガイド
ステップ 5: アプリケーションの更新 ............................................................................
ステップ 6: クリーンアップ .........................................................................................
データベースを追加する .....................................................................................................
PHP で新しい Amazon RDS DB インスタンスを使用する ................................................
PHP で既存の Amazon RDS DB インスタンスを使用する ................................................
PHP 環境設定 ...................................................................................................................
コンテナオプション ...................................................................................................
ログオプション .........................................................................................................
環境プロパティ .........................................................................................................
PHP プラットフォーム名前空間 ...................................................................................
ツールとリソース ..............................................................................................................
Python の使用 ...........................................................................................................................
開発環境 ..........................................................................................................................
一般的な前提条件 ......................................................................................................
仮想 Python 環境の設定 ..............................................................................................
Elastic Beanstalk 用に Python プロジェクトを設定する ...................................................
チュートリアル - Flask 0.10 ................................................................................................
前提条件 ..................................................................................................................
Flask で Python 仮想環境を設定する .............................................................................
Flask アプリケーションを作成する ...............................................................................
Elastic Beanstalk 用に Flask アプリケーションを設定する ...............................................
EB CLI でサイトをデプロイする ..................................................................................
クリーンアップと次のステップ ....................................................................................
チュートリアル - Django 1.9 ................................................................................................
前提条件 ..................................................................................................................
Django で Python 仮想環境を設定する ..........................................................................
Django プロジェクトを作成する ..................................................................................
Elastic Beanstalk 用に Django をアプリケーションを設定する ..........................................
EB CLI でサイトをデプロイする ..................................................................................
アプリケーションの更新 .............................................................................................
クリーンアップと次のステップ ....................................................................................
データベースを追加する .....................................................................................................
Python での新しい Amazon RDS DB インスタンスの使用 ................................................
Python での既存の Amazon RDS DB インスタンスの使用 ................................................
環境設定 ..........................................................................................................................
AWS マネジメントコンソール での Python 環境の設定 ....................................................
設定ファイル ............................................................................................................
要件ファイル ............................................................................................................
ツールとリソース ..............................................................................................................
Ruby の使用 .............................................................................................................................
Rails アプリケーションのデプロイ .......................................................................................
Rails 開発環境のセットアップ .....................................................................................
EB CLI のインストール ...............................................................................................
Git リポジトリのセットアップ .....................................................................................
EB CLI の設定 ...........................................................................................................
サービスロールとインスタンスプロファイルの作成 ........................................................
Gemfile の更新 ..........................................................................................................
プロジェクトのデプロイ .............................................................................................
アプリケーションの更新 .............................................................................................
クリーンアップ ........................................................................................................
Sinatra アプリケーションのデプロイ ....................................................................................
前提条件 ..................................................................................................................
ステップ 1: プロジェクトの設定 ...................................................................................
ステップ 2: アプリケーションの作成 ............................................................................
ステップ 3: 環境の作成 ...............................................................................................
ステップ 4: 単純な Sinatra アプリケーションのデプロイ ..................................................
ステップ 5: クリーンアップ ........................................................................................
関連リソース ............................................................................................................
API Version 2010-12-01
xi
753
754
754
755
756
757
757
758
758
758
759
760
760
761
761
762
762
763
763
764
766
767
768
769
769
769
770
772
772
774
778
778
779
780
781
782
783
784
784
785
786
786
788
789
789
790
790
790
793
794
795
795
796
796
798
799
800
801
AWS Elastic Beanstalk 開発者ガイド
Ruby 環境設定 ..................................................................................................................
Ruby 環境のカスタマイズと設定 ..................................................................................
AWS マネジメントコンソール .....................................................................................
コマンドラインインターフェイス(CLI) ......................................................................
API ..........................................................................................................................
Amazon RDS の使用 ..........................................................................................................
Ruby で新しい Amazon RDS DB インスタンスを使用する ...............................................
Ruby で既存の Amazon RDS DB インスタンスを使用する ...............................................
ツール .............................................................................................................................
AWS SDK for Ruby ....................................................................................................
EB CLI による Git でのデプロイ ...................................................................................
リソース ..........................................................................................................................
トラブルシューティング .............................................................................................................
起動イベント ....................................................................................................................
Elastic Beanstalk URL に対する HTTP HEAD リクエストが失敗する ..................................
CPU 使用率が 95% を超えている .................................................................................
Elastic Load Balancer に正常なインスタンスがない ........................................................
Elastic Load Balancer が見つからない ...........................................................................
インスタンスがステータスヘルスチェックに応答しない ..................................................
環境の起動に失敗する ................................................................................................
Amazon EC2 インスタンスの起動に失敗する .................................................................
アプリケーションがタイムアウト期間内に準備完了状態にならない ...................................
環境は起動したが、問題がある ....................................................................................
Amazon EC2 インスタンスが待機時間内に起動できない ..................................................
環境の起動および更新オペレーションは成功したが、コマンドがタイムアウトした .............
アプリケーションバージョンのデプロイの失敗 ..............................................................
Docker コンテナ ................................................................................................................
Dockerfile の構文エラー ..............................................................................................
Dockerrun.aws.json の構文エラー .................................................................................
Dockerfile に EXPOSE ディレクティブがない ................................................................
Dockerrun.aws.json 内の無効な EC2 キーペアや S3 バケット ...........................................
無効な認証設定ファイル .............................................................................................
リソース ..................................................................................................................................
サンプルアプリケーション ..................................................................................................
付録 .........................................................................................................................................
AWS リソースのカスタマイズ .............................................................................................
AWS リソースプロパティタイプ ..................................................................................
リソースプロパティタイプ ..........................................................................................
組み込み関数 ............................................................................................................
プラットフォーム履歴 ........................................................................................................
Docker プラットフォーム履歴 .....................................................................................
事前設定済み Docker プラットフォーム履歴 ..................................................................
Go プラットフォーム履歴 ...........................................................................................
Tomcat プラットフォームの履歴 ..................................................................................
Java SE プラットフォーム履歴 ....................................................................................
IIS プラットフォーム履歴付きの Windows Server の .NET ...............................................
Node.js プラットフォーム履歴 .....................................................................................
PHP プラットフォーム履歴 .........................................................................................
Python プラットフォーム履歴 ......................................................................................
Ruby プラットフォーム履歴 ........................................................................................
AWS CLI ..........................................................................................................................
AWS CLI への移行 .....................................................................................................
API Version 2010-12-01
xii
801
801
803
804
804
805
805
806
807
807
807
808
809
811
812
812
813
813
814
815
815
815
816
816
817
818
819
819
820
820
821
821
822
822
824
824
824
825
825
826
827
834
850
851
864
866
873
885
895
903
921
921
AWS Elastic Beanstalk 開発者ガイド
AWS Elastic Beanstalk とは?
Abstract
Elastic Beanstalk では、選択肢を狭めたり制御を制限したりすることなく、管理の複雑さを軽減するため、アプリ
ケーションを実行しているインフラストラクチャについて心配することなく、AWS クラウドでアプリケーション
をデプロイし、管理します。
アマゾン ウェブ サービス(AWS)は多数のサービスで構成されており、各サービスは特定の領域の機
能を提供します。幅広いサービスによって、AWS インフラストラクチャを柔軟に管理できますが、使
用すべきサービスやそのプロビジョニング方法を理解するのは困難な可能性があります。
Elastic Beanstalk を使用すると、アプリケーションを実行しているインフラストラクチャについて心配
することなく、AWS クラウドでアプリケーションのデプロイと管理を簡単に行うことができます。
AWS Elastic Beanstalk は、選択肢を狭めたり制御を制限したりすることなく、管理の複雑さを軽減し
ます。アプリケーションをアップロードするだけで、Elastic Beanstalk が自動的に容量のプロビジョニ
ング、負荷分散、拡張、およびアプリケーションの状態のモニタリングといった詳細を処理します。
Elastic Beanstalk は、AWS 無料利用枠で利用できる信頼性が高くスケーラブルなサービスを使用して
います。
AWS 無料利用枠の詳細と、AWS Elastic Beanstalk を使用してサンプルウェブアプリケーションをデプ
ロイする方法については、「AWS の使用開始: ウェブアプリケーションのデプロイ」を参照してくださ
い。
また、一連の Amazon EC2 インスタンスのサイズの変更、アプリケーションの監視など、ほとんどの
デプロイタスクを Elastic Beanstalk ウェブインターフェイスから直接実行できます。
Elastic Beanstalk を使用するには、アプリケーションを作成し、アプリケーションソースバンドル(Java
.war ファイルなど)の形式でアプリケーションバージョンを Elastic Beanstalk にアップロードした後、
アプリケーションに関する情報を提供します。Elastic Beanstalk によって自動的に環境が起動され、
コードの実行に必要な AWS リソースが作成および構成されます。環境が起動した後は、環境を管理
し、新しいアプリケーションバージョンをデプロイできます。次の図は、Elastic Beanstalk のワークフ
ローです。
API Version 2010-12-01
1
AWS Elastic Beanstalk 開発者ガイド
ストレージ
アプリケーションを作成してデプロイした後は、メトリックス、イベント、環境ステータスなどのアプ
リケーションに関する情報を AWS マネジメントコンソール、API、コマンドラインインターフェイス
(統合された AWS CLI など)を介して利用できます。AWS Management Console を使用したアプリ
ケーションの作成、デプロイ、および管理の手順については、「Elastic Beanstalk の使用開始 (p. 4)」
を参照してください。Elastic Beanstalk アプリケーションとそのコンポーネントの詳細については、
「Elastic Beanstalk コンポーネント (p. 15)」を参照してください。
Elastic Beanstalk を使用すると、開発者とシステム管理者は AWS インフラストラクチャのことを心配
することなく、アプリケーションのデプロイと管理をすばやく簡単に行うことができます。使用する
AWS リソースとその機能についてすでにご存じの場合、テンプレートを作成して AWS リソースを作
成する際に AWS CloudFormation を使用することもできます。この作成したテンプレートを使用する
と、AWS リソースをカスタマイズし直すことなく、同じ方法で新しい AWS リソースを起動できます。
リソースをデプロイした後は、制御された予測可能な方法で AWS リソースの変更と更新を行うことが
できます。そのため、ソフトウェアに対して行うものと同様の AWS インフラストラクチャのバージョ
ン管理を実現できます。AWS CloudFormation の詳細については、『AWS CloudFormation 入門ガイ
ド』を参照してください。
ストレージ
Elastic Beanstalk では、永続的なストレージおよびデータベースサービスのオプションの選択肢が制限
されません。AWS のストレージオプションの詳細については、「Storage Options in the AWS Cloud」
を参照してください。
料金表
Elastic Beanstalk に関して別途料金が発生することはありません。アプリケーションが使用する基にな
る AWS リソースに対してのみお支払いいただきます。料金の詳細については、Elastic Beanstalk サー
ビスの詳細ページを参照してください。
コミュニティ
お客様はこれまでに AWS を基盤にしてさまざまな製品、サービス、およびアプリケーションを構築し
てきました。構築するアプリケーションのアイデアを検索したり、例を探したり、単にいろいろ調べた
りするときには、AWS Customer App Catalog で多くのソリューションが見つかります。対象ユーザー、
サービス、テクノロジを指定して参照できます。また、構築したアプリケーションをコミュニティと共
有することもできます。AWS コミュニティが作成した開発者リソースは、http://aws.amazon.com/
resources/ に掲載されています。
API Version 2010-12-01
2
AWS Elastic Beanstalk 開発者ガイド
次の段階
次の段階
このガイドには、Elastic Beanstalk ウェブサービスに関する概念的な情報と、サービスを使用して新し
いウェブアプリケーションを作成およびデプロイする方法が記載されています。各項では、AWS マネ
ジメントコンソール、コマンドラインインターフェイス (CLI) ツール、API を使用して、Elastic Beanstalk
環境をデプロイおよび管理する方法について説明します。また、このガイドでは、Elastic Beanstalk
が、アマゾン ウェブ サービスで提供される他のサービスとどのように統合されているかについても説
明します。
まず「Elastic Beanstalk の使用開始 (p. 4)」を読んで Elastic Beanstalk の使用方法について理解する
ことをお勧めします。「入門ガイド」では、Elastic Beanstalk アプリケーションの作成、表示、および
更新の手順と、Elastic Beanstalk 環境の編集と終了の手順について説明しています。また、Elastic
Beanstalk にアクセスするさまざまな方法についても説明しています。また、Elastic Beanstalk の概念
と用語について理解を深めるには、「Elastic Beanstalk の詳細 (p. 15)」をお読みになることをお勧めし
ます。
API Version 2010-12-01
3
AWS Elastic Beanstalk 開発者ガイド
ステップ 1: サービスへのサインアップ
Elastic Beanstalk の使用開始
Abstract
Elastic Beanstalk と AWS マネジメントコンソールを使用して、Docker、Go、Java、PHP、.NET、Node.js、
Python、Ruby アプリケーションを迅速に作成、編集、管理できます。
Elastic Beanstalk を初めて使う場合、以下の手順に沿って操作することで、アプリケーションの作成、
表示、デプロイ、更新だけでなく、環境の編集および終了も行えます。ポイントアンドクリック型の
ウェブベースインターフェイスである AWS マネジメントコンソール を使用してこれらのタスクを実行
します。
セクション
• ステップ 1: サービスへのサインアップ (p. 4)
• ステップ 2: アプリケーションの作成 (p. 5)
• ステップ 3: 環境に関する情報の表示 (p. 6)
• ステップ 4: 新しいバージョンのデプロイ (p. 7)
• ステップ 5: 設定の変更する (p. 9)
• ステップ 6: クリーンアップ (p. 11)
• 次の段階 (p. 12)
ステップ 1: サービスへのサインアップ
まだ AWS カスタマーではない場合は、サインアップする必要があります。サインアップすることに
よって、Elastic Beanstalk および Amazon Elastic Compute Cloud (Amazon EC2)、Amazon Simple
Storage Service (Amazon S3)、および Amazon Simple Notification Service (Amazon SNS)など、
必要な他の AWS サービスにアクセスできるようになります。
サインアップして AWS アカウントを作成するには
1.
Elastic Beanstalk コンソールを開きます。
2.
表示される手順に従います。
API Version 2010-12-01
4
AWS Elastic Beanstalk 開発者ガイド
ステップ 2: アプリケーションの作成
ステップ 2: アプリケーションの作成
次に、サンプルアプリケーションを作成してデプロイします。この手順では、用意されているサンプル
アプリケーションを使用します。アプリケーションを作成してデプロイするリージョンに、既に Elastic
Beanstalk アプリケーションが存在する場合は、別の手順に従って新しいアプリケーションを作成する
必要があります。詳細については、「アプリケーションを作成します。 (p. 39)」を参照してください。
Elastic Beanstalk は無料ですが、提供される AWS リソースは実動のものです(サンドボックス環境で
は実行されません)。このチュートリアルにある最後のタスクで AWS リソースを終了するまで、標準
使用料が発生します。使用料合計はごくわずかです(通常 1 USD 未満)。料金を最小限に抑える方法
については、http://aws.amazon.com/free/ を参照してください。
Note
環境の作成ウィザードで次の画面が表示された場合は、AWS Quick Start Guide: Web App
Deployment を参照してください。
サンプルアプリケーションを作成するには
1.
2.
Elastic Beanstalk コンソールを開きます。
プラットフォームを選択して、[Launch Now] をクリックします。
AWS リソースでサンプルアプリケーションを実行するには、Elastic Beanstalk が以下のアクションを
実行して、その完了までに約 5 分かかります。
• My First Elastic Beanstalk Application という名前の Elastic Beanstalk アプリケーションを作成しま
す。
• 以下の AWS リソースを使用して、Default-Environment という名前の環境を起動します。
• EC2 インスタンス – Amazon Linux または Microsoft Windows Server を実行し、選択したプラット
フォームでウェブアプリケーションを実行するように設定された仮想マシン。
各プラットフォームは、それぞれ特定の言語バージョン、フレームワーク、ウェブコンテナ、また
はそれらの組み合わせをサポートするための、さまざまなソフトウェア、設定ファイル、スクリプ
トを実行します。ほとんどのプラットフォームでは、Apache または nginx のいずれかをウェブア
プリケーションの前にリバースプロキシとして配置します。そのプロキシがリクエストをアプリ
ケーションに転送し、静的アセットを提供し、アクセスログとエラーログを生成します。
• セキュリティグループ – ポート 80 上の進入を許可するように設定された Amazon Elastic Compute
Cloud (Amazon EC2) セキュリティグループ。このリソースでは、インターネットからの HTTP ト
API Version 2010-12-01
5
AWS Elastic Beanstalk 開発者ガイド
ステップ 3: 環境に関する情報の表示
ラフィックが、ウェブアプリケーションを実行している EC2 インスタンスに達することができま
す。デフォルトでは、トラフィックは他のポート上で許可されません。
• Auto Scaling グループ – インスタンスが終了されたか利用不可になった場合にそのインスタンスを
置き換えるように設定された Auto Scaling グループ。
• Amazon S3 バケット – Elastic Beanstalk の使用時に作成されるソースコード、ログ、その他のアー
ティファクトの保存場所。
• Amazon CloudWatch アラーム – お客様の環境内のインスタンスの負荷をモニタリングする 2 つの
Amazon CloudWatch アラーム。負荷が高すぎたり低すぎたりする場合にトリガーされます。ア
ラームがトリガーされると、Auto Scaling グループはレスポンスとしてスケールアップまたはダウ
ンを行います。
• ドメイン名 – ウェブアプリケーションまでのルートとなるドメイン名であり、
subdomain.region.elasticbeanstalk.com という形式になります。
• Sample Application という名前の新しいアプリケーションバージョンを作成します。これは、デフォ
ルトの Elastic Beanstalk サンプルアプリケーションファイルを参照します。
• Sample Application アプリケーションを Default-Environment にデプロイします。
ステップ 3: 環境に関する情報の表示
Elastic Beanstalk アプリケーションを作成した後、AWS マネジメントコンソール の環境ダッシュボー
ドに移動すると、デプロイしたアプリケーションとプロビジョニングされたリソースに関する情報を表
示できます。このダッシュボードには、アプリケーションの環境の状態、実行されているバージョン、
および環境設定が表示されます。
Elastic Beanstalk が AWS リソースを作成し、アプリケーションを起動する間、環境は Launching 状
態(灰色)になります。起動イベントに関するステータスメッセージが環境ダッシュボードに表示され
ます。
My First Elastic Beanstalk Application アプリケーションの環境ダッシュボードを表示するには
1.
2.
Elastic Beanstalk コンソールを開きます。
Elastic Beanstalk アプリケーションのページで、[My First Elastic Beanstalk Application] アプリケー
ションの [Default-Environment] をクリックします。
ダッシュボードでは、環境の状態、実行されているアプリケーションのバージョン、プラットフォー
ム、および最近のイベントのリストを表示できます。
Note
環境の状態が灰色である場合、環境はまだ起動の途中です。
API Version 2010-12-01
6
AWS Elastic Beanstalk 開発者ガイド
ステップ 4: 新しいバージョンのデプロイ
ダッシュボードから他のページに移動すると、環境に関する詳細な情報を表示できます。
• [Configuration] ページには、例えば、アプリケーションをホスティングしている Amazon EC2 イン
スタンスなど、この環境にプロビジョニングされたリソースが表示されます。また、このページで
は、プロビジョニングされたいくつかのリソースを設定できます。
• [Logs] ページでは、ログの最後の 100 行のスナップショットを表示するか、またはすべてのサーバー
についてすべてのログを確認することができます。
• [Monitoring] ページには、平均レイテンシーや CPU 使用率など、環境の統計情報が表示されます。
また、このページでは、モニタリングしているメトリックスに対するアラームを作成できます。
• [Alarms] ページには、この環境に対して作成した CloudWatch アラームが表示されます。
• [Events] ページには、この環境が使用しているサービスの情報またはエラーメッセージが表示されま
す。
• [Tags] ページには、この環境にタグ形式で割り当てたメタデータが表示されます。各タグは、ページ
ではキーと値のペアとして表現されます。ページには、環境名と環境 ID について Elastic Beanstalk
が自動的に作成するタグが含まれます。タグの詳細については、環境のタグ付け (p. 85) を参照して
ください。
ステップ 4: 新しいバージョンのデプロイ
デプロイ済みのアプリケーションは、実行環境の一部であっても更新できます。Java アプリケーショ
ンの場合、AWS Toolkit for Eclipse を使用してデプロイ済みアプリケーションを更新できます。手順に
ついては、「AWS Toolkit for Eclipse を使用する (p. 628)」を参照してください。PHP アプリケーショ
ンの場合、eb による Git デプロイを使用してアプリケーションを更新するのが簡単です。手順につい
ては、「AWS Elastic Beanstalk での PHP アプリケーションの作成とデプロイ (p. 734)」を参照してく
ださい。.NET アプリケーションの場合、AWS Toolkit for Visual Studio を使用してデプロイ済みアプリ
ケーションを更新できます。手順については、「アプリケーションを編集して再デプロイする (p. 667)」
を参照してください。
現在実行しているアプリケーションバージョンには、Sample Application というラベルが付けられてい
ます。
アプリケーションバージョンを更新するには
1.
環境の設定と一致するサンプルアプリケーションを次から 1 つダウンロードします。
• Go – go-v1.zip
• Java と Tomcat – java-tomcat-v1.zip
• Java SE – java-se-jetty-maven-v1.zip
API Version 2010-12-01
7
AWS Elastic Beanstalk 開発者ガイド
ステップ 4: 新しいバージョンのデプロイ
• IIS を使用する Windows Server での .NET – iis-dotnet-v1.zip
• Node.js – nodejs-v1.zip
• PHP – php-v1.zip
• Python – python-v1.zip
• Ruby (Passenger Standalone) – ruby-passenger-v1.zip
• Ruby (Puma) – ruby-puma-v1.zip
• 単一コンテナの Docker – docker-singlecontainer-v1.zip
• 複数コンテナ Docker– dockermulticontainer v2.zip
• 事前設定済み Docker(Glassfish)– docker-glassfish-v1.zip
• 事前設定済み Docker(Python 3.x)– docker-python-v1.zip
• 事前設定済み Docker(Go)– docker-golang-v1.zip
2.
Elastic Beanstalk コンソールを開きます。
3.
Elastic Beanstalk アプリケーションから [My First Elastic Beanstalk Application] をクリックし、次
に [Default-Environment] をクリックします。
[Overview] セクションで、[Upload and Deploy] をクリックし、アプリケーションバージョンの詳
細を入力します。
4.
• [Upload application] を使用して、アップロードする必要のあるアプリケーションバージョン
(WAR または ZIP ファイル)を探し、指定します。
• [Version Label] には、例えば Sample Application Second Version など、アップロードす
るアプリケーションバージョンの名前を入力します。
5.
[Deploy] をクリックします。
これで Elastic Beanstalk によってファイルが Amazon EC2 インスタンスにデプロイされます。環境の
ダッシュボードで、デプロイの状態を表示できます。アプリケーションバージョンがアップデートされ
API Version 2010-12-01
8
AWS Elastic Beanstalk 開発者ガイド
ステップ 5: 設定の変更する
ている間は、[Environment Health] ステータスが灰色で表示されます。デプロイが完了すると、Elastic
Beanstalk によってアプリケーションのヘルスチェックが実行されます。アプリケーションがヘルス
チェックに応答すると、ステータスは緑色に戻ります。環境ダッシュボードで、新しい [Running Version]
が、[Sample Application Second Version](または [Version label] で指定した内容)として表示されま
す。
また、新しいアプリケーションバージョンはアップロードされ、アプリケーションバージョンのテーブ
ルにも表示されます。アプリケーションバージョンのテーブルを表示するには、[My First Elastic Beanstalk
Application] をクリックし、次に [Application Versions] をクリックします。
ステップ 5: 設定の変更する
お使いのアプリケーションに適合するよう、環境をカスタマイズすることができます。例えば、計算量
の多いアプリケーションがある場合、アプリケーションを実行する Amazon EC2 インスタンスの種類
を変更できます。
一部の簡単な設定の変更はすぐに反映されます。また、Elastic Beanstalk で AWS リソースの削除と再
作成を行う必要がある変更もあります。このような変更には数分かかることがあります。Elastic Beanstalk
で構成設定を変更しようとすると、アプリケーションのダウンタイムが発生する可能性について警告が
表示されます。
このタスクでは、Auto Scaling グループの最小インスタンス設定を 1 から 2 に変更し、変更が行われた
ことを確認します。新しいインスタンスを作成した後、ロードバランサーに関連付けられます。
環境の構成を変更するには
1.
[My First Elastic Beanstalk Application] をクリックして環境ダッシュボードに戻り、
[Default-Environment] をクリックします。
2.
ナビゲーションペインで、[Configuration] をクリックします。
3.
[Scaling] 設定で、歯車アイコン(
)をクリックします。
API Version 2010-12-01
9
AWS Elastic Beanstalk 開発者ガイド
ステップ 5: 設定の変更する
4.
[Auto Scaling] セクションで、[Minimum Instance Count] を 1 から 2 に変更します。 これにより、
Amazon EC2 にデプロイされる Auto Scaling インスタンスの最小数が増加します。
5.
ページの最下部にある [Save] をクリックします。
環境更新は完了までに数分かかる場合があります。環境の準備が整ったら、次の手順に進んで変更を確
認します。
ロードバランサーに対する変更を確認するには
1.
ナビゲーションペインの [Events] をクリックします。
イベントリストに、[Successfully deployed new configuration to environment] というイベントに関
するメッセージが表示されます。これによって Auto Scaling の最小インスタンス数が 2 に設定さ
れていることが確認できます。2 番目のインスタンスは自動的に起動されます。
2.
3.
4.
https://console.aws.amazon.com/ec2/)にある Amazon EC2 コンソールを開きます。
ナビゲーションペインの [NETWORK & SECURITY] にある [Load Balancers] をクリックします。
適切なインスタンス名を持つロードバランサーが見つかるまで以下の 2 つのステップを繰り返しま
す。
ロードバランサーのリスト内でロードバランサーを 1 つクリックします。
[Load Balancer: <ロードバランサー名>] ペインの [Instances] タブをクリックし、[Instances] テー
ブルの [Name] をチェックします。
5.
6.
API Version 2010-12-01
10
AWS Elastic Beanstalk 開発者ガイド
ステップ 6: クリーンアップ
Auto Scaling インスタンスの増加に対応して、2 つのインスタンスがこのロードバランサーに関連
付けられていることが表示されます。
ステップ 6: クリーンアップ
おめでとうございます。サンプルアプリケーションを正しくクラウドにデプロイし、新しいバージョン
をアップロードし、その設定を変更して 2 つ目の Auto Scaling インスタンスを追加しました。不要な
サービスについて課金されないようにするには、Elastic Beanstalk と AWS サービスから不要なアプリ
ケーションと環境をすべて削除します。
アプリケーションを完全に削除するには
1.
すべてのアプリケーションバージョンを削除します.
a.
Elastic Beanstalk コンソールを開きます。
b.
Elastic Beanstalk アプリケーションのページで、[My First Elastic Beanstalk Application] アプ
リケーションの [Default-Environment] をクリックします。
[Upload and Deploy ] をクリックします。
アプリケーションの指定を求められたら、[Application Versions] ページをクリックします。
c.
d.
2.
e.
[Application Versions] ページで、削除するすべてのアプリケーションバージョンを選択し、
[Delete] をクリックします。
f.
g.
削除するバージョンを確認してから、[Delete] をクリックします。
[Done] をクリックします。
環境を終了します。
a.
b.
[My First Elastic Beanstalk Application] をクリックして環境ダッシュボードに戻り、
[Default-Environment] をクリックします。
[Actions] をクリックして、[Terminate] をクリックします。
c.
[Default-Environment] を終了したことを確認してから、[Terminate] をクリックします。
API Version 2010-12-01
11
AWS Elastic Beanstalk 開発者ガイド
次の段階
3.
Elastic Beanstalk アプリケーション [My First Elastic Beanstalk Application] を削除し
ます。
a.
b.
左上の [Elastic Beanstalk] をクリックして、メインダッシュボードに戻ります。
Elastic Beanstalk [Applications] ページで、[My First Elastic Beanstalk Application] アプリケー
ションの [Actions] をクリックし、次に [Delete Application] をクリックします。
c.
[Delete] をクリックして、この Elastic Beanstalk アプリケーションを削除することを確認しま
す。
次の段階
ここでは Elastic Beanstalk の概要とアクセス方法を説明しましたが、併せて Elastic Beanstalk の詳
細 (p. 15) を読むことをお勧めします。Elastic Beanstalk のコンポーネント、アーキテクチャー、Elastic
Beanstalk アプリケーションを設計するうえで考慮すべき重要点について詳しく書かれています。
AWS マネジメントコンソール 以外にも、以下のツールを使用して Elastic Beanstalk 環境を作成および
管理することもできます。
セクション
• EB CLI (p. 12)
• AWS SDK for Java (p. 12)
• AWS Toolkit for Eclipse (p. 13)
• AWS SDK for .NET (p. 13)
• AWS Toolkit for Visual Studio (p. 13)
• AWS SDK for Node.js (p. 13)
• AWS SDK for PHP (p. 14)
• Boto(AWS SDK for Python) (p. 14)
• AWS SDK for Ruby (p. 14)
EB CLI
EB CLI は、環境を作成および管理するためのコマンドラインツールです。詳細については、「Elastic
Beanstalk コマンドラインインターフェイス(EB CLI) (p. 403)」を参照してください。
AWS SDK for Java
Java 用 AWS SDK には、AWS インフラストラクチャサービスを使用するアプリケーションの構築に使
用できる Java API が用意されています。Java 用 AWS SDK では、AWS Java ライブラリ、コードサン
プル、および資料が単一のダウンロード可能なパッケージにまとめられているので、数分で使用を開始
できます。
Java 用 AWS SDK には、J2SE Development Kit 5.0 以降が必要です。最新の Java ソフトウェアは
http://developers.sun.com/downloads/ からダウンロードできます。また、この SDK には Apache
Commons(Codec、HTTPClient、および Logging)および Saxon-HE サードパーティパッケージも必
要です。これらは、SDK の「third-party」ディレクトリに含まれています。
Java 用 AWS SDK の使用の詳細については、「Java 用 AWS SDK」を参照してください。
API Version 2010-12-01
12
AWS Elastic Beanstalk 開発者ガイド
AWS Toolkit for Eclipse
AWS Toolkit for Eclipse
AWS Toolkit for Eclipse プラグインを使用すると、Java 用 AWS SDK であらかじめ構成した新しい
AWS Java ウェブプロジェクトを作成し、ウェブアプリケーションを Elastic Beanstalk にデプロイでき
ます。Elastic Beanstalk プラグインは Eclipse Web Tools Platform(WTP)に基づいて構築されていま
す。このツールキットには、Travel Log サンプルウェブアプリケーションテンプレートが用意されてい
ます。このテンプレートでは、Amazon S3、および Amazon SNS の使用方法が説明されています。
すべての WTP の依存コンポーネントを確実に用意するには、Eclipse の Java EE ディストリビューショ
ンから始めることをお勧めします。このディストリビューションは http://eclipse.org/downloads/ から
ダウンロードできます。
Eclipse 用 Elastic Beanstalk プラグインの使用の詳細については、AWS Toolkit for Eclipse のウェブペー
ジを参照してください。Eclipse を使用して初めて Elastic Beanstalk アプリケーションを作成する場合
は「AWS Elastic Beanstalk で Java アプリケーションを作成してデプロイする (p. 591)」を参照してく
ださい。
AWS SDK for .NET
.NET 用 AWS SDK を使用すると、AWS インフラストラクチャサービスを使用するアプリケーション
を構築できます。.NET 用 AWS SDK では、AWS .NET ライブラリ、コードサンプル、資料が単一のダ
ウンロード可能なパッケージにまとめられているので、数分で使用を開始できます。
.NET 用 AWS SDK には .NET Framework 2.0 以降が必要です。この SDK は以下の Visual Studio エディ
ションすべてに使用できます。
• Microsoft Visual Studio Professional Edition 2010 および 2012 (推奨)
• Microsoft Visual C# 2008 Express Edition
• Microsoft Visual Web Developer 2008 Express Edition
.NET 用 AWS SDK の使用の詳細については、「.NET 用 AWS SDK」を参照してください。
AWS Toolkit for Visual Studio
Amazon Toolkit for Visual Studio プラグインを使用すると、既存の .NET アプリケーションを Elastic
Beanstalk にデプロイできます。AWS SDK for .NET であらかじめ設定された AWS テンプレートを使
用して、新しいプロジェクトを作成することもできます。前提条件とインストールに関する詳細につい
ては、「AWS Toolkit for Visual Studio」を参照してください。Visual Studio を使用して初めて Elastic
Beanstalk アプリケーションを作成する場合は「AWS Toolkit for Visual Studio を使用して .NET で Elastic
Beanstalk アプリケーションを作成しデプロイする (p. 644)」を参照してください。
AWS SDK for Node.js
AWS SDK for Node.js を使用すると、AWS インフラストラクチャサービスに基づいてアプリケーショ
ンを構築できます。AWS SDK for Node.js では、AWS Node.js ライブラリ、コードサンプル、資料が
単一のダウンロード可能なパッケージにまとめられているので、数分で使用を開始できます。
AWS SDK for Node.js の使用の詳細については、AWS SDK for Node.js(Developer Preview)のウェブ
ページを参照してください。
API Version 2010-12-01
13
AWS Elastic Beanstalk 開発者ガイド
AWS SDK for PHP
AWS SDK for PHP
AWS SDK for PHP を使用すると、AWS インフラストラクチャサービスに基づいてアプリケーション
を構築できます。AWS SDK for PHP では、AWS PHP ライブラリ、コードサンプル、資料が単一のダ
ウンロード可能なパッケージにまとめられているので、数分で使用を開始できます。
AWS SDK for PHP には、PHP 5.2 以降が必要です。
AWS SDK for PHP の使用の詳細については、AWS SDK for PHP のウェブページを参照してください。
Boto(AWS SDK for Python)
Boto を使用すると、AWS Python ライブラリ、コードサンプル、資料を備えた 1 つのダウンロード可
能なパッケージで、すぐに開始できます。API 上に Python アプリケーションを構築できるため、ウェ
ブサービスのインターフェイスに対して直接コーディングをする複雑さがなくなります。オールインワ
ンのライブラリは、認証、再試行リクエスト、エラー処理を含む、AWS クラウドのプログラミングに
関連する低レベルのタスクを非表示にする Python の開発者フレンドリーな API を提供します。ライブ
ラリを使用したアプリケーションの構築方法については、Python による実用的な例が用意されていま
す。Boto の詳細情報、サンプルコード、資料、ツール、追加のリソースについては、http://
aws.amazon.com/python/ にアクセスしてください。
AWS SDK for Ruby
AWS Ruby ライブラリ、コードサンプル、資料を備えた 1 つのダウンロード可能なパッケージで、す
ぐに開始できます。API 上に Ruby アプリケーションを構築できるため、ウェブサービスのインター
フェイスに対して直接コーディングをする複雑さがなくなります。オールインワンのライブラリは、認
証、再試行リクエスト、エラー処理を含む、AWS クラウドのプログラミングに関連する低レベルのタ
スクを非表示にする Ruby の開発者フレンドリーな API を提供します。ライブラリを使用したアプリ
ケーションの構築方法については、Ruby による実用的な例が用意されています。SDK の詳細情報、サ
ンプルコード、資料、ツール、追加のリソースについては、http://aws.amazon.com/ruby/ にアクセスし
てください。
API Version 2010-12-01
14
AWS Elastic Beanstalk 開発者ガイド
コンポーネント
Elastic Beanstalk の詳細
Abstract
Elastic Beanstalk の仕組みを理解するには、コンポーネント、アーキテクチャ、および Elastic Beanstalk アプリ
ケーションを設計する上で重要な考慮事項を把握する必要があります。
トピック
• Elastic Beanstalk コンポーネント (p. 15)
• アーキテクチャの概要 (p. 16)
• サービスロール、インスタンスプロファイル、ユーザーポリシー (p. 19)
• サポートされているプラットフォーム (p. 25)
• 設計上の考慮事項 (p. 33)
• 次の段階 (p. 36)
Elastic Beanstalk の概要についてはご理解いただけたと思います。ここではさらに掘り下げて、Elastic
Beanstalk の仕組みを見ていきましょう。次のセクションでは、Elastic Beanstalk コンポーネント、アー
キテクチャ、Elastic Beanstalk アプリケーションを設計する際の重要な考慮事項について説明します。
Elastic Beanstalk コンポーネント
Abstract
このトピックでは、Elastic Beanstalk を構成するコンポーネントについて説明し、これらのコンポーネントがどの
ように連動して、クラウドでのアプリケーションのデプロイおよび管理を容易にしているかを概説します。
Elastic Beanstalk を構成するコンポーネントは連携することで、クラウド内でのアプリケーションのデ
プロイと管理を容易に行えるようにします。このセクションでは、次のコンポーネントについて説明し
ます。
アプリケーション
Elastic Beanstalk アプリケーションは、Elastic Beanstalk コンポーネントの論理コレクションで、環
境、バージョン、環境設定などがあります。Elastic Beanstalk では、アプリケーションは概念的には
フォルダと似ています。
API Version 2010-12-01
15
AWS Elastic Beanstalk 開発者ガイド
Application Version]
Application Version]
Elastic Beanstalk では、アプリケーションバージョンとは、ウェブアプリケーションのデプロイ可能
コードの特定のラベル付きイテレーションのことです。アプリケーションバージョンは、Java WAR
ファイルなどのデプロイ可能コードが含まれている Amazon Simple Storage Service(Amazon S3)オ
ブジェクトを指します。アプリケーションバージョンはアプリケーションの一部です。多数のバージョ
ンがあるアプリケーションもあり、またアプリケーションバージョンはそれぞれ独特です。実行中の環
境では、アプリケーションに既にアップロードしたアプリケーションバージョンをデプロイすること
も、新しいアプリケーションバージョンをアップロードしてすぐにデプロイすることもできます。複数
のアプリケーションバージョンをアップロードして、ウェブアプリケーションの 1 つのバージョンとも
う 1 つのバージョンの違いをテストすることもできます。
環境
環境は、AWS リソースにデプロイされるバージョンです。 1 つの環境で実行できるアプリケーション
バージョンの数は 1 つのみですが、多数の環境で同じバージョンまたは複数の異なるバージョンを同時
に実行することはできます。環境を作成するときは、指定したアプリケーションバージョンを実行する
のに必要なリソースを Elastic Beanstalk がプロビジョニングします。環境および作成されたリソース
の詳細については、「アーキテクチャの概要 (p. 16)」を参照してください。
環境設定
環境設定は、環境とその環境に関連付けられているリソースの動作を定義するパラメータと設定のコレ
クションを識別します。環境の設定を更新すると、(変更の種類に応じて)Elastic Beanstalk が自動的
に既存のリソースを変更または削除し、新しいリソースをデプロイします。
設定テンプレート
設定テンプレートに基づいて、一意の環境設定を作成できます。設定テンプレートを作成または変更す
るには、Elastic Beanstalk コマンドラインユーティリティまたは API を使用する必要があります。
アーキテクチャの概要
Abstract
Elastic Beanstalk アーキテクチャは、コンポーネントの連携方法を Elastic Beanstalk アプリケーション設計の例で
示します。
Elastic Beanstalk 環境を起動したら、環境枠、プラットフォーム、および環境タイプを選択します。選
択した環境枠によって、Elastic Beanstalk がリソースをプロビジョニングし、HTTP(S)リクエスト
を処理するウェブアプリケーション、またはバックグラウンドプロセスタスクを処理するウェブアプリ
ケーションのどちらをサポートするかが決まります。ウェブアプリケーションがウェブリクエストを処
理する環境枠は、ウェブサーバー枠と呼ばれます。ウェブアプリケーションがバックグラウンドジョブ
を実行する環境枠は、ワーカー枠と呼ばれます。ここでは、各種環境枠のコンポーネント、リソース、
およびアーキテクチャについて説明します。
Note
1 つの環境では、それぞれ独自のリソースを必要とする 2 つの環境枠はサポートされません。
これは各環境枠がそれぞれの一連のリソースを必要とし、つまりはワーカー環境枠とウェブ
サーバー環境枠がそれぞれ Auto Scaling グループを必要とするためです。しかし、Elastic
Beanstalk では環境ごとにサポートする Auto Scaling グループは 1 つのみです。
API Version 2010-12-01
16
AWS Elastic Beanstalk 開発者ガイド
ウェブサーバー環境枠
ウェブサーバー環境枠
次の図は、ウェブサーバー環境枠の Elastic Beanstalk アーキテクチャの例と、このタイプの環境枠の
コンポーネントがどのように連係するかを示しています。このセクションの残りの部分では、すべての
コンポーネントについてさらに詳しく説明します。
環境はアプリケーションの中心です。この図では、環境は青い実線で示されています。環境を作成する
ときは、アプリケーションを実行するのに必要なリソースを Elastic Beanstalk がプロビジョニングし
ます。環境用に作成された AWS リソースには、1 つの Elastic Load Balancing(図では ELB)、Auto
Scaling グループ、および 1 つ以上の Amazon EC2 インスタンスがあります。
すべての環境に、ロードバランサーを指定する CNAME(URL)が含まれます。環境には
myapp.us-west-2.elasticbeanstalk.com などの URL があります。この URL は Amazon Route
53 で CNAME レコードを使用することによって、 のような別名の Elastic Load Balancing URL になり
ます。abcdef-123456.us-west-2.elb.amazonaws.comAmazon Route 53 は、可用性と拡張性に
優れたドメインネームシステム(DNS)ウェブサービスです。このサービスは、インフラストラクチャ
に対して安全で信頼できるルーティングを提供します。DNS プロバイダに登録したドメイン名は、
CNAME にリクエストを転送します。ロードバランサーは、Auto Scaling グループに属する Amazon
EC2 インスタンスの前に配置されています(この図では、Auto Scaling グループは黒色の点線で示され
ています)。Auto Scaling は、アプリケーションへの負荷の増大に対応できるように追加 Amazon EC2
インスタンスを自動的に開始します。アプリケーションへの負荷が軽減されると、Auto Scaling はイン
スタンスを停止しますが、少なくとも 1 つのインスタンスは実行されたままです。
Amazon EC2 インスタンスで実行するソフトウェアスタックは、コンテナタイプに応じて変わります。
コンテナの種類によって、その環境に使用するインフラストラクチャのトポロジとソフトウェアスタッ
クが定義されます。例えば、Apache Tomcat コンテナを含む Elastic Beanstalk 環境は、Amazon Linux
オペレーティングシステム、Apache ウェブサーバー、および Apache Tomcat ソフトウェアを使用し
ます。サポートされているコンテナタイプのリストについては、「サポートされているプラットフォー
ム (p. 25)」を参照してください。これらのコンテナタイプのいずれかが、アプリケーションを実行す
る各 Amazon EC2 サーバーインスタンスによって使用されます。さらに、各 Amazon EC2 サーバーイ
ンスタンスでは、ホストマネージャー(HM)と呼ばれるソフトウェアコンポーネントも実行されます
(この図では、HM は各 EC2 インスタンスのオレンジ色の丸です)。ホストマネージャーは次の処理
を行います。
API Version 2010-12-01
17
AWS Elastic Beanstalk 開発者ガイド
ワーカー環境枠
• アプリケーションのデプロイ
• イベントとメトリックスの収集と取得(コンソール、API、またはコマンドラインを使用)。
• インスタンスレベルのイベントの生成
• アプリケーションログファイルで重大エラーがないかどうかを監視
• アプリケーションサーバーの監視
• インスタンスコンポーネントへの修正プログラムの適用
• アプリケーションのログファイルのローテーションと、Amazon S3 への公開
ホストマネージャーは、メトリックス、エラーとイベント、およびサーバーインスタンスのステータス
をレポートします。これらの情報を利用するには、AWS マネジメントコンソール、API、または CLI
を使用します。
この図では、Amazon EC2 インスタンスが 1 つのセキュリティグループに属しています。セキュリティ
グループとは、インスタンスのファイアウォールのルールを定義するものです。デフォルトでは、Elastic
Beanstalk によって 1 つのセキュリティグループが定義されます。この場合、全員がポート 80(HTTP)
を使用して接続できます。複数のセキュリティグループを定義することもできます。例えば、データ
ベースサーバーに対してセキュリティグループを定義できます。Amazon EC2 セキュリティグループ
の詳細、およびElastic Beanstalk アプリケーションに対してこのセキュリティグループを設定する方法
については、「セキュリティグループ (p. 200)」を参照してください
ワーカー環境枠
ワーカー環境枠で作成された AWS リソースには、Auto Scaling グループ、1 つ以上の Amazon EC2 イ
ンスタンス、および IAM ロールが含まれます。また、ワーカー環境枠で Amazon SQS キューがない場
合、Elastic Beanstalk によってAmazon SQS キューが作成され、プロビジョニングされます。ワーカー
環境枠を起動すると、選択したプログラミング言語に必要なサポートファイルとデーモンが、Elastic
Beanstalk によって Auto Scaling グループの各 EC2 インスタンスにインストールされます。デーモン
は Amazon SQS キューからリクエストを取得し、そのデータをワーカー環境枠で稼働しているウェブ
アプリケーションへ送信します。このメッセージはこのウェブアプリケーションで処理されます。ワー
カー環境枠に複数のインスタンスがある場合、各インスタンスに独自のデーモンがありますが、すべて
同じ Amazon SQS キューから読み取られます。
次の図は、複数の環境および AWS サービス全体のさまざまなコンポーネントとそのインタラクション
を示しています。
API Version 2010-12-01
18
AWS Elastic Beanstalk 開発者ガイド
アクセス許可
Amazon CloudWatch はアラームおよびヘルスモニタリングに使用されます。詳細については、「基本
ヘルスレポート (p. 259)」を参照してください。
ワーカー環境枠の仕組みの詳細については、ワーカー環境の仕組み (p. 93) を参照してください。
サービスロール、インスタンスプロファイル、ユー
ザーポリシー
Abstract
AWS Identity and Access Management ロールを使用して、Elastic Beanstalk 環境で実行される AWS Elastic Beanstalk
サービスと Amazon EC2 インスタンスに、必要なアクセス権限を付与します。
環境を作成すると、AWS Elastic Beanstalk によって 2 つの AWS Identity and Access Management (IAM)
ロールとして、サービスロールとインスタンスプロファイルを指定するように求められます。サービス
ロールは、Elastic Beanstalk が引き受けて、お客様に代わって他の AWS サービスを使用できるように
なります。インスタンスプロファイルは、お客様の環境内のインスタンスが引き受けて、Amazon S3
にログをアップロードするなど、環境のタイプとプラットフォームに応じたさまざまなタスクを実行で
きるようになります。
サービスロールとインスタンスプロファイルが正しく設定されるために最もお勧めするのは、Elastic
Beanstalk コンソールでサンプルアプリケーションを実行する環境を作成する (p. 54)ことです。コン
ソールでは、必要なロールがまだない場合は作成し、必要なアクセス権限をすべて含む管理ポリ
シー (p. 355)をそれらのロールに割り当てるように求められます。
お客様の環境に割り当てる 2 つのロールに加えて、ユーザーポリシーを作成し、お客様のアカウントの
IAM ユーザーとグループに適用して、ユーザーに対して Elastic Beanstalk アプリケーションと環境の
作成と管理を許可できます。Elastic Beanstalk には、フルアクセスと読み取り専用アクセスのための管
理ポリシーが用意されています。
高度なシナリオ用に独自のインスタンスプロファイルとユーザーポリシーを作成できます。インスタン
スからデフォルトのポリシーに含まれていないサービスにアクセスする必要がある場合は、デフォルト
API Version 2010-12-01
19
AWS Elastic Beanstalk 開発者ガイド
Elastic Beanstalk サービスロール
にポリシーを追加するか、新しいポリシーを作成できます。管理ポリシーの許容範囲が広すぎる場合
は、その範囲を絞り込んだユーザーポリシーを作成することもできます。AWS のアクセス権限の詳細
については、『IAM ユーザーガイド』を参照してください。
セクション
• Elastic Beanstalk サービスロール (p. 20)
• Elastic Beanstalk インスタンスプロファイル (p. 21)
• Elastic Beanstalk ユーザーポリシー (p. 23)
Elastic Beanstalk サービスロール
サービスロールは、他のサービスを代理で呼び出すときに Elastic Beanstalk が引き受ける IAM ロール
です。Elastic Beanstalk は、Amazon Elastic Compute Cloud (Amazon EC2)、Elastic Load Balancing、
および Auto Scaling API を呼び出して AWS リソースのヘルスステータスについて情報を収集するとき
に、Elastic Beanstalk 環境の作成時に指定されたサービスロールを使用します。
以下のステートメントには、環境のヘルスステータスを監視するために Elastic Beanstalk に必要なす
べてのアクセス権限が含まれています。
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Action": [
"elasticloadbalancing:DescribeInstanceHealth",
"ec2:DescribeInstances",
"ec2:DescribeInstanceStatus",
"ec2:GetConsoleOutput",
"ec2:AssociateAddress",
"ec2:DescribeAddresses",
"ec2:DescribeSecurityGroups",
"sqs:GetQueueAttributes",
"sqs:GetQueueUrl",
"autoscaling:DescribeAutoScalingGroups",
"autoscaling:DescribeAutoScalingInstances",
"autoscaling:DescribeScalingActivities",
"autoscaling:DescribeNotificationConfigurations"
],
"Resource": [
"*"
]
}
]
}
このポリシーには、Elastic Beanstalk にワーカー環境のキューアクティビティのモニタリングを許可す
る Amazon SQS アクションも含まれています。
Elastic Beanstalk コンソールで環境を作成すると、Elastic Beanstalk によって
aws-elasticbeanstalk-service-role という名前のサービスロールを作成するように求められま
す。このロールには、先ほどのステートメントに示されたアクセス権限と、Elastic Beanstalk にサービ
スロールの引き受けを許可する信頼ポリシーが含まれます。IAM でサービスロールを自分で作成する場
合は、信頼ポリシーも自分で追加する必要があります。
API Version 2010-12-01
20
AWS Elastic Beanstalk 開発者ガイド
Elastic Beanstalk インスタンスプロファイル
以下の信頼ポリシーは、先ほどのステートメントに示されたアクセス権限を含むロールにアタッチされ
ると、Elastic Beanstalk にサービスロールの引き受けを許可します。
{
"Version": "2012-10-17",
"Statement": [
{
"Sid": "",
"Effect": "Allow",
"Principal": {
"Service": "elasticbeanstalk.amazonaws.com"
},
"Action": "sts:AssumeRole",
"Condition": {
"StringEquals": {
"sts:ExternalId": "elasticbeanstalk"
}
}
}
]
}
Elastic Beanstalk コマンドラインインターフェイス (p. 403)(EB CLI)では、デフォルトのサービスロー
ルを使用できます。Elastic Beanstalk API を使用して環境を作成する場合は、
aws:elasticbeanstalk:environment 名前空間で ServiceRole 設定オプションを使用して、サー
ビスロールを指定します。詳細については、「AWS Elastic Beanstalk API での拡張ヘルスレポートの
使用 (p. 282)」を参照してください。
Elastic Beanstalk インスタンスプロファイル
インスタンスプロファイルは、Elastic Beanstalk 環境で起動されたインスタンスに適用される IAM ロー
ルです。Elastic Beanstalk 環境の作成時、インスタンスによる以下のアクションに使用されるインスタ
ンスプロファイルを指定します。
•
•
•
•
Amazon Simple Storage Service へのログの書き込み
(マルチコンテナ Docker 環境)Amazon EC2 Container Service によるコンテナのデプロイの調整
(ワーカー環境)Amazon Simple Queue Service(Amazon SQS)キューからの読み取り
(ワーカー環境)Amazon DynamoDB によるリーダーの選択
• (ワーカー環境)Amazon CloudWatch へのインスタンスヘルスメトリックスのパブリッシュ
以下のポリシーには、対象環境内のインスタンスに、先ほどの各アクションの実行を許可するステート
メントが含まれています。各ステートメントは、対応するタスクを実行するのに必要な API 操作への
アクセスを許可します。
{
"Version": "2012-10-17",
"Statement": [
{
"Sid": "BucketAccess",
"Action": [
"s3:Get*",
"s3:List*",
"s3:PutObject"
],
API Version 2010-12-01
21
AWS Elastic Beanstalk 開発者ガイド
Elastic Beanstalk インスタンスプロファイル
"Effect": "Allow",
"Resource": [
"arn:aws:s3:::elasticbeanstalk-*",
"arn:aws:s3:::elasticbeanstalk-*/*"
]
}, {
"Sid": "ECSAccess",
"Effect": "Allow",
"Action": [
"ecs:Poll",
"ecs:StartTask",
"ecs:StopTask",
"ecs:DiscoverPollEndpoint",
"ecs:StartTelemetrySession",
"ecs:RegisterContainerInstance",
"ecs:DeregisterContainerInstance",
"ecs:DescribeContainerInstances",
"ecs:Submit*"
],
"Resource": "*"
}, {
"Sid": "QueueAccess",
"Action": [
"sqs:ChangeMessageVisibility",
"sqs:DeleteMessage",
"sqs:ReceiveMessage",
"sqs:SendMessage"
],
"Effect": "Allow",
"Resource": "*"
}, {
"Sid": "DynamoPeriodicTasks",
"Action": [
"dynamodb:BatchGetItem",
"dynamodb:BatchWriteItem",
"dynamodb:DeleteItem",
"dynamodb:GetItem",
"dynamodb:PutItem",
"dynamodb:Query",
"dynamodb:Scan",
"dynamodb:UpdateItem"
],
"Effect": "Allow",
"Resource": [
"arn:aws:dynamodb:*:*:table/*-stack-AWSEBWorkerCronLeaderRegistry*"
]
}, {
"Sid": "MetricsAccess",
"Action": [
"cloudwatch:PutMetricData"
],
"Effect": "Allow",
"Resource": "*"
}
]
}
API Version 2010-12-01
22
AWS Elastic Beanstalk 開発者ガイド
Elastic Beanstalk ユーザーポリシー
1 つのロールにこれらのすべてのステートメントを追加して、すべての対象環境に使用できます。また
は、ウェブサーバー、ワーカー枠、複数コンテナの Docker 環境のロールにアクセス権限を振り分ける
こともできます。Elastic Beanstalk には、これらの各ユースケース用に
AWSElasticBeanstalkWebTier、AWSElasticBeanstalkWorkerTier、
AWSElasticBeanstalkMulticontainerDocker という名前の管理ポリシーが用意されています。
Note
Elastic Beanstalk の機能を使用せずにインスタンスプロファイルをゼロから作成する場合、IAM
コンソールでロールを作成するときに Amazon EC2 ロールタイプを選択します。他のロールタ
イプは、EC2 インスタンスが引き受けることのできるインスタンスプロファイルを作成しませ
ん。
ウェブアプリケーションで他の AWS サービスへのアクセスが必要な場合、インスタンスプロファイル
に、これらのサービスへのアクセスを許可するステートメントまたは管理ポリシーを追加します。
Elastic Beanstalk ユーザーポリシー
Elastic Beanstalk は、独自の API アクションに対してだけではなく、他のいくつかの AWS サービスに
対しても、アクセス許可を必要とします。Elastic Beanstalk は、ユーザーアクセス許可を使用して、環
境内のすべてのリソース(EC2 インスタンス、Elastic Load Balancing ロードバランサー、Auto Scaling
グループなど)を起動します。また、Elastic Beanstalk は、Amazon S3 へのログとテンプレートの保
存、Amazon SNS への通知の送信、インスタンスプロファイルの割り当て、および CloudWatch への
メトリックスのパブリッシュにもユーザーアクセス許可を使用します。Elastic Beanstalk でリソースの
デプロイと更新を調整するには、AWS CloudFormation アクセス許可が必要です。また、必要に応じて
データベースを作成するには Amazon RDS アクセス許可が必要で、ワーカー環境のキューを作成する
には Amazon SQS アクセス許可が必要です。
以下のポリシーは、Elastic Beanstalk 環境を作成および管理するためのアクセス権限を付与します。こ
のポリシーは AWSElasticBeanstalkFullAccess という名前の管理ポリシーとして IAM コンソール
で使用できます。Elastic Beanstalk を使用するためのアクセス権限を付与する管理ポリシーを IAM ユー
ザーまたはグループに適用できます。または、ユーザーに不要なアクセス権限を除外した独自のポリ
シーを作成することもできます。
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Action": [
"elasticbeanstalk:*",
"ec2:*",
"ecs:*",
"elasticloadbalancing:*",
"autoscaling:*",
"cloudwatch:*",
"s3:*",
"sns:*",
"cloudformation:*",
"rds:*",
"sqs:*",
"iam:GetPolicyVersion",
"iam:GetRole",
"iam:PassRole",
"iam:ListRolePolicies",
"iam:ListAttachedRolePolicies",
API Version 2010-12-01
23
AWS Elastic Beanstalk 開発者ガイド
Elastic Beanstalk ユーザーポリシー
"iam:ListInstanceProfiles",
"iam:ListRoles",
"iam:ListServerCertificates",
"acm:DescribeCertificate",
"acm:ListCertificates"
],
"Resource": "*"
},
{
"Effect": "Allow",
"Action": [
"iam:AddRoleToInstanceProfile",
"iam:CreateInstanceProfile",
"iam:CreateRole"
],
"Resource": [
"arn:aws:iam::*:role/aws-elasticbeanstalk*",
"arn:aws:iam::*:instance-profile/aws-elasticbeanstalk*"
]
},
{
"Effect": "Allow",
"Action": [
"iam:AttachRolePolicy"
],
"Resource": "*",
"Condition": {
"StringLike": {
"iam:PolicyArn": [
"arn:aws:iam::aws:policy/AWSElasticBeanstalk*",
"arn:aws:iam::aws:policy/service-role/AWSElasticBean
stalk*"
]
}
}
}
]
}
Elastic Beanstalk には、AWSElasticBeanstalkReadOnlyAccess という名前の読み取り専用の管理
ポリシーも用意されています。このポリシーは、ユーザーに Elastic Beanstalk 環境の表示を許可しま
すが、変更または作成は許可しません。
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Action": [
"elasticbeanstalk:Check*",
"elasticbeanstalk:Describe*",
"elasticbeanstalk:List*",
"elasticbeanstalk:RequestEnvironmentInfo",
"elasticbeanstalk:RetrieveEnvironmentInfo",
"ec2:Describe*",
"elasticloadbalancing:Describe*",
"autoscaling:Describe*",
API Version 2010-12-01
24
AWS Elastic Beanstalk 開発者ガイド
サポートされているプラットフォーム
"cloudwatch:Describe*",
"cloudwatch:List*",
"cloudwatch:Get*",
"s3:Get*",
"s3:List*",
"sns:Get*",
"sns:List*",
"cloudformation:Describe*",
"cloudformation:Get*",
"cloudformation:List*",
"cloudformation:Validate*",
"cloudformation:Estimate*",
"rds:Describe*",
"sqs:Get*",
"sqs:List*"
],
"Resource": "*"
}
]
}
サポートされているプラットフォーム
Abstract
Elastic Beanstalk では、Java、PHP、.NET、Node.js、Python、および Ruby で作成されたアプリケーションをサ
ポートしており、それぞれ独自の設定があります。設定には、設定名(フレンドリ名)とスタック名(サービスの
設定を識別する一意の名前)の両方が含まれます。
Elastic Beanstalk にはウェブサーバープラットフォームがあり、Docker、Go(Golang)、Java、.NET、
Node.js、PHP、Python、および複数設定の Ruby 向けに開発されたアプリケーションをサポートしま
す。 ワーカーの環境では、.NET を除くすべてのプラットフォームがサポートされています。
Elastic Beanstalk は、1 つまたは複数の Amazon EC2 インスタンスなどのアプリケーションを実行す
るために必要なリソースをプロビジョニングします。Amazon EC2 インスタンスで実行するソフトウェ
アスタックは、設定に応じて変わります。設定名のバージョン番号は、設定バージョンを指します。
設定名の下に表示されているソリューションスタック名は、EB CLI (p. 403)、Elastic Beanstalk API、ま
たは AWS CLI (p. 921) で環境を起動するために使用できます。 ソリューションスタック名は、
「ListAvailableSolutionStacks」API(AWS CLI の aws elasticbeanstalk list-available-solution-stacks)
のサービスから取得することもできます。 このオペレーションでは、最新のスタック(このページに
リストアップされている)を含む、環境の作成に使用したすべてのソリューションスタックと、以前使
用したすべての旧バージョンを返します。
すべての Linux ベースの現行プラットフォームの設定は、Amazon Linux 2015.09(64 ビット)で実行
されます。 最近のリリースに関する詳細なリリースノートは、aws.amazon.com/releasenotes で参照
できます。
プラットフォーム
• Docker (p. 26)
• 事前設定済み Docker (p. 26)
• Go (p. 27)
• Java SE (p. 27)
• Java と Tomcat (p. 28)
API Version 2010-12-01
25
AWS Elastic Beanstalk 開発者ガイド
Docker
• IIS を使用する Windows Server での .NET (p. 28)
• Node.js (p. 30)
• PHP (p. 30)
• Python (p. 31)
• Ruby (p. 31)
Docker
Elastic Beanstalk にアプリケーションをデプロイするために Docker コンテナを使用できます。これら
は、環境を作成するときに選択できる事前定義の設定のリストに含まれています。Elastic Beanstalk で
は、以下の設定がサポートされています。
設定およびソリューションスタッ AMI
クの名前
Docker バージョン
ウェブサーバー
単一コンテナの Docker 1.9 バー
ジョン 2.0.8
2015.09
1.9.1
nginx 1.8.0
2015.09
1.9.1
なし
Docker 1.9.1 を実行する 64 ビッ
ト Amazon Linux 2015.09 v2.0.8
複数コンテナの Docker 1.9 バー
ジョン 2.0.8
複数コンテナの Docker 1.9.1 を
実行する 64 ビット Amazon Linux
2015.09 v2.0.8(汎用)
以前の設定の詳細については、「Docker プラットフォーム履歴 (p. 827)」を参照してください。
事前設定済み Docker
特定の言語のプラットフォームで開発されたアプリケーションをサポートするように事前設定された
Docker コンテナを使用して、Elastic Beanstalk にアプリケーションをデプロイできます。これらのコ
ンテナは、環境を作成するときに選択できる事前定義の設定のリストに、[Docker - Preconfigured] 設定
として含まれています。Elastic Beanstalk では、次の事前設定済み Docker 設定をサポートしています。
設定およびソリューションスタックの名前
AMI
プラットフォーム コンテナ OS
Glassfish 4.1 (Docker) バージョン 2.0.8
2015.09
Docker 1.9.1
GlassFish 4.1 Java 8 を実行する 64 ビット
Debian jessie v2.0.8(事前設定済み - Docker)
API Version 2010-12-01
26
- kco言
D
ア
プ
r 語
e
プ
ロ
イ
リ
キ
ー シ
メ
ケ
ョ サ
ー
ジ
シ
ー バ
ン
ー サ
ー バ
Debian Jessie a
h
xs-n
w
sa
vi f/iasnso
g
am
zJ
al
G
n
1
0-.8b
. .8
e
4
1
1
-4
.h
s:ifa
sg
l
-8kdj
- no
-dl iub
1.5.3
AWS Elastic Beanstalk 開発者ガイド
Go
設定およびソリューションスタックの名前
AMI
プラットフォーム コンテナ OS
Glassfish 4.0 (Docker) バージョン 2.0.8
2015.09
Docker 1.9.1
Debian Jessie a
h
xs-n
w
sa
vi f/iasnso
g
am
zJ
al
G
n
0-.8b
. .7
e
4
1
0
-4
.h
s:ifa
sg
l
-7kdj
- no
-dl iub
1.5.3
2015.09
Docker 1.9.1
Debian Jessie o
x-1n.4.1i:g
n
alo
g
な
n
G
0-.4
1
8n.1
o
し
dl iub
2015.09
Docker 1.9.1
Debian Jessie o
x-3n.3.1i:g
n
alo
g
な
n
G
0-.3
3
8n.1
o
し
dl iub
2015.09
Docker 1.9.1
Debian Jessie
GlassFish 4.0 Java 7 を実行する 64 ビット
Debian jessie v2.0.8(事前設定済み - Docker)
Go 1.4 (Docker) バージョン 2.0.8
Go 1.4 を実行する 64 ビット Debian jessie
v2.0.8(事前設定済み - Docker)
Go 1.3 (Docker) バージョン 2.0.8
Go 1.3 を実行する 64 ビット Debian jessie
v2.0.8(事前設定済み - Docker)
Python 3.4 と uWSGI 2 (Docker) バージョン
2.0.8
Python 3.4 を実行する 64 ビット Debian jessie
v2.0.8(事前設定済み - Docker)
- kco言
D
ア
プ
r 語
e
プ
ロ
イ
リ
キ
ー シ
メ
ケ
ョ サ
ー
ジ
シ
ー バ
ン
ー サ
ー バ
x-In
w
sa
GS
/iyW
no
gm
zP
a
u
n
n
8-o.8
0
0
hb.t1
e
2
4- .y 3
p
-2.4.3:n
o
ht
- no
-dl iub
1.5.3
以前の設定の詳細については、「事前設定済み Docker プラットフォーム履歴 (p. 834)」を参照してくだ
さい。
Go
Elastic Beanstalk では、以下の Go 設定がサポートされています。
設定およびソリューションスタッ AMI
クの名前
言語
ウェブサーバー
Go 1.4 バージョン 2.0.8
Go 1.4.2
nginx1.8.0
2015.09
Go 1.4 を実行する 64 ビット
Amazon Linux 2015.09 v2.0.8
Java SE
Elastic Beanstalk では、以下の Java SE 設定がサポートされています。
API Version 2010-12-01
27
AWS Elastic Beanstalk 開発者ガイド
Java と Tomcat
設定およびソリューションス
タックの名前
AMI
Java 8 バージョン 2.0.8
2015.09 Java
1.8.0_71
言語
Java 8 を実行する 64 ビット
Amazon Linux 2015.09 v2.0.8
ツール
ウェブサーバー
Ant 1.9.6
nginx 1.8.0
Gradle 2.7
Maven 3.3.3
Java 7 バージョン 2.0.8
2015.09 Java
1.7.0_95
Java 7 を実行する 64 ビット
Amazon Linux 2015.09 v2.0.8
Ant 1.9.6
nginx 1.8.0
Gradle 2.7
Maven 3.3.3
Java と Tomcat
Elastic Beanstalk では、以下の Tomcat 設定がサポートされています。
設定およびソリューションスタッ AMI
クの名前
言語
アプリケーションサーバー
ェ ウ
ブ
ー サ
ー バ
Java 8 と Tomcat 8 バージョン
2.0.8
2015.09
Java 1.8.0_71
Tomcat 8.0.30
ehcapA
13.2.2
2015.09
Java 1.7.0_95
Tomcat 7.0.67
ehcapA
13.2.2
2015.09
Java 1.6.0_38
Tomcat 7.0.67
ehcapA
13.2.2
Tomcat 8 Java 8 を実行する 64
ビット Amazon Linux 2015.09
v2.0.8
Java 7 と Tomcat 7 バージョン
2.0.8
Tomcat 7 Java 7 を実行する 64
ビット Amazon Linux 2015.09
v2.0.8
Java 6 と Tomcat 7 バージョン
2.0.8
Tomcat 7 Java 6 を実行する 64
ビット Amazon Linux 2015.09
v2.0.8
以前の設定の詳細については、「Tomcat プラットフォームの履歴 (p. 851)」を参照してください。
IIS を使用する Windows Server での .NET
AWS Toolkit for Visual Studio を使用してすぐに始めることができます。このツールキットには、AWS
ライブラリ、プロジェクトテンプレート、コードサンプル、および資料が含まれます。AWS SDK for
.NET は、.NET Framework 2.0 以降を使用したアプリケーションの開発をサポートしています。
Note
このプラットフォームでは、ワーカー環境や拡張ヘルスレポートはサポートされていません。
API Version 2010-12-01
28
AWS Elastic Beanstalk 開発者ガイド
IIS を使用する Windows Server での .NET
AWS Toolkit for Visual Studio を使用して .NET アプリケーションを初めてデプロイする方法について
は、「AWS Toolkit for Visual Studio を使用して .NET で Elastic Beanstalk アプリケーションを作成し
デプロイする (p. 644)」を参照してください。Elastic Beanstalk では、以下の設定がサポートされていま
す。
設定およびソリューションス
タックの名前
AMI
バー
ジョン
IIS 8.5 バージョン 1.1.0 を使用
1
する Windows Server 2012 R2
2016.01.25 .NET v4.6.1
IIS 8.5 を実行する 64 ビット
Windows Server 2012 R2 v1.1.0
IIS 8.5 バージョン 1.1.0 を使用
1
する Windows Server 2012 R2
Server Core
IIS 8.5 を実行する 64 ビット
Windows Server Core 2012 R2
v1.1.0
Framework
AWS
SDK
for
.NET
EC2Con- ウェブサーバー
fig
v3.1.36.1 3.12.649 IIS 8.5
ランタイム 4、
2.0、1.1 および
1.0 をサポート
しています
2016.01.25 .NET v4.6.1
v3.1.36.1 3.12.649 IIS 8.5
ランタイム 4、
2.0、1.1 および
1.0 をサポート
しています
IIS 8 バージョン 1.1.0 を使用す 2016.01.25 .NET v4.6.1
v3.1.36.1 3.12.649 IIS 8
1
る Windows Server 2012
ランタイム 4、
IIS 8 を実行する 64 ビット Win2.0、1.1 および
dows Server 2012 v1.1.0
1.0 をサポート
しています
IIS 7.5 バージョン 1.1.0 を使用
1
する Windows Server 2008 R2
IIS 7.5 を実行する 64 ビット
Windows Server 2008 R2 v1.1.0
IIS 8.5 を使用する Windows
1
Server 2012 R2
IIS 8.5 を実行する 64 ビット
Windows Server 2012 R2
IIS 8.5 を使用する Windows
1
Server 2012 R2 Server Core
IIS 8.5 を実行する 64 ビット
Windows Server Core 2012 R2
2016.01.25 .NET v4.6.1
v3.1.36.1 3.12.649 IIS 7.5
ランタイム 4、
2.0、1.1 および
1.0 をサポート
しています
2016.01.25 .NET v4.6.1
v3.1.36.1 3.12.649 IIS 8.5
ランタイム 4、
2.0、1.1 および
1.0 をサポート
しています
2016.01.25 .NET v4.6.1
v3.1.36.1 3.12.649 IIS 8.5
ランタイム 4、
2.0、1.1 および
1.0 をサポート
しています
IIS 8 を使用する Windows Serv- 2016.01.25 .NET v4.6.1
v3.1.36.1 3.12.649 IIS 8
1
er 2012
ランタイム 4、
IIS 8 を実行する 64 ビット Win2.0、1.1 および
dows Server 2012
1.0 をサポート
しています
API Version 2010-12-01
29
AWS Elastic Beanstalk 開発者ガイド
Node.js
設定およびソリューションス
タックの名前
AMI
バー
ジョン
IIS 7.5 を使用する Windows
1
Server 2008 R2
2016.01.25 .NET v4.6.1
Framework
AWS
SDK
for
.NET
EC2Con- ウェブサーバー
fig
v3.1.36.1 3.12.649 IIS 7.5
ランタイム 4、
2.0、1.1 および
1.0 をサポート
しています
IIS 7.5 を実行する 64 ビット
Windows Server 2008 R2
1
2016 年 2 月のマイクロソフトセキュリティ情報
以前の設定の詳細については、「IIS プラットフォーム履歴付きの Windows Server の .NET (p. 866)」を
参照してください。
Node.js
Elastic Beanstalk では、以下の Node.js 設定がサポートされています。
設定およびソリューショ AMI
ンスタックの名前
プラットフォーム
パッケー
ジマネー
ジャー
ウェブサーバー
Node.js バージョン 2.0.8 2015.09
Node.js 4.3.0
NPM
2.14.7
nginx 1.8.0 または Git 2.4.3
Node.js を実行する 64
ビット Amazon Linux
2015.09 v2.0.8
0.12.10、0.10.42、
0.8.28 もサポートし
ます
Git
Apache 2.4.16
以前の設定の詳細については、「Node.js プラットフォーム履歴 (p. 873)」を参照してください。
Note
お使いの Node.js バージョンのサポートがプラットフォーム設定から削除された場合には、プ
ラットフォームアップグレード (p. 86)の前に、バージョン設定の変更または削除を行ってくだ
さい。これによって、いくつかの Node.js のバージョンにセキュリティの脆弱性が見つかる場
合があります
この場合には、設定された NodeVersion (p. 140) をサポートしないプラットフォームの新しい
バージョンへのアップグレードは失敗します。 新しい環境の作成を回避するためには、古い設
定バージョンと新しいバージョンの両方をサポートするバージョンに NodeVersion 設定オプ
ションを変更するか、オプション設定を削除 (p. 110)してから、プラットフォームのアップグ
レードを行ってください。
PHP
Elastic Beanstalk では、以下の PHP 設定がサポートされています。
API Version 2010-12-01
30
AWS Elastic Beanstalk 開発者ガイド
Python
設定およびソリューションス
タックの名前
AMI
言語
Composer
PHP 5.6 バージョン 2.0.8
2015.09
PHP 5.6.17
1.0.0-alpha11
ehcapA
61.4.2
2015.09
PHP 5.5.31
1.0.0-alpha11
ehcapA
61.4.2
2015.09
PHP 5.4.45
1.0.0-alpha11
ehcapA
61.4.2
ェ ウ
ブ
ー サ
ー バ
PHP 5.6 を実行する 64 ビット
Amazon Linux 2015.09 v2.0.8
PHP 5.5 バージョン 2.0.8
PHP 5.5 を実行する 64 ビット
Amazon Linux 2015.09 v2.0.8
PHP 5.4 バージョン 2.0.8
PHP 5.4 を実行する 64 ビット
Amazon Linux 2015.09 v2.0.8
以前の設定の詳細については、「PHP プラットフォーム履歴 (p. 885)」を参照してください。
Python
Elastic Beanstalk では、以下の Python 設定がサポートされています。
設定およびソリューションス
タックの名前
AMI
言語
ウェブサーバー
Python 3.4 バージョン 2.0.8
2015.09
Python 3.4.3
Apache 2.4.16 と
mod_wsgi 3.5
2015.09
Python 2.7.10
Apache 2.4.16 と
mod_wsgi 3.5
2015.09
Python 2.6.9
Apache 2.4.16 と
mod_wsgi 3.5
Python 3.4 を実行する 64 ビッ
ト Amazon Linux 2015.09
v2.0.8
Python 2.7 バージョン 2.0.8
Python 2.7 を実行する 64 ビッ
ト Amazon Linux 2015.09
v2.0.8
Python 2.6 バージョン 2.0.8
Python を実行する 64 ビット
Amazon Linux 2015.09 v2.0.8
以前の設定の詳細については、「Python プラットフォーム履歴 (p. 895)」を参照してください。
Ruby
Elastic Beanstalk では、以下の Ruby 設定がサポートされています。
API Version 2010-12-01
31
AWS Elastic Beanstalk 開発者ガイド
Ruby
設定およびソリュー AMI
ションスタックの名
前
Ruby 2.2 と Puma
バージョン 2.0.8
言語
2015.09 Ruby 2.2.3
パッ
アプリケーションサーバー
ケー
ジマ
ネー
ジャー
ウェブサー
バー
Ruby- Puma 2.10.2
Gems
2.4.5.1
nginx 1.8.0
Ruby- Passenger 4.0.59
Gems
2.4.5.1
nginx 1.8.0
Ruby- Puma 2.10.2
Gems
2.2.5
nginx 1.8.0
Ruby- Passenger 4.0.59
Gems
2.2.5
nginx 1.8.0
Ruby 2.2(Puma)
を実行する 64 ビッ
ト Amazon Linux
2015.09 v2.0.8
Ruby 2.2 と Passen- 2015.09 Ruby 2.2.3
ger バージョン
2.0.8
Ruby 2.2(Passenger Standalone)を
実行する 64 ビット
Amazon Linux
2015.09 v2.0.8
Ruby 2.1 と Puma
バージョン 2.0.8
2015.09 Ruby 2.1.7
Ruby 2.1(Puma)
を実行する 64 ビッ
ト Amazon Linux
2015.09 v2.0.8
Ruby 2.1 と Passen- 2015.09 Ruby 2.1.7
ger バージョン
2.0.8
Ruby 2.1(Passenger Standalone)を
実行する 64 ビット
Amazon Linux
2015.09 v2.0.8
Ruby 2.0 と Puma
バージョン 2.0.8
2015.09 Ruby 2.0.0- Ruby- Puma 2.10.2
p647
Gems
2.0.14.1
nginx 1.8.0
Ruby 2.0(Puma)
を実行する 64 ビッ
ト Amazon Linux
2015.09 v2.0.8
Ruby 2.0 と Passen- 2015.09 Ruby 2.0.0- Ruby- Passenger 4.0.59
ger バージョン
p647
Gems
2.0.8
2.0.14.1
Ruby 2.0(Passenger Standalone)を
実行する 64 ビット
Amazon Linux
2015.09 v2.0.8
API Version 2010-12-01
32
nginx 1.8.0
AWS Elastic Beanstalk 開発者ガイド
設計上の考慮事項
設定およびソリュー AMI
ションスタックの名
前
言語
パッ
アプリケーションサーバー
ケー
ジマ
ネー
ジャー
Ruby 1.9 と Passen- 2015.09 Ruby 1.9.3- Ruby- Passenger 4.0.59
ger バージョン
p551
Gems
2.0.8
1.8.23.2
ウェブサー
バー
nginx 1.8.0
Ruby 1.9.3 を実行す
る 64 ビット
Amazon Linux
2015.09 v2.0.8
以前の設定の詳細については、「Ruby プラットフォーム履歴 (p. 903)」を参照してください。
設計上の考慮事項
Abstract
Elastic Beanstalk アプリケーションは、スケーラビリティ、セキュリティ、永続的ストレージ、耐障害性、コンテ
ンツ配信、ソフトウェアの更新とパッチ適用、および接続性を考慮して設計してください。
Elastic Beanstalk を使用してデプロイされたアプリケーションは Amazon クラウドリソースで実行され
るため、アプリケーションを設計するときは、スケーラビリティ、セキュリティ、永続的ストレージ、
耐障害性、コンテンツ配信、ソフトウェアのアップデートとパッチの適用、および接続性について考慮
する必要があります。アーキテクチャ、セキュリティ、エコノミクスなどのトピックが記載されている
技術的な AWS ホワイトペーパーの包括的なリストについては、「AWS クラウドコンピューティング
ホワイトペーパー」を参照してください。
スケーラビリティ
クラウド環境ではなく物理ハードウェア環境で作業している場合は、2 つの方法でスケーラビリティに
アプローチできます。つまり、スケールアップ(垂直スケーリング)またはスケールアウト(水平ス
ケーリング)することができます。スケールアップアプローチの場合、ビジネス拡大の需要に対応する
には、強力なハードウェアに投資する必要があります。一方、スケールアウトアプローチでは投資の分
散モデルに従う必要があるので、取得対象となるハードウェアとアプリケーションがさらに絞られ、
データセットが連合されるほか、サービス中心の設計が採用されます。スケールアップアプローチは非
常に高くつく可能性があるにもかかわらず、需要がキャパシティーを超えてしまうというリスクは依然
として存在します。スケールアウトアプローチの方が通常は効率的ですが、定期的に需要を予測し、需
要を満たすためにある程度まとまった量のインフラストラクチャをデプロイする必要があります。この
アプローチでは余剰キャパシティーが発生することがよくあるため、注意深くモニタリングする必要が
あります。
クラウドに移行すると、クラウドの弾力性を利用することで、需要に合わせてインフラストラクチャを
使用できます。弾力性とは、つまりリソースを効率的に取得および解放することで、これによりインフ
ラストラクチャを需要の増減に合わせて迅速にスケールイン/スケールアウトできるようになります。
伸縮自在性を実装するには、環境内のリソースからのメトリックス(サーバーやネットワーク I/O の使
用率など)に基づいてスケールアップまたはスケールダウンするように、Auto Scaling 設定を行いま
す。Auto Scaling を使用すると、使用が増えたらコンピューティングキャパシティーを自動的に追加
し、使用が減ったら削除できます。システムメトリックス(CPU、メモリ、ディスク I/O、ネットワー
ク I/O)を Amazon CloudWatch に発行し、Auto Scaling アクションをトリガするかまたは通知を送信
API Version 2010-12-01
33
AWS Elastic Beanstalk 開発者ガイド
セキュリティ
するようにアラームを設定します。Auto Scaling を設定する手順の詳細については、「Elastic Beanstalk
で Auto Scaling を設定する (p. 189)」を参照してください。
Elastic Beanstalk アプリケーションは、必要に応じてスケールアウトできる耐障害性に優れた疎結合コ
ンポーネントを使用して、できるだけステートレスにする必要もあります。AWS のスケーラブルなア
プリケーションアーキテクチャ設計の詳細については、『Architecting for the Cloud: Best Practices』
ホワイトペーパーを参照してください。
セキュリティ
AWS のセキュリティは「責任分担モデル」です。AWS は、お客様の環境の物理リソースを保護し、ク
ラウドがお客様のアプリケーションを実行するための安全な場所であることを保証します。お客様の
Elastic Beanstalk 環境で送受信されるデータのセキュリティおよびお客様のアプリケーションのセキュ
リティに対しては、お客様に責任があります。
お客様のクライアントからの情報を保護するために SSL を設定します。VeriSign や Entrust などの外
部認証機関からの証明書が必要になります。証明書に含まれるパブリックキーはブラウザに対してサー
バーを認証し、両方向のデータの暗号化に使用される共有セッションキーは、このパブリックキーに基
づいて作成されます。SSL 証明書の作成、アップロード、および環境への割り当ての手順については、
「Elastic Beanstalk 環境用に HTTPS を設定する (p. 217)」を参照してください。
環境に SSL 証明書を設定する場合、クライアントとお客様の環境の Elastic Load Balancing ロードバラ
ンサーの間でデータが暗号化されます。デフォルトでは、暗号化はロードバランサーで終了し、ロード
バランサーと Amazon EC2 インスタンス間のトラフィックは暗号化されません。
永続的ストレージ
Elastic Beanstalk アプリケーションは、永続的ローカルストレージがない Amazon EC2 インスタンス
で実行されます。Amazon EC2 インスタンスが終了した場合、ローカルファイルシステムは保存され
ず、新しい Amazon EC2 インスタンスがデフォルトのファイルシステムで開始されます。そこで、永
続的データソースにデータを保存するようアプリケーションを設計する必要があります。アマゾン ウェ
ブ サービスには、アプリケーションに利用できる複数の永続的ストレージオプションが用意されてい
ます。例えば、次のようなオプションがあります。
• Amazon Simple Storage Service(Amazon S3)。Amazon S3 の詳細については、ドキュメントの
ページを参照してください。
• Amazon Elastic Block Store(Amazon EBS)。詳細については、ドキュメントのページおよび「Feature
Guide: Elastic Block Store」を参照してください。
• Amazon DynamoDB。詳細については、ドキュメントのページを参照してください。Elastic Beanstalk
での Amazon DynamoDB の使用を示す例については、「例: DynamoDB、CloudWatch、SNS (p. 177)」
を参照してください。
• Amazon Relational Database Service(Amazon RDS)。詳細については、ドキュメントのページお
よび「Amazon RDS for C# Developers」を参照してください。
耐障害性
簡単に言うと、クラウドでのアーキテクチャ設計は、悪いことを想定しながら行うことをお勧めしま
す。つまり、必ず故障から自動回復できるように設計、実装、およびデプロイしてください。Amazon
EC2 インスタンスおよび Amazon RDS については、複数のアベイラビリティーゾーンを使用します。
アベイラビリティーゾーンは概念的には論理データセンターと似ています。Amazon CloudWatch は、
Elastic Beanstalk アプリケーションの状態を詳しく確認するときに使用してください。これにより、
ハードウェア障害やパフォーマンス低下が発生した場合に適切な措置を講じることができます。問題の
ある Amazon EC2 インスタンスを新しいインスタンスに置き換えられるように、一連の Amazon EC2
インスタンスのサイズを一定に保ちながら維持するには、Auto Scaling を設定します。Amazon RDS
API Version 2010-12-01
34
AWS Elastic Beanstalk 開発者ガイド
コンテンツ配信
を使用してバックアップの保存期間を設定すると、Amazon RDS によって自動バックアップを実行で
きます。
コンテンツ配信
ユーザーがウェブサイトに接続している場合、そのユーザーのリクエストは複数の個別のネットワーク
を介してルーティングされる可能性があります。その結果、レイテンシーが増え、パフォーマンスが低
下することがあります。Amazon CloudFront は、世界各地に設置されたエッジロケーションのネット
ワークを介してウェブコンテンツ(画像、動画など)を配信することで、こうしたレイテンシーの問題
を改善します。エンドユーザーがルーティングされるのは最寄りのエッジロケーションです。したがっ
て、コンテンツは可能な限り最良のパフォーマンスで配信されます。CloudFront は、ファイルの元の
最終バージョンをしっかりと保存する、Amazon S3 とシームレスに連携します。Amazon CloudFront
の詳細については、http://aws.amazon.com/cloudfront を参照してください。
ソフトウェアの更新プログラムと修正プログラム
Elastic Beanstalk では、新しいソフトウェアとパッチを使用してプラットフォーム設定が定期的に更新
されます。Elastic Beanstalk では、実行中の環境を新しいバージョンの設定に自動的にアップグレード
することはありませんが、お客様がプラットフォームのアップグレード (p. 86)を開始して、実行中の
環境をインプレース更新できます。プラットフォームのアップグレードでは、ローリング更新 (p. 82)
が使用され、変更をバッチで適用することにより、お客様のアプリケーションは利用可能な状態のまま
です。
接続
Elastic Beanstalk では、デプロイを完了するために、お客様の環境内のインスタンスに接続できる必要
があります。Elastic Beanstalk アプリケーションを Amazon VPC 内にデプロイする場合、接続を有効
にするために必要な設定は、作成する Amazon VPC 環境のタイプによって異なります。
• 単一インスタンス環境の場合、Elastic Beanstalk によって各 Amazon EC2 インスタンスにパブリッ
ク Elastic IP アドレスが割り当てられ、これによりインスタンスは直接インターネットと通信できる
ため、追加の設定は必要ありません。
• Amazon VPC 内の負荷分散型オートスケーリング環境で、パブリックサブネットとプライベートサ
ブネットの両方がある場合は、以下を実行する必要があります。
• インターネットから Amazon EC2 インスタンスへのインバウンドトラフィックをルーティングす
るロードバランサーをパブリックサブネットに作成します。
• Amazon EC2 インスタンスからインターネットへのアウトバウンドトラフィックをルーティング
するネットワークアドレス変換(NAT)デバイスを作成します。
• プライベートサブネット内の Amazon EC2 インスタンスのインバウンドおよびアウトバウンドルー
ティングルールを作成します。
• NAT インスタンスを使用している場合は、NAT インスタンスのセキュリティグループと Amazon
EC2 を設定して、インターネット通信を有効にします。
• Amazon VPC 内の負荷分散型オートスケーリング環境で、パブリックサブネットが 1 つある場合は、
Amazon EC2 インスタンスにパブリック IP アドレスが設定され、インスタンスはインターネットと
通信できるため、追加の設定は必要ありません。
Amazon VPC で Elastic Beanstalk を使用する方法については、「Amazon VPC で Elastic Beanstalk を
使用する (p. 319)」を参照してください。
API Version 2010-12-01
35
AWS Elastic Beanstalk 開発者ガイド
次の段階
次の段階
Abstract
Elastic Beanstalk アプリケーションを作成およびデプロイするためのプログラミング言語別のリンク一覧を示しま
す。
Elastic Beanstalk の基本事項については把握したので、いよいよアプリケーションの作成とデプロイを
開始します。開発者の方は、次のいずれかのセクションに進んでください。
• Java – AWS Elastic Beanstalk で Java アプリケーションを作成してデプロイする (p. 591)
• .NET – AWS Toolkit for Visual Studio を使用して .NET で Elastic Beanstalk アプリケーションを作成
しデプロイする (p. 644)
• Node.js – Node.js アプリケーションを AWS Elastic Beanstalk にデプロイする (p. 699)
• PHP – AWS Elastic Beanstalk での PHP アプリケーションの作成とデプロイ (p. 734)
• Python – Python の使用 (p. 760)
• Ruby – EB CLI および Git を使用した Ruby での Elastic Beanstalk アプリケーションのデプロイ (p. 785)
AWS マネジメントコンソール、コマンドラインインターフェイス、または API によるアプリケーショ
ンと環境の管理および設定については、「コンソール、CLI、および API を使用してアプリケーション
と環境を管理および設定する (p. 39)」を参照してください。
API Version 2010-12-01
36
AWS Elastic Beanstalk 開発者ガイド
チュートリアルとサンプル
Abstract
簡単に実行できるチュートリアルを使用して、AWS Elastic Beanstalk の使用方法を説明します。
言語およびフレームワークに固有のチュートリアルが、AWS Elastic Beanstalk 開発者ガイド全体で使
用されています。新規および更新されたチュートリアルが発行されたら、この一覧に追加されます。最
新のものが最初に表示されます。
これらのチュートリアルは中級ユーザーを対象としており、AWS へのサインアップなどの基本的な手
順の説明は含まれない場合があります。AWS または Elastic Beanstalk を初めてご使用になる場合は、
最初の Elastic Beanstalk 環境を一から設定して実行する手順について使用開始ウォークスルー (p. 4)
を確認してください。
•
•
•
•
•
•
•
•
PHP 5.6 と Laravel 5.2 - Elastic Beanstalk への Laravel アプリケーションのデプロイ (p. 734)
PHP 5.6 と CakePHP 3.2 - CakePHP アプリケーションを Elastic Beanstalk にデプロイする (p. 742)
Python と Flask 0.10 - AWS Elastic Beanstalk への Flask アプリケーションのデプロイ (p. 762)
Python と Django 1.9 - Elastic Beanstalk への Django アプリケーションのデプロイ (p. 769)
Node.js と Express 4 - Express アプリケーションを Elastic Beanstalk にデプロイする (p. 713)
1Docker、PHP、nginx - AWS マネジメントコンソール を使用した複数コンテナの Docker 環境 (p. 563)
Ruby on Rails - Rails アプリケーションの Elastic Beanstalk へのデプロイ (p. 786)
Ruby と Sinatra - AWS Elastic Beanstalk への Sinatra アプリケーションのデプロイ (p. 795)
• .NET Framework(IIS と ASP.NET) - チュートリアル: AWS Elastic Beanstalk を使用して .NET サ
ンプルアプリケーションをデプロイする方法 (p. 645)
以下のリンクでソースバンドルを提供することなく環境を作成するときは、Elastic Beanstalk によって
使用されるサンプルアプリケーションをダウンロードできます。
• Go – go-v1.zip
•
•
•
•
Java と Tomcat – java-tomcat-v1.zip
Java SE – java-se-jetty-maven-v1.zip
IIS を使用する Windows Server での .NET – iis-dotnet-v1.zip
Node.js – nodejs-v1.zip
• PHP – php-v1.zip
• Python – python-v1.zip
API Version 2010-12-01
37
AWS Elastic Beanstalk 開発者ガイド
• Ruby (Passenger Standalone) – ruby-passenger-v1.zip
• Ruby (Puma) – ruby-puma-v1.zip
• 単一コンテナの Docker – docker-singlecontainer-v1.zip
• 複数コンテナ Docker– dockermulticontainer v2.zip
• 事前設定済み Docker(Glassfish)– docker-glassfish-v1.zip
• 事前設定済み Docker(Python 3.x)– docker-python-v1.zip
• 事前設定済み Docker(Go)– docker-golang-v1.zip
追加のウェブフレームワーク、ライブラリ、ツールの使用方法を示す複雑なサンプルアプリケーション
は GitHub でオープンソースプロジェクトとして入手できます。
• Does it Have Snakes? - AWS Elastic Beanstalk で実行される Java EE ウェブアプリケーションでの
RDS の使用方法を示す Tomcat アプリケーションです。このプロジェクトでは、サーブレット、
JSP、簡易タグのサポート、タグファイル、JDBC、SQL、Log4J 、ブートストラップ、Jackson、
Elastic Beanstalk 設定ファイルの使用方法を示しています。
• Locust Load Generator - このプロジェクトでは、Java SE プラットフォームの機能を使用して Locust
(Python で書かれた負荷生成ツール)をインストールして実行する方法を示しています。このプロ
ジェクトには、Locust をインストールして定義する設定ファイル、DynamoDB テーブルを設定する
ビルドスクリプト、Locust を実行する Procfile が含まれています。
API Version 2010-12-01
38
AWS Elastic Beanstalk 開発者ガイド
アプリケーションを作成します。
コンソール、CLI、および API を使
用してアプリケーションと環境を管
理および設定する
Abstract
AWS マネジメントコンソール、CLI、および API を使用して、Elastic Beanstalk アプリケーションと環境を管理お
よび設定します。
トピック
• アプリケーションを作成します。 (p. 39)
• アプリケーションバージョンを作成する (p. 40)
• アプリケーションバージョンを削除する (p. 41)
• アプリケーションソースバンドルを作成する (p. 42)
• 環境内のアプリケーションをフィルタリングする (p. 48)
このトピックでは、AWS マネジメントコンソール、CLI、および API を使った使用例を含め、Elastic
Beanstalk の最も重要な機能について詳細に説明します。CLI の詳細については、「Elastic Beanstalk
コマンドラインインターフェイス(EB CLI) (p. 403)」を参照してください。API の詳細については、
AWS Elastic Beanstalk API Reference を参照してください。
アプリケーションを作成します。
Abstract
AWS マネジメントコンソール、コマンドラインインターフェイス(CLI)または API を使用して、新しい Elastic
Beanstalk アプリケーションを作成し、そのアプリケーションバージョンを新しい環境にデプロイします。
AWS マネジメントコンソール、コマンドラインインターフェイス(CLI)、API を使用して新しい
Elastic Beanstalk アプリケーションを作成し、そのアプリケーションバージョンを新しい環境にデプロ
イできます。
API Version 2010-12-01
39
AWS Elastic Beanstalk 開発者ガイド
アプリケーションバージョンを作成する
新しいアプリケーションを作成するには
1.
Elastic Beanstalk コンソールを開きます。
2.
Elastic Beanstalk アプリケーションのナビゲーションバーで、[Create New Application] をクリッ
クします。
アプリケーションの名前と、必要に応じて説明を入力します。次に [Next] をクリックします。
3.
これで完了です。 コンソールは、画面上部のナビゲーションバーに新しいアプリケーションを追加し
ます。 ナビゲーションバーのアプリケーションの名前をクリックすると、環境、アプリケーションの
バージョンとアプリケーション関連の保存された設定を表示します。
新しいアプリケーションを作成した後に、コンソールはこのアプリケーションの環境を作成することを
要求します。 利用できるすべてのオプションについての詳細は、「AWS Elastic Beanstalk 環境を作成
する (p. 53)」を参照してください。 現在の環境で素早くのサンプルアプリケーションを試すためには、
簡単な説明を「サンプルアプリケーションで環境を起動する (p. 54)」からご覧ください。
アプリケーションバージョンを作成する
Abstract
Elastic Beanstalk アプリケーションの新しいバージョンを作成します。
アプリケーションの複数のバージョンを作成することができます。各アプリケーションバージョンは、
一意のファイル(.war ファイルまたは .zip ファイル)と、バージョンに関するコンテキスト情報で構
成されます。このトピックでは、既存の Elastic Beanstalk アプリケーションの新しいバージョンを作
成し、既存の環境にデプロイする方法を説明します。
新しいアプリケーションのバージョンを作成するには
1.
2.
3.
Elastic Beanstalk コンソールを開きます。
アプリケーションを選択します。
ナビゲーションペインで、[Application Versions] を選択します。
4.
[Upload] を選択します。
5.
6.
7.
[Version Label] フィールドにこのバージョンのラベルを入力します。
(オプション)[Description] フィールドにこのバージョンの簡単な説明を入力します。
[Browse] を選択して、アプリケーションバージョン(.war または .zip ファイル)の場所を指定し
ます。
Note
ファイルサイズの上限は 512 MB です。
8.
[Upload] を選択します。
API Version 2010-12-01
40
AWS Elastic Beanstalk 開発者ガイド
アプリケーションバージョンを削除する
指定したファイルがアプリケーションに関連付けられます。アプリケーションのバージョンを、新しい
環境または既存の環境にデプロイできます。詳細については、「AWS Elastic Beanstalk 環境を作成す
る (p. 53)」または「AWS Elastic Beanstalk 環境へのアプリケーションのデプロイ (p. 76)」を参照して
ください。
アプリケーションバージョンを削除する
Abstract
Elastic Beanstalk アプリケーションのバージョンを削除します。
Elastic Beanstalk アプリケーション用のウェブアプリケーションの複数のバージョンを作成できます。
各アプリケーションバージョンは、一意のファイル(WAR ファイルまたは ZIP ファイル)と、バー
ジョンに関するコンテキスト情報で構成されます。このトピックでは、Elastic Beanstalk アプリケー
ションからアプリケーションバージョンを削除する方法を説明します。この作業は、たとえば、ウェブ
アプリケーションのバージョン間の違いをテストするために、以前に複数のアプリケーションバージョ
ンをアップロードしていたが、一部のバージョンが不要になった場合に必要になります。または、AWS
アカウントあたりのアプリケーションバージョン数のデフォルトの上限である 500 個に到達したため
に、この作業が必要になることがあります。
Note
Elastic Beanstalk では、すばやくロールバックできるようにアプリケーションバージョンをアー
カイブしています。アプリケーションバージョンを削除しても、アプリケーションバージョン
がデプロイされている環境は削除されません。また、ダウンタイムが発生することも、実行中
の環境にその他の影響を与えることもありません。
アプリケーションバージョンを削除するには
1.
2.
3.
Elastic Beanstalk コンソールを開きます。
アプリケーションを選択します。
ナビゲーションペインで、[Application Versions] をクリックします。
4.
アプリケーションバージョンのリストで、削除するアプリケーションバージョンの横にあるチェッ
クボックスを選択し、[Delete] をクリックします。
API Version 2010-12-01
41
AWS Elastic Beanstalk 開発者ガイド
ソースバンドルを作成する
5.
6.
7.
[Delete Application Versions] ページで、表示されたバージョンラベルが、削除するアプリケーショ
ンバージョンを表していることを確認します。
(オプション)このアプリケーションバージョンのアプリケーションソースバンドルを Amazon
S3 バケットから削除するには、[Delete versions from Amazon S3] チェックボックスをオンにしま
す。
完了したら、[Delete] をクリックし、[Done] をクリックします。
アプリケーションソースバンドルを作成する
Abstract
Elastic Beanstalk の要件を満たす、圧縮ソースバンドルを作成します。
AWS Elastic Beanstalk コンソールを使用して新しいアプリケーション、またはアプリケーションバー
ジョンをデプロイする場合、ソースバンドルをアップロードする必要があります。ソースバンドルは次
の要件を満たしている必要があります。
• 単一の ZIP ファイルまたは WAR ファイルで構成される(ZIP ファイル内に複数の WAR ファイルを含
めることが可能)
• 512 MB 以下
• 親フォルダまたは最上位ディレクトリを含まない(サブディレクトリを除く)
定期的なバックグラウンドタスクを処理するワーカーアプリケーションをデプロイする場合には、アプ
リケーションソースバンドルに cron.yaml ファイルも含める必要があります。 詳細については、「定
期的なタスク (p. 96)」を参照してください。
Elastic Beanstalk コマンドラインインターフェイス(EB CLI)、AWS Toolkit for Eclipse、または AWS
Toolkit for Visual Studio を使用してアプリケーションをデプロイしている場合、ZIP または WAR ファ
イルが自動的に正しく構造化されます。詳細については、「Elastic Beanstalk コマンドラインインター
フェイス(EB CLI) (p. 403)」、「AWS Elastic Beanstalk で Java アプリケーションを作成してデプロ
イする (p. 591)」、および「AWS Toolkit for Visual Studio (p. 694)」を参照してください。
トピック
• .NET アプリケーションのソースバンドルの作成 (p. 42)
• Mac OS X Finder または Windows エクスプローラでファイルを圧縮する (p. 43)
• コマンドラインからソースバンドルを作成する (p. 46)
• Git を使用してソースバンドルを作成する (p. 47)
• ソースバンドルをテストする (p. 47)
.NET アプリケーションのソースバンドルの作成
AWS Toolkit for Visual Studio に含まれているデプロイツールを使用して .NET アプリケーションを
Elastic Beanstalk にデプロイすることをお勧めします。詳細については、「デプロイツールを使用し
た、.NET 内での Elastic Beanstalk アプリケーションの配置 (p. 694)」を参照してください。
.NET アプリケーションのソースバンドルを手動で作成する必要がある場合は、プロジェクトディレク
トリを含む Zip ファイルを簡単に作成することはできません。Elastic Beanstalk へのデプロイに適し
たプロジェクトのウェブデプロイパッケージを作成する必要があります。デプロイパッケージを作成す
るために使用できる方法にはいくつかあります。
• Visual Studio の Web 発行ウィザードを使用してデプロイパッケージを作成します。詳細について
は、「Visual Studio でウェブデプロイパッケージを作成する方法」を参照してください。
API Version 2010-12-01
42
AWS Elastic Beanstalk 開発者ガイド
Mac OS X Finder または Windows エクスプローラでファ
イルを圧縮する
Important
ウェブデプロイパッケージを作成する場合、[Site name] は Default Web Site で始める必
要があります。
• .NET プロジェクトを用意している場合、次の例に示すように msbuild コマンドを使用してデプロイ
パッケージを作成できます。
Important
DeployIisAppPath パラメータは Default Web Site で始める必要があります。
C:/> msbuild <web_app>.csproj /t:Package /p:DeployIisAppPath="Default Web
Site"
• ウェブサイトプロジェクトを用意している場合、IIS ウェブデプロイツールを使用してデプロイパッ
ケージを作成します。詳細については、Packaging and Restoring a Web siteを参照してください。
Important
apphostconfig パラメータは Default Web Site で始める必要があります。
Mac OS X Finder または Windows エクスプローラで
ファイルを圧縮する
Mac OS X Finder または Windows エクスプローラで ZIP ファイルを作成する場合、親フォルダではな
く、ファイルとサブフォルダを圧縮していることを確認します。
Note
Mac OS X および Linux ベースのオペレーティング システムのグラフィカルユーザーインター
フェイス(GUI)は、ピリオド(.)で始まる名前のファイルとフォルダを表示しません。ZIP
ファイルが、.ebextensions などの隠しフォルダを含める必要がある場合、アプリケーショ
ンの圧縮に、GUI ではなくコマンドラインインターフェイスを使用します。Mac OS X または
Linux ベースのオペレーティング システムで ZIP ファイルを作成するコマンドラインの手順に
ついては、「コマンドラインからソースバンドルを作成する (p. 46)」を参照してください。
API Version 2010-12-01
43
AWS Elastic Beanstalk 開発者ガイド
Mac OS X Finder または Windows エクスプローラでファ
イルを圧縮する
Example
myapp という Python プロジェクトフォルダがあり、そこに次のファイルとサブフォルダが含まれると
します。
myapplication.py
README.md
static/
static/css
static/css/styles.css
static/img
static/img/favicon.ico
static/img/logo.png
templates/
templates/base.html
templates/index.html
上記の要件一覧に示すように、ソースバンドルは親フォルダなしで圧縮し、解凍後の構造には余分な上
位レベルのディレクトリが含まれないようにする必要があります。この例では、ファイルの圧縮時に
myapp フォルダは作成されません(または、コマンドラインで myapp セグメントがファイルパスに追
加されません)。
このサンプルファイル構造はこのトピックを通して使用され、ファイルを圧縮する方法を示します。
Mac OS X Finder でファイルを圧縮するには
1.
最上位のプロジェクトフォルダを開き、そこにあるすべてのファイルとサブフォルダを選択しま
す。最上位フォルダ自体は選択しないでください。
2.
選択したファイルを右クリックし、[Compress X items(X 項目を圧縮)] を選択します。ここで
「X」は選択したファイルとサブフォルダの数を示します。
API Version 2010-12-01
44
AWS Elastic Beanstalk 開発者ガイド
Mac OS X Finder または Windows エクスプローラでファ
イルを圧縮する
Windows エクスプローラでファイルを圧縮するには
1.
最上位のプロジェクトフォルダを開き、そこにあるすべてのファイルとサブフォルダを選択しま
す。最上位フォルダ自体は選択しないでください。
2.
選択したファイルを右クリックし、[Send to(送る)] を選択して、[Compressed (zipped) folder
(圧縮(zip 形式)フォルダー)] を選択します。
API Version 2010-12-01
45
AWS Elastic Beanstalk 開発者ガイド
コマンドラインからソースバンドルを作成する
コマンドラインからソースバンドルを作成する
zip コマンドまたは jar コマンド(Mac OS X または Linux)を使用してソースバンドルを作成する場
合、親フォルダや他の上位レベルのフォルダではなく、ソースファイルと同じディレクトリで作業する
ほうがよいでしょう。これにより、圧縮したアーカイブのファイルパスに余分な親フォルダが含まれな
くなります。Mac OS X および Linux ベースのオペレーティング システムは、ピリオド(.)で始まる
名前のファイルとフォルダを表示しません。次のコマンドを使用して、ソースバンドルが .ebextensions
などのピリオド(.)で始まる名前のフォルダを含んでいることを確認します。
Example
$ zip ../myapp.zip -r * .[^.]*
$ jar -cvf mywebapp.war *
API Version 2010-12-01
46
AWS Elastic Beanstalk 開発者ガイド
Git を使用してソースバンドルを作成する
Git を使用してソースバンドルを作成する
Git を使用してアプリケーションのソースコードを管理している場合、archive コマンドを使用して
ソースバンドルを作成することができます。
最新の Git コミットをバンドルする
•
現在のブランチで最新の Git コミットの ZIP アーカイブを作成するには、次のコマンドを入力する
か、Git クライアントからコマンドを発行して、<myapp> を任意のアーカイブ名に置き換えます。
$ git archive --format=zip HEAD > <myapp>.zip
詳細については、git-archive のマニュアルのページを参照してください。
ソースバンドルをテストする
ソースバンドルを Elastic Beanstalk にアップロードする前に、ローカルでテストする必要があります。
Elastic Beanstalk は基本的にファイルの抽出にコマンドラインを使用するため、GUI ツールではなくコ
マンドラインからテストを実行することをお勧めします。
Mac OS X または Linux でのファイル抽出をテストするには
1.
ターミナルウィンドウ(Mac OS X)を開くか Linux サーバーに接続します。ソースバンドルを含
むディレクトリに移動します。
2.
unzip または jar xf コマンドを使用して、アーカイブを解凍します。
3.
解凍されたファイルが、新しい上位フォルダまたはディレクトリではなく、アーカイブ自体がある
フォルダに表示されていることを確認します。
API Version 2010-12-01
47
AWS Elastic Beanstalk 開発者ガイド
アプリケーションのフィルタリング
Note
Mac OS X Finder を使用してアーカイブを圧縮する場合、アーカイブ自体を構成した方法
に関係なく、新しい上位フォルダが作成されます。最適な方法として、コマンドラインを
使用します。
Windows でのファイル抽出をテストするには
1.
圧縮ファイルをコマンドラインから抽出できるプログラムをダウンロードまたはインストールしま
す。たとえば、無料の unzip.exe プログラムを http://stahlforce.com/dev/index.php?tool=zipunzip
からダウンロードできます。
2.
必要であれば、ソースバンドルのあるディレクトリに実行可能ファイルをコピーします。システム
全体におよぶツールをインストールしている場合は、このステップをスキップできます。
適切なコマンドを使用して、アーカイブを解凍します。ステップ 1 のリンクを使用して unzip.exe
をダウンロードした場合は、コマンドは unzip <archive-name> となります。
3.
4.
解凍されたファイルが、新しい上位フォルダまたはディレクトリではなく、アーカイブ自体がある
フォルダに表示されていることを確認します。
環境内のアプリケーションをフィルタリングする
Abstract
たとえば、1 つの環境に多数のアプリケーションをデプロイした場合、環境にデプロイされたすべての Elastic
Beanstalk アプリケーションの一覧をフィルタリングします。
1 つの環境にデプロイしたすべての Elastic Beanstalk アプリケーションの一覧をフィルタリングするこ
とができます。これは、たとえば 1 つの環境に多数のアプリケーションをデプロイした場合に役立ちま
す。AWS マネジメントコンソール は、環境の Elastic Beanstalk アプリケーションを迅速に検索するこ
とができます。同時にアプリケーションを検索できる環境は 1 つのみです。
環境内のアプリケーションの一覧をフィルタリングするには
1.
2.
Elastic Beanstalk コンソールを開きます。
リージョンリストから、作業対象の環境が含まれたリージョンを選択します。
3.
Elastic Beanstalk の[All Applications] ページで、[Filter by Application Name] をクリックします。
4.
検索するアプリケーションの名前の一部またはすべてを入力します。
入力すると、検索クエリのテキストを含む名前のアプリケーション一覧が Elastic Beanstalk に動的に
表示されます。
API Version 2010-12-01
48
AWS Elastic Beanstalk 開発者ガイド
環境を管理する
Abstract
Elastic Beanstalk コンソールを使用して、Elastic Beanstalk アプリケーション環境が使用する AWS リソースのプ
ロビジョンと設定の方法を保存または変更します。
AWS Elastic Beanstalk では、アプリケーションの新しい環境の作成がより簡単になります。開発、テ
スト、本稼働用に個別の環境を用意し、いずれの環境にもアプリケーションの任意のバージョンをデプ
ロイ (p. 76)できます。長時間実行される環境でも一時的な環境でも作成でき、環境を終了するときに
その設定を保存して、後日に再現できます。
アプリケーションを開発するときはよく、目的別に異なる環境にデプロイすることがあります。Elastic
Beanstalk では、デプロイの実行方法を設定 (p. 77)できます。お客様の環境のすべてのインスタンスに
一度にデプロイしたり、デプロイをバッチに分割してローリングデプロイしたりできます。
設定変更 (p. 82)は、デプロイとは別に処理され、独自の適用範囲があります。たとえば、アプリケー
ションを実行している EC2 インスタンスのタイプを変更する場合は、インスタンスのすべてを置き換
える必要があります。一方、環境のロードバランサーの設定を変更する場合、その変更は、サービスを
中断したり容量を減らしたりすることなく、インプレースで行えます。お客様の環境内のインスタンス
に影響を与える設定変更は、設定のローリング更新 (p. 82)によりバッチ単位で適用することもできま
す。
Note
Elastic Beanstalk に用意されたメカニズムを使用して、お客様の環境内のリソースのみを変更
します。別のサービスのマネジメントコンソール、CLI コマンド、または SDK を使用してリ
ソースを変更した場合、Elastic Beanstalk では、これらのリソースの状態を正確にモニタリン
グしたり、設定を保存したり、後日に環境を確実に再現したりはできません。本稼働環境外の
変更によっても、環境を終了しようとするときに問題が発生する場合があります。
環境を起動すると、お客様がその時点で選択しているプラットフォームの設定に関連付けられます。プ
ラットフォームの設定はパフォーマンスの向上と新機能の提供のために定期的に更新されます。いつで
もお客様の環境を最新のプラットフォームの設定に更新 (p. 86)できます。
アプリケーションが複雑になるにつれて、複数のコンポーネントに分割して、各コンポーネントが個別
の環境で実行されるようにできます。長時間実行されるワークロードの場合、Amazon Simple Queue
Service (Amazon SQS) キューからのジョブを処理するワーカー環境 (p. 92)を起動できます。
トピック
API Version 2010-12-01
49
AWS Elastic Beanstalk 開発者ガイド
環境マネジメントコンソール
• AWS Elastic Beanstalk 環境マネジメントコンソール (p. 50)
• AWS Elastic Beanstalk 環境を作成する (p. 53)
• AWS Elastic Beanstalk 環境へのアプリケーションのデプロイ (p. 76)
• 設定変更 (p. 82)
• Elastic Beanstalk 環境のプラットフォームバージョンの更新 (p. 86)
• 環境設定の更新およびアプリケーションのデプロイのキャンセル (p. 89)
• 環境タイプ (p. 90)
• ワーカー環境 (p. 92)
AWS Elastic Beanstalk 環境マネジメントコンソー
ル
Abstract
AWS マネジメントコンソール の AWS Elastic Beanstalk 環境ページから、環境を管理します。
AWS マネジメントコンソール では、ご使用の AWS Elastic Beanstalk 環境ごとに管理ページが用意さ
れます。このページから、環境の設定を管理し、環境で実行されているウェブサーバーの再起動、環境
のクローン作成、最初から再構築など、一般的なアクションを実行することができます。
トピック
• 環境ダッシュボード (p. 51)
• 環境マネジメントのアクション (p. 52)
環境マネジメントコンソールにアクセスするには、ご使用のリージョンの Elastic Beanstalk コンソー
ルを開いて、実行中の環境の名前をクリックします。環境は、関連アプリケーションの下に色分けされ
たタイルとして表示されます。色(緑色、灰色、または赤色)は、環境の状態を示します。
API Version 2010-12-01
50
AWS Elastic Beanstalk 開発者ガイド
環境ダッシュボード
環境コンソールの上部には、アプリケーション名に続けて、環境名、実行中のアプリケーションのパブ
リック DNS 名が表示されます。
環境ダッシュボード
環境マネジメントコンソールのメインビューは、ダッシュボードです。
環境マネジメントダッシュボードには概要が表示され、環境の状態、アプリケーションバージョン、使
用中のプラットフォームに関する情報、環境によって生成された最新のイベントのリストを確認できま
す。
[Refresh] をクリックすると、表示されている情報が更新されます。概要には、以下の情報とオプショ
ンが含まれます。
ヘルスケア
環境全体の状態。拡張ヘルスレポートとモニタリング (p. 263) を有効にすると、環境のステータスが
[Causes] ボタンと共に表示されます。このボタンをクリックすると、現在のステータスに関する詳細
が表示されます。
基本ヘルスレポート (p. 259) 環境の場合、モニタリングコンソール (p. 256)へのリンクが表示されます。
実行バージョン
環境で実行されているアプリケーションバージョンの名前。[Upload and Deploy] をクリックすると、
ソースバンドル (p. 42)をアップロードし、環境にデプロイすることができます。このオプションによ
り、新しいアプリケーションバージョンが作成されます。
設定
ご使用の環境で実行されているアーキテクチャ、OS バージョン、プラットフォームを表示します。
[Change] をクリックして、別の設定を選択します。このオプションは、互換性のある別のバージョン
のプラットフォームが利用できる場合にのみ使用できます。互換性があるとみなされるためには、アー
キテクチャ、OS 名、プラットフォーム名が同じである必要があります。
このオプションを使用してプラットフォームのバージョンを更新すると、環境で実行されているインス
タンスが新しいインスタンスで置き換えられます。
API Version 2010-12-01
51
AWS Elastic Beanstalk 開発者ガイド
環境マネジメントのアクション
Note
Beanstalk を初めて使用するときは、各プラットフォームの最新バージョンのみが使用できま
す。オペレーティングシステムまたはプラットフォームの新バージョンがリリースされて初め
て、[Change] を使用できるようになります。アップグレード後は、前のバージョンに戻すこと
もできます。
最近のイベント
環境マネジメントダッシュボードの [Recent Events] セクションには、環境で発生した最新のイベント
が表示されます。このリストは、環境が更新されるときにリアルタイムで更新されます。
[Show All] をクリックすると、[Events] メニューが開きます。
環境マネジメントのアクション
環境マネジメントコンソールには、[Actions] ドロップダウンメニューがあり、環境で一般的な操作を実
行するのに使用できます。このメニューは、[Create New Environment] オプションの下にある環境ヘッ
ダーの右側に表示されます。
Note
一部のアクションは、特定の条件下でのみ使用できるため、条件が満たされていない場合は灰
色で表示されます。
設定のロード
以前に保存した設定をロードします。設定はアプリケーションに保存されており、関連付けられた環境
にロードできます。環境の設定に変更を加えた場合、保存された設定をロードすることで、それらの変
更を元に戻すことができます。同じアプリケーションを実行している別の環境から保存した設定をロー
ドして、環境間で設定を伝達することができます。
設定の保存
環境の現在の設定をアプリケーションに保存します。環境の設定に変更を加える前に、必要に応じて後
でロールバックできるように、現在の設定を保存します。新しい環境を起動するときに、保存された設
定を適用することもできます。
環境 URL のスワップ
現在の環境の CNAME を新しい環境とスワップします。CNAME をスワップした後は、その環境の URL
を使用するアプリケーションへのすべてのトラフィックが新しい環境に送られます。新しいバージョン
のアプリケーションをデプロイする準備ができたら、新しいバージョンで別の環境を起動できます。新
しい環境でリクエストを受け取る準備ができたら、CNAME のスワップを実行することで、サービスを
中断せずに新しい環境へのトラフィックのルーティングを開始できます。詳細については、「AWS
Elastic Beanstalk を使用した Blue-Green Deployment (p. 79)」を参照してください。
環境のクローンを作成する
現在実行中の環境と同じ設定で、新しい環境を起動します。
API Version 2010-12-01
52
AWS Elastic Beanstalk 開発者ガイド
環境の作成
最新のプラットフォームを使用してクローンを作成する
使用中のアプリケーションプラットフォームの最新バージョンを使用して、現在の環境のクローンを作
成します。このオプションは、現在の環境のプラットフォームについて新しいバージョンが利用可能な
場合にのみ使用できます。
現在のオペレーションを中止する
進行中の環境の更新を停止します。操作を中止すると、操作の進行度合いによって、環境内のインスタ
ンスの一部が他のインスタンスと異なる状態になる可能性があります。このオプションは、環境が更新
中である場合にのみ使用できます。
アプリサーバーの再起動
環境内のインスタンスで実行されているウェブサーバーを再起動します。このオプションでは、AWS
リソースの終了または再起動は行われません。無効なリクエストへの応答中に環境の動作がおかしく
なった場合、根本原因のトラブルシューティングを行う間、アプリケーションサーバーを再起動するこ
とで、機能が一時的に回復する可能性があります。
環境の再構築
実行中の環境のすべてのリソースを終了し、同じ設定で新しい環境を構築します。この操作は、新しい
環境を一からデプロイするのと同様、数分かかります。環境のデータ層で実行されている RDS インス
タンスがある場合、再構築時に削除されます。そのデータが必要な場合は、スナップショットを作成し
ます。RDS コンソールで手動でスナップショットを作成するか、インスタンスを削除する前にスナッ
プショットを自動的に作成するように、データ層の削除ポリシーを設定することができます(後者は
データ層を作成するときのデフォルトの設定です)。
環境の終了
実行中の環境のすべてリソースを終了し、アプリケーションから環境を削除します。データ層で実行さ
れている RDS インスタンスがあり、そのデータを維持する必要がある場合は、環境を終了する前にス
ナップショットが作成されたことを確認します。RDS コンソールで手動でスナップショットを作成す
るか、インスタンスを削除する前にスナップショットを自動的に作成するように、データ層の削除ポリ
シーを設定することができます(後者はデータ層を作成するときのデフォルトの設定です)。
AWS Elastic Beanstalk 環境を作成する
Abstract
例えば、開発、統合、および本番の環境があり、Elastic Beanstalk アプリケーションのバージョンを複数実行する
必要がある場合は、複数の環境をデプロイします。
アプリケーションの複数のバージョンを実行する必要がある場合は、複数の環境をデプロイできます。
例えば、開発環境、統合環境、本番環境などが共存する場合です。
Important
環境を作成した後、環境 URL がパブリックにアクセス可能になります。
EB CLI を使用した環境を作成および管理する手順については、EB CLI による Elastic Beanstalk 環境の
管理 (p. 413)を参照してください。
API Version 2010-12-01
53
AWS Elastic Beanstalk 開発者ガイド
コンソールの迅速な起動
サンプルアプリケーションで環境を起動する
Abstract
サンプルアプリケーションまたはソースバンドルで環境を作成します。
AWS マネジメントコンソール の Create New Environment ウィザードは、Elastic Beanstalk がユーザー
のためにデプロイするリソースを設定するための一連のオプションを使用して、環境の作成方法につい
て順を追って説明します。開始したばかりであれば、これらのオプションの多数にはデフォルト値を問
題なく使用できます。
Note
環境を作成するには、Elastic Beanstalk フルアクセス管理ポリシーのアクセス許可が必要です。
詳細については、「Elastic Beanstalk ユーザーポリシー (p. 23)」を参照してください。
ソースバンドルで提供されているデフォルトアプリケーション、サンプルアプリケーション、または固
有のソースバンドルを実行する新しい環境を起動するには、この手順に従って操作します(ZIP または
WAR ファイル)。これらの手順は、環境の起動と実行を迅速化するために単純化されています。詳細
な手順と使用可能なすべてのオプションについては、「AWS Elastic Beanstalk 環境を作成する (p. 53)」
を参照してください。
サンプルアプリケーションを使用して環境を起動するには(コンソール)
1.
2.
3.
Elastic Beanstalk コンソールを開きます。
アプリケーションを選択するか、新しいアプリケーションを作成 (p. 39)します。
右上隅で、[Create a New Environment] を選択します。
Note
環境の作成ウィザードで次の画面が表示された場合は、AWS Quick Start Guide: Web App
Deployment を参照してください。
4.
5.
[Create web server] を選択します。
[Predefined configuration] ドロップダウンメニューから、アプリケーションで使用されるプラット
フォームに一致するプラットフォームを選択します。
Note
Elastic Beanstalk は、リストされたほとんどのプラットフォームで複数の設定 (p. 25)をサ
ポートします。アプリケーションで使用される言語、フレームワーク、ウェブコンテナの
バージョンがデフォルト設定と一致しない場合、[Change Platform Version] を選択して別
の設定を選択します。
6.
7.
8.
[Next] を選択します。
[Application Version] では、[Existing application version] の下の [Sample Application] を選択する
か、[Upload your own] を選択して、アプリケーションソースバンドルをアップロードします。[Next]
を選択します。
環境の [Environment name] と URL プレフィックスを入力し、[Next] を選択します。
9.
アプリケーションがデータベースを必要としている場合、[Create an RDS DB Instance] を選択し
ます。
10. [Next] を選択します。
API Version 2010-12-01
54
AWS Elastic Beanstalk 開発者ガイド
New Environment Wizard
11. [Configuration Details(構成の詳細)] については、[Instance type(インスタンスタイプ)] を
t2.micro に設定して、[EC2 key pair](オプション)を選択して [Next(次へ)] を選択します。
キーペアを割り当てることで、デバッグ環境のインスタンスに接続することができます。
Note
以前にキーペアを使用したことがない場合は、『Linux インスタンス用 Amazon EC2 ユー
ザーガイド』の「Amazon EC2 キーペア」を参照してください。
12. [Next(次へ)] を選択して、タグの作成を省略します。
13. [Permissions] ページで、[Next] を選択します。デフォルトのインスタンスプロファイルとサービ
スロール (p. 19)がない場合は、Elastic Beanstalk によって自動的に作成されます。
14. 環境にデータベースを追加した場合は、ユーザー名とパスワードを入力した後、[Next] を選択しま
す。
15. [Launch] を選択します。
Elastic Beanstalk が環境を作成している間に、ユーザーは AWS Elastic Beanstalk 環境マネジメントコ
ンソール (p. 50) にリダイレクトされます。環境の状態が緑色に切り替わったら、環境名の横の URL を
クリックして実行中のアプリケーションを表示します。
トピック
• New Environment Wizard (p. 55)
• 環境のクローンを作成する (p. 63)
• 環境を終了する (p. 66)
• AWS CLI を使用した Elastic Beanstalk 環境の作成 (p. 68)
• API を使用した Elastic Beanstalk 環境の作成 (p. 69)
• 「Launch Now URL」の作成 (p. 72)
• AWS Elastic Beanstalk 環境グループを作成・更新する (p. 74)
New Environment Wizard
Abstract
Elastic Beanstalk マネジメントコンソールで環境を作成します。
新しい環境を起動するには
1.
2.
3.
Elastic Beanstalk コンソールを開きます。
リージョンリストから、作業するアプリケーションのリージョンを選択します。
Elastic Beanstalk コンソールアプリケーションページで、新しい環境で起動するアプリケーション
の [Actions] をクリックします。
API Version 2010-12-01
55
AWS Elastic Beanstalk 開発者ガイド
New Environment Wizard
4.
5.
[Launch New Environment] をクリックします。
[New Environment] ページで、環境枠を選択します。環境枠の設定では、[Web Server] 枠または
[Worker] 枠のどちらが必要かを指定します。詳細については、「アーキテクチャの概要 (p. 16)」
を参照してください。
Note
環境を起動した後は、環境枠は変更できません。アプリケーションで別の環境枠が必要な
場合、新しい環境を起動する必要があります。
6.
前のステップで、[Create an IAM role and instance profile] をクリックした場合は、[View Details]
をクリックしてロールのオプションを表示してから、次のいずれかを実行します。
• 既存ロールにワーカーアプリケーションのデフォルトのアクセス権限を追加するには、[IAM Role]
をクリックしてロールのポリシーを追加するインスタンスプロファイルの名前をクリックし、次
に [Allow] をクリックします。[Allow] をクリックする前に、オプションで [Policy Name] をクリッ
クし次にポリシー名をクリックして、保存されているポリシーを既存ロールに関連付けることも
できます。
• デフォルトのアクセス権限を持つ新しいロールを作成するには、[Allow] をクリックします。オ
プションで [Role Name] の変更やポリシードキュメントの編集ができます。
7.
[Environment Type] ページで、プラットフォームおよび環境タイプを選択し、[Next] をクリックし
ます。
• [Predefined configuration] の設定では、環境で使用されるプラットフォームとバージョンを指定
します。詳細については、「サポートされているプラットフォーム (p. 25)」を参照してくださ
い。
Note
指定した設定で環境を起動した後は、その設定を変更することはできません。アプリ
ケーションで別の設定が必要な場合、新しい環境を起動する必要があります。
• [Saved configuration] の設定では、このアプリケーションに対して既に保存したすべての環境設
定が一覧表示されます(環境設定が存在する場合)。このアプリケーションに対して保存した設
定がない場合、Elastic Beanstalk ではコンソールにこのオプションが表示されません。
• [Environment type] では、環境が負荷分散型オートスケーリングであるか、単一の Amazon EC2
インスタンスのみであるかを指定します。詳細については、「環境タイプ (p. 90)」を参照して
ください。
8.
[Application Version] ページでは、サンプルアプリケーションの使用、独自のアプリケーションの
アップロード、アプリケーションコードを含んでいる Amazon S3 バケットの URL の指定を行う
ことができます。
Note
選択したプラットフォーム設定に応じて、ZIP ソースバンドル (p. 42)、WAR ファイル、
またはプレーンテキストの Docker 設定にアプリケーションをアップロードできます。ZIP
ファイル内に複数の WAR ファイルを含めて、複数の Tomcat アプリケーションを環境内の
各インスタンスにデプロイすることができます。ファイルサイズの上限は 512 MB です。
9.
負荷分散型オートスケーリング環境の場合のみ、後でアプリケーションバージョンを環境にデプロ
イするときに、ダウンタイムを制御することもできます。[Batch size] の横にある [Percentage] ま
API Version 2010-12-01
56
AWS Elastic Beanstalk 開発者ガイド
New Environment Wizard
たは [Fixed] をクリックします。任意の時点で新しいアプリケーションバージョンをデプロイする
際のデプロイ先となるインスタンスの割合または一定数を入力して、[Next] をクリックします。
10. [Environment Information] ページで、環境の詳細を入力します。
a.
ウェブサーバー環境枠について:
• 環境の名前を入力します。
• 一意の環境 URL を入力します。環境 URL には環境名を利用して入力されていますが、URL
に別の名前を入力することができます。Elastic Beanstalk は、この名前を使用して、環境の
一意の CNAME を作成します。[Check Availability] をクリックして、URL が使用可能かどう
かを確認できます。
• (オプション)この環境の説明を入力します。
• [Next] を選択します。
b.
ワーカー環境枠について:
• 環境の名前を入力します。
• (オプション)この環境の説明を入力します。
• [Next] を選択します。
11. (オプション)[Additional Resources] ページでは、環境用の追加リソースを選択できます。その
後で [Next] をクリックします。次の点に注意してください。
• レガシーコンテナタイプ以外を使用してアプリケーションを作成している場合は、Amazon RDS
データベースを関連付けることもできます。Amazon RDS DB をこのアプリケーションに関連付
ける場合、[Create an RDS Database with this environment] を選択します。Amazon RDS の詳
細については、「Amazon Relational Database Service(Amazon RDS)」を参照してください。
Amazon RDS データベースを取り込むオプションを使用できるコンテナタイプの詳細なリスト
については、「サポートされているプラットフォーム (p. 25)」を参照してください。
Note
レガシーコンテナタイプを使用している場合、Amazon RDS オプションは表示されませ
ん。サポートされているレガシーコンテナタイプのリストについては、「いくつかのコ
ンテナタイプがレガシーとマークされている理由 (p. 86)」を参照してください。レガ
シーコンテナタイプを使用したデータベースの設定の詳細については、「Elastic Beanstalk
でデータベースを設定する (p. 209)」を参照してください。
• レガシーコンテナタイプ以外を使用してアプリケーションを作成している場合は、VPC 内に環
境を作成することもできます。それには、[Create this environment inside a VPC] を選択します。
Amazon VPC については、「Amazon Virtual Private Cloud(Amazon VPC)」を参照してくだ
さい。サポートされているレガシーコンテナタイプのリストについては、「いくつかのコンテナ
タイプがレガシーとマークされている理由 (p. 86)」を参照してください。
12. 環境の詳細を設定し、[Next] をクリックします。
API Version 2010-12-01
57
AWS Elastic Beanstalk 開発者ガイド
New Environment Wizard
• [Instance type] に、Elastic Beanstalk 環境で使用できるインスタンスタイプが表示されます。ア
プリケーションに最適な特性(メモリサイズや CPU 能力など)を持つサーバーを選択します。
Note
Elastic Beanstalk は無料ですが、プロビジョニングする AWS リソースは有料の場合が
あります。Amazon EC2 の使用料についての詳細は、Amazon EC2 料金表を参照してく
ださい。
Elastic Beanstalk 環境で使用可能な Amazon EC2 インスタンスタイプの詳細については、Linux
インスタンス用 Amazon EC2 ユーザーガイド の「Instance Families and Types」を参照してく
ださい。
• [EC2 key pair] を選択して、環境のインスタンスへの SSH または RDP アクセスを有効にしま
す。Amazon EC2 キーペアに関する詳細は、Linux インスタンス用 Amazon EC2 ユーザーガイ
ド の 「Using Credentials」を参照してください。
• 環境から出力される重要なイベントについての通知を受信する [Email address] を指定します。
詳細については、「Elastic Beanstalk で Amazon SNS 通知を設定する (p. 213)」を参照してくだ
さい。
• 負荷分散、オートスケーリング環境、[Application health check URL]、[Cross-zone load
balancing]、[Connection draining]、[Connection draining timeout] では、ロードバランサーの動
作を設定することができます。詳細については、「Elastic Beanstalk 環境のロードバランサーの
設定 (p. 205)」を参照してください。
• [Enable rolling updates] では、インスタンスの更新または交換方法を管理するオプションを指定
します。詳細については、「ローリング更新によって Elastic Beanstalk 環境を更新する (p. 82)」
を参照してください。
• [Root volume type] には、Amazon EBS により提供されるストレージボリュームの種類が表示さ
れます。このストレージボリュームは、Elastic Beanstalk 環境内の Amazon EC2 インスタンス
API Version 2010-12-01
58
AWS Elastic Beanstalk 開発者ガイド
New Environment Wizard
にアタッチできます。必要なパフォーマンスと価格の要件を満たすボリュームタイプを選択しま
す。詳細については、「Amazon EBS ボリュームタイプ」および「Amazon EBS 製品の詳細」
を参照してください。
• [Root volume size] では、選択したストレージボリュームのサイズを指定できます。[Provisioned
IOPS (SSD)] をインスタンスで使用するルートボリュームタイプとして選択した場合、目的の
ルートボリュームのサイズを指定する必要があります。他のルートボリュームの場合、独自の値
を指定しないと、Elastic Beanstalk ではストレージボリュームタイプに対してデフォルトのボ
リュームサイズを使用します。デフォルトのボリュームサイズは、環境のベースとなるソリュー
ションスタックの AMI によって異なります。プロビジョンド IOPS(SSD)ルートボリュームで
は、ギビバイトの最小数は 10 であり、最大数は 1024 になります。他のルートボリュームでは、
ギビバイトの最小数は 8 であり、最大数は 1024 になります。
• [Provisioned IOPS (SSD)] をルートボリュームタイプとして選択した場合、1 秒あたりの目的の
入出力オペレーション数(IOPS)を指定する必要があります。最小値は 100 で、最大値は 4000
です。IOPS とボリュームサイズとの比率は最大で 30:1 です。たとえば、3000 IOPS のボリュー
ムのサイズは 100 GiB 以上である必要があります。
13. (オプション)[Environment Tags] ページで、環境用のタグを作成し、[Next] をクリックします。
タグキーとタグ値の制限は次のとおりです。
• キーと値には、任意の言語のアルファベット文字、数字、空白、表示されない区切り文字、記号
(_)を使用できます。: / = + \ - @
• キーの長さは最大 128 文字です。値の長さは最大 256 文字です。
• キーと値は大文字と小文字が区別されます。
• 値と環境名を同じすることはできません。
• 値に aws: または elasticbeanstalk: を含めることはできません。
タグの使用の詳細については、『Linux インスタンス用 Amazon EC2 ユーザーガイド』の「Amazon
EC2 リソースにタグを付ける」を参照してください。
14. [Permissions] ウィンドウで、[instance profile (p. 21)] と [service role (p. 20)] を選択します。 イン
スタンスプロファイルは、AWS にアクセスするための権限を環境内の EC2 インスタンスに付与し
ます。サービスロールは、環境内のリソースを管理するための Elastic Beanstalk 権限を付与しま
す。ワーカー環境枠では、ウェブサーバー環境枠とは異なるアクセス権限が必要です。詳細につい
ては、「サービスロール、インスタンスプロファイル、ユーザーポリシー (p. 19)」を参照してく
ださい。
API Version 2010-12-01
59
AWS Elastic Beanstalk 開発者ガイド
New Environment Wizard
カスタムインスタンスプロファイルとサービスロールを作成している場合は、ドロップダウンメ
ニューからそれらを選択します。作成していない場合は、[Next] をクリックしてデフォルトのロー
ルを使用します。
Elastic Beanstalk コンソールは、aws-elasticbeanstalk-ec2-role インスタンスプロファイ
ルと aws-elasticbeanstalk-service-role というサービスロールを探します。これらのロー
ルが無い場合は、コンソールはこれらを作成するように求めます。プロンプトに従ってデフォルト
のインスタンスプロファイルとサービスロールを作成します。
15. ワーカー環境枠を作成している場合、[Worker Details] ページで、次の予備的なワーカー環境枠詳
細を設定します。続いて、[Next] を選択します。[Next] をクリックしてデフォルト値を受け入れる
こともできます。
• [Worker queue ] では、ワーカー環境枠が処理するメッセージをどのキューから読み取るかを指
定します。値を入力しない場合、Elastic Beanstalk が自動的に作成します。
• [HTTP path] では、キューから生成されたメッセージを HTTP POST リクエストの形式で転送す
る、ローカルホスト上の相対パスを指定します。
• [MIME type] では、HTTP POST リクエストで送信するメッセージの MIME タイプを指定します。
• [HTTP connections] では、アプリケーションへの同時接続の最大数を指定します。この値は、ア
プリケーションが並列で処理できるプロセスメッセージやスレッドメッセージの数に設定しま
す。
• [Visibility timeout] では、受信メッセージが処理のためにロックされてからキューに返されるまで
の時間を指定します。この値は、メッセージの処理で必要になると考えられる最長時間に設定し
ます。
16. 環境設定プロセスで、Amazon RDS DB を関連付けるように既に選択してある場合、[RDS
Configuration] ページで Amazon RDS 設定を指定し、[Next] をクリックします。
Note
レガシーコンテナタイプを使用している場合、Elastic Beanstalk で Amazon RDS を使用
することはできません。Elastic Beanstalk では、レガシーコンテナタイプを使用して環境
を作成するときに [RDS Configuration] ページが表示されません。レガシーコンテナタイプ
を使用したデータベースの設定の詳細については、「Elastic Beanstalk でデータベースを
設定する (p. 209)」を参照してください。
API Version 2010-12-01
60
AWS Elastic Beanstalk 開発者ガイド
New Environment Wizard
• (オプション)[Snapshot] で、既存のスナップショットから Amazon RDS DB を作成するかど
うかを選択します。
• (オプション)[DB engine] で、データベースエンジンを選択します。
• (オプション)[Instance class] で、データベースインスタンスクラスを選択します。DB インス
タンスクラスの詳細については、http://aws.amazon.com/rds/ を参照してください。
• [Allocated Storage] で、データベースに必要な容量を入力します。5 GB~1024 GB を割り当て
ることができます。設定すると、データベースの割り当て済みストレージを小さい容量に更新す
ることはできません。場合によっては、DB インスタンスに、データベースのサイズ以上のスト
レージを割り当てると、IO のパフォーマンスが改善することがあります。ストレージの割り当
ての詳細については、「Features」を参照してください。
• [Master Username] に、すべてのデータベース権限を持って DB インスタンスにログインするた
めに使用する名前を英数字で入力します。
• [Master Password] に、8~16 文字の印刷可能な ASCII 文字(/、\、@ は除く)を含むパスワー
ドを入力します。
• [Deletion Policy] で、[Create snapshot] を選択し、後で別の Amazon RDS データベースを作成
するために使用できるスナップショットを作成できます。環境を終了するときに DB インスタン
スを削除するには、[Delete] を選択します。[Delete] を選択した場合、関連付けられた Elastic
Beanstalk インスタンスを終了すると、DB インスタンスとその中のすべてのデータが失われま
す。デフォルトでは、Elastic Beanstalk によりスナップショットが作成されて保存されます。ス
ナップショットを使用すると、データを復元して新しい環境で使用できます。スナップショット
がないと、失われたデータを復元できません。
Note
データベースのスナップショットを保存するときに料金が発生する場合があります。詳
細については、Amazon RDS 料金表の「バックアップストレージ」セクションを参照し
てください。
• [Availability] で、次のいずれかを選択します。
• 1 つのアベイラビリティーゾーンでデータベースを設定するには、[Single Availability Zone] を
選択します。1 つのアベイラビリティーゾーンで起動されたデータベースインスタンスは、1
つの場所で障害が発生しても保護されません。
API Version 2010-12-01
61
AWS Elastic Beanstalk 開発者ガイド
New Environment Wizard
• 複数のアベイラビリティーゾーンでデータベースを設定するには、[Multiple Availability Zones]
を選択します。複数のアベイラビリティーゾーンでデータベースインスタンスを実行すること
により、データベースインスタンスコンポーネントの障害、1 つのアベイラビリティーゾーン
でのサービス障害など、予期せぬイベントが発生したときに、お客様のデータを保護すること
ができます。
17. 環境作成プロセスで、VPC 内に環境を作成するように既に選択してある場合、VPC 設定を指定
し、[Next] をクリックします。
Note
レガシーコンテナタイプを使用している場合、Elastic Beanstalk で Amazon VPC を設定で
きません。Elastic Beanstalk では、レガシーコンテナタイプを使用して環境を作成すると
きに [VPC Configuration] ページが表示されません。
• 環境を起動する VPC の VPC ID を選択します。
Note
VPC 情報が表示されない場合、環境を起動するリージョンと同じリージョンに VPC を
作成していません。VPC を作成する方法については、「Amazon VPC で Elastic Beanstalk
を使用する (p. 319)」を参照してください。
• ロードバランシングでオートスケーリングの環境では、Elastic Load Balancing ロードバランサー
と Amazon EC2 インスタンスのサブネットを選択します。単一パブリックサブネットを作成し
た場合は、[Associate Public IP Address] チェックボックスをオンにし、ロードバランサーと
Amazon EC2 インスタンスのチェックボックスをオンにする必要があります。パブリックサブ
ネットとプライベートサブネットを作成した場合、ロードバランサー(パブリックサブネット)
と Amazon EC2 インスタンス(プライベートサブネット)が正しいサブネットと関連付けられ
ていることを確認してください。Amazon VPC のデフォルトでは、10.0.0.0/24 を使用するデフォ
ルトパブリックサブネットと 10.0.1.0/24 を使用するプライベートサブネットを作成します。既
API Version 2010-12-01
62
AWS Elastic Beanstalk 開発者ガイド
環境のクローンを作成する
存のサブネットは https://console.aws.amazon.com/vpc/ の Amazon VPC コンソールで表示でき
ます。
• 単一インスタンス環境では、Amazon EC2 インスタンスのパブリックサブネットを選択します。
デフォルトでは、Amazon VPC は 10.0.0.0/24 を使用してデフォルトのパブリックサブネットを
作成します。既存のサブネットは https://console.aws.amazon.com/vpc/ の Amazon VPC コン
ソールで表示できます。
• Amazon RDS を使用している場合は、異なるアベイラビリティーゾーンで少なくとも 2 つのサ
ブネットを選択する必要があります。VPC のサブネットを作成する方法の詳細は、Amazon VPC
ユーザーガイド の「Task 1: Create the VPC and Subnets」を参照してください。
• VPC 設定で NAT デバイスを使用している場合は、インスタンス用に作成したセキュリティグ
ループを選択します。詳細については、「インスタンスのセキュリティグループを作成す
る (p. 329)」を参照してください。NAT デバイスを使用していない場合やセキュリティグループ
を作成していない場合は、デフォルトのセキュリティグループを使用できます。
• ロードバランシングでオートスケーリングの環境では、ロードバランサーを外部にするか内部に
するかを選択します。ロードバランサーをインターネットで使用できないようにする場合は、
[Internal] を選択します。
18. [Review Information] ページで、アプリケーションと環境の情報を確認し、[Launch] をクリックし
ます。
Elastic Beanstalk は、新しい環境でアプリケーションを起動します。Elastic Beanstalk が AWS リ
ソースをプロビジョニングするため、新しい環境が開始されるまでに数分かかることがあります。
環境のダッシュボードで、デプロイの状態を表示できます。Elastic Beanstalk によって AWS リ
ソースが作成され、アプリケーションが起動されている間、環境は灰色の状態で表示されます。起
動イベントに関するステータスメッセージが環境ダッシュボードに表示されます。デプロイが完了
すると、AWS Elastic Beanstalk によってアプリケーションのヘルスチェックが実行されます。ア
プリケーションがヘルスチェックに応答すると、環境のステータスは緑色になります。
環境のクローンを作成する
Abstract
環境のクローンを作成して、その環境とその設定を新しい環境の基盤として利用します。必要に応じて、元の環境
のソリューションスタックの新しいバージョンを使用します。
既存の環境のクローンを作成することで、新しい環境の基盤として既存の環境を利用することができま
す。たとえば、元の環境のプラットフォームで使用されていたソリューションスタックの新しいバー
ジョンを使用するためにクローンを作成する場合があります。Elastic Beanstalk によって、元の環境で
使用されていたものと同じ環境設定がクローンに適用されます。新しい環境を作成する代わりに既存の
環境をクローンすることで、オプション設定や環境変数などの設定を手動で設定する必要がなくなりま
す。さらに Elastic Beanstalk によって、元の環境に関連付けられていた AWS リソースもすべてコピー
されます。ただし、クローンプロセスでは、Elastic Beanstalk によって Amazon RDS からクローンに
データがコピーされることはありません。クローン環境を作成した後で、必要に応じて環境設定を変更
できます。
Note
Elastic Beanstalk では、リソースに対するアンマネージ変更はクローンに含められません。
Elastic Beanstalk のマネジメントコンソール、コマンドラインツール、API 以外のツールを使
用して AWS リソースに加えた変更は、アンマネージ変更と見なされます。
API Version 2010-12-01
63
AWS Elastic Beanstalk 開発者ガイド
環境のクローンを作成する
AWS マネジメントコンソール
環境のクローンを作成するには
1.
Elastic Beanstalk コンソールを開きます。
2.
3.
リージョンリストから、作業対象の環境が含まれたリージョンを選択します。
Elastic Beanstalk コンソールのアプリケーションページで、アプリケーションの名前をクリックし
た後、クローンを作成する環境の名前をクリックします。
4.
環境ダッシュボードで [Actions] をクリックして、次のいずれかの操作を行います。
• ソリューションスタックのバージョンに変更を加えずに環境のクローンを作成する場合は、[Clone
Environment] をクリックします。
• 環境のクローンを作成するが、元の環境のソリューションスタックの新しいバージョンを使用す
る場合は、[Clone with Latest Platform] をクリックします。
5.
[Clone Environment] ページの [Original Environment] セクションの情報を見て、クローンを作成し
たい環境が選択されていることを確認します。
6.
[New Environment] セクションでは、Elastic Beanstalk によって元の環境に基づいて自動的に設定
される [Environment name]、[Environment URL]、[Description]、および [Platform] の各値も変更す
ることができます。
API Version 2010-12-01
64
AWS Elastic Beanstalk 開発者ガイド
環境のクローンを作成する
Note
[Platform] には、言語とウェブサーバー設定が同じソリューションスタックのみが表示さ
れます。元の環境で使用されていたソリューションスタックの新しいバージョンが利用可
能な場合は、更新を求めるプロンプトが表示されますが、同じ言語であってもバージョン
が異なる場合は別のスタックを選択することはできません。詳細については、「サポート
されているプラットフォーム (p. 25)」を参照してください。
7.
準備ができたら、[Clone] をクリックします。
EB コマンドラインインターフェイス(CLI)
eb clone コマンドを使用し、実行中の環境をクローニングします。
~/workspace/my-app$ eb clone my-env1
Enter name for Environment Clone
(default is my-env1-clone): my-env2
Enter DNS CNAME prefix
(default is my-env1-clone): my-env2
クローンコマンドでは、ソース環境の名前を指定するか、指定せずに現在のプロジェクトフォルダのデ
フォルト環境をクローニングすることができます。EB CLI は、新しい環境の名前と DNS プレフィック
スの入力を求めるプロンプトを表示します。
デフォルトでは、eb clone はソース環境のプラットフォームの使用可能な最新バージョンで新しい環
境を作成します。新しいバージョンが使用可能であっても同じバージョンを使用するように EB CLI に
強制するには、--exact オプションを使用します。
~/workspace/my-app$ eb clone --exact
API Version 2010-12-01
65
AWS Elastic Beanstalk 開発者ガイド
環境を終了する
このコマンドの詳細については、「eb clone (p. 422)」を参照してください。
環境を終了する
Abstract
AWS マネジメントコンソールを使用して実行中の環境を終了し、未使用の AWS リソースに対する課金を防ぎま
す。
実行中の環境を終了する際、AWS マネジメントコンソールを使用すると、未使用の AWS リソースに
対する課金を防ぐことができます。AWS Toolkit for Eclipse を使用した環境の終了について詳しくは、
環境を終了するには (p. 642) を参照してください。
Note
いつでも、また同じバージョンを使用して新しい環境を起動できます。保存する必要のある環
境のデータがある場合、環境を終了する前に現在のデータベースインスタンスのスナップショッ
トを作成します。これは後で環境を作成する際、新しい DB インスタンスの基礎として使用す
ることができます。詳細については、[Amazon Relational Database Service User Guide] の
[Creating a DB Snapshot] を参照してください。
AWS マネジメントコンソール
環境を終了するには
1.
2.
Elastic Beanstalk コンソールを開きます。
リージョンリストから、終了する環境が含まれたリージョンを選択します。
3.
Elastic Beanstalk コンソールアプリケーションページから、終了する環境の名前をクリックしま
す。
4.
[Actions] をクリックし、[Terminate Environment] を選択します。
API Version 2010-12-01
66
AWS Elastic Beanstalk 開発者ガイド
環境を終了する
5.
正しい環境を終了しているか確認し、[Terminate]
Note
をクリックします。
環境を終了すると、終了した環境に関連付けられていた CNAME はすべてのユーザーが使
用できるようになります。
環境で実行されている AWS リソースが終了されるまでには数分かかります。
CLI
環境を終了するには
•
$ aws elasticbeanstalk terminate-environment --environment-name my-env
API
環境を終了するには
•
次のパラメータを使用して TerminateEnvironment を呼び出します。:
• EnvironmentName = SampleAppEnv
Example
https://elasticbeanstalk.us-west-2.amazon.com/?EnvironmentName=SampleAppEnv
&Operation=TerminateEnvironment
&AuthParams
API Version 2010-12-01
67
AWS Elastic Beanstalk 開発者ガイド
AWS CLI を使用する
AWS CLI を使用した Elastic Beanstalk 環境の作成
Abstract
AWS CLI を使用して Elastic Beanstalk 環境を作成する
AWS CLI を使用して環境を作成するには
1.
環境の CNAME が使用可能かどうかを確認します。
$ aws elasticbeanstalk check-dns-availability --cname-prefix my-cname
{
"Available": true,
"FullyQualifiedCNAME": "my-cname.elasticbeanstalk.com"
}
2.
アプリケーションバージョンが存在することを確認します。
$ aws elasticbeanstalk describe-application-versions --application-name myapp --version-label v1
3.
アプリケーションの設定テンプレートを作成します。
$ aws elasticbeanstalk create-configuration-template --application-name myapp --template-name v1 --solution-stack-name "64bit Amazon Linux 2015.03
v2.0.0 running Ruby 2.2 (Passenger Standalone)"
4.
環境を作成します。
$ aws elasticbeanstalk create-environment --cname-prefix my-cname --applic
ation-name my-app --template-name v1 --version-label v1 --environment-name
v1clone --option-settings file://options.txt
オプション設定は、options.txt ファイルで定義されます。
[
{
"Namespace": "aws:autoscaling:launchconfiguration",
"OptionName": "IamInstanceProfile",
"Value": "aws-elasticbeanstalk-ec2-role"
}
]
上記のオプション設定は、IAM インスタンスプロファイルを定義します。ARN またはプロファイ
ル名を指定します。
5.
新しい環境が緑色で表示され、準備が完了していることを確認します。
$ aws elasticbeanstalk describe-environments --environment-names my-env
新しい環境が緑色で表示されておらず、準備も完了していない場合は、操作をやり直すか、または
環境をそのままにして調査を行う必要があります。操作が終わったら環境を終了し、使用していな
いリソースをすべてクリーンアップします。
API Version 2010-12-01
68
AWS Elastic Beanstalk 開発者ガイド
API を使用した Elastic Beanstalk 環境の作成
Note
環境の起動に時間がかかる場合は、タイムアウト期限を調整することができます。
API を使用した Elastic Beanstalk 環境の作成
Abstract
Elastic Beanstalk API を使用して Elastic Beanstalk 環境を作成する
新しい環境を起動するには
1.
以下のパラメータを使って CheckDNSAvailability を呼び出します。
• CNAMEPrefix = SampleApp
Example
https://elasticbeanstalk.us-east-1.amazon.com/?CNAMEPrefix=sampleapplication
&Operation=CheckDNSAvailability
&AuthParams
2.
以下のパラメータを使用して、DescribeApplicationVersions を呼び出します。
• ApplicationName = SampleApp
• VersionLabel = Version2
Example
https://elasticbeanstalk.us-east-1.amazon.com/?ApplicationName=SampleApp
&VersionLabel=Version2
&Operation=DescribeApplicationVersions
&AuthParams
3.
以下のパラメータを使用して、CreateConfigurationTemplate を呼び出します。
• ApplicationName = SampleApp
• TemplateName = MyConfigTemplate
• SolutionStackName =
64bit%20Amazon%20Linux%202015.03%20v2.0.0%20running%20Ruby%202.2%20(Passenger%20Standalone)
Example
https://elasticbeanstalk.us-east-1.amazon.com/?ApplicationName=SampleApp
&TemplateName=MyConfigTemplate
&Operation=CreateConfigurationTemplate
&SolutionStackName=64bit%20Amazon%20Linux%202015.03%20v2.0.0%20run
ning%20Ruby%202.2%20(Passenger%20Standalone)
&AuthParams
API Version 2010-12-01
69
AWS Elastic Beanstalk 開発者ガイド
API を使用した Elastic Beanstalk 環境の作成
4.
以下のパラメータセットのいずれかで CreateEnvironment を呼び出します。
a.
ウェブサーバー環境枠に対しては次を使用します:
• EnvironmentName = SampleAppEnv2
• VersionLabel = Version2
• Description = description
• TemplateName = MyConfigTemplate
• ApplicationName = SampleApp
• CNAMEPrefix = sampleapplication
• OptionSettings.member.1.Namespace = aws:autoscaling:launchconfiguration
• OptionSettings.member.1.OptionName = IamInstanceProfile
• OptionSettings.member.1.Value = ElasticBeanstalkProfile
Example
https://elasticbeanstalk.us-east-1.amazon.com/?ApplicationName=SampleApp
&VersionLabel=Version2
&EnvironmentName=SampleAppEnv2
&TemplateName=MyConfigTemplate
&CNAMEPrefix=sampleapplication
&Description=description
&Operation=CreateEnvironment
&OptionSettings.member.1.Namespace=aws%3Aautoscaling%3Alaunchconfiguration
&OptionSettings.member.1.OptionName=IamInstanceProfile
&OptionSettings.member.1.Value=ElasticBeanstalkProfile
&AuthParams
b.
ワーカー環境枠に対しては次を使用します:
• EnvironmentName = SampleAppEnv2
• VersionLabel = Version2
• Description = description
• TemplateName = MyConfigTemplate
• ApplicationName = SampleApp
• Tier = Worker
• OptionSettings.member.1.Namespace = aws:autoscaling:launchconfiguration
• OptionSettings.member.1.OptionName = IamInstanceProfile
• OptionSettings.member.1.Value = ElasticBeanstalkProfile
• OptionSettings.member.2.Namespace = aws:elasticbeanstalk:sqsd
• OptionSettings.member.2.OptionName = WorkerQueueURL
• OptionSettings.member.2.Value =
sqsd.elasticbeanstalk.us-east-1.amazon.com
• OptionSettings.member.3.Namespace = aws:elasticbeanstalk:sqsd
• OptionSettings.member.3.OptionName = HttpPath
• OptionSettings.member.3.Value = /
• OptionSettings.member.4.Namespace = aws:elasticbeanstalk:sqsd
• OptionSettings.member.4.OptionName = MimeType
• OptionSettings.member.4.Value = application/json
• OptionSettings.member.5.Namespace = aws:elasticbeanstalk:sqsd
API Version 2010-12-01
70
AWS Elastic Beanstalk 開発者ガイド
API を使用した Elastic Beanstalk 環境の作成
• OptionSettings.member.5.OptionName = HttpConnections
• OptionSettings.member.5.Value = 75
• OptionSettings.member.6.Namespace = aws:elasticbeanstalk:sqsd
• OptionSettings.member.6.OptionName = ConnectTimeout
• OptionSettings.member.6.Value = 10
• OptionSettings.member.7.Namespace = aws:elasticbeanstalk:sqsd
• OptionSettings.member.7.OptionName = InactivityTimeout
• OptionSettings.member.7.Value = 10
• OptionSettings.member.8.Namespace = aws:elasticbeanstalk:sqsd
• OptionSettings.member.8.OptionName = VisibilityTimeout
• OptionSettings.member.8.Value = 60
• OptionSettings.member.9.Namespace = aws:elasticbeanstalk:sqsd
• OptionSettings.member.9.OptionName = RetentionPeriod
• OptionSettings.member.9.Value = 345600
Example
https://elasticbeanstalk.us-east-1.amazon.com/?ApplicationName=SampleApp
&VersionLabel=Version2
&EnvironmentName=SampleAppEnv2
&TemplateName=MyConfigTemplate
&Description=description
&Tier=Worker
&Operation=CreateEnvironment
&OptionSettings.member.1.Namespace=aws%3Aautoscaling%3Alaunchconfiguration
&OptionSettings.member.1.OptionName=IamInstanceProfile
&OptionSettings.member.1.Value=ElasticBeanstalkProfile
&OptionSettings.member.2.Namespace=aws%3Aelasticbeanstalk%3Asqsd
&OptionSettings.member.2.OptionName=WorkerQueueURL
&OptionSettings.member.2.Value=sqsd.elasticbeanstalk.us-east-1.amazon.com
&OptionSettings.member.3.Namespace=aws%3elasticbeanstalk%3sqsd
&OptionSettings.member.3.OptionName=HttpPath
&OptionSettings.member.3.Value=%2F
&OptionSettings.member.4.Namespace=aws%3Aelasticbeanstalk%3Asqsd
&OptionSettings.member.4.OptionName=MimeType
&OptionSettings.member.4.Value=application%2Fjson
&OptionSettings.member.5.Namespace=aws%3Aelasticbeanstalk%3Asqsd
&OptionSettings.member.5.OptionName=HttpConnections
&OptionSettings.member.5.Value=75
&OptionSettings.member.6.Namespace=aws%3Aelasticbeanstalk%3Asqsd
&OptionSettings.member.6.OptionName=ConnectTimeout
&OptionSettings.member.6.Value=10
&OptionSettings.member.7.Namespace=aws%3Aelasticbeanstalk%3Asqsd
&OptionSettings.member.7.OptionName=InactivityTimeout
&OptionSettings.member.7.Value=10
&OptionSettings.member.8.Namespace=aws%3Aelasticbeanstalk%3Asqsd
&OptionSettings.member.8.OptionName=VisibilityTimeout
&OptionSettings.member.8.Value=60
&OptionSettings.member.9.Namespace=aws%3Aelasticbeanstalk%3Asqsd
&OptionSettings.member.9.OptionName=RetentionPeriod
&OptionSettings.member.9.Value=345600
&AuthParams
API Version 2010-12-01
71
AWS Elastic Beanstalk 開発者ガイド
「Launch Now URL」の作成
Abstract
独自のアプリケーションをデプロイしようとするユーザーに対し、配信できるカスタム URL を構築します。
誰でも迅速に事前定義されたウェブアプリケーションを Elastic Beanstalk にデプロイして実行できる
ように、カスタム URL を作成できます。この URL は「Launch Now URL」と呼ばれます。「Launch
Now URL」は、たとえば Elastic Beanstalk 上で実行するために構築されたウェブアプリケーションを
紹介する場合に必要になる可能性があります。「Launch Now URL」により、パラメータを使用して、
必要な情報を事前に Create Application ウィザードに追加することができます。この操作を行うと、誰
でも URL リンクを使用して、わずかなクリック操作によりウェブアプリケーションソースで Elastic
Beanstalk 環境を起動できます。つまり、ユーザーはアプリケーションソースバンドルの場所を手動で
アップロードまたは指定したり、ウィザードで追加の入力を行ったりする必要がありません。
「Launch Now URL」は、アプリケーション名、ソリューションスタック、インスタンスタイプ、環境
タイプといった、アプリケーションの作成に必要な最低限の情報を Elastic Beanstalk に与えます。Elastic
Beanstalk は、カスタムの「Launch Now URL」で明示的に指定されていない他の設定に、デフォルト
値を使用します。
「Launch Now URL」は、標準の URL 構文を使用します。詳細については、RFC 3986 - Uniform
Resource Identifier(URI): 一般的な構文を参照してください。
URL パラメータ
URL は次のパラメータを含める必要があります。大文字と小文字は区別されます。
• リージョン – AWS のリージョンを指定します。Elastic Beanstalk がサポートするリージョンのリス
トについては、アマゾン ウェブ サービス一般リファレンスの AWS Elastic Beanstalk を参照してく
ださい。
• applicationName – アプリケーションの名前を指定します。Elastic Beanstalk は、AWS マネジメント
コンソールにアプリケーションの名前を表示し、他のアプリケーションと区別します。デフォルトで
は、アプリケーションの名前は環境の名前と環境 URL を基に作成されます。
• solutionStackName - 環境で使用されるプラットフォームとバージョンを指定します。詳細について
は、「サポートされているプラットフォーム (p. 25)」を参照してください。
「Launch Now URL」は、オプションで次のパラメータを含めることができます。オプションのパラ
メータを「Launch Now URL」に含めない場合、Elastic Beanstalk はデフォルトの値を使用してアプリ
ケーションを作成し、実行します。sourceBundleUrl パラメータが 含まれていない場合、Elastic Beanstalk
はデフォルトのサンプルアプリケーションを指定した solutionStackName に使用します。
• sourceBundleUrl – URL 形式でウェブアプリケーションソースバンドルの場所を指定します。たとえ
ば、Amazon Simple Storage Service バケットにソースバンドルをアップロードした場合、
sourceBundleUrl パラメータの値を http://s3.amazonaws.com/mybucket/myobject と指定し
ます。
Note
sourceBundleUrl パラメータの値を HTTP URL として指定できますが、ユーザーのウェブブ
ラウザは、必要に応じて HTML URL エンコードのポリシーを使用して文字を変換します。
• [environmentType] - 環境が負荷分散型オートスケーリングであるか、または単一のインスタンスで
あるかを指定します。詳細については、「環境タイプ (p. 90)」を参照してください。パラメータ値
として LoadBalancing または SingleInstance を指定できます。
API Version 2010-12-01
72
AWS Elastic Beanstalk 開発者ガイド
• tierName - ウェブリクエストを処理するウェブアプリケーションまたはバックグラウンドジョブを実
行するウェブアプリケーションを、環境でサポートしているかどうかを指定します。詳細について
は、「ワーカー環境 (p. 92)」を参照してください。WebServer または Worker のどちらかを指定で
きます。
• instanceType - アプリケーションに最適な特性(メモリサイズや CPU 能力など)のあるサーバーを
選択します。Elastic Beanstalk リージョンで使用できるインスタンスタイプについては、設定オプ
ション (p. 101) トピックの InstanceType (p. 119) を参照してください。各 Amazon EC2 インスタンス
タイプの仕様の詳細については、インスタンスタイプを参照してください。
• withVpc - Amazon VPC で環境を作成するかどうかを指定します。true または false のどちらかを
指定できます。Amazon VPC で Elastic Beanstalk を使用する方法については、「Amazon VPC で
Elastic Beanstalk を使用する (p. 319)」を参照してください。
• withRds - この環境で Amazon RDS データベースインスタンスを作成するかどうかを指定します。詳
細については、「Amazon RDS で Elastic Beanstalk を使用する (p. 308)」を参照してください。true
または false のどちらかを指定できます。
• rdsDBEngine - この環境の Amazon EC2 インスタンスで使用するデータベースエンジンを指定しま
す。mysql、oracle-sel、sqlserver-ex、sqlserver-web、または sqlserver-se を指定でき
ます。デフォルト値は mysql です。
• rdsDBAllocatedStorage - 割り当て済みデータベースストレージのサイズを指定します(GB 単位)。
次の値を指定できます。
• MySQL - 5~1024。デフォルト: 5。
• Oracle - 10~1024。デフォルト: 10。
• Microsoft SQL Server Express Edition - 30。
• Microsoft SQL Server Web Edition - 30。
• Microsoft SQL Server Standard Edition - 200。
• rdsDBInstanceClass - データベースインスタンスのタイプを指定します。デフォルト値は db.t1.micro
です。Amazon RDS でサポートされているデータベースインスタンスクラスのリストについては、
『 Amazon Relational Database Service ユーザーガイド』の「DB インスタンスクラス」を参照して
ください。
• rdsMultiAZDatabase - Elastic Beanstalk で複数のアベイラビリティーゾーンを対象としたデータベー
スインスタンスを作成する必要があるかどうかを指定します。true または false のどちらかを指定
できます。Amazon RDS を使用した複数のアベイラビリティーゾーンにおけるデプロイの詳細につ
いては、『Amazon Relational Database Service ユーザーガイド』の「リージョンとアベイラビリ
ティーゾーン」を参照してください。
• rdsDBDeletionPolicy - 環境の終了時に、データベースインスタンスを削除するか、そのスナップショッ
トを取得するかを指定します。Delete または Snapshot のどちらかを指定できます。
例
「Launch Now URL」の例を次に示します。アプリケーションを構築した後、ユーザーがそれを使用す
ることができます。たとえば、URL をウェブページまたはトレーニング教材に組み込みたい場合があ
ります。ユーザーが「Launch Now URL」を使用してアプリケーションを作成する場合、Elastic Beanstalk
アプリケーションの作成ウィザードでは追加の入力を必要としません。
https://console.aws.amazon.com/elasticbeanstalk/?region=us-west-2#/newApplication?applicationName=YourCompanySampleApp&solutionStackName=PHP&sourceBundleUrl=http://s3.amazonaws.com/mybucket/myobject&environmentType=SingleInstance&tierName=WebServer&instanceType=m1.small&withVpc=true&withRds=true&rdsDBEngine=postgres&rdsDBAllocatedStorage=6&rdsDBInstanceClass=db.m1.small&rdsMultiAZDatabase=true&rdsDBDeletionPolicy=Snapshot.
ユーザーが [Launch Now URL] をクリックすると、Elastic Beanstalk は次のようなページを表示しま
す。
API Version 2010-12-01
73
AWS Elastic Beanstalk 開発者ガイド
環境を構成する
Launch Now URL を使用するには
1.
2.
3.
[Launch Now URL] をクリックします。
Elastic Beanstalk コンソールを開いた後、[Application Info] ページで、[Review and Launch] をク
リックして、Elastic Beanstalk がアプリケーションを作成し、アプリケーションの実行環境を起動
するために使用する設定を表示します。
[Review] ページで、[Launch] をクリックしてアプリケーションを 作成します。
AWS Elastic Beanstalk 環境グループを作成・更新す
る
Abstract
AWS Elastic Beanstalk 構成の環境 API で環境グループを作成、更新します。
AWS Elastic Beanstalk (Elastic Beanstalk) の Compose Environments API を使用すると、単一のア
プリケーション内の Elastic Beanstalk 環境グループを作成、更新できます。 グループ内の各環境は、
サービス対応アーキテクチャアプリケーションごとにそれぞれのコンポーネントを実行できます。
Compose Environments API は、アプリケーションバージョンおよびオプションでグループ名のリス
トを取得します。 Elastic Beanstalk は、各アプリケーションバージョンごとに環境を作成します。ま
たはこの環境がすでに存在する場合には、アプリケーションバージョンを環境にデプロイします。
Elastic Beanstalk の環境間にリンクを作成すると、1 つの環境をほかの環境に依存するものとして指定
できます。 Compose Environments API で環境グループを作成する場合、Elastic Beanstalk は依存関
係が実行された状態でのみ依存する環境を作成します。 環境リンクの詳細については、「AWS Elastic
Beanstalk 環境間のリンクを作成する (p. 254)」を参照してください。
Compose Environments API は、環境マニフェスト (p. 188)を使用して環境グループで共有される詳
細設定を保存します。 それぞれの構成アプリケーションには、アプリケーションのソースバンドル内
に env.yaml 形式の設定ファイルが存在することが必須であり、これによってその環境を作成するた
めに使用されるパラメータを特定します。
Compose Environments は、各構成アプリケーションの環境マニフェストで EnvironmentName と
SolutionStack が特定されていることを要件とします。
Elastic Beanstalk コマンドラインインターフェイス (EB CLI)、AWS CLI、または SDK には Compose
Environments API を使用できます。 EB CLI の説明については、「EB CLI で複数の AWS Elastic
Beanstalk 環境をグループとして管理する (p. 418)」を参照してください。
Compose Environments
API の使用
たとえば、ユーザーが Amazon Simple Storage Service (Amazon S3) に画像と動画をアップロードして
管理できる Media Library という名のアプリケーションを作成できます。 このアプリケーションに
API Version 2010-12-01
74
AWS Elastic Beanstalk 開発者ガイド
環境を構成する
はフロントエンド環境、front、があり、ユーザーがそれぞれのファイルをアップロード・ダウンロー
ド、ライブラリの参照、そしてバッチ処理ジョブを開始することができるウェブアプリケーションを実
行します。
ジョブを直接処理する代わりに、フロントエンドアプリケーションは Amazon SQS キューにジョブを
追加します。 2 番目の環境、worker、はキューからジョブを取り出して処理します。 worker は高パ
フォーマンス GPU の G2 インスタンスタイプを使用しますが、一方 front はさらにコストパフォーマ
ンスに優れた一般インスタンスタイプで実行できます。
プロジェクトフォルダ、Media Library、をそれぞれのコンポーネントごとのディレクトリに分けて、
各ディレクトリにはそれぞれのソースコードを含む環境定義ファイル (env.yaml) があるように設定で
きます。
~/workspace/media-library
|-- front
|
`-- env.yaml
`-- worker
`-- env.yaml
次のリストは、各コンポーネントアプリケーションの env.yaml ファイルを示します。
~/workspace/media-library/front/env.yaml
EnvironmentName: front+
EnvironmentLinks:
"WORKERQUEUE" : "worker+"
AWSConfigurationTemplateVersion: 1.1.0.0
EnvironmentTier:
Name: WebServer
Type: Standard
SolutionStack: 64bit Amazon Linux 2015.09 v2.0.4 running Java 8
OptionSettings:
aws:autoscaling:launchconfiguration:
InstanceType: m4.large
~/workspace/media-library/worker/env.yaml
EnvironmentName: worker+
AWSConfigurationTemplateVersion: 1.1.0.0
EnvironmentTier:
Name: Worker
Type: SQS/HTTP
SolutionStack: 64bit Amazon Linux 2015.09 v2.0.4 running Java 8
OptionSettings:
aws:autoscaling:launchconfiguration:
InstanceType: g2.2xlarge
フロントエンド (front-v1) とワーカー (worker-v1) アプリケーションコンポーネント用のアプリケー
ションバージョンを作成 (p. 40)したら、そのバージョン名の Compose Environments API を呼び出
すことができます。 この例では、AWS CLI を使用して API を呼び出します。
# Create application versions for each component:
~$ aws elasticbeanstalk create-application-version --application-name medialibrary --version-label front-v1 --source-bundle S3Bucket="my-buck
et",S3Key="front-v1.zip"
API Version 2010-12-01
75
AWS Elastic Beanstalk 開発者ガイド
デプロイ
{
"ApplicationVersion": {
"ApplicationName": "media-library",
"VersionLabel": "front-v1",
"Description": "",
"DateCreated": "2015-11-03T23:01:25.412Z",
"DateUpdated": "2015-11-03T23:01:25.412Z",
"SourceBundle": {
"S3Bucket": "my-bucket",
"S3Key": "front-v1.zip"
}
}
}
~$ aws elasticbeanstalk create-application-version --application-name medialibrary --version-label worker-v1 --source-bundle S3Bucket="my-buck
et",S3Key="worker-v1.zip"
{
"ApplicationVersion": {
"ApplicationName": "media-library",
"VersionLabel": "worker-v1",
"Description": "",
"DateCreated": "2015-11-03T23:01:48.151Z",
"DateUpdated": "2015-11-03T23:01:48.151Z",
"SourceBundle": {
"S3Bucket": "my-bucket",
"S3Key": "worker-v1.zip"
}
}
}
# Create environments:
~$ aws elasticbeanstalk compose-environments --application-name media-library
--group-name dev --version-labels front-v1 worker-v1
3 番目の呼び出しでは、front-dev と worker-dev の 2 つの環境を作成します。 この API は、
env.yaml ファイルに特定された EnvironmentName と Compose Environments 呼び出しに特定さ
れた group name オプションをハイフンで区切って連結した環境の名前を作成します。 ハイフンを含
めたこの 2 つのオプションの合計は、環境の名前に使用できる最大限の 23 文字を超えることはできま
せん。
front-dev 環境で実行されるアプリケーションは、WORKERQUEUE 変数を読み込むことによって
worker-dev に付属する Amazon SQS キュー名にアクセスできます。 環境リンクの詳細については、
「AWS Elastic Beanstalk 環境間のリンクを作成する (p. 254)」を参照してください。
AWS Elastic Beanstalk 環境へのアプリケーション
のデプロイ
Abstract
Elastic Beanstalk 環境にアプリケーションの新規または既存のバージョンをデプロイします。
AWS マネジメントコンソール を使用して、更新したソースバンドル (p. 42)をアップロードして Elastic
Beanstalk 環境にデプロイするか、以前にアップロードしたバージョンを再デプロイできます。
API Version 2010-12-01
76
AWS Elastic Beanstalk 開発者ガイド
ローリングデプロイ
デプロイ時、アプリケーションは数秒間、ユーザーに利用不可になることがあります。この状態を回避
するには、ローリングデプロイ (p. 77)を設定するか、別の環境に新しいバージョンをデプロイして
Blue-Green Deployment 用に CNAME スワップ (p. 79)を実行します。
頻繁にデプロイする場合は、Elastic Beanstalk コマンドラインインターフェイス (p. 403)を使用してお客
様の環境を管理することを検討してください。EB CLI によってソースコードと共にリポジトリが作成
されたら、1 つのコマンドでソースバンドルを作成し、Elastic Beanstalk にアップロードして、デプロ
イできます。
アプリケーションバージョンのバッチでのデプロイ
(ローリングデプロイ)
Abstract
ローリングアプリケーションデプロイを使用し、インスタンスのバッチに基づいて、新しいアプリケーションバー
ジョンを Elastic Beanstalk 環境内にある既存の Amazon EC2 インスタンスにデプロイします。
通常、新しいバージョンのアプリケーションを環境にデプロイすることは、迅速なプロセスです。新し
いソースバンドルは、インスタンスにデプロイされ、そこで抽出されると、ウェブコンテナまたはアプ
リケーションサーバーが新しいバージョンを取得し、必要に応じて再起動します。
ただし、アプリケーションの起動に時間がかかる場合、新しいバージョンがデプロイされるときに、大
幅なダウンタイムが発生する可能性があります。Elastic Beanstalk には、アプリケーションのデプロイ
中にダウンタイムを回避するための機能が 2 つあります。1 つは CNAME スワップ (p. 79)で、この機
能では、新しいバージョンを 2 つ目の環境にデプロイし、デプロイが完了すると、更新した環境へのト
ラフィックのルーティングが開始されるように DNS 設定を変更します。
2 つ目の機能は、ローリングデプロイです(ローリング設定更新 (p. 82)と混同しないでください)。
ローリングデプロイでは、Elastic Beanstalk は環境を複数のバッチに分割し、一度に 1 つのバッチにデ
プロイするため、環境内の残りのインスタンスは古いアプリケーションバージョンを実行したままにな
ります。ローリングデプロイ中、一部のインスタンスは古いバージョンでリクエストを処理でき、それ
と同時に、既に完了したバッチに属する他のインスタンスは新しいバージョンで他のリクエストを処理
できます。
バッチを処理するため、Elastic Beanstalk はバッチ内のすべてのインスタンスをロードバランサーから
デタッチし、新しいアプリケーションバージョンをデプロイしてから、再アタッチします。接続スト
リーミング (p. 207)が有効になっていると、Elastic Beanstalk は、デプロイを開始する前に、Amazon
EC2 インスタンスから既存の接続をストリーミングします。
バッチ内のインスタンスがロードバランサーに再アタッチされると、Elastic Load Balancing は、これ
らのインスタンスが最小限の数の ELB ヘルスチェックに合格するのを待ってから、これらのインスタ
ンスへのトラフィックのルーティングを開始します。ヘルスチェック URL (p. 207) が設定されていなけ
れば、これはすぐに発生する可能性があります。インスタンスが TCP 接続を受け付けるとすぐにヘル
スチェックに合格するからです。ヘルスチェック URL が設定されていると、ヘルスチェック URL への
HTTP GET リクエストに対する応答で 200 OK ステータスコードが返されるまで、トラフィックは更
新されたインスタンスにルーティングされません。
Elastic Beanstalk は、バッチ内のインスタンスが正常な状態になるまで待ち、その後に次のバッチを処
理します。基本ヘルスレポート (p. 259)では、これは ELB ヘルスチェックに依存しています。バッチ内
のすべてのインスタンスが、Elastic Load Balancing によって正常な状態であると見なされるために十
分な数のヘルスチェックに合格すると、バッチは正常であると認められます。拡張ヘルスレポート(p.263)
が有効になっていると、いくつかの他の要因(着信リクエストの結果など)も考慮されます。ウェブ
サーバー環境の拡張ヘルスレポートでは、すべてのインスタンスが 2 分間にわたって連続して行われる
12 のヘルスチェックに OK ステータス (p. 274)で合格する必要があります(ワーカー環境の場合は 3 分
間にわたって 18 のヘルスチェックが行われます)。
API Version 2010-12-01
77
AWS Elastic Beanstalk 開発者ガイド
ローリングデプロイ
Note
ヘルスチェックが原因でデプロイが失敗し、それに関係なく更新を強制する必要がある場合
は、Ignore Health Check オプションを設定します。
AWS マネジメントコンソール
バッチ処理されるアプリケーションバージョンのデプロイの有効化や設定を行うには、環境マネジメン
トコンソール (p. 50)で、環境の [Configuration] ページにある [Updates and Deployments] を編集しま
す。
[Updates and Deployments] ページの [Application Deployments] セクションには、バッチ処理されるア
プリケーションバージョンのデプロイを設定するための次のオプションがあります。
• [Batch type] - Amazon EC2 インスタンスのバッチを Auto Scaling グループ内にあるインスタンスの
合計数に対する割合で構成するか、一定数で構成するかを指定します。
• [Batch size] - 各バッチにデプロイするインスタンスの数または割合(%)。最大で 100%、または環
境の Auto Scaling 設定で指定されている最大インスタンスカウントの値まで指定できます。
• [Ignore health check] - バッチがローリング更新のタイムアウト以内に正常な状態にならなかった場
合にデプロイがロールバックするのを防ぎます。
aws:elasticbeanstalk:command
名前空間
aws:elasticbeanstalk:command (p. 129) 名前空間でオプションを使用して、ローリングデプロイを
設定します。
ローリング更新を有効にした場合は、BatchSize オプションと BatchSizeType オプションも設定し
てバッチのサイズを設定します。たとえば、各バッチのインスタンスのうち 25% にデプロイするには、
次のように設定します。
option_settings:
- namespace: aws:elasticbeanstalk:command
option_name: BatchSizeType
value: Percentage
- namespace: aws:elasticbeanstalk:command
option_name: BatchSize
value: 25
実行中のインスタンスの数にかかわらず各バッチで 5 つのインスタンスにデプロイするには :
API Version 2010-12-01
78
AWS Elastic Beanstalk 開発者ガイド
Blue-Green Deployment
option_settings:
- namespace: aws:elasticbeanstalk:command
option_name: BatchSizeType
value: Fixed
- namespace: aws:elasticbeanstalk:command
option_name: BatchSize
value: 5
EB CLI と Elastic Beanstalk コンソールはローリングデプロイに推奨値を適用します。詳細については、
「推奨値 (p. 145)」を参照してください。
AWS Elastic Beanstalk を使用した Blue-Green
Deployment
Abstract
環境の CNAME を交換し、ダウンタイムを発生させずに Elastic Beanstalk アプリケーションの最新バージョンをデ
プロイします。
アプリケーションのバージョンを更新するときに Elastic Beanstalk がインプレース更新を実行するた
め、アプリケーションはわずかな期間、ユーザーに利用不可になることがあります。Blue-Green
Deployment を実行することで、このダウンタイムを回避できます。この場合、個別の環境に新しいバー
ジョンをデプロイしてから、2 つの環境の CNAME を入れ替えて、すぐに新しいバージョンにトラフィッ
クをリダイレクトします。
Blue-Green Deployment では、アプリケーションがプロダクションデータベースを使用する場合、お客
様の環境がそのデータベースから独立して実行される必要があります。お客様の環境に Amazon RDS
DB インスタンスがアタッチされている場合、データはもう一方の環境に転送されず、元の環境が終了
した場合に失われます。
外部(Elastic Beanstalk で管理されていない)Amazon RDS インスタンスに接続するようにアプリケー
ションを設定する方法の詳細については、「Amazon RDS で Elastic Beanstalk を使用する (p. 308)」を
参照してください。
Blue-Green Deployment を実行するには
1.
Elastic Beanstalk コンソールを開きます。
2.
環境については「management console (p. 50)」をご覧ください。
3.
ナビゲーションペインで、[Application Versions] をクリックします。
4.
[Upload] をクリックします。
a.
b.
c.
[Version Label] フィールドにこのバージョンのラベルを入力します。
[Description] フィールドに、このバージョンの簡単な説明を入力します。
[Version Label] フィールドにこのバージョンのラベルを入力します。
API Version 2010-12-01
79
AWS Elastic Beanstalk 開発者ガイド
Blue-Green Deployment
d.
e.
(オプション)[Description] フィールドにこのバージョンの簡単な説明を入力します。
[Browse] をクリックして、ソースバンドルの場所を指定します。
指定したファイルは使用しているアプリケーションに関連付けられています。新しいアプリケー
ションバージョンを新しい環境にデプロイします。
5.
6.
7.
8.
9.
環境ダッシュボードを開いてライブ環境の設定を保存し、[Actions] をクリックし、[Save
Configuration] を選択します。
詳細については、「保存された設定 (p. 103)」を参照してください。この設定を使用して、更新さ
れたアプリケーションバージョンを実行する新しい環境を作成します。
新しいアプリケーションバージョンと保存済みの設定を使用して、新しい環境を起動します。詳細
については、「AWS Elastic Beanstalk 環境を作成する (p. 53)」を参照してください。
ダッシュボードを表示して、新しい環境が使用できるようになっていることを確認します。環境に
エラーがある場合、環境のイベントとログを確認してエラーをトラブルシューティングします。
新しい環境のダッシュボードの [Actions] をクリックし、[Swap Environment URL] を選択します。
[Environment Name] ドロップダウンリストから、現在のライブ環境名を選択して、その環境の
URL を新しい環境で使用します。
10. [Swap] をクリックします。
API Version 2010-12-01
80
AWS Elastic Beanstalk 開発者ガイド
Blue-Green Deployment
11. Elastic Beanstalk がスワップ操作を完了した後、古い環境の URL に接続するときに新しい環境が
応答することを確認します。DNS の変更が一括適用され、古い DNS レコードの有効期限が切れる
まで、古い環境を終了しないでください。DNS サーバーは、ユーザーが DNS レコードで設定した
ライブ期間(TTL)に基づいてキャッシュから古いレコードを消去するわけではありません。した
がって、TTL が経過しても、しばらく待ってから環境を終了することが推奨されます。
Elastic Beanstalk 環境に新しいアプリケーションバージョンをデプロイするには
1.
2.
Elastic Beanstalk コンソールを開きます。
環境については「management console (p. 50)」をご覧ください。
3.
4.
[Upload and Deploy] を選択する,
[Browse] を選択したら、デプロイするアプリケーションバージョンのアプリケーションソースバ
ンドルを選択します。
5.
(オプション)[Version label] で、新しい説明を入力するか、Elastic Beanstalk によって自動的に
説明が作成されている場合はその説明を変更できます。
[Deploy] を選択します。
6.
API Version 2010-12-01
81
AWS Elastic Beanstalk 開発者ガイド
設定変更
アプリケーションの以前にアップロードしたバージョンを、アプリケーションのバージョンのページか
らその環境のいずれかにデプロイできます。
既存のアプリケーションバージョンを既存の環境にデプロイするには
1.
Elastic Beanstalk コンソールを開きます。
2.
3.
4.
アプリケーション名の横で [Actions] を選択してから、[View Application Versions] を選択します。
デプロイするアプリケーションバージョンを選択し、[Deploy] をクリックします。
環境を選択してから、[Deploy] を選択します。
設定変更
Abstract
Elastic Beanstalk 環境とそれに含まれるリソースの設定を定義します。
環境マネジメントコンソール (p. 50)の [Configuration] セクションの設定オプションの設定を変更する
と、影響を受けるすべてのリソースに Elastic Beanstalk によって変更が自動的に適用されます。これ
らのリソースには、お客様のアプリケーションを実行する EC2 インスタンス、それらのインスタンス
を管理する Auto Scaling グループ、EC2 インスタンス自体にトラフィックを分散するロードバランサー
が含まれます。
設定変更の多くが、既存のインスタンスを置き換えることなく実行環境に適用できます。たとえば、ヘ
ルスチェック URL (p. 207) を設定すると、環境の更新がトリガーされて、ダウンタイムなしでロードバ
ランサーの設定が変更されます。アプリケーションを実行しているインスタンスは、更新の適用中も、
引き続きリクエストを処理するためです。
一方、起動設定 (p. 118)または VPC 設定 (p. 128)を変更する設定変更の場合、環境内のすべてのインスタ
ンスが終了され、新しいインスタンスに置き換えられる必要があります。これは、たとえば環境のイン
スタンスタイプまたは SSH キー設定を変更するときに発生します。このプロセスにおけるダウンタイ
ムを回避するため、Elastic Beanstalk はこれらの設定変更をバッチで適用します。これにより、常に最
小限の数のインスタンスが実行され、トラフィックを処理している状態が維持されます。
トピック
• ローリング更新によって Elastic Beanstalk 環境を更新する (p. 82)
• 環境のタグ付け (p. 85)
ローリング更新によって Elastic Beanstalk 環境を更
新する
Abstract
ダウンタイムを回避するために、インスタンスがバッチで再デプロイされるように要求する設定変更を適用しま
す。
設定変更にインスタンスの置き換えが必要なとき、Elastic Beanstalk ではバッチ単位で更新を実行する
ことで、変更の適用中のダウンタイムを回避できます。ローリング更新中、容量は 1 バッチのサイズ分
だけ減ります。バッチのサイズはお客様が設定できます。
ローリング設定更新のバッチは、バッチ間に一定の時間間隔を設定して定期的に処理することも、状態
に基づいて処理することもできます。状態に基づくローリング更新では、Elastic Beanstalk は、バッチ
のインスタンスがヘルスチェックに合格するまで待ってから、次のバッチに移ります。
API Version 2010-12-01
82
AWS Elastic Beanstalk 開発者ガイド
ローリング設定更新
インスタンスの状態は、ヘルスレポートシステムによって特定されます。このシステムには、基本(p.259)
モード(ELB ヘルスチェックを使用)と拡張 (p. 263)モード(ELB ヘルスチェックと追加のアプリケー
ションおよびリソースヘルスチェックを使用)があります。基本ヘルスでは、バッチのすべてのインス
タンスが ELB ヘルスチェックに合格し、バッチは正常な状態であると見なされます。
拡張ヘルスレポートでは、複数の連続チェックにおいて、バッチのすべてのインスタンスが正常な状態
(OK ステータス)であることが報告される必要があります。この要件が満たされたら、Elastic Beanstalk
は次のバッチを処理します。拡張ヘルスを使用するウェブサーバー環境では、すべてのインスタンスが
2 分間にわたって行われる 12 のヘルスチェックに合格する必要があります(ワーカー環境では 3 分間
にわたって 18 のチェックが行われます)。いずれかのインスタンスが 1 つでもヘルスチェックで不合
格になければ、カウントがリセットされます。
バッチがローリング更新のタイムアウト(デフォルトは 30 分)以内に正常にならなければ、更新は
キャンセルされます。ローリング更新のタイムアウトは、
aws:autoscaling:updatepolicy:rollingupdate (p. 84) 名前空間で使用できる設定オプショ
ン (p. 101)の 1 つです。
Note
ヘルスチェックに合格しなかったために失敗したデプロイを強制する必要がある場合は、ロー
リング更新のタイプを時間ベースに変更して、ヘルスチェックに正常に合格できるようになる
まで、ヘルスチェックを無視します。
ローリング更新プロセスが失敗した場合、Elastic Beanstalk は別のローリング更新を開始して、以前の
設定にロールバックします。ロールバックが失敗した場合は、環境を終了してから、新しい環境を起動
する必要があります。ローリング更新は、ヘルスチェックに不合格になったことが原因で失敗したり、
新しいインスタンスの起動によりアカウントの制限を超えたことが原因で失敗したりすることがありま
す。代わりの方法として、別の環境にアプリケーションの新しいバージョンをデプロイしてから、
CNAME スワップを実行して、ダウンタイムなしでトラフィックをリダイレクトすることがあります。
詳細については、「AWS Elastic Beanstalk を使用した Blue-Green Deployment (p. 79)」を参照してく
ださい。
ローリング更新とローリングデプロイ
ローリング更新が実行されるのは、設定変更に伴い、新しい EC2 インスタンスをお客様の環境用にプ
ロビジョニングすることが必要になるときです。たとえば、Auto Scaling グループの設定(インスタン
スタイプとキーペアの設定など)の変更、VPC の設定の変更です。ローリング更新では、インスタン
スの各バッチが終了されてから、新しいバッチが置き換え用にプロビジョニングされます。
ローリングデプロイが実行されるのは、毎回、アプリケーションをデプロイするときです。通常、お客
様の環境でインスタンスの置き換えなしで実行できます。Elastic Beanstalk は、各バッチをサービスか
ら外し、新しいアプリケーションバージョンをデプロイしてから、サービスに戻します。
ただし例外は、設定の変更に伴い、新しいアプリケーションバージョンをデプロイすると同時にインス
タンスを置き換えることが必要になる場合です。たとえば、ソースバンドル内の設定ファイル (p. 147)
のキー名の設定を変更し、お客様の環境にデプロイする場合は、ローリング更新がトリガーされます。
既存のインスタンスの各バッチに新しいアプリケーションバージョンがデプロイされる代わりに、イン
スタンスの新しいバッチが新しい設定でプロビジョニングされます。この場合、個別のデプロイは行わ
れません。新しいインスタンスが新しいアプリケーションバージョンで起動されるためです。
ローリング更新の設定
Elastic Beanstalk マネジメントコンソールでローリング更新を有効にして設定できます。
ローリング更新を有効にするには
1.
Elastic Beanstalk コンソールを開きます。
API Version 2010-12-01
83
AWS Elastic Beanstalk 開発者ガイド
ローリング設定更新
2.
3.
4.
環境については「management console (p. 50)」をご覧ください。
[Configuration] を選択します。
5.
[Configuration Updates] セクションで、[Rolling configuration updates] を選択します。
[Updates and Deployments] セクションで、[
をクリックします。
[Updates and Deployments] ページの [Configuration Updates] セクションには、ローリング更新の以下
のオプションがあります。
• Rolling update type - ローリング更新を時間ベースまたは正常性ベースに指定できます。時間ベース
のローリング更新では、インスタンスのバッチの更新が終わってから次のバッチに移るまで Elastic
Beanstalk が待つ時間を選択します。その間に、それらのインスタンスがブートストラップを終了
し、トラフィックの受信を開始できるようになります。
正常性ベースのローリング更新では、完了したバッチのインスタンスがヘルスチェックに合格すると
すぐに、Elastic Beanstalk は次のバッチに移ることができます。正常性ベースのローリング更新には
30 分のタイムアウトがあります。
• Maximum batch size - 各バッチで置き換えるインスタンスの数です。1 ~ 10000 のいずれかの値を
指定できます。デフォルトでは、この値は Auto Scaling グループの最小サイズの 1/3 を切り上げた値
になります。
• Minimum instances in service - 他のインスタンスの更新中に実行され続けるインスタンスの最小数。
0 ~ 9999 のいずれかの値を指定できます。デフォルト値は Auto Scaling グループの最小サイズ、ま
たは Auto Scaling グループの最大サイズ未満の値のいずれかの低い数値になります。
• Pause time(時間ベースのみ)- バッチが更新されてから次のバッチに移るまでに待つ時間。その間
に、アプリケーションがトラフィックの受信を開始できるようになります。0 秒~ 1 時間のいずれか
の値を指定できます。
カスタムの停止時間を指定する場合は、以下の手順に従ってください。
aws:autoscaling:updatepolicy:rollingupdate 名前空間
aws:autoscaling:updatepolicy:rollingupdate 名前空間内のオプションを使用して、ローリン
グ更新を設定できます。以下の設定ファイル (p. 147)では、時間ベースと正常性ベースのローリング更
新の設定例を示しています。
API Version 2010-12-01
84
AWS Elastic Beanstalk 開発者ガイド
環境のタグ付け
Example .ebextensions/timebased.config
option_settings:
aws:autoscaling:updatepolicy:rollingupdate:
MaxBatchSize: 5
MinInstancesInService: 2
PauseTime: PT5M30S
RollingUpdateEnabled: true
RollingUpdateType: Time
Example .ebextensions/healthbased.config
option_settings:
aws:autoscaling:updatepolicy:rollingupdate:
MaxBatchSize: 5
MinInstancesInService: 2
RollingUpdateEnabled: true
RollingUpdateType: Health
Timeout: PT45M
[Timeout] と [PauseTime] の値は、ISO8601 duration: PT#H#M#S で指定する必要があります。ここで、
各 # はそれぞれ時間、分、秒を指します。
環境のタグ付け
Abstract
タグを使用して Amazon EC2 環境を分類します。
Elastic Beanstalk 環境を作成するときに、環境のリソースに適用するタグを指定できます。タグは、特
に多数の項目を管理する必要がある場合は、コスト割り当てレポートで環境を特定するのに役立ちま
す。また、タグを使用して、リソースレベルでアクセス権限を管理することもできます。
Elastic Beanstalk はデフォルトで 3 つのタグを適用します。elasticbeanstalk:environment-name
は環境の名前です。elasticbeanstalk:environment-id は環境 ID です。Name は環境の名前でも
あります。Name は、EC2 ダッシュボードでリソースを識別およびソートするのに使用されます。
環境の作成中に追加のタグを 7 つ追加できます。環境の作成ウィザード (p. 53)の [Environment Tags]
ページでタグを指定します。
API Version 2010-12-01
85
AWS Elastic Beanstalk 開発者ガイド
プラットフォームの更新
EB CLI を使用して環境を作成した場合は、eb create (p. 427) で --tags オプションを使用してタ
グを追加します。
~/workspace/my-app$ eb create --tags mytag1=value1,mytag2=value2
AWS CLI やその他の API ベースのクライアントでは、create-environment で --tagsパラメータ
を使用します。
$ aws elasticbeanstalk create-environment --tags Key=mytag1,Value=value1
Key=mytag2,Value=value2 --application-name my-app --environment-name my-env -cname-prefix my-app --version-label v1 --template-name my-saved-config
保存済み設定 (p. 103)にはユーザー定義タグが含まれます。環境の作成時にタグが含まれる情報を適用
すると、新しいタグを指定しないかぎり、これらのタグが新しい環境に適用されます。前述の方法の 1
つを使用して環境にタグを追加した場合、保存済み設定に定義されているすべてのタグは破棄されま
す。
AWS リソースの使用状況を追跡するために、コスト割り当てレポートを使用できます。レポートには
タグ付きのリソースとタグが付いていないリソースが含まれていますが、タグに従ってコストを集計し
ます。コスト配分レポートでタグがどのように使用されているかについては、『AWS 請求とコスト管
理ユーザーガイド』の「コスト配分タグを使用したカスタム請求レポート」を参照してください。
Amazon EC2 タグの詳細や例については、『Linux インスタンス用 Amazon EC2 ユーザーガイド』の
「Amazon EC2 リソースにタグを付ける」を参照してください。
Elastic Beanstalk 環境のプラットフォームバージョ
ンの更新
Abstract
環境が Elastic Beanstalk マネジメントコンソールを使って実行中のソリューションスタックのバージョンを更新し
ます。
レガシーコンテナタイプからアプリケーションを移
行する
Abstract
新しい機能にアクセスできるように、レガシーコンテナタイプを使用するデプロイ済みの Elastic Beanstalk アプリ
ケーションを、非レガシーコンテナタイプを使用する新しい環境に移行します。
レガシーコンテナタイプを使用する Elastic Beanstalk アプリケーションをデプロイした場合は、新し
い機能にアクセスできるよう、レガシーではないコンテナを使用してアプリケーションを新しい環境に
移行してください。アプリケーションの実行にレガシーコンテナを使用しているかどうか不明な場合
は、Elastic Beanstalk コンソールで確認できます。手順については、「レガシーコンテナタイプを使っ
ているかどうかを調べるには (p. 87)」を参照してください。
いくつかのコンテナタイプがレガシーとマークされている理由
一部の古いプラットフォーム設定では、最新の Elastic Beanstalk 機能はサポートされていません。こ
れらの設定は AWS マネジメントコンソール の環境設定ページで [(legacy)] とマークされます。
API Version 2010-12-01
86
AWS Elastic Beanstalk 開発者ガイド
レガシー環境をアップグレードする
レガシーコンテナタイプを使っているかどうかを調べるには
1.
Elastic Beanstalk コンソールを開きます。
2.
Elastic Beanstalk コンソールアプリケーションページから、アラームを追加確認する環境をクリッ
クします。
3.
環境ダッシュボードの [Overview] セクションに、[Configuration] 名が表示されます。
設定の横に [(legacy)] が表示されている場合、アプリケーションでレガシーコンテナタイプを使用
しています。
アプリケーションを移行するには
1.
アプリケーションを新しい環境にデプロイするには方法については、「AWS Elastic Beanstalk 環
境を作成する (p. 53)」を参照してください。
2.
Amazon RDS DB インスタンスが存在する場合は、新しい環境の EC2 セキュリティグループへの
アクセスを許可するため、データベースセキュリティグループを更新してください。AWS マネジ
メントコンソールを使用した EC2 セキュリティグループ名の検索手順については、「セキュリティ
グループ (p. 200)」を参照してください。EC2 セキュリティグループの詳しい設定方法については
「Amazon Relational Database Service User Guide」の「Working with DB Security Groups」にあ
る「Authorizing Network Access to an Amazon EC2 Security Group」セクションをご覧ください。
3.
環境 URL をスワップします。方法については、「AWS Elastic Beanstalk を使用した Blue-Green
Deployment (p. 79)」を参照してください。
4.
以前の環境を終了します。方法については、「環境を終了する (p. 66)」を参照してください。
Note
AWS Identity and Access Management(IAM)を使用している場合は、必要に応じて AWS
CloudFormation and Amazon RDS を含めるようポリシーを更新してください。詳細について
は、「Elastic Beanstalk を AWS Identity and Access Management に使用する (p. 344)」を参照
してください。
使用中の環境のプラットフォーム設定 (p. 25)で新しいバージョンが利用可能である場合、Elastic
Beanstalk によって環境マネジメントコンソール (p. 50)にメッセージが表示され、[Change] ボタンが
使用可能になります。以前に同じ設定で古いバージョンを使用して環境を作成したか、または古い設定
から環境をアップグレードした場合は、[Change] ボタンを使用して以前の設定バージョンに戻すこと
もできます。
設定は言語やツールのメジャーバージョンに固有です。構成が更新される場合、言語やツールのメジャー
バージョンは変更されません。たとえば、Java 7 Tomcat 7 と Java 8 Tomcat 8 は、Java と Tomcat プ
ラットフォームの異なる 2 つの設定です。プラットフォーム更新は、設定間では実行できず、同じ設定
API Version 2010-12-01
87
AWS Elastic Beanstalk 開発者ガイド
レガシー環境をアップグレードする
のバージョン間(Java 8 Tomcat 8 バージョン 1.4.5 と Java 8 Tomcat 8 バージョン 2.0.0、など)での
み実行できます。
プラットフォームにアップグレードするには
1.
環境については「management console (p. 50)」をご覧ください。
2.
[Overview] セクションの [Configuration]で、[Change] をクリックします。
3.
[Update Platform Version] ページで、[Platform] をクリックし、環境で使用するプラットフォーム
バージョンをクリックします。
プラットフォームバージョンのアップグレード中にアプリケーションを使用できるかどうかは、
ローリング更新を有効にしているかどうかによって異なります。[Update Platform Version] ウィン
ドウでは、実行される処理と、ダウンタイムを最小化するために従うことができる手順が説明され
ます。Elastic Beanstalk で、次のいずれかのようなウィンドウが表示されます。
API Version 2010-12-01
88
AWS Elastic Beanstalk 開発者ガイド
更新のキャンセル
4.
使用するプラットフォームのバージョンを選択したら、[Save] をクリックします。
環境設定の更新およびアプリケーションのデプロ
イのキャンセル
Abstract
Amazon EC2 インスタンスの置き換えを必要とする、進行中の環境設定変更のローリング更新と、バッチ処理され
たアプリケーションバージョンの更新を中止します。
環境設定の変更によってトリガされる進行中の更新はキャンセルできます。また、進行中の新しいアプ
リケーションバージョンのデプロイをキャンセルすることもできます。たとえば、新しい環境設定を適
用するのではなく、既存の環境設定を引き続き使用するよう決定した場合は、更新をキャンセルするこ
ともあります。または、デプロイする新しいアプリケーションバージョンに問題があり、それによって
アプリケーションが起動しなくなったり、正しく実行されなくなったりすることがわかる場合がありま
す。環境またはアプリケーションバージョンの更新をキャンセルすることで、更新またはデプロイプロ
セスが終了するのを待ってから、環境またはアプリケーションバージョンの更新を新たに試みることを
回避できます。
Note
不要になった古いリソースが削除されるクリーンアップフェーズでは、インスタンスの最後の
バッチが更新された後に、更新をキャンセルすることはできません。
Elastic Beanstalk は、最後に成功した更新と同じ方法を使ってロールバックを実行します。たとえば、
環境で時間ベースのローリング更新を有効にしている場合、Elastic Beanstalk はインスタンスの 1 つの
バッチでの変更のロールバックから、次のバッチの変更のロールバックまで、指定された時間待機しま
す。または、最近ローリング更新を有効にしたが、最後に正常に環境設定を更新した際に、ローリング
更新を行わなかった場合、Elastic Beanstalk ではすべてのインスタンスで同時にロールバックが実行さ
れます。
いったん更新のキャンセルを開始すると、Elastic Beanstalk で前の環境設定にロールバックすることは
できません。ロールバックプロセスは、環境のすべてのインスタンスに以前の環境設定が戻るか、ロー
ルバックプロセスが失敗するまで続行されます。アプリケーションバージョンのデプロイでは、デプロ
イをキャンセルすると単純にデプロイが中止されます。一部のインスタンスには新しいアプリケーショ
ンバージョンが適用され、他のインスタンスは引き続き既存のアプリケーションバージョンが実行され
API Version 2010-12-01
89
AWS Elastic Beanstalk 開発者ガイド
環境タイプ
ます。後で、同じアプリケーションバージョンまたは別のアプリケーションバージョンをデプロイでき
ます。
ローリング更新の詳細については、「ローリング更新によって Elastic Beanstalk 環境を更新する (p. 82)」
を参照してください。バッチ処理されたアプリケーションバージョンのデプロイの詳細については、
「アプリケーションバージョンのバッチでのデプロイ(ローリングデプロイ) (p. 77)」を参照してく
ださい。
更新をキャンセルするには
•
環境ダッシュボードで、[Actions] をクリックし、[Abort Current Operation] をクリックします。
環境タイプ
Abstract
Elastic Beanstalk アプリケーションに対して、ロードバランシングでオートスケーリングの環境またはシングルイ
ンスタンス環境を作成します。
Elastic Beanstalk で、ロードバランシングでオートスケーリングの環境またはシングルインスタンス環
境を作成できます。必要な環境タイプは、デプロイしたアプリケーションによって異なります。たとえ
ば、コストの節約のためシングルインスタンス環境でアプリケーションを開発およびテストし、アプリ
ケーションが本番環境向けに整ってからロードバランシングでオートスケーリングの環境に環境をアッ
プグレードできます。
Note
バックグラウンドのタスクを処理するウェブアプリケーションのワーカー環境枠には、ロード
バランサーは含まれません。ただし、ロードによって必要とされるときに Amazon SQS キュー
からデータを処理できるように、Auto Scaling group にインスタンスを追加することで、ワー
カー環境が効果的にスケールアウトされます。
ロードバランシングでオートスケーリングの環境
ロードバランシングでオートスケーリングの環境では、Elastic Load Balancing および Auto Scaling サー
ビスを使用して、デプロイしたアプリケーションで必要な Amazon EC2 インスタンスをプロビジョニ
ングします。Auto Scaling は、アプリケーションへの負荷の増大に対応できるように追加インスタンス
を自動的に開始します。アプリケーションへの負荷が軽減すると、Auto Scaling はインスタンスを停止
しますが、最低インスタンス実行数は常に保持されます。アプリケーションで、複数のアベイラビリ
ティーゾーンで実行するオプションを備えたスケーラビリティが必要な場合、ロードバランシングで
オートスケーリングの環境を使用します。どの環境タイプを選択したらよいか分からない場合は、1 つ
選び、必要に応じて後から環境タイプを変更することができます。
API Version 2010-12-01
90
AWS Elastic Beanstalk 開発者ガイド
シングルインスタンス環境
シングルインスタンス環境
シングルインスタンス環境には、Elastic IP アドレスを使用する 1 つの Amazon EC2 インスタンスが含
まれています。シングルインスタンス環境にはロードバランサーがなく、ロードバランシングでオート
スケーリングの環境と比べてコストが節約できます。単一インスタンス環境でも Auto Scaling サービ
スは使用されますが、インスタンスの最小数、インスタンスの最大数、および適切な容量の設定はすべ
て 1 に設定されています。したがって、アプリケーションで増加する負荷に対応するために新しいイン
スタンスが起動されるということはありません。
本番アプリケーションのトラフィックが少ないと考えられる場合や、リモート開発を行っている場合
は、シングルインスタンス環境を使用します。どの環境タイプを選択したらよいか分からない場合は、
1 つ選び、必要に応じて後から環境タイプを変更します。詳細については、「環境タイプの変更 (p. 91)」
を参照してください。
環境タイプの変更
環境タイプをシングルインスタンスまたはロードバランシングでオートスケーリングの環境に変更する
には、環境設定を編集します。場合によっては、環境タイプを別のタイプに変更することができます。
たとえば、コストの節約のため、シングルインスタンス環境でアプリケーションを開発しテストすると
します。アプリケーションが本番環境で稼働できるようになったら、環境タイプをロードバランシング
でオートスケーリングの環境に変更して、スケール変更して顧客のニーズに対応できるようにすること
ができます。
環境のタイプを変更するには
1.
2.
Elastic Beanstalk コンソールを開きます。
リージョンリストから、作業対象の環境が含まれたリージョンを選択します。
3.
Elastic Beanstalk コンソールアプリケーションページで、環境名をクリックします。
4.
5.
環境ダッシュボードの [Overview] セクションで、[Edit] をクリックします。
[
] を [Scaling] 設定でクリックします。
API Version 2010-12-01
91
AWS Elastic Beanstalk 開発者ガイド
ワーカー環境
6.
[Environment Type] セクションで、目的の環境タイプを選択します。
Note
単一インスタンス環境タイプは、レガシーでないコンテナでのみ使用できます。レガシー
コンテナからの移行方法については、「レガシーコンテナタイプからアプリケーションを
移行する (p. 86)」を参照してください。
7.
8.
環境が VPC にある場合は、ELB および EC2 のインスタンスを配置するサブネットを選択します。
アプリケーションを実行する各アベイラビリティーゾーンでは両方が必要です。詳細については、
「Amazon VPC で Elastic Beanstalk を使用する (p. 319)」を参照してください。
[Save] をクリックします。
Elastic Beanstalk が AWS リソースをプロビジョニングするため、環境が更新されるまでに数分か
かることがあります。
ワーカー環境
Abstract
ワーカー環境を作成して、バックグラウンド処理タスク実行するアプリケーションを実行します。
API Version 2010-12-01
92
AWS Elastic Beanstalk 開発者ガイド
ワーカー環境の仕組み
Elastic Beanstalk 環境を起動したら、環境枠、プラットフォーム、および環境タイプを選択します。選
択した環境枠によって、Elastic Beanstalk がリソースをプロビジョニングし、HTTP(S)リクエスト
を処理するウェブアプリケーション、またはバックグラウンドプロセスタスクを処理するウェブアプリ
ケーションのどちらをサポートするかが決まります。ウェブアプリケーションがウェブリクエストを処
理する環境は、ウェブサーバー環境と呼ばれています。ウェブアプリケーションがバックグラウンド
ジョブを実行する環境枠は、ワーカー枠と呼ばれています。
ワーカー環境を単独でデプロイして、Amazon Simple Queue Service キュー(Amazon EC2 や AWS
OpsWorks など)に書き込むことができる AWS サービスのバックグラウンド処理タスクを実行できま
す。または、Elastic Beanstalk ウェブサーバー枠と同時にデプロイすることができます。ワーカー環境
では、長時間実行されるタスクや非同期で実行できるタスクを実行できます。バックグラウンド処理タ
スクをワーカー環境にオフロードすることで、ウェブリクエストを処理するウェブサーバー環境内の
ウェブアプリケーションが解放されます。
ワーカー環境は、Elastic Beanstalk が提供すプロセスデーモンを実行します。このデーモンは定期的に
更新され、機能の追加とバグの修正が行われます。デーモンの最新バージョンを取得するには、最新の
プラットフォームバージョン (p. 25)に更新します。
機能
リリース日
説明
拡張ヘルスレポート (p. 263)
2015 年 8 月 11 日
環境の状態をより詳細に正確にモ
ニタリングします。
定期的なタスク (p. 96)
2015 年 2 月 17 日
アプリケーションソースコードの
cron.yaml ファイルで、cron
ジョブを実行します。
デッドレターキュー (p. 95)
2014 年 5 月 27 日
トラブルシューティングのため
に、失敗したジョブをデッドレ
ターキューに送信します。
ワーカー環境の仕組み
Elastic Beanstalk は、Auto Scaling group の各 Amazon EC2 インスタンスにデーモンをインストールし
て、ワーカー環境で Amazon SQS メッセージを処理します。デーモンは Amazon SQS キューからデー
タを引き出し、HTTP POST リクエストのメッセージ本文に挿入して、ローカルホスト上のユーザー設
定可能な URL パスに送信します。HTTP POST リクエストのメッセージ本文のコンテンツタイプは、
デフォルトで application/json です。
Important
ワーカー環境をデプロイする予定である場合は、Amazon SQS がどのように機能するかを理解
しておくことが推奨されます。特に、Amazon SQS キューのプロパティ(メッセージの順序、
少なくとも 1 回の配信、およびメッセージのサンプリング)は、ワーカー環境のウェブアプリ
ケーションをどのように設計するかに影響を与える可能性があります。詳細については、Amazon
Simple Queue Service Developer Guide の Properties of Distributed Queues を参照してくださ
い。
次の図は、Amazon SQS メッセージを処理するワーカー環境の例を示しています。
API Version 2010-12-01
93
AWS Elastic Beanstalk 開発者ガイド
ワーカー環境の仕組み
デーモンは次の HTTP ヘッダーを設定します。
Note
HTTP ヘッダー名では大文字と小文字は区別されません。詳細については、「Hypertext Transfer
Protocol -- HTTP/1.1 の仕様」の「4.2 メッセージヘッダー」を参照してください。
[HTTP Headers]
名前
バリュー
User-Agent
aws-sqsd
1
aws-sqsd/1.1
X-Aws-Sqsd-Msgid
メッセージストームの検出に使用する SQS メッセージ ID
X-Aws-SqsdQueue
SQS キューの名前
X-Aws-Sqsd-First- メッセージを最初に受信した時間を示すタイムスタンプ(UTC タイムゾーン)
Received-At
Note
タイムスタンプは ISO 8601 日時形式で表されます。詳細については、
http://www.w3.org/TR/NOTE-datetime を参照してください。
X-Aws-Sqsd-Receive-Count
SQS メッセージの受信件数
API Version 2010-12-01
94
AWS Elastic Beanstalk 開発者ガイド
ワーカー環境の仕組み
[HTTP Headers]
Content-Type
Mime タイプ設定、デフォルトでは application/json
X-Aws-Sqsd2
Taskname
定期的なタスクの名前
X-Aws-Sqsd-Attr-message-at2
tribute-name
処理されるメッセージに割り当てられたカスタムメッセージ属性。message-attribute-name は実際のメッセージ属性名です。文字列と数値のメッセージ属性
はすべてヘッダーに追加されますが、バイナリ属性は破棄され、ヘッダーに含ま
れません。
X-Aws-Sqsd2
Scheduled-At
定期的なタスクが予定されている時刻
X-Aws-Sqsd2
Sender-Id
メッセージの送信者の AWS アカウント番号
リクエストは設定した HTTP パスの値に送信されます。これは、デーモンがリクエストを開始したワー
カー環境内のウェブアプリケーションに表示されるとおりに実行されます。これにより、デーモンは
ウェブサーバー環境内のロードバランサーと同じような役割を果たします。
ワーカー環境は、キューのメッセージを処理した後、そのメッセージをローカルループバックによっ
て、ユーザーが指定した URL にあるウェブアプリケーションに転送します。キュー URL はローカルホ
ストからのみアクセス可能です。キュー URL には同一の EC2 インスタンスからのみアクセス可能なた
め、URL に配信されたメッセージの検証に認証は不要です。
ワーカー環境内のウェブアプリケーションは、ローカルホストのみをリッスンする必要があります。
ワーカー環境内のウェブアプリケーションが 200 OK 応答を返して、リクエストを受信し、正常に処理
したことを確認すると、デーモンが DeleteMessage 呼び出しを SQS キューに送信し、そのメッセー
ジがキューから削除されます。(SQS では、キューにあるメッセージが、設定した RetentionPeriod
を超過すると自動的に削除されます。)アプリケーションが 200 OK 以外の応答を返した場合は、Elastic
Beanstalk は、設定済みの VisibilityTimeout 期間の経過後にメッセージをキューに戻します。応
答がない場合は、Elastic Beanstalk は、処理中の別の試行でそのメッセージを使用できるように、
InactivityTimeout 期間の経過後にメッセージをキューに戻します。
デッドレターキュー
Elastic Beanstalk ワーカー環境では Amazon Simple Queue Service(SQS)デッドレターキューがサ
ポートされています。 デッドレターキューは、特定の理由で正常に処理できなかったメッセージを他
の(送信元)キューが送信できるキューです。デッドレターキューを使用することの主なメリットは、
正常に処理されなかったメッセージを対象から外して隔離することができることです。その後、デッド
レターキューに送信されたメッセージを分析し、正常に処理されなかった理由を調べることができま
す。
ワーカー環境の作成時に、自動生成された Amazon SQS キューを指定した場合、そのワーカー環境で
はデッドレターキューがデフォルトで有効になっています。ワーカー環境に対して既存の SQS キュー
を選択した場合、SQS を使用してデッドレターキューを個別に設定する必要があります。SQS を使用
してデッドレターキューを設定する方法については、「Amazon SQS デッドレターキューの使用」を
参照してください。
デッドレターキューを無効にすることはできません。配信できないメッセージは、最終的には必ずデッ
ドレターキューに送信されます。ただし、この機能を無効にできます。そのためには、MaxRetries オ
プションを有効な最大値 1000 に設定します。
API Version 2010-12-01
95
AWS Elastic Beanstalk 開発者ガイド
ワーカー環境枠での Auto Scaling のための Amazon
CloudWatch の使用
Note
Elastic Beanstalk の MaxRetries オプションは、SQS の MaxReceiveCount オプションと同
じです。ワーカー環境が自動生成された SQS キューを使用しない場合は、SQS で
MaxReceiveCount オプションを使用してデッドレターキューを無効にできます。詳細につい
ては、「Amazon SQS デッドレターキューの使用」を参照してください。
SQS メッセージのライフサイクルの詳細については、「メッセージのライフサイクル」を参照してく
ださい。
定期的なタスク
Elastic Beanstalk ワーカー環境では、Amazon SQS キューからのメッセージの処理だけでなく定期的
なタスクを実行できます。ただし、Amazon SQS はメッセージを受け取った順番で処理します。その
ため、Amazon SQS キューで多数のメッセージが処理を待っている場合には、定期的なタスクの実行
が遅れる可能性があります。定期的なタスクを時間厳守で実行することが重要な場合は、アプリケー
ションを別々に設計することをお勧めします。
定期的なタスクを実行するには、アプリケーションソースバンドルのルートレベルに cron.yaml ファ
イルを含める必要があります。このファイルで、スケジュールを設定する定期的なタスクに関する情報
を指定する必要があります。この情報は標準の crontab 構文を使用して指定します。詳細については、
「CRON 式」を参照してください。
次のコードスニペットは、サンプルファイルである cron.yaml の一部です。このファイルでは、指定
した EC2 インスタンスで 12 時間ごとに backup-job ジョブを実行し、現地時刻の毎日午後 11 時に
audit ジョブを実行するように指定されています(午後 11 時は、23 時として指定されます)。各ジョ
ブの name は、ファイル内で一意である必要があります。アプリケーション URL には url が付加され
ます。
version: 1
cron:
- name: "backup-job"
file
url: "/backup"
schedule: "0 */12 * * *"
- name: "audit"
url: "/audit"
schedule: "0 23 * * *"
# required - unique across all entries in this
# required - does not need to be unique
# required - does not need to be unique
ワーカー環境枠での Auto Scaling のための Amazon
CloudWatch の使用
Auto Scaling と CloudWatch は連動して、ワーカー環境で実行されているインスタンスの CPU 使用率
をモニタリングします。CPU 処理能力の Auto Scaling 制限の設定により、SQS キューにあるメッセー
ジのスループットを適切に管理するため Auto Scaling グループが実行するインスタンスの数が決定さ
れます。それぞれの EC2 インスタンスから、その CPU の使用状況メトリックスが CloudWatch へ発
行されます。Auto Scaling は、CloudWatch から、ワーカー環境内のすべてのインスタンスの平均 CPU
使用率を取得します。CPU 能力に応じて、追加または終了するインスタンスの数、および上限と下限
のしきい値を設定します。Auto Scaling によって、指定した CPU 処理能力の上限しきい値に達したこ
とが検出されると、Elastic Beanstalk がワーカー環境に新しいインスタンスを作成します。これらのイ
ンスタンスは、CPU 負荷がしきい値未満に戻ると削除されます。
API Version 2010-12-01
96
AWS Elastic Beanstalk 開発者ガイド
ワーカー環境を作成する
Note
インスタンスの終了時に処理されていなかったメッセージは、再度キューに表示され、まだ実
行中であるインスタンスの別のデーモンで処理されます。
また、必要に応じて AWS マネジメントコンソール、CLI、またはオプションのファイルを使用して、
別の CloudWatch アラームを設定することもできます。詳細については、「Amazon CloudWatch で
Elastic Beanstalk を使用する (p. 303)」および「Use Auto Scaling Policies and Amazon CloudWatch
Alarms for Dynamic Scaling」を参照してください。
メトリックスを CloudWatch に発行するには、データを CloudWatch に送信するためのアクセス許可を
IAM ロールに付与するように IAM ポリシーを設定する必要があります。詳細については、「ワーカー
環境枠の IAM ロール許可を付与する (p. 345)」を参照してください。
ワーカー環境を作成する
Elastic Beanstalk 環境を作成するとき、または既存の環境を更新するとき、AWS マネジメントコンソー
ル、CreateEnvironment API、UpdateEnvironment API、EB CLI、または AWS コマンドラインのいず
れを使用するかに関係なく、[ウェブサーバー] 環境または [ワーカー] 環境のどちらにするかを指定しま
す。1 つの環境をウェブサーバー環境とワーカー環境の両方にすることはできません。Elastic Beanstalk
では、環境につき 1 つの Auto Scaling group のみがサポートされるからです。デフォルトでは、Elastic
Beanstalk はウェブサーバー環境を起動します。環境を起動した後、環境枠を変更することはできませ
ん。ウェブアプリケーションが別の種類の環境枠を必要とする場合は、新しい環境を起動する必要があ
ります。
Note
CreateEnvironment API と UpdateEnvironment API には、tier と呼ばれる属性があります
(DescribeEnvironments API は、それが示す枠がワーカー環境である場合、応答の一部として
tier パラメータを含んでおり、一部のパラメータを省略します。DescribeEnvironmentResources
API には、EnvironmentResources と呼ばれる属性があります)。
既存の Amazon SQS キューを使用する場合、ワーカー環境の作成時に行った設定が、Amazon SQS で
直接行った設定と競合することがあります。たとえば、ワーカー環境の RetentionPeriod の値を、Amazon
SQS で設定した MessageRetentionPeriod の値より高く設定した場合、MessageRetentionPeriod が経
過すると、メッセージは Amazon SQS によって削除されます。また、ワーカー環境で設定した
RetentionPeriod の値が Amazon SQS で設定した MessageRetentionPeriod の値より低い場合、Amazon
SQS がメッセージを削除する前にデーモンがメッセージを削除します。VisibilityTimeout については、
ワーカー環境で設定したデーモンの値が Amazon SQS の VisibilityTimeout の設定をオーバーライドし
ます。Elastic Beanstalk の設定と Amazon SQS の設定を比較して、メッセージが適切に削除されたこ
とを確認します。
ワーカー環境枠の設定時に既存の Amazon SQS キューを指定しない場合、Elastic Beanstalk によって
新たに作成されます。この URL は DescribeEnvironmentResources を呼び出して取得できます。
環境を起動する手順については、「AWS Elastic Beanstalk 環境を作成する (p. 53)」を参照してくださ
い。
Elastic Beanstalk でのワーカー環境の設定
Abstract
ワーカー環境の詳細を編集します。これには、新しい環境の起動時に Elastic Beanstalk が設定するワーカー環境の
設定や、デーモンによって使用されるより詳細な設定が含まれます。
API Version 2010-12-01
97
AWS Elastic Beanstalk 開発者ガイド
Elastic Beanstalk でのワーカー環境の設定
前述のとおり、Elastic Beanstalk は Auto Scaling グループ内の各 Amazon EC2 インスタンスにデーモ
ンをインストールします。ワーカー環境を作成したら、デーモンが Amazon SQS メッセージをどのよ
うに処理するかを制御できます。たとえば、メッセージが有効である保存期間や、メッセージが処理の
ためにロックされて Amazon SQS キューで非表示になる可視性タイムアウト期間などの追加の設定を
適用できます。
AWS マネジメントコンソール
ワーカー環境の設定は、環境マネジメントコンソール (p. 50)で、環境の [Configuration] ページの [Worker
Configuration] を編集することによって管理できます。
[Worker Details] ページには次のオプションがあります。
• [Worker queue] – デーモンにより読み込まれる Amazon SQS キューを指定します。既存のキューが
あればそれを選択することができます。[Autogenerated queue] を選択すると、Elastic Beanstalk に
よって新しい Amazon SQS キューおよび対応する [Worker queue URL] が作成されます。
• [Worker queue URL] – 既存の [Worker queue] を選択すると、その Amazon SQS キューに関連付け
られている URL が表示されます。
• [HTTP path] – Amazon SQS キューからデータを受け取るアプリケーションの相対パスを指定しま
す。このデータは HTTP POST メッセージのメッセージ本文に挿入されます。デフォルト値は / で
す。
• [MIME type] – HTTP POST メッセージで使用される MIME タイプを示します。デフォルト値は
application/json です。ただし、独自の MIME タイプを作成し、指定できるため、どのような値
でも有効になります。
• [Max retries] - メッセージがデッドレターキューに移動されるまでに Elastic Beanstalk が Amazon
SQS キューにメッセージを送信する試行回数の最大数を指定します。デフォルト値は 10 です。1 か
ら 1000 までの値を指定できます。
• [HTTP connections] – Amazon EC2 インスタンス内でデーモンが任意のアプリケーションに同時接続
できる最大数を指定します。デフォルトは 50 です。1 から 100 までの値を指定できます。
• [Connection timeout] – アプリケーションに正常に接続するまでの待機時間を秒数で示します。デフォ
ルト値は 5 です。1 秒から 60 秒までの値を指定できます。
API Version 2010-12-01
98
AWS Elastic Beanstalk 開発者ガイド
Elastic Beanstalk でのワーカー環境の設定
• [Inactivity timeout] – アプリケーションへの既存の接続が応答するまでの待機時間を秒数で示します。
デフォルト値は 180 です。1 秒から 1800 秒までの値を指定できます。
• [Visibility timeout] – Amazon SQS キューからの着信メッセージが処理のためにロックされる時間を秒
数で示します。設定した時間が経過すると、メッセージが再びキューに表示され、他のデーモンが読
み込めるようになります。2014 年 5 月 27 日以降に作成されたワーカー環境の場合、デフォルト値
は 300 秒です。2014 年 5 月 27 日より前に作成されたワーカー環境の場合、デフォルト値は 30 秒
です。0 から 43200 までの値を指定できます。アプリケーションがメッセージを処理するために必
要とすると予測される時間よりも大きい値を指定することが推奨されます。
• [Error visibility timeout] – 明示的なエラーで処理が失敗した後、Elastic Beanstalk が Amazon SQS
キューにメッセージを返すまでの経過時間を秒数で示します。0 から 43200 までの値を指定できま
す。
• [Retention period] – メッセージが有効であり、アクティブに処理される時間を秒数で示します。デ
フォルト値は 345600 です。60 から 1209600 までの値を指定できます。
API Version 2010-12-01
99
AWS Elastic Beanstalk 開発者ガイド
AWS Elastic Beanstalk 環境設定
Abstract
AWS Elastic Beanstalk 環境をカスタマイズして設定する
AWS Elastic Beanstalk 環境を作成する場合、Elastic Beanstalk は、アプリケーションの実行とサポー
トに必要なすべての AWS リソースをプロビジョニングして設定します。設定オプション (p. 101)の値を
指定することで、環境のメタデータの設定や動作の更新に加えて、これらのリソースをカスタマイズで
きます。例えば、Amazon SQS キューおよびキューの深さに対するアラームを追加したり、Amazon
ElastiCache クラスターを追加したりする場合です。
設定オプションのほとんどで、Elastic Beanstalk に自動的に適用されるデフォルト値が設定されていま
す。これらのデフォルト設定は、設定ファイル、保存済み設定、コマンドラインオプションで、または
Elastic Beanstalk API を直接呼び出して上書きできます。EB CLI および Elastic Beanstalk コンソール
は、一部のオプションで推奨値も適用します。
ソースバンドルと共に設定ファイルを含めることにより、アプリケーションバージョンのデプロイと同
時に環境を簡単にカスタマイズできます。インスタンスのソフトウェアをカスタマイズするときは、カ
スタム AMI を作成するより設定ファイルを使用する方が、AMI のセットを保持する必要がないので優っ
ています。
アプリケーションをデプロイするときは、アプリケーションが依存するソフトウェアをカスタマイズお
よび設定したい場合があります。これらのファイルは、アプリケーションが必要とする依存関係(例え
ば、yum リポジトリからの追加パッケージ)、または設定ファイル(AWS Elastic Beanstalk のデフォ
ルトである特定の設定を上書きするための、httpd.conf の代替ファイル)です。
トピック
• 設定オプション (p. 101)
• 設定ファイル(.ebextensions)による高度な環境のカスタマイズ (p. 147)
• Elastic Beanstalk 保存済み設定を使用する (p. 185)
• マニフェスト環境(env.yaml) (p. 188)
• Elastic Beanstalk で Auto Scaling を設定する (p. 189)
• Elastic Beanstalk を使用して Amazon EC2 サーバーインスタンスを設定する (p. 199)
• Elastic Beanstalk 環境のロードバランサーの設定 (p. 205)
• Elastic Beanstalk でデータベースを設定する (p. 209)
• Elastic Beanstalk で VPC を設定する (p. 212)
• Elastic Beanstalk で Amazon SNS 通知を設定する (p. 213)
API Version 2010-12-01
100
AWS Elastic Beanstalk 開発者ガイド
設定オプション
• Elastic Beanstalk 環境のドメイン名 (p. 215)
• Elastic Beanstalk 環境用に HTTPS を設定する (p. 217)
• カスタム Amazon マシンイメージ(AMI)の作成 (p. 251)
• AWS Elastic Beanstalk 環境間のリンクを作成する (p. 254)
設定オプション
Abstract
特定の API コマンドラインオペレーションを使用して、オプションファイルにオプションの値を指定することがで
きます。
このセクションでは、設定ファイル([.ebextensions] (p. 147))、保存済み設定、および Elastic
Beanstalk コンソール、EB CLI、AWS CLI、SDK を使用して環境が作成または更新された場合に環境
に直接適用されるオプション設定で指定可能な名前空間、オプション、値を示します。
設定オプションの設定は、テキスト形式で構成し、環境の作成前に保存し、サポートされる任意のクラ
イアントを使用した環境の作成時に適用し、環境の作成後に追加、変更または削除できます。これら 3
つのステージでの設定オプションの操作で使用可能なすべての方法の詳細については、次のトピックを
参照してください。
• 環境を作成する前に設定オプションを設定する (p. 101)
• 環境の作成時の設定オプションの設定 (p. 105)
• 環境の作成後に設定オプションを設定する (p. 110)
環境を作成する前に設定オプションを設定する
Abstract
環境を作成する前に、AWS Elastic Beanstalk ソースバンドル内の保存済み設定や .ebextensions 設定ファイルを使
用してオプションを設定します。
AWS Elastic Beanstalk は、環境内のリソースに適用される設定を変更するための設定オプション (p. 101)
を数多くサポートしています。これらのオプションの一部には、環境のカスタマイズで上書きされるデ
フォルト値があります。その他のオプションを設定すると、追加機能を有効化できます。
Elastic Beanstalk では、2 つの方法で設定オプションの設定を保存できます。YAML または JSON 形式
の設定ファイルは、[.ebextensions] というディレクトリ名でアプリケーションのソースコードに含
め、アプリケーションソースバンドルの一部としてデプロイすることができます。設定ファイルをロー
カルで作成して管理します。
保存済み設定とは、実行中の環境や JSON オプション ファイルから作成され、Elastic Beanstalk に保
存されるテンプレートです。既存の保存済み設定を拡張し、新しい設定を作成することもできます。
Note
設定ファイルや保存済み設定で定義された設定は、環境の作成時または環境の作成後に設定さ
れた設定(Elastic Beanstalk コンソールや EB CLI (p. 403) に適用される推奨値など)よりも優
先順位が低くなります。詳細については、「優先順位 (p. 145)」を参照してください。
オプションは JSON ドキュメントでも指定され、EB CLI や AWS CLI で環境を作成または更新する際
に Elastic Beanstalk に対して直接設定される場合があります。この方法で Elastic Beanstalk に直接設
定されるオプションは、他の方法によるすべてのオプションを上書きします。
API Version 2010-12-01
101
AWS Elastic Beanstalk 開発者ガイド
環境を作成する前
使用可能なオプションの詳細なリストについては、「設定オプション (p. 101)」を参照してください。
方法
• 設定ファイル(.ebextensions) (p. 102)
• 保存された設定 (p. 103)
• JSON ドキュメント (p. 105)
• EB CLI 設定 (p. 105)
設定ファイル(.ebextensions)
アプリケーションを機能させるのに必要なオプションを .ebextensions を使用して設定し、優先 (p. 145)
順位の高い設定に上書きされるその他のオプションのデフォルト値を指定します。.ebextensions で
指定されるオプションは、優先順位が一番低く、他のあらゆるレベルの設定に上書きされます。
設定ファイルを使用するには、プロジェクトのソースコードの最上位で [.ebextensions] という名前
のフォルダを作成します。拡張子 .config でファイルを追加し、次の方法でオプションを指定しま
す。
option_settings:
- namespace: namespace
option_name: option name
value: option value
- namespace: namespace
option_name: option name
value: option value
たとえば次の設定ファイルは、アプリケーションのヘルスチェック URL を /health に設定します。
healthcheckurl.config
option_settings:
- namespace: aws:elasticbeanstalk:application
option_name: Application Healthcheck URL
value: /health
JSON の場合:
{
"option_settings" :
[
{
"namespace" : "aws:elasticbeanstalk:application",
"option_name" : "Application Healthcheck URL",
"value" : "/health"
}
]
}
これは、Elastic Beanstalk 環境に Elastic Load Balancing ロードバランサーを設定し、各 EC2 インスタ
ンスへのパス /health に HTTP リクエストを実行し、正常かどうかを判断します。
API Version 2010-12-01
102
AWS Elastic Beanstalk 開発者ガイド
環境を作成する前
Note
設定ファイルは YAML または JSON 形式の規格に準拠している必要があります。 たとえば、
YAML を正しく解釈するにはインデントが重要です。詳細は、それぞれ http://www.yaml.org/
start.html または http://www.json.org を参照してください。アプリケーションでの設定ファイル
のデプロイの詳細については、「設定ファイル(.ebextensions)による高度な環境のカス
タマイズ (p. 147)」を参照してください。
.ebextensions ディレクトリを アプリケーションソースバンドル (p. 42)に含め、新しいまたは既存
の Elastic Beanstalk 環境にデプロイします。
設定ファイルは、環境内のサーバーで実行されるソフトウェアやファイルのカスタマイズのために、
option_settings に加えて複数のセクションをサポートします。詳細については、「Linux サーバー
でのソフトウェアのカスタマイズ (p. 150)」および「Windows Server でのソフトウェアのカスタマイ
ズ (p. 161)」を参照してください。
保存された設定
保存済み設定を作成し、AWS マネジメントコンソール、EB CLI、または AWS CLI による環境の作成
時または作成後に既存の環境に適用した設定を保存します。保存済み設定はアプリケーションに属し、
同アプリケーションの新しいまたは既存の環境に適用される場合があります。
クライアント
• Elastic Beanstalk コンソール (p. 103)
• EB CLI (p. 103)
• AWS CLI (p. 104)
Elastic Beanstalk コンソール
保存済み設定を作成する(Elastic Beanstalk コンソール)
1.
2.
3.
4.
Elastic Beanstalk コンソールを開きます。
環境については「management console (p. 50)」をご覧ください。
[Actions]、[Save Configuration] の順にクリックします。
設定名と説明を入力し、[Save] をクリックします。
保存済み設定は、アプリケーションに関連する名前のフォルダ内の Elastic Beanstalk S3 バケットに格
納されます。たとえば、アカウント番号 0123456789012 の us-west-2 リージョンにある [my-app] と
いう名前のアプリケーションの設定は、
s3://elasticbeanstalk-us-west-2-0123456789012/resources/templates/my-app にあり
ます。
EB CLI
EB CLI (p. 403) は、eb config (p. 424) で保存済み設定とやりとりするためのサブコマンドも指定しま
す。
保存済み設定を作成する(EB CLI)
1.
アタッチされた環境の現在の設定を保存する
~/project$ eb config save --cfg my-app-v1
API Version 2010-12-01
103
AWS Elastic Beanstalk 開発者ガイド
環境を作成する前
EB CLI は、~/project/.elasticbeanstalk/saved_configs/my-app-v1.cfg.yml に設定
を保存します。
2.
3.
保存済み設定を必要に応じてローカルで変更します。
保存済み設定を S3 にアップロードします。
~/project$ eb config put my-app-v1
AWS CLI
実行中の環境から、aws elasticbeanstalk create-configuration-template で保存済み設定
を作成します。
保存済み設定を作成する(AWS CLI)
1.
describe-environments で Elastic Beanstalk 環境の環境 ID を特定する
$ aws elasticbeanstalk describe-environments --environment-name my-env
{
"Environments": [
{
"ApplicationName": "my-env",
"EnvironmentName": "my-env",
"VersionLabel": "89df",
"Status": "Ready",
"Description": "Environment created from the EB CLI using \"eb
create\"",
"EnvironmentId": "e-vcghmm2zwk",
"EndpointURL": "awseb-e-v-AWSEBLoa-1JUM8159RA11M-43V6ZI1194.uswest-2.elb.amazonaws.com",
"SolutionStackName": "64bit Amazon Linux 2015.03 v2.0.2 running
Multi-container Docker 1.7.1 (Generic)",
"CNAME": "my-env-nfptuqaper.elasticbeanstalk.com",
"Health": "Green",
"AbortableOperationInProgress": false,
"Tier": {
"Version": " ",
"Type": "Standard",
"Name": "WebServer"
},
"HealthStatus": "Ok",
"DateUpdated": "2015-10-01T00:24:04.045Z",
"DateCreated": "2015-09-30T23:27:55.768Z"
}
]
}
2.
create-configuration-template で環境の現在の設定を保存する
$ aws elasticbeanstalk create-configuration-template --environment-id evcghmm2zwk --application-name my-app --template-name v1
Elastic Beanstalk は、Amazon S3 内の Elastic Beanstalk バケットに設定を保存します。
API Version 2010-12-01
104
AWS Elastic Beanstalk 開発者ガイド
作成時
JSON ドキュメント
AWS CLI を使用して環境を作成および更新する場合、JSON 形式で設定オプションを指定することも
できます。AWS CLI を使用して環境の作成および管理を行う場合は、JSON の設定ファイルのライブ
ラリが役立ちます。
たとえば、次の JSON ドキュメントはアプリケーションのヘルスチェック URL を /health に設定し
ます。
~/ebconfigs/healthcheckurl.json
[
{
"Namespace": "aws:elasticbeanstalk:application",
"OptionName": "Application Healthcheck URL",
"Value": "/health"
}
]
EB CLI 設定
EB CLI では、保存済み設定と eb config コマンドによる直接的な環境設定がサポートされるだけで
なく、環境内のインスタンスへの SSH アクセスのための Amazon EC2 キーペアを指定するのに使用で
きる default_ec2_keyname という名前の設定ファイルを利用できます。EB CLI は、このオプション
を使用して aws:autoscaling:launchconfiguration 名前空間に EC2KeyName 設定オプションを
設定します。
~/workspace/my-app/.elasticbeanstalk/config.yml
branch-defaults:
master:
environment: my-env
develop:
environment: my-env-dev
deploy:
artifact: ROOT.war
global:
application_name: my-app
default_ec2_keyname: my-keypair
default_platform: Tomcat 8 Java 8
default_region: us-west-2
profile: null
sc: git
環境の作成時の設定オプションの設定
Abstract
環境の作成時、オプションファイル、AWS マネジメントコンソール、またはコマンドラインオプションを使用し
てオプションを設定します。
AWS マネジメントコンソール(EB CLI、AWS CLI、SDK、Elastic Beanstalk API)を使用して AWS
Elastic Beanstalk 環境を作成する際は、環境をカスタマイズする設定オプションの値や環境内で起動さ
れる AWS リソースを指定できます。
API Version 2010-12-01
105
AWS Elastic Beanstalk 開発者ガイド
作成時
設定変更が 1 回限りでない場合は、ソースバンドルまたは Amazon S3 にローカルに設定ファイルを保
存 (p. 101)できます。
このトピックでは、環境の作成時に設定オプションを設定するすべての方法について、具体的手順を説
明します。
クライアント
• AWS マネジメントコンソール で、 (p. 106)
• EB CLI を使用する (p. 107)
• AWS CLI を使用する (p. 108)
AWS マネジメントコンソール で、
AWS マネジメントコンソール で Elastic Beanstalk 環境を作成する場合は、設定ファイル、保存済み設
定、および [Create New Environment] ウィザード内のフォームを使用して設定オプションを指定でき
ます。
方法
• 設定ファイルを使用する(.ebextensions) (p. 106)
• 保存済み設定を使用する (p. 106)
• 新しい環境のウィザードを使用する (p. 107)
設定ファイルを使用する(.ebextensions)
.ebextensions という名前のフォルダ内のアプリケーションソースバンドル (p. 42)に .config を含
めます。
~/workspace/my-app-v1.zip
|-- .ebextensions
|
|-- environmentvariables.config
|
`-- healthcheckurl.config
|-- index.php
`-- styles.css
通常は、環境の作成 (p. 54)中にソースバンドルを Elastic Beanstalk にアップロードします。
Elastic Beanstalk コンソールは、一部の設定オプションに推奨値 (p. 145)を適用し、その他のオプション
をフォームフィールドで指定します。Elastic Beanstalk コンソールで設定されるオプションは、環境に
直接適用され、設定ファイルの設定を上書きします。
保存済み設定を使用する
Elastic Beanstalk コンソールを使って新しい環境を作成する場合、最初の手順の 1 つとして設定を選択
します。設定は、[PHP] や [Tomcat] などのプラットフォームの最新バージョンに代表される [Predefined
configuration] (p. 25) である場合や、[Saved configuration]である場合があります。
保存済み設定はアプリケーション固有の設定で、使用中のアプリケーションで利用可能な場合に、新し
い環境のウィザードでのみ表示されます。保存済み設定を作成する方法の詳細については、「保存され
た設定 (p. 103)」を参照してください。
環境の作成時に保存済み設定を適用する(AWS マネジメントコンソール)
1.
2.
Elastic Beanstalk コンソールを開きます。
アプリケーションを選択します。
API Version 2010-12-01
106
AWS Elastic Beanstalk 開発者ガイド
作成時
3.
4.
5.
[Create New Application] を選択します。
環境枠を選択します。
[Environment Type] で、[Start from saved configuration] を選択します。
6.
7.
ドロップダウンメニューから保存済み設定を選択します。
ウィザードを続行して環境を作成します。
新しい環境のウィザードを使用する
標準設定オプションのほとんどは、ウィザードの [Configuration Details] ページと [Permissions] ページ
に表示されます。環境の Amazon RDS データベースを作成するか、VPC を設定する場合、これらのリ
ソース用のページで追加の設定オプションを利用できます。
環境の作成時に設定オプションを設定する(AWS マネジメントコンソール)
1.
2.
3.
4.
5.
6.
Elastic Beanstalk コンソールを開きます。
アプリケーションを選択または作成 (p. 39)します。
[Create New Application] を選択します。
ウィザードを続行して [Configuration Details] ページに進みます。
このページのフィールドに入力し、対応する設定オプションを設定します。
ウィザードを続行して環境を作成します。
新しい環境のウィザードで設定したオプションは、環境に直接適用され、保存済み設定や適用する設定
ファイル(.ebextensions)のオプション設定を上書きします。環境の作成後に EB CLI (p. 112) や
AWS CLI (p. 115) を使用して設定を削除すると、保存済み設定や設定ファイルの設定を有効にすること
ができます。
EB CLI を使用する
方法
• 設定ファイルを使用する(.ebextensions) (p. 107)
• 保存済み設定を使用する (p. 108)
• コマンドラインオプションを使用する (p. 108)
設定ファイルを使用する(.ebextensions)
[.ebextensions] の下のプロジェクト フォルダに [.config] ファイルを含め、アプリケーションコー
ドでこれらをデプロイします。
~/workspace/my-app/
|-- .ebextensions
|
|-- environmentvariables.config
|
`-- healthcheckurl.config
|-- .elasticbeanstalk
|
`-- config.yml
|-- index.php
`-- styles.css
環境を作成し、eb create で環境にソースコードをデプロイする
~/workspace/my-app$ eb create my-env
API Version 2010-12-01
107
AWS Elastic Beanstalk 開発者ガイド
作成時
保存済み設定を使用する
eb create (p. 427) で環境を作成する際に保存済み設定を適用するには、--cfg オプションを使用しま
す。
~/workspace/my-app$ eb create --cfg savedconfig
保存済み設定は、プロジェクトフォルダまたは Amazon S3 の Elastic Beanstalk ストレージの場所に格
納できます。上記の例では、EB CLI は最初に [.elasticbeanstalk/saved_configs/] というフォ
ルダ内で、[savedconfig.cfg.yml] という名前の保存済み設定のファイルを探します。--cfg で保
存済み設定を適用する際は、ファイル拡張子(.cfg.yml)を含めないでください。
~/workspace/my-app/
|-- .ebextensions
|
`-- healthcheckurl.config
|-- .elasticbeanstalk
|
|-- saved_configs
|
|
`-- savedconfig.cfg.yml
|
`-- config.yml
|-- index.php
`-- styles.css
ローカルで設定が見つからない場合、EB CLI は Amazon S3 内の Elastic Beanstalk ストレージの場所
を探します。設定の作成、編集、アップロードの詳細については、保存された設定 (p. 103) を参照して
ください。
コマンドラインオプションを使用する
EB CLI eb create コマンドには、環境の作成時にオプションを設定する目的で使用できる複数のオプ
ション (p. 428)があります。これらのオプションを使用すると、RDS データベースを環境に追加する、
VPC を設定する、または推奨値 (p. 145)を上書きすることができます。
たとえば、EB CLI はデフォルトで t2.micro インスタンスタイプを使用します。別のインスタンスタ
イプを選択するには、--instance_type オプションを使用します。
$ eb create my-env --instance_type t2.medium
Amazon RDS データベースインスタンスを作成して環境にアタッチするには、--database オプショ
ンを使用します。
$ eb create --database.engine postgres --database.username dbuser
環境の名前やデータベースパスワードなどの環境の作成に必要なパスワードを省略すると、EB CLI は
これらの入力を求めます。
利用可能なオプションのリストと使用例については、eb create (p. 427) を参照してください。
AWS CLI を使用する
create-environment コマンドを使用し、AWS CLI で Elastic Beanstalk 環境を作成すると、AWS
CLI は 推奨値 (p. 145)を一切適用しません。指定するソースバンドルの設定ファイルで定義されている
すべての設定オプション
方法
API Version 2010-12-01
108
AWS Elastic Beanstalk 開発者ガイド
作成時
• 設定ファイルを使用する(.ebextensions) (p. 109)
• 保存済み設定を使用する (p. 109)
• コマンドラインオプションを使用する (p. 110)
設定ファイルを使用する(.ebextensions)
AWS CLI で作成した環境に設定ファイルを適用するには、Amazon S3 にアップロードするアプリケー
ションソースバンドルにこれらの設定ファイルを含めます。
~/workspace/my-app-v1.zip
|-- .ebextensions
|
|-- environmentvariables.config
|
`-- healthcheckurl.config
|-- index.php
`-- styles.css
アプリケーションソースバンドルをアップロードして AWS CLI で環境を作成する
1.
Amazon S3 に Elastic Beanstalk バケットがまだない場合は、create-storage-location で作
成します。
$ aws elasticbeanstalk create-storage-location
{
"S3Bucket": "elasticbeanstalk-us-west-2-0123456789012"
}
2.
アプリケーションソースバンドルを Amazon S3 にアップロードする
$ aws s3 cp sourcebundle.zip s3://elasticbeanstalk-us-west-2-0123456789012/myapp/sourcebundle.zip
3.
アプリケーションバージョンを作成する
$ aws elasticbeanstalk create-application-version --application-name my-app
--version-label v1 --description MyAppv1 --source-bundle S3Bucket="elastic
beanstalk-us-west-2-0123456789012",S3Key="my-app/sourcebundle.zip" --autocreate-application
4.
環境の作成:
$ aws elasticbeanstalk create-environment --application-name my-app --envir
onment-name my-env --version-label v1 --solution-stack-name "64bit Amazon
Linux 2015.03 v2.0.0 running Tomcat 8 Java 8"
保存済み設定を使用する
保存済み設定を環境の作成時に適用するには、--template-name パラメータを使用します。
API Version 2010-12-01
109
AWS Elastic Beanstalk 開発者ガイド
作成後
$ aws elasticbeanstalk create-environment --application-name my-app --environ
ment-name my-env --template-name savedconfig --version-label v1
保存済み設定を指定する際は、同時にソリューションスタック名を指定しないでください。保存済み設
定は既にソリューションスタックを指定しているため、両方のオプションを使用しようとすると Elastic
Beanstalk はエラーを返します。
コマンドラインオプションを使用する
--option-settings パラメータを使用して JSON 形式で設定オプションを使用する
$ aws elasticbeanstalk create-environment --application-name my-app --environ
ment-name my-env --version-label v1 --template-name savedconfig --option-settings
'[
{
"Namespace": "aws:elasticbeanstalk:application",
"OptionName": "Application Healthcheck URL",
"Value": "/health"
}
]
ファイルから JSON をロードするには、file:// プレフィックスを使用します。
$ aws elasticbeanstalk create-environment --application-name my-app --environ
ment-name my-env --version-label v1 --template-name savedconfig --option-settings
file://healthcheckurl.json
Elastic Beanstalk は、--option-settings オプションで指定されるオプション設定を環境に直接適用
します。保存済み設定や設定ファイルで同じオプションが指定されている場合、--option-settings
はこれらの値を上書きします。
環境の作成後に設定オプションを設定する
Abstract
環境の作成時、オプションファイル、AWS マネジメントコンソール、またはコマンドラインオプションを使用し
てオプションを設定します。
保存済み設定を適用し、新しいソースバンドルと設定ファイル(.ebextensions)または JSON ド
キュメントをアップロードすることで、実行中の環境でオプション設定を変更できます。EB CLI およ
い Elastic Beanstalk コンソールには、オプション設定の設定と更新を実行するためのクライアント固
有の機能もあります。
設定オプションを設定または変更する場合、変更の重要度によっては環境全体の更新をトリガできま
す。たとえば、aws:autoscaling:launchconfiguration (p. 118) のオプションへの変更(
InstanceType など)では、環境内の EC2 インスタンスの再プロビジョニングが必要です。これによ
り、ローリング更新 (p. 82)がトリガされます。他の設定変更は、中断や再プロビジョニングなしに適
用されます。
EB CLI または AWS CLI コマンドにより、環境からオプション設定を削除できます。API レベルで環境
に直接設定されたオプションを削除すると、これらの設定にマスキングされていた設定ファイルの設定
が有効になります。
保存済み設定または設定ファイル内の設定は、もう一方の設定方法で環境に直接適用される同じオプ
ションに上書きされる場合がありますが、保存済み設定または設定ファイルを更新して適用すること
API Version 2010-12-01
110
AWS Elastic Beanstalk 開発者ガイド
作成後
で、完全に削除することができます。オプションが、保存済み設定や設定ファイルに設定されていない
場合、または環境に直接設定されていない場合、デフォルト値が適用されます(存在する場合)。詳細
については、「優先順位 (p. 145)」を参照してください。
クライアント
• Elastic Beanstalk コンソール (p. 111)
• EB CLI (p. 112)
• AWS CLI: (p. 115)
Elastic Beanstalk コンソール
設定ファイルを含むアプリケーションソースバンドルをデプロイする、保存済み設定を適用する、また
は環境マネジメントコンソールの [Configuration] で直接変更することにより、AWS マネジメントコン
ソール の設定オプションの設定を更新することができます。
方法
• 設定ファイルを使用する(.ebextensions) (p. 111)
• 保存済み設定を使用する (p. 111)
• 環境マネジメントコンソールを使用する (p. 112)
設定ファイルを使用する(.ebextensions)
ソース ディレクトリにある設定ファイルを更新し、新しいソースバンドルを作成し、変更を適用する
Elastic Beanstalk 環境に新しいバージョンをデプロイします。
更新したソースバンドルを環境(Elastic Beanstalk コンソール)にデプロイするには
1.
2.
3.
Elastic Beanstalk コンソールを開きます。
環境については「management console (p. 50)」をご覧ください。
[Upload and Deploy] を選択する
4.
[Browse] を選択してアプリケーションソースバンドルを開きます。
5.
[Deploy] を選択します。
設定ファイルへの変更は、保存済み設定や API レベルで環境に直接適用された設定のオプション設定
を上書きしません。詳細については、「優先順位 (p. 145)」を参照してください。
保存済み設定を使用する
実行中の環境に保存済み設定を適用し、同設定に定義されたオプション設定を適用します。
実行中の環境に保存済み設定を適用するには(Elastic Beanstalk コンソール)
1.
Elastic Beanstalk コンソールを開きます。
2.
3.
アプリケーションの名前を選択します。
[Saved Configurations] を選択します。
4.
保存住設定を選択した後、[Load] を選択します。
API Version 2010-12-01
111
AWS Elastic Beanstalk 開発者ガイド
作成後
5.
環境を選択した後、[Load] を選択します。
保存済み設定で定義された設定は、設定ファイルの設定を上書きし、環境マネジメントコンソールを使
用して設定された設定に上書きされます。
保存済み設定を作成する方法の詳細については、「保存された設定 (p. 103)」を参照してください。
環境マネジメントコンソールを使用する
Elastic Beanstalk コンソールでは、各環境の [Configuration] ページに複数の設定オプションが表示され
ます。
実行中の環境(Elastic Beanstalk コンソール)で設定オプションを変更する
1.
2.
Elastic Beanstalk コンソールを開きます。
環境については「management console (p. 50)」をご覧ください。
3.
4.
[Configuration] を選択します
5.
変更するオプションを含むセクションで、
設定を変更して [Apply] を選択します。
をクリックします。
環境マネジメントコンソールの設定オプションへの変更は、環境に直接適用され、設定ファイルや保存
済み設定の同じオプションの設定を上書きします。詳細については、「優先順位 (p. 145)」を参照して
ください。
EB CLI
設定ファイルを含むソースコードをデプロイする、保存済み設定の設定を適用する、または eb config
コマンドで環境設定を直接変更することにより、設定オプションの設定を EB CLI で更新できます。
方法
• 設定ファイルを使用する(.ebextensions) (p. 112)
• 保存済み設定を使用する (p. 113)
• 使用 eb config (p. 113)
• 使用 eb setenv (p. 114)
設定ファイルを使用する(.ebextensions)
[.ebextensions] の下のプロジェクト フォルダに [.config] ファイルを含め、アプリケーションコー
ドでこれらをデプロイします。
~/workspace/my-app/
|-- .ebextensions
|
|-- environmentvariables.config
|
`-- healthcheckurl.config
|-- .elasticbeanstalk
|
`-- config.yml
|-- index.php
`-- styles.css
eb deploy でソースコードをデプロイします。
~/workspace/my-app$ eb deploy
API Version 2010-12-01
112
AWS Elastic Beanstalk 開発者ガイド
作成後
保存済み設定を使用する
eb config コマンドを使用して、実行中の環境に保存済み設定を適用できます。保存済み設定の名前
で --cfg オプションを使用し、その設定を環境に適用できます。
$ eb config --cfg v1
この例の [v1] は、以前に作成された保存済みファイル (p. 103)の名前です。
このコマンドで環境に適用された設定は、環境の作成時に適用された設定やアプリケーションソースバ
ンドルの設定ファイルで定義された設定を上書きします。
使用 eb
config
EB CLI の eb config コマンドにより、テキストエディタを使用して環境で直接オプション設定を設
定および削除できます。
eb config を実行している場合、EB CLI は、設定ファイル、保存済み設定、推奨値、環境に直接設定
されたオプション、API デフォルトなどのすべてのソースから環境に適用されている設定を表示しま
す。
Note
eb config は、環境プロパティを表示しません。アプリケーションで読み取り可能な環境プ
ロパティを設定するには、eb setenv (p. 114) を使用します。
次の例は、環境作成時に EB CLI によって適用される 2 つの推奨値(IamInstanceProfile の値と
InstanceType の値)、環境作成時にリポジトリ設定に基づいて直接設定されるオプション
(EC2KeyName)、その他の値の API デフォルトなど、名前空間
aws:autoscaling:launchconfiguration に適用される設定を表示します。
ApplicationName: tomcat
DateUpdated: 2015-09-30 22:51:07+00:00
EnvironmentName: tomcat
SolutionStackName: 64bit Amazon Linux 2015.03 v2.0.1 running Tomcat 8 Java 8
settings:
...
aws:autoscaling:launchconfiguration:
BlockDeviceMappings: null
EC2KeyName: my-key
IamInstanceProfile: aws-elasticbeanstalk-ec2-role
ImageId: ami-538a9563
InstanceType: t2.micro
...
eb config で設定オプションを設定するまたは変更するには
1.
eb config を実行して環境の設定を表示します。
~/workspace/my-app/$ eb config
2.
デフォルトのテキストエディタを使用して任意の設定値をへんこうする
API Version 2010-12-01
113
AWS Elastic Beanstalk 開発者ガイド
作成後
aws:autoscaling:launchconfiguration:
BlockDeviceMappings: null
EC2KeyName: my-key
IamInstanceProfile: aws-elasticbeanstalk-ec2-role
ImageId: ami-538a9563
InstanceType: t2.medium
3.
4.
一時設定ファイルを保存して終了します。
EB CLI が環境設定を更新します。
eb config で設定オプションを設定すると、他のすべてのソースの設定が上書きされます。
eb config で環境からオプションを削除することもできます。
設定オプションを削除するには(EB CLI)
1.
eb config を実行して環境の設定を表示します。
~/workspace/my-app/$ eb config
2.
表示された値を文字列 null で置き換えます。削除するオプションを含む行全体を削除することも
できます。
aws:autoscaling:launchconfiguration:
BlockDeviceMappings: null
EC2KeyName: my-key
IamInstanceProfile: aws-elasticbeanstalk-ec2-role
ImageId: ami-538a9563
InstanceType: null
3.
4.
一時設定ファイルを保存して終了します。
EB CLI が環境設定を更新します。
eb config で環境からオプションを削除すると、アプリケーションソースバンドルの設定ファイルの
同じオプションの設定が有効になります。詳細については、「優先順位 (p. 145)」を参照してください。
使用 eb
setenv
EB CLI で環境プロパティを設定するには、eb setenv を使用します。
~/workspace/my-app/$ eb setenv ENVVAR=TEST
INFO: Environment update is starting.
INFO: Updating environment my-env's configuration settings.
INFO: Environment health has transitioned from Ok to Info. Command is executing
on all instances.
INFO: Successfully deployed new configuration to environment.
このコマンドは、aws:elasticbeanstalk:application:environment 名前空間 (p. 128)の環境プ
ロパティを設定します。eb setenv で設定された環境プロパティは、短い更新プロセスの後、アプリ
ケーションで利用できます。
環境に設定された環境プロパティを eb printenv で表示する
API Version 2010-12-01
114
AWS Elastic Beanstalk 開発者ガイド
作成後
~/workspace/my-app/$ eb printenv
Environment Variables:
ENVVAR = TEST
AWS CLI:
瀬ってえいファイルを含むソースバンドルをデプロイする、リモートに格納された保存済み設定を適用
する、または aws elasticbeanstalk update-environment コマンドで環境を直接変更すること
により、AWS CLI で設定オプションの設定を更新できます。
方法
• 設定ファイルを使用する(.ebextensions) (p. 115)
• 保存済み設定を使用する (p. 116)
• コマンドラインオプションを使用する (p. 116)
設定ファイルを使用する(.ebextensions)
AWS CLI で実行中の環境に設定ファイルを適用するには、Amazon S3 にアップロードするアプリケー
ションバンドルに同ファイルを含めます。
~/workspace/my-app-v1.zip
|-- .ebextensions
|
|-- environmentvariables.config
|
`-- healthcheckurl.config
|-- index.php
`-- styles.css
アプリケーションソースバンドルをアップロードし、実行中の環境に適用するには(AWS CLI)
1.
Amazon S3 に Elastic Beanstalk バケットがまだない場合は、create-storage-location で作
成します。
$ aws elasticbeanstalk create-storage-location
{
"S3Bucket": "elasticbeanstalk-us-west-2-0123456789012"
}
2.
アプリケーションソースバンドルを Amazon S3 にアップロードする
$ aws s3 cp sourcebundlev2.zip s3://elasticbeanstalk-us-west-20123456789012/my-app/sourcebundlev2.zip
3.
アプリケーションバージョンを作成する
$ aws elasticbeanstalk create-application-version --application-name my-app
--version-label v2 --description MyAppv2 --source-bundle S3Bucket="elastic
beanstalk-us-west-2-0123456789012",S3Key="my-app/sourcebundlev2.zip"
4.
環境を更新する
API Version 2010-12-01
115
AWS Elastic Beanstalk 開発者ガイド
作成後
$ aws elasticbeanstalk update-environment --environment-name my-env --versionlabel v2
保存済み設定を使用する
aws elasticbeanstalk update-environment コマンドの --template-name オプションにより、
実行中の環境に保存済み設定を適用できます。
保存済み設定は、[resources/templates] の下のアプリケーションに関連する名前のパスの Elastic
Beanstalk バケット内にあることが必要です。たとえば、アカウント 0123456789012 の us-west-2 リー
ジョン内の [my-app] アプリケーションの [v1] テンプレートは、
[s3://elasticbeanstalk-us-west-2-0123456789012/resources/templates/my-app/v1] に
配置されます。
実行中の環境に保存済み設定を適用するには(AWS CLI)
•
--template-name オプションで、update-environment コールの保存済み設定を指定します。
$ aws elasticbeanstalk update-environment --environment-name my-env --tem
plate-name v1
Elastic Beanstalk は、aws elasticbeanstalk create-configuration-template で作成された
保存済み設定をこの場所に配置します。保存済み設定をローカルに変更し、自身でこの場所に配置する
こともできます。
コマンドラインオプションを使用する
JSON ドキュメントで設定オプションを変更するには(AWS CLI)
1.
2.
ローカルファイルで、オプション設定を JSON 形式で定義します。
--option-settings オプションで update-environment を実行します。
$ aws elasticbeanstalk update-environment --environment-name my-env --optionsettings file://~/ebconfigs/as-zero.json
この例では、ゼロインスタンスの最小数と最大数で環境を設定するオプションを [as-zero.json] が定
義します。これにより、環境を終了することなく、インスタンスが停止します。
~/ebconfigs/as-zero.json
[
{
"Namespace": "aws:autoscaling:asg",
"OptionName": "MinSize",
"Value": "0"
},
{
"Namespace": "aws:autoscaling:asg",
"OptionName": "MaxSize",
API Version 2010-12-01
116
AWS Elastic Beanstalk 開発者ガイド
汎用オプション
"Value": "0"
},
{
"Namespace": "aws:autoscaling:updatepolicy:rollingupdate",
"OptionName": "RollingUpdateEnabled",
"Value": "false"
}
]
Note
update-environment で設定オプションを設定すると、他のすべてのソースの設定が上書き
されます。
update-environment で環境からオプションを削除することもできます。
設定オプションを削除するには(AWS CLI)
•
--settings-to-remove オプションで update-environment コマンドを実行します。
$ aws elasticbeanstalk update-environment --options-to-remove
Namespace=aws:autoscaling:launchconfiguration,OptionName=InstanceType
update-environment で環境からオプションを削除すると、アプリケーションソースバンドルの設定
ファイルの同じオプションの設定が有効になります。これらの方法でオプションが設定されている場
合、API のデフォルト値が適用されます(存在する場合)。詳細については、「優先順位 (p. 145)」を参
照してください。
各項目のデフォルト値やサポートされる値を含む名前空間とオプションの完全なリストについては、
「すべての環境に対する汎用オプション (p. 117)」と「プラットフォーム固有のオプション (p. 138)」を
参照してください。
すべての環境に対する汎用オプション
Abstract
Elastic Beanstalk 環境用にグローバルに利用可能なオプションを設定します。
名前空間
• aws:autoscaling:asg (p. 118)
• aws:autoscaling:launchconfiguration (p. 118)
• aws:autoscaling:scheduledaction (p. 122)
• aws:autoscaling:trigger (p. 123)
• aws:autoscaling:updatepolicy:rollingupdate (p. 125)
• aws:ec2:vpc (p. 128)
• aws:elasticbeanstalk:application (p. 128)
• aws:elasticbeanstalk:application:environment (p. 128)
• aws:elasticbeanstalk:command (p. 129)
• aws:elasticbeanstalk:environment (p. 129)
• aws:elasticbeanstalk:healthreporting:system (p. 130)
• aws:elasticbeanstalk:hostmanager (p. 130)
API Version 2010-12-01
117
AWS Elastic Beanstalk 開発者ガイド
汎用オプション
• aws:elasticbeanstalk:monitoring (p. 130)
• aws:elasticbeanstalk:sns:topics (p. 130)
• aws:elasticbeanstalk:sqsd (p. 131)
• aws:elb:healthcheck (p. 132)
• aws:elb:loadbalancer (p. 133)
• aws:elb:listener (p. 134)
• aws:elb:policies (p. 135)
• aws:elb:policies:policy_name (p. 135)
• aws:rds:dbinstance (p. 137)
aws:autoscaling:asg
名前空間: aws:autoscaling:asg
アベイラビ
リティー
ゾーン
アベイラビリティーゾーン(AZ)は、他 すべて 1
のゾ-ンからの影響を受けないようにリー
ジョン内で各々独立しています。利用は
安価で、同一リージョン内であれば AZ
間でのネットワーク接続待ち時間は少な
くなります。インスタンスの AZ の数を
選択します。
すべて 1
Cooldown
クールダウンの期間を指定すると、前の 360
アクティビティの効果が表示される前に、
Auto Scaling によって追加のスケーリン
グアクティビティが実行されることを防
ぐことができます。
0 ~ 10000
Custom
Availability
Zones
インスタンスの AZ を定義します。
us-east-1a
該当なし
すべて 2
us-east-1b
us-east-1c
us-east-1d
us-east-1e
eu-central-1
MinSize
Auto Scaling グループで使用するインス
タンスの最小数です。
1
1 ~ 10000
MaxSize
Auto Scaling グループで使用するインス
タンスの最大数です。
4
1 ~ 10000
aws:autoscaling:launchconfiguration
名前空間: aws:autoscaling:launchconfiguration
EC2KeyName
キーペアを使用すると、 EC2 インスタン 該当なし
スに安全にログインすることができます。
API Version 2010-12-01
118
該当なし
AWS Elastic Beanstalk 開発者ガイド
汎用オプション
名前空間: aws:autoscaling:launchconfiguration
IamInstance- インスタンスプロファイルによって、
該当なし
Profile
AWS Identity and Access Management
(IAM)ユーザーと AWS サービスは、一
時的なセキュリティ認証情報にアクセス
して AWS API を呼び出すことができるよ
うになります。プロファイル名と ARN を
指定します。
該当なし
例: ElasticBeanstalkProfile
例: arn:aws:iam::123456789012:instance-profile/ElasticBeanstalkProfile
ImageId
独自のカスタム AMI ID を指定して、デ
フォルトの Amazon Machine Image
(AMI)を上書きすることができます。
該当なし
該当なし
t1.micro
varies
例: ami-cbab67a2
InstanceType
Elastic Beanstalk 環境でアプリケーショ
ンを実行するために使用されるインスタ
ンスタイプ。
使用できるインスタンスタイプは、プラッ
トフォーム、ソリューションスタック(設
定)、リージョンによって異なります。
選択したソリューションスタックで使用
できるインスタンスタイプを取得するに
は、DescribeConfigurationOptions アク
ション(API の場合)、describe-configuration-options コマンド(AWS CLI (p. 921)
の場合)を使用します。
たとえば、次のコマンドを実行すると、
現在のリージョンでの PHP 5.6 スタック
のバージョン 1.4.3 で使用できるインスタ
ンスタイプが一覧表示されます。
$ aws elasticbeanstalk describeconfiguration-options --options
Namespace=aws:autoscaling:launchconfiguration,OptionName=InstanceType --solution-stack-name
"64bit Amazon Linux 2015.03
v1.4.3 running PHP 5.6"
MonitoringIn- Amazon CloudWatch メトリックスを返す 5 分
terval
間隔です。
1分
5分
API Version 2010-12-01
119
AWS Elastic Beanstalk 開発者ガイド
汎用オプション
名前空間: aws:autoscaling:launchconfiguration
SecurityGroups
インスタンスのファイアウォールルール
を定義するために Auto Scaling グループ
内の EC2 インスタンスに割り当てる
Amazon EC2 セキュリティグループをリ
ストします。
elasticbeanstalk- 該当なし
default
既存の Amazon EC2 セキュリティグルー
プの名前や、テンプレートで作成した
AWS::EC2::SecurityGroup リソースへの
参照の名前をカンマで区切り、1 つの文
字列として指定することができます。イ
ンスタンスが仮想プライベートクラウド
(VPC)内で起動されるように、Elastic
Beanstalk と共に Amazon VPC を使用し
ている場合は、セキュリティグループ名
ではなくセキュリティグループ ID を指定
します。
SSHSourceRestriction
環境に対する SSH アクセスをロックする 該当なし
ために使用します。例えば、拠点ホスト
のみがプライベートサブネット内のイン
スタンスにアクセスできるように、EC2
インスタンスに対する SSH アクセスを
ロックできます。
この文字列は次のような形式になります。
protocol, fromPort, toPort,
source_restriction
進入ルールのプロトコル。
fromPort
開始ポート番号。
toPort
終了ポート番号。
source_restriction
トラフィックの送信元として許可す
るセキュリティグループの CIDR 範
囲または名前。別のアカウントから
セキュリティグループを指定するに
は(EC2-Classic のみ、リージョンが
同じである必要があります)、セキュ
リティグループ名(例: other_account_id/security_group_name)の前にアカウン
ト ID を含めます。
例: tcp, 22, 22, 54.240.196.185/32
例: tcp, 22, 22, my-security-group
例(EC2-Classic): tcp, 22, 22,
0123456789012/their-securitygroup
API Version 2010-12-01
120
該当なし
AWS Elastic Beanstalk 開発者ガイド
汎用オプション
名前空間: aws:autoscaling:launchconfiguration
BlockDeviceMappings
Autoscaling Group 内のすべてのインスタ 該当なし
ンスに、追加の Amazon Elastic Block
Store のボリュームまたはインスタンスス
トアボリュームをアタッチするときに使
用します。Amazon EBS ボリュームを
マップする場合は、ボリュームサイズま
たはスナップショット ID を指定できま
す。インスタンスストアボリュームをマッ
プする場合は、仮想デバイス名を指定し
ます。
該当なし
例: /dev/sdj=:100,/dev/sdh=snap51eef269,/dev/sdb=ephemeral0
マッピング形式は device name=volume
です。ここでは、コンマ区切りのマッピ
ングでデバイスマッピングを単一文字列
として指定します。この例は Auto Scaling
グループ内のインスタンスに、空き容量
100 GB の Amazon EBS ボリューム、ス
ナップショット ID snap-51eef269 のあ
る Amazon EBS ボリューム、およびイン
スタンスストアボリュームをアタッチし
ます。
RootVolume- 環境内の Amazon EC2 インスタンスにア 該当なし
Type
タッチするストレージボリュームのタイ
プ。
standard、磁気ス
トレージボリューム
です。
gp2、汎用(SSD)
ストレージボリュー
ムです。
io1、プロビジョン
ド IOPS(SSD)ス
トレージボリューム
です。
RootVolumeSize
RootVolumeType として指定したスト
レージボリュームのサイズ。
ルートボリュームタイプとしてプロビジョ
ンド IOPS(SSD)を選択する場合は、必
要なルートボリュームサイズを指定する
必要があります。
プロビジョンド IOPS (SSD) ボリューム
には、デフォルトのルートボリュームサ
イズはありません。磁気および汎用
(SSD)ボリュームの場合、独自の値を
指定しない場合、Elastic Beanstalk では
そのストレージボリュームタイプのデフォ
ルトボリュームサイズが使用されます。
デフォルトのボリュームサイズは、環境
のベースとなるソリューションスタック
の AMI によって異なります。
API Version 2010-12-01
121
該当なし
プロビジョンド
IOPS(SSD)ルー
トボリュームの場合
は 10 ~ 1024 ギビ
バイト
磁気ボリュームおよ
び汎用(SSD)ボ
リュームの場合は 8
~ 1024 ギビバイト
AWS Elastic Beanstalk 開発者ガイド
汎用オプション
名前空間: aws:autoscaling:launchconfiguration
Rootプロビジョンド IOPS(SSD)ルートボ
VolumeIOPS リュームに対して希望する 1 秒あたりの
入力/出力操作数(IOPS)。
該当なし
100 ~ 4000
IOPS とボリュームサイズとの比率は最大
で 30:1 です。たとえば、3000 IOPS のボ
リュームのサイズは 100 GiB 以上である
必要があります。
aws:autoscaling:scheduledaction
名前空間: aws:autoscaling:scheduledaction
DesiredCapacity
Auto Scaling group で実行するインスタ 該当なし
ンスの数。
null
1 ~ 10000
EndTime
スケジュールに基づくスケーリングアク 該当なし
ションを停止する将来の日付と時刻
(UTC/GMT タイムゾーン)。
[EndTime] を指定しない場合、終了日時
を設定するまで繰り返しが継続されま
す。
null
スケジュールに基づ
くすべてのスケーリ
ングアクションで一
意な日時。
例: 2015-04-28T04:07:2Z
ISO-8601 タイムスタンプ形式の詳細に
ついては、http://www.w3.org/TR/NOTEdatetime を参照してください。
MaxSize
スケジュールに基づくアクションの継続 該当なし
期間内に Auto Scaling group で使用する
インスタンスの最大数。
0 ~ 10000
MinSize
スケジュールに基づくアクションの継続 該当なし
期間内に Auto Scaling group で使用する
インスタンスの最小数。
0 ~ 10000
繰り返し
スケジュールに基づくアクションを実行 該当なし
する頻度。繰り返しを指定しない場合、
スケーリングアクションは、[StartTime]
に指定されたとおりに 1 回だけ実行され
ます。
null
API Version 2010-12-01
122
CRON 式。
CRON の詳細につい
ては、「Cron」を参
照してください。
AWS Elastic Beanstalk 開発者ガイド
汎用オプション
名前空間: aws:autoscaling:scheduledaction
StartTime
停止
スケジュールに基づくスケーリングアク 該当なし
ションを開始する将来の日付と時刻
(UTC/GMT タイムゾーン)。
null
スケジュールに基づくアクションを一時 false
的に停止するかどうか。
True
スケジュールに基づ
くすべてのアクショ
ンで一意な日時を、
ISO 8601 時刻形式で
指定します。たとえ
ば、2015-0428T04:07:02Z のよう
に指定します。ISO
8601 時刻形式の詳細
については、「Date
and Time Formats」
を参照してくださ
い。
False
null
Note
スケジュールに基づくスケーリングアクションを設定するときは、スケジュールに基づくス
ケーリングアクションの名前として、リソース名とともに一意の値を指定します。このリソー
ス名を共有するすべてのオプション設定が、同じスケジュールに基づくアクションに適用され
ます。以下に例を示します。
option_settings:
- namespace: aws:autoscaling:scheduledaction
resource_name: ScheduledAction01
option_name: MinSize
value: 2
- namespace: aws:autoscaling:scheduledaction
resource_name: ScheduledAction01
option_name: MaxSize
value: 5
- namespace: aws:autoscaling:scheduledaction
resource_name: ScheduledAction01
option_name: StartTime
value: "2015-05-14T19:25:00Z"
aws:autoscaling:trigger
名前空間: aws:autoscaling:trigger
BreachDuration
トリガが発生する前に、メトリックスが 5
その定義されている制限(UpperThreshold と LowerThreshold で指
定される値)を超えることができる時
間。
API Version 2010-12-01
123
1 ~ 600
AWS Elastic Beanstalk 開発者ガイド
汎用オプション
名前空間: aws:autoscaling:trigger
LowerBreachScaleIncrement
スケーリングアクティビティを実行する -1
ときに削除できる Amazon EC2 インス
タンス数。
該当なし
LowerThreshold
超過期間に測定値がこの数未満になった 2000000
場合、トリガが発生します。
0 ~ 20000000
MeasureName
Auto Scaling トリガに使用されるメト
リックスです。
CPUUtilization
NetworkOut
NetworkIn
NetworkOut
DiskWriteOps
DiskReadBytes
DiskReadOps
DiskWriteBytes
Latency
RequestCount
HealthyHostCount
UnhealthyHostCount
間隔
Amazon CloudWatch でトリガのメトリッ 5
クスを測定する頻度を指定します.
該当なし
統計
Average などの、トリガに使用する
Statistic。
Minimum
Average
Maximum
Sum
Average
単位
Bytes などの、トリガ測定の単位。
Bytes
Seconds
Percent
Bytes
Bits
Count
Bytes/Second
Bits/Second
Count/Second
None
API Version 2010-12-01
124
AWS Elastic Beanstalk 開発者ガイド
汎用オプション
名前空間: aws:autoscaling:trigger
UpperBreachScaleIncrement
スケーリングアクティビティを実行する 1
ときに追加できる Amazon EC2 インス
タンス数。
該当なし
UpperThreshold
超過期間に測定値がこの数を超えた場
合、トリガが発生します。
0 ~ 20000000
6000000
aws:autoscaling:updatepolicy:rollingupdate
名前空間: aws:autoscaling:updatepolicy:rollingupdate
MaxBatchSize
ローリング更新の各バッ Auto Scaling グルー 1 ~ 10000
チに含まれるインスタン プ内の最小サイズの
ス数。
3 分の 1(整数に切
り上げ)。
MinInstancesInService
他のインスタンスの終了
中、Auto Scaling グルー
プ内で使用中となる必要
があるインスタンスの最
小数。
Auto Scaling グルー 0 ~ 9999
プの最小サイズ、ま
たは Auto Scaling
グループの最大サイ
ズ未満のいずれかの
低い数値と等しくな
ります。
PauseTime
Elastic Beanstalk サービ
スがあるインスタンスの
バッチの更新を完了した
後、次のバッチを処理す
るまで待つ時間。
インスタンスタイプ PT0S(0 秒)~PT1H
とコンテナに基づい (1 時間)
て自動的に計算され
値は ISO8601 日付形
ます。
式で、PT#H#M#S のよ
うにする必要がありま
す。それぞれの # は時
間数、分数、秒数を示
します。
API Version 2010-12-01
125
AWS Elastic Beanstalk 開発者ガイド
汎用オプション
名前空間: aws:autoscaling:updatepolicy:rollingupdate
RollingUpdateEnabled
true の場合、環境の
false
ローリング更新が可能に
なります。ローリング更
新は、Elastic Beanstalk
ソフトウェアアプリケー
ションに小規模な更新を
頻繁に実行する必要があ
り、アプリケーションの
ダウンタイムを発生させ
ないようにする場合に役
立ちます。
この値を true に設定す
ると、自動的に
MaxBatchSize、MinInstancesInService、
および PauseTime オプ
ションが有効になりま
す。また、これらのオプ
ションのいずれかを設定
すると、自動的に RollingUpdateEnabled
オプションの値が true
に設定されます。このオ
プションを false に設
定すると、ローリング更
新が無効になります。
API Version 2010-12-01
126
true
false
AWS Elastic Beanstalk 開発者ガイド
汎用オプション
名前空間: aws:autoscaling:updatepolicy:rollingupdate
RollingUpdateType
以下のいずれかに従い、 Time
(環境設定の変更の)
ローリング更新をインス
タンスのバッチに適用す
るかどうかを指定しま
す。
Time
Health
• インスタンスの 1 つ
のバッチへの更新を
完了してから、次の
バッチに更新を適用
するまでに、指定さ
れた時間 (PauseTime) 待機します。
• インスタンスの現在
更新中のバッチが正
常であることの報告
を受け取ってから、
インスタンスの新し
いバッチにローリン
グ更新の適用を開始
します。
Note
負荷分散された
ウェブサーバー
環境のみが、正
常性に基づく
ローリング更新
を使用できま
す。単一インス
タンスウェブ
サーバー環境と
ワーカー環境で
は、時間ベース
の条件に従って
のみ、ローリン
グ更新を適用で
きます。
タイムアウト
更新をキャンセルして以 PT30M (30 分)
前の環境設定にロール
バックする前に、インス
タンスのバッチのすべて
のインスタンスが正常な
状態を報告するまでに待
機する最大の時間。
API Version 2010-12-01
127
PT5M(5 分)から
PT1H(1 時間)
値は ISO8601 日付形
式で、PT#H#M#S のよ
うにする必要がありま
す。それぞれの # は時
間数、分数、秒数を示
します。
AWS Elastic Beanstalk 開発者ガイド
汎用オプション
aws:ec2:vpc
名前空間: aws:ec2:vpc
VPCId
VPC の ID。
該当なし
該当なし
Subnets
Auto Scaling グループサブネットまたはサブネットの ID 該当なし
です。 複数のサブネットがある場合は、サブネット ID の
単一のカンマ区切り文字列(たとえば、"subnet11111111,subnet-22222222")として値を指定しま
す。
該当なし
ELBSubnets
elastic load balancer の単一あるいは複数のサブネットの 該当なし
ID。 複数のサブネットがある場合は、サブネット ID の単
一のカンマ区切り文字列(たとえば、"subnet11111111,subnet-22222222")として値を指定しま
す。
該当なし
ELBScheme
VPC で内部ロードバランサーを作成する場合は internal 該当なし
を指定し、VPC の外部から Elastic Beanstalk アプリケー
ションにアクセスできないようにします。
internal
DBSubnets
データベースサブネットの ID が含まれています。Amazon 該当なし
RDS DB インスタンスをアプリケーションの一部として追
加する場合にのみ使用します。複数のサブネットがある場
合は、サブネット ID の単一のカンマ区切り文字列(たと
えば、"subnet-11111111,subnet-22222222")とし
て値を指定します。
該当なし
AssociatePub- VPC 内のパブリック IP アドレスを持つインスタンスを起 該当なし
licIpAddress 動するかどうかを指定します。パブリック IP アドレスを
持つインスタンスは、インターネットと通信するために
NAT デバイスを必要としません。ロードバランサーとイ
ンスタンスを 1 つのパブリックサブネットに含める場合
は、値を true に設定する必要があります。
true
false
null
aws:elasticbeanstalk:application
名前空間: aws:elasticbeanstalk:application
Application
Healthcheck URL
Elastic Load Balancer がインスタンスの /
ヘルスを照会するときに使用する URL。
空の文字列は「/」として
扱われます。または、
「/」から始まる文字列を
指定します。
aws:elasticbeanstalk:application:environment
名前空間: aws:elasticbeanstalk:application:environment
環境変数の名前。
キーと値のペアを渡します。
API Version 2010-12-01
128
該当なし
環境変数の値。
AWS Elastic Beanstalk 開発者ガイド
汎用オプション
Note
環境用に定義されるすべての環境プロパティの統合サイズは 4,096 バイトに制限されていま
す。環境プロパティの形式は KEY1=VALUE1, KEY2=VALUE2 で、各変数の値とキーの両方が
合計に含まれることを意味します。プラットフォームに 1 つまたは複数の定義済み環境プロパ
ティ([JDBC_CONNECTION_STRING] など)がある場合は、これらのプロパティも合計に含
まれます。
aws:elasticbeanstalk:command
名前空間: aws:elasticbeanstalk:command
タイムアウト
インスタンスが実行コマンドを完了するまで待 "600"
機する秒数。
"1" ~
"3600"
BatchSizeType
[BatchSize] で指定される数値のタイプ。
Percentage
Percentage
Fixed
BatchSize
IgnoreHealthCheck
デプロイを同時に実行する場合のデプロイ先と 100
なる、Auto Scaling グループ内の Amazon EC2
インスタンスの割合または一定数です。有効な
値は [BatchSizeType] の設定によって異なりま
す。
1 ~ 100
(Percentage).
ヘルスチェックに合格しなくてもデプロイを
キャンセルしません。
true
false
1
(aws:autoscaling:asg::MaxSize (p. 118)
(Fixed)
に)
false
aws:elasticbeanstalk:environment
名前空間: aws:elasticbeanstalk:environment
EnvironmentType 環境のタイプ。負荷分散および自動スケーリン LoadBalグされた環境、または単一インスタンス環境で anced
す。
SingleInstance
LoadBalanced
ServiceRole
Elastic Beanstalk が環境のリソースを管理する
ために使用する IAM ロールの名前。
API Version 2010-12-01
129
なし
任意のロール
名。
AWS Elastic Beanstalk 開発者ガイド
汎用オプション
aws:elasticbeanstalk:healthreporting:system
名前空間: aws:elasticbeanstalk:healthreporting:system
SystemType
ConfigDocument
ヘルスレポートシステム(基本 (p. 259)または拡
basic
張 (p. 263))。拡張ヘルスレポートは、サービスロー
ル (p. 20)とバージョン 2 プラットフォーム設
定 (p. 25)を必要とします。
CloudWatch に発行する環境およびインスタンスメ
トリックスを定義した JSON ドキュメント。
basic
enhanced
なし
aws:elasticbeanstalk:hostmanager
名前空間: aws:elasticbeanstalk:hostmanager
LogPublicationCon- アプリケーションの Amazon EC2 インスタンスの false
trol
ログファイルを、アプリケーションに関連付けられ
ている Amazon S3 バケットにコピーします。
true
false
aws:elasticbeanstalk:monitoring
名前空間: aws:elasticbeanstalk:monitoring
Automatically Terminate
Unhealthy Instances
正常ではないインスタンスを自動 true
的に終了する場合に指定します。
true
false
aws:elasticbeanstalk:sns:topics
名前空間: aws:elasticbeanstalk:sns:topics
Notification End- アプリケーションに影響する重要な
point
イベントについて通知するエンドポ
イント。
該当なし
該当なし
Notification Protocol
email
http
エンドポイントに通知を送信するた
めに使用するプロトコル。
https
email
email-json
sqs
Notification Topic サブスクライブするトピックの
ARN
Amazon リソースネーム。
該当なし
該当なし
Notification Topic サブスクライブするトピックの名前。 該当なし
Name
該当なし
API Version 2010-12-01
130
AWS Elastic Beanstalk 開発者ガイド
汎用オプション
aws:elasticbeanstalk:sqsd
名前空間: aws:elasticbeanstalk:sqsd
WorkerQueueURL
ワーカー環境枠のデーモンがメッセー 自動的に生
ジを読み取るキューの URL
成される
Note
値を指定しない場合、
Elastic Beanstalk に
よってキューが自動的
に生成されます。
HttpPath
HTTP POST メッセージの送信先のア /
プリケーションへの相対パス
MimeType
HTTP POST リクエストで送信される applica- application/json
メッセージの MIME タイプ。
tion/json
application/x-www-formurlencoded
application/xml
text/plain
Note
独自の MIME タイプ
を作成できます。
HttpConnections Amazon EC2 インスタンス内のアプ
リケーションに対する最大同時接続
数
15
1 ~ 100
ConnectTimeout アプリケーションへの接続までの待
機時間(秒)
5
1 ~ 60
InactivityTimeout アプリケーションへの既存の接続で
応答するまでの待機時間(秒)
180
1 ~ 1800
Note
メッセージは、ワーカー環境
枠でアプリケーションから
200 OK の応答をデーモンが
受信するまで、または RetentionPeriod が有効期限切れ
になるまで再処理されます。
API Version 2010-12-01
131
AWS Elastic Beanstalk 開発者ガイド
汎用オプション
名前空間: aws:elasticbeanstalk:sqsd
VisibilityTimeout Amazon SQS キューから着信した
メッセージの処理のためにロックさ
れる時間(秒)。設定した時間数を
経過すると、別のデーモンでの確認
用に、メッセージがキューに再度表
示されます。
300
0 ~ 43200
Note
この値を設定すると、SQS
VisibilityTimeout 設定が上書
きされます。
RetentionPeriod
メッセージが有効であり、アクティ
ブに処理される時間(秒)
345600
60 ~ 1209600
MaxRetries
デッドレターキューにメッセージを
移動する前に、Elastic Beanstalk が
メッセージを処理するウェブアプリ
ケーションに送信を試行する最大試
行回数。
10
1 ~ 100
ErrorVisibilityTimeout
明示的なエラーで処理が失敗した後、 2 秒
Elastic Beanstalk が Amazon SQS
キューにメッセージを返すまでの経
過時間(秒)
0~43200 秒
aws:elb:healthcheck
名前空間: aws:elb:healthcheck
HealthyThreshold Elastic Load Balancing がインスタンスのヘルスステータス 3
を変更するために必要な、連続して成功したリクエストの
数。
2 ~ 10
Interval
Elastic Load Balancing がアプリケーションの Amazon EC2 10
インスタンスの状態をチェックする間隔。
5 ~ 300
タイムアウト
Elastic Load Balancing が、インスタンスが応答していない 5
と判断するまでの待機時間(秒)。
2 ~ 60
UnElastic Load Balancing がインスタンスのヘルスステータス 5
healthyThreshold を変更するために必要な、連続して失敗したリクエストの
数。
2 ~ 10
API Version 2010-12-01
132
AWS Elastic Beanstalk 開発者ガイド
汎用オプション
aws:elb:loadbalancer
名前空間: aws:elb:loadbalancer
CrossZone
ロードバランサーが各ゾーン内のみではなく、 false
すべてのアベイラビリティーゾーン内のすべて
のインスタンス間でトラフィックを均等にルー
ティングするかどうかを設定します。
true
ロードバランサーに、作成した 1 つ以上のセ
キュリティグループを割り当てます。
null
1 つまたは複
数のセキュリ
ティグループ
ID。
ManagedSecurityGroup お使いの環境でインスタンスからの進入を許可 null
するために、Elastic Beanstalk が変更するセ
キュリティグループを選択します。このオプ
ションを使用して、Elastic Beanstalk がロード
バランサーのセキュリティグループを作成でき
ないようにします。指定したセキュリティグ
ループは、aws:elb:loadbalancer::SecurityGroups で設定したセキュリティグループ
のリストにも存在します。
セキュリティ
グループ ID。
LoadBalancerHTTPPort
OFF
SecurityGroups
リスナーに使用される外部側のポート。
80
代わりに aws:elb:listener (p. 134) のオプション
を使用することをお勧めします。
LoadBalancerPortProtocol
リスナーによって使用されるプロトコル.
80
HTTP
代わりに aws:elb:listener (p. 134) のオプション
を使用することをお勧めします。
LoadBalancerHTTPSPort
セキュアリスナーに使用される外部側のポー
ト。
false
HTTP
TCP
OFF
OFF
443
代わりに aws:elb:listener (p. 134) のオプション
を使用することをお勧めします。
LoadBalancerSSLPort- セキュアリスナーによって使用されるプロトコ HTTPS
Protocol
ル.
8443
HTTPS
SSL
代わりに aws:elb:listener (p. 134) のオプション
を使用することをお勧めします。
SSLCertificateId
AWS Identity and Access Management にアッ 該当なし
プロードした SSL 証明書の Amazon リソース
ネーム(ARN)です。
代わりに aws:elb:listener (p. 134) のオプション
を使用することをお勧めします。
API Version 2010-12-01
133
該当なし
AWS Elastic Beanstalk 開発者ガイド
汎用オプション
aws:elb:listener
名前空間: aws:elb:listener:[listener_port]
ListenerProtocol
リスナーによって使用されるプロトコルです。 HTTP
HTTP
HTTPS
TCP
SSL
InstancePort
リスナーが EC2 インスタンスとの通信に使用 listenするポートです。
er_port と
同じです。
一時ポート範
囲(1~
65535)のす
べてのポート
です。
InstanceProtocol
リスナーが EC2 インスタンスとの通信に使用 ListenerPro- ListenerProするプロトコルです。
tocol と同じ tocol が HTTP
です。
または HTTPS
の場合、有効
な値は HTTP
または HTTPS
になります。
ListenerProtocol が TCP
または SSL
の場合、有効
な値は TCP
または SSL
になります。
PolicyNames
このリスナーのポートに適用されるポリシー名 なし
のカンマ区切りリストです。変わりに名前空間
aws:elb:policies (p. 135) の [ LoadBalancerPorts]
オプションを使用することを推奨します。
該当なし
SSLCertificateId
AWS Identity and Access Management(IAM) なし
にアップロードした SSL 証明書の Amazon リ
ソースネーム(ARN)です。
該当なし
ListenerEnabled
このリスナーが有効かどうかを指定します。
false を指定すると、リスナーはロードバラ
ンサーに含まれません。
他のオプ
true
ションが設 false
定されてい
る場合は
true です。
そうでない
場合は、
false で
す。
Note
listener_port を指定しない場合、Elastic Beanstalk はデフォルトのポート 80 を使用しま
す。
API Version 2010-12-01
134
AWS Elastic Beanstalk 開発者ガイド
汎用オプション
aws:elb:policies
デフォルトの維持とグローバルロードバランサーのポリシーを変更します。
名前空間: aws:elb:policies
ConnectionDrainingEn- ロードバランサーが、処理中のリクエストを
abled
完了するために、異常なインスタンスや登録
解除されたインスタンスへの既存の接続を維
持するかどうかを指定します。
false
ConnectionDrainingTimeout
20
1 ~ 3600
ConnectionSettingIdle- 接続を介してデータが送信または受信される 60
Timeout
までロードバランサーが待機する秒数。この
時間が経過してもデータが送受信されなかっ
た場合、ロードバランサーは接続を閉じます。
1 ~ 3600
LoadBalancerPorts
:allを使用して
すべてのリス
ナーポートを指
定できます。
ロードバランサーが Connection Draining の
実行中にインスタンスへの接続を維持する最
大秒数です。この時間を超えると強制的に接
続を閉じます。
デフォルトポリシー(AWSEB-ELB-StickinessPolicy)が適用されるリスナーポート
のカンマ区切りリストです。
true
false
なし
Stickiness Cookie Ex- 各 Cookie の有効時間(秒単位)です。デフォ 0
piration
ルトポリシー(AWSEB-ELB-StickinessPolicy)を使用します。
0 ~ 1000000
Stickiness Policy
true
false
セッション中にユーザーから受信するすべて
のリクエストが、同じサーバーインスタンス
に送信されるように、ユーザーのセッション
を特定のサーバーインスタンスにバインドし
ます。デフォルトポリシー(AWSEB-ELBStickinessPolicy)を使用します。
false
aws:elb:policies:policy_name
名前空間内のポリシー名を指定することで、追加のロードバランサーポリシーを作成します。
名前空間: aws:elb:policies:policy_name
CookieName
アプリケーションによって生成され、Appなし
CookieStickinessPolicyType ポリシーの
セッション存続期間を管理する Cookie の名
前です。このポリシーは、HTTP/HTTPS リス
ナーにのみ関連付けることができます。
該当なし
InstancePorts
このポリシーが適用されるインスタンスポー
トカンマ区切りリストです。
:allを使用し
て、すべてのイ
ンスタンスポー
トを含めること
ができます。
API Version 2010-12-01
135
なし
AWS Elastic Beanstalk 開発者ガイド
汎用オプション
名前空間: aws:elb:policies:policy_name
LoadBalancerPorts
このポリシーが適用されるリスナーのカンマ
区切りリストです。
なし
:allを使用して
すべてのリス
ナーポートを指
定できます。
ProxyProtocol
ProxyProtocolPolicyType ポリシーで、 なし
IP アドレスと TCP メッセージのリクエスト
送信元のポートを含めるかどうかを指定しま
す。このポリシーは、TCP/SSL リスナーにの
み関連付けることができます。
true
false
PublicKey
バックエンドサーバーやサーバーを認証する なし
ときに使用する PublicKeyPolicyType ポ
リシーのパブリックキーの内容です。このポ
リシーは、バックエンドサーバーやリスナー
に直接適用できません。BackendServerAuthenticationPolicyType ポリシーの一部
であることが必要です。
該当なし
PublicKeyPolicyNames
バックエンドサーバーやサーバーへの認証を なし
管理する BackendServerAuthenticationPolicyType ポリシーの名前(PublicKeyPolicyType ポリシーから)のカンマ区切りリ
ストです。このポリシーは、HTTPS/SSL を
使用しているバックエンドサーバーにのみ関
連付けることができます。
該当なし
SSLProtocols
ロードバランサーで許可される暗号とプロト なし
コルを定義する SSLNegotiationPolicyType ポリシーで有効化される SSL プロト
コルのカンマ区切りリストです。このポリシー
は、HTTPS/SSL リスナーにのみ関連付ける
ことができます。
該当なし
SSLReferencePolicy
AWS セキュリティのベストプラクティスに準 なし
拠する事前定義されたセキュリティーポリシー
と、ロードバランサーで許可される暗号とプ
ロトコルを定義する SSLNegotiationPolicyType ポリシーで有効化する事前定義され
たセキュリティーポリシーの名前です。この
ポリシーは、HTTPS/SSL リスナーにのみ関
連付けることができます。
該当なし
Stickiness Cookie Ex- 各 Cookie の有効時間(秒単位)です。
piration
0
0 ~ 1000000
Stickiness Policy
false
true
false
セッション中にユーザーから受信するすべて
のリクエストが、同じサーバーインスタンス
に送信されるように、ユーザーのセッション
を特定のサーバーインスタンスにバインドし
ます。
API Version 2010-12-01
136
AWS Elastic Beanstalk 開発者ガイド
汎用オプション
aws:rds:dbinstance
名前空間: aws:rds:dbinstance
DBAllocatedStorage
割り当て済みデータベースストレージのサイ
ズ(ギガバイト単位)。
MySQL: 5
MySQL: 5-1024
Oracle: 10
Oracle: 10-1024
sqlserver-se:
200
sqlserver: 変更する
ことはできません
sqlserver-ex: 30
sqlserver-web:
30
DBDeletionPolicy
環境の終了時に、DB インスタンスを削除す
るか、そのスナップショットを取得するかを
決定します。
Delete
Delete
Snapshot
Warning
DB インスタンスを削除した場合、そ
のデータは復元できません。
DBEngine
このインスタンスに使用するデータベースエ
ンジンの名前。
mysql
mysql
oracle-se1
oracle-se
oracle-ee
sqlserver-ee
sqlserver-ex
sqlserver-web
sqlserver-se
postgres
DBEngineVer- データベースエンジンのバージョン番号。
sion
5.5
該当なし
DBInstanceClass
データベースインスタンスのタイプ。
db.t1.micro
「 Amazon Relational Database Service
User Guide」の
「DB Instance
Class」を参照して
ください。
DBPassword
データベースインスタンスのマスターユーザー 該当なし
パスワード。
該当なし
DBSnapshotIdentifier
リストア元の DB スナップショットの識別子。 該当なし
該当なし
API Version 2010-12-01
137
AWS Elastic Beanstalk 開発者ガイド
プラットフォーム固有のオプション
名前空間: aws:rds:dbinstance
DBUser
DB インスタンスのマスターユーザーの名前。 ebroot
該当なし
MultiAZDatabase
データベースインスタンス Multi-AZ デプロイ false
を作成する必要があるかどうかを指定します。
Multi-AZ デプロイと Amazon Relational Database Service(RDS)の詳細については、「
Amazon Relational Database Service User
Guide」の「Regions and Availability Zones」
を参照してください。
true
false
プラットフォーム固有のオプション
Abstract
Elastic Beanstalk 環境用にプラットフォーム固有のオプションを設定します。
プラットフォーム
• Docker プラットフォームのオプション (p. 138)
• Go プラットフォームのオプション (p. 138)
• Java SE プラットフォームのオプション (p. 139)
• Java と Tomcat プラットフォームのオプション (p. 139)
• .NET プラットフォームのオプション (p. 140)
• Node.js プラットフォームのオプション (p. 140)
• PHP プラットフォームのオプション (p. 142)
• Python プラットフォームのオプション (p. 143)
• Ruby プラットフォームのオプション (p. 144)
Docker プラットフォームのオプション
Docker 固有の設定オプションは、Elastic Beanstalk によっては提供されません。
Go プラットフォームのオプション
aws:elasticbeanstalk:container:golang:staticfiles
静的ファイルを含むソースバンドルのディレクトリに、ウェブアプリケーションのパスをマッピングし
ます。この名前空間で定義される各オプションは、それぞれ異なるパスをマッピングします。
名前空間: aws:elasticbeanstalk:container:golang:staticfiles
アプリケーションのパスで
す。
ソースディレクトリです。
例: myimages
例: /images
API Version 2010-12-01
138
該当なし
該当なし
AWS Elastic Beanstalk 開発者ガイド
プラットフォーム固有のオプション
Java SE プラットフォームのオプション
aws:elasticbeanstalk:container:java:staticfiles
静的ファイルを含むソースバンドルのディレクトリに、ウェブアプリケーションのパスをマッピングし
ます。この名前空間で定義される各オプションは、それぞれ異なるパスをマッピングします。
名前空間: aws:elasticbeanstalk:container:java:staticfiles
名前
説明
アプリケーション ソースディレクトリです。
のパスです。
例: myimages
例: /images
デフォル
ト
有効な値
該当なし
該当なし
Java と Tomcat プラットフォームのオプション
名前空間
• aws:elasticbeanstalk:application:environment (p. 139)
• aws:elasticbeanstalk:container:tomcat:jvmoptions (p. 139)
aws:elasticbeanstalk:application:environment
名前空間: aws:elasticbeanstalk:application:environment
名前
説明
デフォ
ルト
有効な値
JDBC_CONNECTION_STRING
外部データベースへの接続文字列です。
該当な
し
該当なし
Note
環境用に定義されるすべての環境プロパティの統合サイズは 4,096 バイトに制限されていま
す。環境プロパティの形式は KEY1=VALUE1, KEY2=VALUE2 で、各変数の値とキーの両方が
合計に含まれることを意味します。プラットフォームに 1 つまたは複数の定義済み環境プロパ
ティ([JDBC_CONNECTION_STRING] など)がある場合は、これらのプロパティも合計に含
まれます。
aws:elasticbeanstalk:container:tomcat:jvmoptions
名前空間: aws:elasticbeanstalk:container:tomcat:jvmoptions
名前
説明
デフォルト
JVM のオプション
起動時にコマンドラインオプションを JVM に渡 該当なし
します。
該当なし
Xmx
JVM の最大ヒープサイズ。
該当なし
API Version 2010-12-01
139
256m
有効な値
AWS Elastic Beanstalk 開発者ガイド
プラットフォーム固有のオプション
名前空間: aws:elasticbeanstalk:container:tomcat:jvmoptions
XX:MaxPermSize
クラス定義と関連するメタデータの保存に使用
される JVM ヒープのセクション。
64m
該当なし
Xms
JVM の初期ヒープサイズ。
256m
該当なし
Note
aws:elasticbeanstalk:container:tomcat:jvmoptions 名前空間と
aws:elasticbeanstalk:application:environment 名前空間で、パラメータの数を拡張
し、パラメータを指定できます。
.NET プラットフォームのオプション
名前空間
• aws:elasticbeanstalk:application:environment (p. 140)
• aws:elasticbeanstalk:container:dotnet:apppool (p. 140)
aws:elasticbeanstalk:application:environment
名前空間: aws:elasticbeanstalk:application:environment
名前
説明
デフォルト
有効な値
PARAM1 - PARAM5
キーと値のペアを渡します。
該当なし
該当なし
Note
環境用に定義されるすべての環境プロパティの統合サイズは 4,096 バイトに制限されていま
す。環境プロパティの形式は KEY1=VALUE1, KEY2=VALUE2 で、各変数の値とキーの両方が
合計に含まれることを意味します。プラットフォームに 1 つまたは複数の定義済み環境プロパ
ティ([JDBC_CONNECTION_STRING] など)がある場合は、これらのプロパティも合計に含
まれます。
aws:elasticbeanstalk:container:dotnet:apppool
名前空間: aws:elasticbeanstalk:container:dotnet:apppool
名前
説明
デフォルト
有効な値
Target Runtime
アプリケーションの .NET Framework のバー
ジョンを選択できます。
4.0
2.0
4.0
Enable 32-bit Applica- 32 ビットアプリケーションを有効にします。
tions
False
True
False
Node.js プラットフォームのオプション
名前空間
API Version 2010-12-01
140
AWS Elastic Beanstalk 開発者ガイド
プラットフォーム固有のオプション
• aws:elasticbeanstalk:container:nodejs (p. 141)
• aws:elasticbeanstalk:container:nodejs:staticfiles (p. 142)
aws:elasticbeanstalk:container:nodejs
名前空間: aws:elasticbeanstalk:container:nodejs
名前
説明
デフォル
ト
NodeCommand
Node.js アプリケーションの起動に使用するコ ""
マンド。空の文字列が指定された場合は、
app.js が使用され、次に server.js、次に
"npm start" が使用されます。
該当なし
NodeVersion
Node.js のバージョン。
0.8.28
0.12.6
サポートされる Node.js のバージョンは、
Node.js プラットフォーム設定のバージョンに
よって異なります。右に示しているバージョン
はバージョン 2.0.0 のものです。現在サポート
されているバージョンの一覧については、
Node.js (p. 30)の「サポートされるプラット
フォーム」ページを参照してください。
有効な値
0.10.31
0.10.38
0.10.39
Note
お使いの Node.js バージョンのサポー
トがプラットフォーム設定から削除さ
れた場合には、プラットフォームアッ
プグレード (p. 86)の前に、バージョン
設定の変更または削除を行ってくださ
い。これによって、いくつかの Node.js
のバージョンにセキュリティの脆弱性
が見つかる場合があります
この場合には、設定された NodeVersion (p. 140) をサポートしないプラット
フォームの新しいバージョンへのアッ
プグレードは失敗します。 新しい環境
の作成を回避するためには、古い設定
バージョンと新しいバージョンの両方
をサポートするバージョンに
NodeVersion 設定オプションを変更す
るか、オプション設定を削除 (p. 110)し
てから、プラットフォームのアップグ
レードを行ってください。
GzipCompression
gzip 圧縮が有効かどうかを指定します。
false
ProxyServer を "none" に設定すると、gzip の
圧縮が無効になります。
API Version 2010-12-01
141
true
false
AWS Elastic Beanstalk 開発者ガイド
プラットフォーム固有のオプション
名前空間: aws:elasticbeanstalk:container:nodejs
ProxyServer Node.js へのプロキシ接続に使用するウェブ
nginx
サーバーを指定します。ProxyServer を "none"
に設定すると、静的なファイルのマッピングが
有効にならず、gzip の圧縮が無効になります。
apache
nginx
none
aws:elasticbeanstalk:container:nodejs:staticfiles
静的ファイルを含むソースバンドルのディレクトリに、ウェブアプリケーションのパスをマッピングし
ます。この名前空間で定義される各オプションは、それぞれ異なるパスをマッピングします。
名前空間: aws:elasticbeanstalk:container:nodejs:staticfiles
名前
説明
デフォルト
アプリケーションのパスで
す。
ソースディレクトリです。ProxyServer を 該当なし
"none" に設定すると、静的なファイル
のマッピングが有効になりません。
有効な値
該当なし
例: /images
例: myimages
PHP プラットフォームのオプション
aws:elasticbeanstalk:container:php:phpini
名前空間: aws:elasticbeanstalk:container:php:phpini
名前
説明
デフォル
ト
有効な値
docuパブリック側のウェブルートとして扱うプ /
ment_root (p. 757) ロジェクトの子ディレクトリを指定します。
空の文字列は「/」とし
て扱われます。または、
「/」から始まる文字列
を指定します。
memory_limit (p. 757)
PHP 環境に割り当てるメモリサイズ。
該当なし
zlib.output_compression (p. 757)
PHP の出力に圧縮を使用するかどうかを指 Off
定します。
256M
On
Off
alウェブサイトや FTP サーバーなど、リモー On
low_url_fopen(p.757) トの場所からデータを取得する PHP のファ
イル機能を許可するかどうかを指定します。
On
display_errors (p. 757)
On
エラーメッセージを出力に含めるかどうか
を指定します。
Off
Off
Off
max_execu環境によって終了される前に、スクリプト 60
tion_time (p. 757) を実行できる最大時間(秒)を設定します。
API Version 2010-12-01
142
0~
9223372036854775807
(PHP_INT_MAX)
AWS Elastic Beanstalk 開発者ガイド
プラットフォーム固有のオプション
名前空間: aws:elasticbeanstalk:container:php:phpini
composer_options (p. 757)
composer.phar をインストールすることで、 該当なし
Composer を使用して依存関係をインストー
ルするときに、使用するカスタムオプショ
ンを設定します。使用できるオプションの
詳細については、http://getcomposer.org/
doc/03-cli.md#install を参照してください。
該当なし
Python プラットフォームのオプション
名前空間
• aws:elasticbeanstalk:application:environment (p. 143)
• aws:elasticbeanstalk:container:python (p. 143)
• aws:elasticbeanstalk:container:python:staticfiles (p. 144)
aws:elasticbeanstalk:application:environment
名前空間: aws:elasticbeanstalk:application:environment
名前
説明
デフォルト
有効な値
DJANGO_SETTINGS_MODULE
使用する設定ファイルを指定します。
該当なし
該当なし
Note
環境用に定義されるすべての環境プロパティの統合サイズは 4,096 バイトに制限されていま
す。環境プロパティの形式は KEY1=VALUE1, KEY2=VALUE2 で、各変数の値とキーの両方が
合計に含まれることを意味します。プラットフォームに 1 つまたは複数の定義済み環境プロパ
ティ([JDBC_CONNECTION_STRING] など)がある場合は、これらのプロパティも合計に含
まれます。
aws:elasticbeanstalk:container:python
名前空間: aws:elasticbeanstalk:container:python
名前
説明
デフォルト
WSGIPath
WSGI アプリケーションを含むファイル。このファイルに applicaは呼び出し可能な「アプリケーション」が必要です。
tion.py
該当なし
NumProcesses
WSGI アプリケーションを実行するときに、プロセスグ
ループで開始するデーモンプロセス数。
該当なし
NumThreads
WSGI アプリケーションを実行するときに、プロセスグ
15
ループ内の各デーモンプロセスでリクエストを処理するた
めに作成するスレッド数。
API Version 2010-12-01
143
1
有効な値
該当なし
AWS Elastic Beanstalk 開発者ガイド
プラットフォーム固有のオプション
aws:elasticbeanstalk:container:python:staticfiles
静的ファイルを含むソースバンドルのディレクトリに、ウェブアプリケーションのパスをマッピングし
ます。この名前空間で定義される各オプションは、それぞれ異なるパスをマッピングします。
名前空間: aws:elasticbeanstalk:container:python:staticfiles
名前
説明
アプリケーションのパス ソースディレクトリです。
です。
例: myimages
例: /images
デフォルト
有効な値
該当なし
該当なし
Ruby プラットフォームのオプション
aws:elasticbeanstalk:application:environment
名前空間: aws:elasticbeanstalk:application:environment
名前
説明
デフォルト
有効な値
RAILS_SKIP_MIGRATIONS
ユーザーのアプリケーションの代わりに
false
`rake db:migrate` を実行するか、ス
キップするかを指定します。Rails 3.x アプ
リケーションにのみ適用できます。
true
RAILS_SKIP_ASSET_COM- コンテナでユーザーのアプリケーションの false
PILATION
代わりに `rake assets:precompile`
を実行するか、スキップするかを指定しま
す。これも、Rails 3.x アプリケーションに
のみ適用されます。
true
false
false
BUNDLE_WITHOUT
Gemfile から依存関係をインストールする test:devel- 該当なし
ときに無視するグループのコロン(「:」) opment
区切りリスト。
RACK_ENV
アプリケーションを実行できる環境ステー
ジを指定します。開発、本番環境、テスト
が含まれた一般的な環境の例
production
該当なし
RAILS_ENV
アプリケーションを実行できる環境ステー
ジを指定します。開発、本番環境、テスト
が含まれた一般的な環境の例
production
該当なし
Note
環境用に定義されるすべての環境プロパティの統合サイズは 4,096 バイトに制限されていま
す。環境プロパティの形式は KEY1=VALUE1, KEY2=VALUE2 で、各変数の値とキーの両方が
合計に含まれることを意味します。プラットフォームに 1 つまたは複数の定義済み環境プロパ
ティ([JDBC_CONNECTION_STRING] など)がある場合は、これらのプロパティも合計に含
まれます。
トピック
• 優先順位 (p. 145)
API Version 2010-12-01
144
AWS Elastic Beanstalk 開発者ガイド
優先順位
• 推奨値 (p. 145)
優先順位
環境の作成時には、複数のソースの設定オプションが、次のように優先順位の高いものから適用されま
す。
• 環境に直接適用される設定 – 環境の作成時または環境の更新時に、AWS マネジメントコンソール、
EB CLI、AWS CLI、SDK などのクライアントによって Elastic Beanstalk API で指定された設定です。
AWS マネジメントコンソール および EB CLI は、一部のオプションで推奨値 (p. 145)も適用します。
推奨値は、上書きされるまでこのレベルで適用されます。
• 保存済み設定 – 指定されている場合、環境に直接適用されないオプションの設定が、保存済み設定か
らロードされます。
• 設定ファイル(.ebextensions) – 環境に直接適用されず、保存済み設定でも指定されていないオプ
ションの設定が、アプリケーションソースバンドルのルートにある [.ebextensions] フォルダの設
定ファイルからロードされます。
設定ファイルはアルファベット順に実行されます。例えば、.ebextensions/01run.config は
.ebextensions/02do.config より先に実行されます。
• デフォルト値 – 設定オプションにデフォルト値がある場合、オプションが上記のいずれのレベルにも
設定されていない場合にのみ適用されます。
1 つ以上の場所で同じ設定オプションが定義されている場合は、最も優先順位の高いものが適用されま
す。保存済み設定から設定が適用されるか、設定が直接環境に適用されると、設定は環境の設定の一部
として保存されます。これらの設定は、AWS CLI (p. 117) や EB CLI (p. 114) を使用して削除できます。
設定ファイルの設定は、環境に直接適用されず、設定ファイルの変更と新しいアプリケーションバー
ジョンのデプロイなしには削除できません。その他の方法の 1 つで適用された設定が削除されると、
ソースバンドルの設定ファイルから同じ設定がロードされます。
たとえば、環境の作成時に AWS マネジメントコンソール、コマンドラインオプション、保存済み設定
のいずれかを使用して、環境内のインスタンスの最小数を 5 に設定したとします。アプリケーションの
ソースバンドルには、インスタンスの最小数を 2 に設定する設定ファイルも含まれます。
環境の作成時、Elastic Beanstalk は名前空間 aws:autoscaling:asg の [MinSize] オプションを [5]
に設定します。その後、環境設定からオプションを削除すると、設定ファイルの値がロードされ、イン
スタンスの最小数は [2] に設定されます。その後、ソースバンドルから設定ファイルを削除して再度デ
プロイすると、Elastic Beanstalk はデフォルト設定の [1] を使用します。
推奨値
EB コマンドラインインターフェイス(CLI)と Elastic Beanstalk コンソールは、一部の設定オプショ
ンについて推奨値を提供します。これらの値はデフォルト値と異なる場合があり、環境の作成時に API
レベルで設定されます。推奨値により、Elastic Beanstalk は、API への後方互換性のない変更なしに、
デフォルトの環境設定を向上させることができます。
たとえば、EB CLI と Elastic Beanstalk コンソールの両方が、EC2 インスタンスタイプの設定オプショ
ンを設定したとします(名前空間 aws:autoscaling:launchconfiguration の InstanceType)。
各クライアントは、固有の方法でデフォルト設定を上書きします。コンソールでは、[Create New
Environment] ウィザードの [Configuration Details] ページで、ドロップダウンメニューから様々なイン
スタンスタイプを選択できます。EB CLI では、eb create (p. 427) の --instance_type パラメータ
を使用できます。
推奨値は API レベルで設定されているため、設定ファイルや保存済み設定で設定された同じオプショ
ンの値を上書きします。以下のオプションが設定されます。
API Version 2010-12-01
145
AWS Elastic Beanstalk 開発者ガイド
推奨値
Elastic Beanstalk コンソール
• 名前空間: aws:elb:loadbalancer
オプション名: CrossZone
• 名前空間: aws:elasticbeanstalk:command
オプション名: BatchSize、BatchSizeType
• 名前空間: aws:autoscaling:launchconfiguration
オプション名: IamInstanceProfile、EC2KeyName、InstanceType
• 名前空間: aws:elasticbeanstalk:healthreporting:system
オプション名: SystemType
• 名前空間: aws:elasticbeanstalk:environment
オプション名: ServiceRole
• 名前空間: aws:elasticbeanstalk:application
オプション名: Application Healthcheck URL
• 名前空間: aws:elb:policies
オプション名: ConnectionDrainingTimeout、ConnectionDrainingEnabled
• 名前空間: aws:autoscaling:updatepolicy:rollingupdate
オプション名: RollingUpdateType、RollingUpdateEnabled
• 名前空間: aws:elasticbeanstalk:sns:topics
オプション名: Notification Endpoint
EB CLI
• 名前空間: aws:elb:loadbalancer
オプション名: CrossZone
• 名前空間: aws:elasticbeanstalk:command
オプション名: BatchSize、BatchSizeType
• 名前空間: aws:autoscaling:launchconfiguration
オプション名: IamInstanceProfile、InstanceType
• 名前空間: aws:elasticbeanstalk:healthreporting:system
オプション名: SystemType
• 名前空間: aws:elasticbeanstalk:environment
オプション名: ServiceRole
• 名前空間: aws:elb:policies
オプション名: ConnectionDrainingEnabled
• 名前空間: aws:autoscaling:updatepolicy:rollingupdate
オプション名: RollingUpdateType、RollingUpdateEnabled
• 名前空間: aws:elb:healthcheck
オプション名: Interval
API Version 2010-12-01
146
AWS Elastic Beanstalk 開発者ガイド
.ebextensions
Elastic Beanstalk コンソールまたは EB CLI を使用して環境を作成し、さらに設定ファイルまたは保存
済み設定を使用してこれらのオプションを設定する場合、環境の作成後に AWS CLI (p. 117) または EB
CLI (p. 114) でオプション設定を削除できます。
設定ファイル(.ebextensions)による高度な環境のカス
タマイズ
Abstract
設定オプションを設定する設定ファイル(.ebextensions)を使用し、環境内の EC2 インスタンスをカスタマイズ
し、追加リソースを作成します。
ウェブアプリケーションのソースコードに AWS Elastic Beanstalk 設定ファイル(.ebextensions)
を追加することで、環境を設定し、環境に含まれる AWS リソースをカスタマイズできます。設定ファ
イルは、ファイル拡張子 .config を持つ YAML 形式のドキュメントで、[.ebextensions] という名
前のフォルダに配置してアプリケーションソースバンドルにデプロイします。
設定ファイルの option_settings セクションは、設定オプション (p. 101)の値を定義します。設定オ
プションにより、Elastic Beanstalk 環境、同環境内の AWS リソース、アプリケーションを実行するソ
フトウェアを設定することができます。設定ファイルは、設定オプションを設定するいくつかの方法の
1 つに過ぎません。
resources セクションでは、アプリケーションの環境内のリソースをさらにカスタマイズし、設定オ
プションが提供する機能では不可能な追加の AWS リソースの定義を実行できます。resources を使
用して、Elastic Beanstalk が環境の作成に使用する AWS CloudFormation がサポートするあらゆるリ
ソースを追加および設定できます。
設定ファイルのその他のセクション(packages、sources、files、users、groups、commands、
container_commands、services)では、環境内で起動される EC2 インスタンスを設定できます。
サーバーが環境内で起動される場合、Elastic Beanstalk は常にこれらのセクションで定義されたオペ
レーションを実行し、アプリケーションのためのオペレーティングシステムとストレージシステムを準
備します。
1 つの設定ファイルに、複数のセクションを含めることができます。設定を複数のファイルに分割する
こともできます。設定ファイルはアルファベット順に処理されるため、設定アクティビティは複数のス
テージに分割できます。
[.ebextensions] というフォルダ内のソースコードに設定ファイルを追加し、アプリケーションソー
スバンドルにデプロイします。
~/workspace/my-app/
|-- .ebextensions
|
|-- environmentvariables.config
|
`-- healthcheckurl.config
|-- .elasticbeanstalk
|
`-- config.yml
|-- index.php
`-- styles.css
プロセスは、環境を管理するために使用しているクライアントによって少し異なります。詳細について
は、次のセクションを参照してください。
• Elastic Beanstalk コンソール (p. 106)
• EB CLI (p. 107)
API Version 2010-12-01
147
AWS Elastic Beanstalk 開発者ガイド
オプション設定
• AWS CLI (p. 109)
トピック
• オプション設定 (p. 148)
• Linux サーバーでのソフトウェアのカスタマイズ (p. 150)
• Windows Server でのソフトウェアのカスタマイズ (p. 161)
• Elastic Beanstalk 環境リソースの追加とカスタマイズ (p. 167)
オプション設定
Abstract
アプリケーションのソースコードに含めることができる設定ファイルの設定オプションの設定を定義します。
option_settings キーを使用して Elastic Beanstalk 設定を変更し、環境変数を使用してアプリケー
ションから取得できる変数を定義できます。次の表では、各コンテナタイプに対してサポートされる名
前を示します。一部の名前空間では、パラメータの数を増やし、パラメータ名を指定できます。名前空
間と設定オプションの一覧については、「設定オプション (p. 101)」を参照してください。
オプション設定は、環境の作成時または環境の更新時に直接環境に適用することもできます。環境に直
接適用される設定は、設定ファイルの同じオプションの設定を上書きします。環境の設定から設定を削
除すると、設定ファイルの設定が有効になります。詳細については、「優先順位 (p. 145)」を参照して
ください。
構文
オプション設定の標準的な構文は、namespace、option_name 、value キーを格納したオブジェク
トの配列です。
option_settings:
- namespace: namespace
option_name: option name
value: option value
- namespace: namespace
option_name: option name
value: option value
namespace キーはオプションです。名前空間を指定しない場合に使用されるデフォルトは
aws:elasticbeanstalk:application:environment です。
option_settings:
- option_name: option name
value: option value
- option_name: option name
value: option value
Elastic Beanstalk では、オプション設定の簡易構文もサポートされており、名前空間内のキーと値のペ
アとしてオプションを指定できます。
option_settings:
namespace:
option name: option value
API Version 2010-12-01
148
AWS Elastic Beanstalk 開発者ガイド
オプション設定
例
以下の例では、Tomcat プラットフォーム固有のオプションを名前空間
aws:elasticbeanstalk:container:tomcat:jvmoptions と MYPARAMETER という環境プロパティ
に設定します。標準の YAML 形式では、以下のようになります。
Example .ebextensions/options.config
option_settings:
- namespace: aws:elasticbeanstalk:container:tomcat:jvmoptions
option_name: Xmx
value: 256m
- option_name: MYPARAMETER
value: parametervalue
簡易形式では、以下のようになります。
Example .ebextensions/options.config
option_settings:
aws:elasticbeanstalk:container:tomcat:jvmoptions:
Xmx: 256m
aws:elasticbeanstalk:application:environment:
MYPARAMETER: parametervalue
JSON の場合:
Example .ebextensions/options.config
{
"option_settings": [
{
"namespace": "aws:elasticbeanstalk:container:tomcat:jvmoptions",
"option_name": "Xmx",
"value": "256m"
},
{
"option_name": "MYPARAMETER",
"value": "parametervalue"
}
]
}
環境変数にアクセスする
設定ファイルの option_settings セクションで指定されているパラメータは、環境変数として EC2
インスタンスに渡されます。コーディングの例については、次のセクションを参照してください。
• Java (p. 622)
• .NET (p. 674)
• Node.js (p. 705)
• PHP (p. 758)
• Python (p. 783)
• Ruby (p. 802)
API Version 2010-12-01
149
AWS Elastic Beanstalk 開発者ガイド
サーバーのカスタマイズ(Linux)
Linux サーバーでのソフトウェアのカスタマイズ
Abstract
Linux を実行する EC2 インスタンスで、Elastic Beanstalk アプリケーションが依存するソフトウェアをカスタマイ
ズする設定ファイルを含めます。
アプリケーションが依存するソフトウェアをカスタマイズして設定できます。このようなファイルとし
ては、アプリケーションで必要な依存関係(yum リポジトリからの追加パッケージなど)や、Elastic
Beanstalk でデフォルトの特定の設定を上書きするための httpd.conf の代わりの設定ファイルなどが
あります。
Note
設定ファイルは YAML または JSON 形式の規格に準拠している必要があります。 たとえば、
YAML を正しく解釈するにはインデントが重要です。詳細は、それぞれ http://www.yaml.org/
start.html または http://www.json.org を参照してください。アプリケーションでの設定ファイル
のデプロイの詳細については、「設定ファイル(.ebextensions)による高度な環境のカス
タマイズ (p. 147)」を参照してください。
このセクションでは、Linux を実行する EC2 インスタンス上のソフトウェアをカスタマイズするため
の設定ファイルに含めることのできる情報の種類について説明します。Elastic Beanstalk 環境のカスタ
マイズと設定に関する一般的な情報については、AWS Elastic Beanstalk 環境設定 (p. 100)を参照してく
ださい。Windows を実行する EC2 インスタンス上のソフトウェアをカスタマイズする方法について
は、Windows Server でのソフトウェアのカスタマイズ (p. 161)を参照してください。
設定ファイルは、アプリケーションが実行している Linux サーバーに影響する次のキーをサポートして
います。
キー
• パッケージ (p. 150)
• グループ (p. 151)
• ユーザー (p. 152)
• sources (p. 153)
• ファイル (p. 153)
• コマンド (p. 155)
• サービス (p. 156)
• コンテナコマンド (p. 157)
• 例: カスタム Amazon CloudWatch メトリックスの使用 (p. 158)
キーは、上記のリストの順に処理されます。
パッケージ
packages キーを使用して、パッケージ済みのアプリケーションとコンポーネントをダウンロードして
インストールできます。
構文
packages:
name of package manager:
package name: version
API Version 2010-12-01
150
AWS Elastic Beanstalk 開発者ガイド
サーバーのカスタマイズ(Linux)
サポートされるパッケージ形式
現在 Elastic Beanstalk がサポートしているパッケージマネージャは、yum、rubygems、python、およ
び rpm です。パッケージは rpm、yum、rubygems、python の順序で処理されます。rubygems と python
の間に順序はなく、各パッケージマネージャ内のパッケージのインストール順序に保証はありません。
オペレーティングシステムでサポートされているパッケージマネージャを使用します。
Note
Elastic Beanstalk は、Python の基盤となるパッケージマネージャとして pip と easy_install を
サポートしています。ただし、設定ファイルの構文では、パッケージマネージャ名を python
にする必要があります。設定ファイルを使用して Python のパッケージマネージャを指定する
と、Elastic Beanstalk は Python 2.6 を使用します。アプリケーションが別のバージョンの
Python に依存する場合は、インストールするパッケージを requirements.txt ファイルで指
定できます。詳細については、「設定ファイル (p. 783)」を参照してください。
バージョンの指定
各パッケージマネージャ内では、各パッケージはパッケージ名およびバージョンのリストとして指定さ
れます。バージョンは、文字列、バージョンのリスト、あるいは空の文字列またはリストのいずれでも
かまいません。空の文字列またはリストは、最新バージョンを指定することを示します。rpm マネー
ジャの場合、バージョンはディスク上のファイルへのパスまたは URL として指定します。相対パスは
サポートされていません。
パッケージのバージョンを指定した場合は、それより新しいバージョンのパッケージがインスタンスに
既にインストールされていたとしても、指定されたバージョンのインストールが試みられます。新しい
バージョンが既にインストールされていた場合、デプロイは失敗します。パッケージマネージャには、
複数のバージョンをサポートするものと、サポートしないものがあります。詳細については、パッケー
ジマネージャのドキュメントを調べてください。バージョンを指定せず、あるバージョンのパッケージ
が既にインストールされている場合は、Elastic Beanstalk は新しいバージョンをインストールせず、
ユーザーが既存のバージョンを維持して使用することを望んでいるものと想定します。
例
次の例では、rpm のバージョン URL を指定し、yum から最新のバージョンを要求し、rubygems から
chef のバージョン 0.10.2 を要求しています。
packages:
yum:
libmemcached: []
ruby-devel: []
gcc: []
rpm:
epel: http://download.fedoraproject.org/pub/epel/5/i386/epel-release-54.noarch.rpm
rubygems:
chef: '0.10.2'
グループ
groups キーを使用すると、Linux/UNIX グループを作成して、グループ ID を割り当てることができま
す。グループを作成するには、新しいグループ名をオプションのグループ ID に関連付ける新しいキー
と値のペアを追加します。groups キーでは、1 つまたは複数のグループ名を指定できます。次の表で
は使用できるキーの一覧を示します。
API Version 2010-12-01
151
AWS Elastic Beanstalk 開発者ガイド
サーバーのカスタマイズ(Linux)
構文
groups:
name of group: {}
name of group:
gid: "group id"
オプション
gid
グループ ID 番号です。
グループ ID を指定し、同じ名前のグループが既に存在する場合、グループの作成は失敗します。
指定したグループ ID が別のグループに割り当てられている場合、オペレーティングシステムはグ
ループの作成を拒否することがあります。
例
次の例では、groupOne という名前のグループをグループ ID なしで指定し、groupTwo という名前のグ
ループをグループ ID 値 45 で指定しています。
groups:
groupOne: {}
groupTwo:
gid: "45"
ユーザー
users キーを使用すると、Linux/UNIX ユーザーを EC2 インスタンス上に作成できます。
構文
users:
name of user:
groups:
- name of group
uid: "id of the user"
homeDir: "user's home directory"
オプション
uid
ユーザー ID です。異なるユーザー ID で同じユーザー名が存在した場合、作成処理は失敗します。
ユーザー ID が既存のユーザーに既に割り当てあれている場合、オペレーティングシステムは作成
要求を拒否することがあります。
groups
グループ名のリストです。ユーザーはリスト内の各グループに追加されます。
homeDir
ユーザーのホームディレクトリです。
ユーザーは、/sbin/nologin のシェルで非対話形式のシステムユーザーとして作成されます。これは
設計によるものであり、変更できません。
API Version 2010-12-01
152
AWS Elastic Beanstalk 開発者ガイド
サーバーのカスタマイズ(Linux)
例
users:
myuser:
groups:
- group1
- group2
uid: "50"
homeDir: "/tmp"
sources
sources キーを使用すると、アーカイブファイルをダウンロードし、EC2 インスタンス上のターゲッ
トディレクトリに解凍できます。解凍されたソースが自動的にビルドされることはありません。
構文
sources:
target directory: location of archive file
サポートされる形式
サポートされる形式は、tar、tar+gzip、tar+bz2、zip です。Amazon Simple Storage Service(Amazon
S3)などの外部の場所を参照できます(例: http://s3.amazonaws.com/mybucket/myobject)。
例
次の例では .zip ファイルを Amazon S3 バケットからダウンロードし、/etc/myapp に解凍していま
す。
sources:
/etc/myapp: http://s3.amazonaws.com/mybucket/myobject
ファイル
files キーを使用すると、EC2 インスタンス上にファイルを作成できます。内容は、設定ファイルに
おいてインラインで指定することも、URL から取得することもできます。ファイルは辞書式順序でディ
スクに書き込まれます。Amazon S3 などの外部の場所を参照できます(例:
https://s3-us-west-2.amazonaws.com/my-bucket/myobject)。
構文
files:
"target file location on disk":
mode: "six-digit octal value"
owner: name of owning user for file
group: name of owning group for file
source: URL
authentication: authentication name:
"target file location on disk":
mode: "six-digit octal value"
owner: name of owning user for file
API Version 2010-12-01
153
AWS Elastic Beanstalk 開発者ガイド
サーバーのカスタマイズ(Linux)
group: name of owning group for file
content: |
this is my content
encoding: encoding format
authentication: authentication name:
オプション
content
ファイルに追加する文字列コンテンツ。content または source を指定します。両方を指定する
ことはできません。
source
ダウンロードするファイルの URL。content または source を指定します。両方を指定すること
はできません。
encoding
content オプションで指定された文字列のエンコード形式。
有効な値: plain | base64
group
ファイルを所有している Linux グループ。
owner
ファイルを所有している Linux ユーザー。
mode
このファイルのモードを表す 6 桁の 8 進値です(例: 000444)。最初の 3 桁はシンボリックリン
クに使用され、最後の 3 桁はファイルに対するアクセス許可の設定に使用されます。
authentication
使用する AWS CloudFormation 認証方法の名前。リソースキーで、オートスケーリンググループ
メタデータに認証方法を追加できます。例については、以下を参照してください。
例
files:
"/home/ec2-user/myfile" :
mode: "000755"
owner: root
group: root
source: http://foo.bar/myfile
"/home/ec2-user/myfile2" :
mode: "000755"
owner: root
group: root
content: |
# this is my file
# with content
シンボリックリンクを使用する例。この例では、外部のファイル /tmp/myfile1.txt を参照するリン
ク /tmp/myfile2.txt を作成します。
files:
"/tmp/myfile2.txt" :
mode: "120400"
content: "/tmp/myfile1.txt"
API Version 2010-12-01
154
AWS Elastic Beanstalk 開発者ガイド
サーバーのカスタマイズ(Linux)
次の例では、リソースキーを使用して S3Auth という認証方法を追加して、Amazon S3 バケットから
秘密ファイルをダウンロードするのに使用します。
Resources:
AWSEBAutoScalingGroup:
Metadata:
AWS::CloudFormation::Authentication:
S3Auth:
type: "s3"
buckets: ["elasticbeanstalk-us-west-2-123456789012"]
roleName:
"Fn::GetOptionSetting":
Namespace: "aws:asg:launchconfiguration"
OptionName: "IamInstanceProfile"
DefaultValue: "aws-elasticbeanstalk-ec2-role"
files:
"/tmp/data.json" :
mode: "000755"
owner: root
group: root
authentication: "S3Auth"
source: https://s3-us-west-2.amazonaws.com/elasticbeanstalk-us-west-2123456789012/data.json
コマンド
commands キーを使用すると、EC2 インスタンスでコマンドを実行できます。コマンドは、名前のア
ルファベット順に処理され、アプリケーションとウェブサーバーが設定されてアプリケーションバー
ジョンファイルが抽出される前に実行されます。
構文
commands:
command name:
command: command to run
cwd: working directory
env:
variable name: variable value
test: conditions for command
ignoreErrors: true
オプション
command
必須実行するコマンドを指定する配列または文字列です。配列を使用する場合、スペース文字をエ
スケープしたり、コマンドパラメータを引用符で囲んだりする必要はありません。
env
オプション。コマンドの環境変数を設定します。このプロパティは、既存の環境に追加するのでは
なく、既存の環境を上書きします。
cwd
オプション。作業ディレクトリです。デフォルトでは、Elastic Beanstalk はプロジェクトのディレ
クトリの場所を探します。見つからない場合は、"/" を使用します。
API Version 2010-12-01
155
AWS Elastic Beanstalk 開発者ガイド
サーバーのカスタマイズ(Linux)
test
オプション。Elastic Beanstalk が command キーに含まれるコマンド(bash スクリプトなど)を処
理するために、値 true (終了コード 0)を返す必要があるコマンドです。
ignoreErrors
オプション。command キーに含まれるコマンドが失敗した場合(非ゼロ値を返した場合)、他の
コマンドを実行する必要があるかどうかを指定するブール値です。失敗したコマンドがあっても他
のコマンドの実行を続ける場合は、この値を true に設定します。コマンドが失敗したら実行を停
止する場合は、false に設定します。デフォルト値は false です。
例
次の例では python スクリプトを実行します。
commands:
python_install:
command: myscript.py
cwd: /home/ec2-user
env:
myvarname: myvarvalue
test: '[ ! /usr/bin/python ] && echo "python not installed"'
サービス
services キーを使用すると、インスタンスが起動されるときに開始または停止する必要のあるサービ
スを定義できます。また、services キーではソース、パッケージ、ファイルへの依存関係も指定で
き、インストールされているファイルのために再起動が必要になった場合に、Elastic Beanstalk がサー
ビスの再起動を処理します。
構文
services:
sysvinit:
name of service:
enabled: true
ensureRunning: true
files: "file name"
sources: "directory"
packages:
name of package manager:
package name: version
commands:
name of command
オプション
ensureRunning
true に設定すると、Elastic Beanstalk が終了した後でサービスが実行されます。
false に設定すると、Elastic Beanstalk が終了した後でサービスは実行されません。
このキーを省略すると、サービスの状態は変更されません。
enabled
true に設定すると、起動時にサービスが自動的に開始されます。
false に設定すると、起動時にサービスが自動的に開始されません。
API Version 2010-12-01
156
AWS Elastic Beanstalk 開発者ガイド
サーバーのカスタマイズ(Linux)
このキーを省略すると、このプロパティは変更されません。
files
ファイルのリストです。Elastic Beanstalk がファイルブロックによって直接変更した場合、サービ
スは再起動されます。
sources
ディレクトリのリストです。Elastic Beanstalk がこれらのディレクトリの 1 つにアーカイブを拡張
した場合、サービスは再起動されます。
packages
パッケージ名のリストに対するパッケージマネージャのマップです。Elastic Beanstalk がこれらの
パッケージの 1 つをインストールまたは更新した場合、サービスは再起動されます。
commands
コマンド名のリストです。Elastic Beanstalk が指定したコマンドを実行した場合、サービスは再起
動されます。
例
次に例を示します。
services:
sysvinit:
myservice:
enabled: true
ensureRunning: true
コンテナコマンド
container_commands キーを使用すると、コンテナに対するコマンドを実行できます。
container_commands 内のコマンドは、名前のアルファベット順に処理されます。コマンドは、アプ
リケーションおよびウェブサーバーが設定され、アプリケーションバージョンファイルが抽出された
後、アプリケーションバージョンがデプロイされる前に実行されます。また、AWS セキュリティ認証
情報などの環境変数にもアクセスできます。
コンテナコマンドは、ソースコードがアプリケーションサーバーにデプロイされる前に抽出されたス
テージングディレクトリから実行されます。コンテナコマンドを使用してステージングディレクトリに
あるソースコードに対して行うすべての変更は、ソースが最終的な場所にデプロイされる際に含まれま
す。
leader_only を使用すると、リーダーインスタンス上のコマンドの実行のみを行うことができます。
1 つのインスタンスを Auto Scaling グループのリーダーとして選択します。leader_only の値を true
に設定すると、コマンドはリーダーとして指定されたインスタンスに対してのみ実行されます。
構文
container_commands:
name of container_command:
command: "command to run"
leader_only: true
name of container_command:
command: "command to run"
API Version 2010-12-01
157
AWS Elastic Beanstalk 開発者ガイド
サーバーのカスタマイズ(Linux)
オプション
command
必須実行するコマンドを指定する配列または文字列です。配列を使用する場合、スペース文字をエ
スケープしたり、コマンドパラメータを引用符で囲んだりする必要はありません。
env
オプション。コマンドの環境変数を設定します。このプロパティは、既存の環境に追加するのでは
なく、既存の環境を上書きします。
cwd
オプション。作業ディレクトリです。デフォルトでは、これは解凍されたアプリケーションのス
テージングディレクトリです。
leader_only
オプション。Auto Scaling グループのリーダーにするインスタンスを設定します。leader_only
の値を true に設定すると、コマンドはリーダーとして指定されたインスタンスに対してのみ実行
されます。最初にリーダーが実行されます。
test
オプション。Elastic Beanstalk が command キーに含まれるコマンドを処理するためには値 true
を返す必要があるコマンドです。このオプションを true に設定した場合、leader_only の設定
は無効になります。
ignoreErrors
オプション。command キーに含まれるコマンドが失敗した場合(非ゼロ値を返した場合)、他の
コマンドを実行する必要があるかどうかを指定するブール値です。失敗したコマンドがあっても他
のコマンドの実行を続ける場合は、この値を true に設定します。コマンドが失敗したら実行を停
止する場合は、false に設定します。デフォルト値は false です。
例
次に例を示します。
container_commands:
collectstatic:
command: "django-admin.py collectstatic --noinput"
01syncdb:
command: "django-admin.py syncdb --noinput"
leader_only: true
02migrate:
command: "django-admin.py migrate"
leader_only: true
99customize:
command: "scripts/customize.sh"
例: カスタム Amazon CloudWatch メトリックスの使用
Abstract
Amazon CloudWatch ウェブサービスを使用して、Linux で実行する Elastic Beanstalk アプリケーションのカスタ
ムメトリックスを管理、監視および作成します。
Amazon CloudWatch は、さまざまなメトリックスをモニタリング、管理、発行し、メトリックスから
のデータに基づいてアラームアクションを設定できるウェブサービスです。独自に使用するカスタムメ
トリックスを定義でき、Elastic Beanstalk はそのようなメトリックスを Amazon CloudWatch にプッ
シュします。Amazon CloudWatch に組み込まれたカスタムメトリックスは、Amazon CloudWatch コ
ンソールで表示できます。
API Version 2010-12-01
158
AWS Elastic Beanstalk 開発者ガイド
サーバーのカスタマイズ(Linux)
Amazon CloudWatch の Linux 用モニタリングスクリプトを使用して、Amazon CloudWatch カスタム
メトリックスの作成方法と使用方法を確認できます。このスクリプトは、Amazon Elastic Compute
Cloud (Amazon EC2) Linux インスタンスのメモリ、スワップ、およびディスクスペースの使用状況
メトリックスをレポートする、完全に機能する例で構成されます。Amazon CloudWatch モニタリング
スクリプトの詳細については、『Amazon CloudWatch Developer Guide』の「Amazon CloudWatch
Monitoring Scripts for Linux」を参照してください。
Note
Elastic Beanstalk の拡張ヘルスレポート (p. 263)では、CloudWatch への幅広いインスタンスと
環境メトリックスの発行がネイティブでサポートされています。詳細については、「環境の
Amazon CloudWatch カスタムメトリックスのパブリッシュ (p. 276)」を参照してください。
トピック
• .ebextensions 設定ファイル (p. 159)
• アクセス許可 (p. 160)
• CloudWatch コンソールでのメトリックスの表示 (p. 161)
.ebextensions 設定ファイル
この例では、.ebextensions 設定ファイルでコマンドおよびオプション設定を使用して、Amazon
CloudWatch で提供されているモニタリングスクリプトをダウンロード、インストール、および実行し
ています。
このサンプルを使用するには、プロジェクトディレクトリの最上位にある .ebextensions ディレク
トリに cloudwatch.config というファイル名で保存した後、AWS マネジメントコンソール(ソース
バンドルに .ebextensions (p. 42) ディレクトリを含める)または EB CLI (p. 403) を使用してアプリケー
ションをデプロイします。
設定ファイルについて詳しくは、設定ファイル(.ebextensions)による高度な環境のカスタマイ
ズ (p. 147) を参照してください。
.ebextensions/cloudwatch.config
packages:
yum:
perl-DateTime: []
perl-Sys-Syslog: []
perl-LWP-Protocol-https: []
perl-Switch: []
perl-URI: []
perl-Bundle-LWP: []
sources:
/opt/cloudwatch: http://aws-cloudwatch.s3.amazonaws.com/downloads/CloudWatch
MonitoringScripts-1.2.1.zip
container_commands:
01-setupcron:
command: |
echo '*/5 * * * * root perl /opt/cloudwatch/aws-scripts-mon/mon-put-in
stance-data.pl `{"Fn::GetOptionSetting" : { "OptionName" : "CloudWatchMetrics",
"DefaultValue" : "--mem-util --disk-space-util --disk-path=/" }}` >>
/var/log/cwpump.log 2>&1' > /etc/cron.d/cwpump
02-changeperm:
API Version 2010-12-01
159
AWS Elastic Beanstalk 開発者ガイド
サーバーのカスタマイズ(Linux)
command: chmod 644 /etc/cron.d/cwpump
03-changeperm:
command: chmod u+x /opt/cloudwatch/aws-scripts-mon/mon-put-instance-data.pl
option_settings:
"aws:autoscaling:launchconfiguration" :
IamInstanceProfile : "aws-elasticbeanstalk-ec2-role"
"aws:elasticbeanstalk:customoption" :
CloudWatchMetrics : "--mem-util --mem-used --mem-avail --disk-space-util -disk-space-used --disk-space-avail --disk-path=/ --auto-scaling"
設定ファイルが正しく動作することを確認したら、ログファイル(>> /var/log/cwpump.log 2>&1')
から /dev/null(> /dev/null)にリダイレクトされるコマンドを変更して、ディスク使用率を一定
に保つことができます。
アクセス許可
カスタム Amazon CloudWatch メトリックスを発行するには、環境内のインスタンスに CloudWatch を
使用するためのアクセス権限が必要です。環境のインスタンスプロファイル (p. 21)にアクセス権限を
追加することにより、その環境のインスタンスにアクセス権限を付与できます。アプリケーションをデ
プロイする前または後のどちらでも、インスタンスプロファイルにアクセス権限を追加できます。
CloudWatch メトリックを発行する許可を付与するには
1.
2.
3.
https://console.aws.amazon.com/iam/ にある IAM コンソールを開きます。
ナビゲーションペインで [Roles(ロール)] を選択します。
環境のインスタンスプロファイルのロールを選択します。デフォルトでは、AWS マネジメントコ
ンソール または EB CLI (p. 403) を使用して環境を作成する場合のロールは
aws-elasticbeanstalk-ec2-role です。
4.
5.
[Permissions] タブを選択します。
[Permissions] の [Inline Policies(インラインポリシー)] で、[Create Role Policy(ロールポリシー
の作成)] を選択します。
[Custom Policy] を選択し、[Select] を選択します。
次のフィールドに入力し、[Apply Policy(ポリシーの適用)] を選択します。
6.
7.
ポリシー名
ポリシーの名前。
ポリシードキュメント
次のテキストをコピーしてポリシードキュメントに貼り付けます。
{
"Version": "2012-10-17",
"Statement": [
{
"Action": [
"cloudwatch:PutMetricData",
"ec2:DescribeTags"
],
"Effect": "Allow",
"Resource": [
"*"
]
}
]
}
API Version 2010-12-01
160
AWS Elastic Beanstalk 開発者ガイド
サーバーのカスタマイズ(Windows)
ポリシーの管理の詳細については、IAM ユーザーガイドの「ポリシーの使用」を参照してくださ
い。
CloudWatch コンソールでのメトリックスの表示
CloudWatch の設定ファイルを環境にデプロイした後、Amazon CloudWatch コンソールを確認してメ
トリックスを表示します。カスタムメトリックスには Linux System というプレフィックスが付きます。
Windows Server でのソフトウェアのカスタマイズ
Abstract
Windows を実行する EC2 インスタンスで、Elastic Beanstalk アプリケーションが依存するソフトウェアをカスタ
マイズする設定ファイルを含めます。
アプリケーションが依存するソフトウェアをカスタマイズして設定できます。これらのファイルは、例
えば、実行する必要のある追加パッケージやサービスなど、アプリケーションが必要とするいずれかの
依存関係です。Elastic Beanstalk 環境のカスタマイズと設定に関する一般的な情報については、「AWS
Elastic Beanstalk 環境設定 (p. 100)」を参照してください。
設定ファイルを作成するときは、Visual Studio ではなくエディタを使用することをお勧めします。これ
は、設定ファイルがタブではなくスペースを必要とするからです。
設定ファイルは、アプリケーションが実行している Windows サーバーに影響する次のキーをサポート
しています。
キー
• パッケージ (p. 162)
• sources (p. 162)
• ファイル (p. 163)
• コマンド (p. 164)
API Version 2010-12-01
161
AWS Elastic Beanstalk 開発者ガイド
サーバーのカスタマイズ(Windows)
• サービス (p. 165)
• コンテナコマンド (p. 166)
キーは、上記のリストの順に処理されます。
Note
.NET プラットフォーム設定の旧バージョン(バージョニング非対応)の場合は、正しい順序
で設定ファイルが処理されません。詳細については、「v1.0.0 Elastic Beanstalk Windows Server
プラットフォームへの移行 (p. 697)」を参照してください。
パッケージ
packages キーを使用して、パッケージ済みのアプリケーションとコンポーネントをダウンロードして
インストールできます。
構文
packages:
name of package manager:
package name: version
サポートされるパッケージ形式
現在、Elastic Beanstalk は MSI パッケージをサポートしています。
バージョンの指定
パッケージマネージャ内では、パッケージはパッケージ名とソフトウェアへの URL で指定されます。
より新しいバージョンがインスタンスにインストールされている場合でも、Elastic Beanstalk は指定さ
れたバージョンのインストールを試行します。パッケージマネージャには、複数のバージョンをサポー
トするものと、サポートしないものがあります。詳細については、パッケージマネージャのドキュメン
トを調べてください。インストール済みのバージョンを指定した場合、デプロイが失敗します。
例
次のスニペットは、mysql をダウンロードする URL を指定します。
packages:
msi:
mysql: http://dev.mysql.com/get/Downloads/Connector-Net/mysql-connectornet-6.6.5.msi/from/http://cdn.mysql.com/
sources
sources キーを使用すると、アーカイブファイルをダウンロードし、EC2 インスタンス上のターゲッ
トディレクトリに解凍できます。解凍されたソースが自動的にビルドされることはありません。
構文
sources:
target directory: location of archive file
API Version 2010-12-01
162
AWS Elastic Beanstalk 開発者ガイド
サーバーのカスタマイズ(Windows)
サポートされる形式
現在、Elastic Beanstalk は .zip 形式をサポートしています。Amazon Simple Storage Service(Amazon
S3)などの外部の場所を参照できます(例: http://s3.amazonaws.com/mybucket/myobject)。
例
次の例では、Amazon S3 バケットから .zip ファイルをダウンロードして、c:/myproject/myapp に
解凍しています。
sources:
"c:/myproject/myapp": http://s3.amazonaws.com/mybucket/myobject.zip
ファイル
files キーを使用すると、EC2 インスタンス上にファイルを作成できます。内容は、設定ファイルに
おいてインラインで指定することも、URL から取得することもできます。ファイルは辞書式順序でディ
スクに書き込まれます。Amazon S3 などの外部の場所を参照できます(例:
http://s3.amazonaws.com/mybucket/myobject)。次の表ではサポートされるキーの一覧を示し
ます。
構文
files:
"target file location on disk":
source: URL
authentication: authentication name:
"target file location on disk":
content: |
this is my content
encoding: encoding format
authentication: authentication name:
オプション
content
文字列です。
source
ファイルの読み込み元の URL です。このオプションと content キーを一緒に指定することはでき
ません。
encoding
エンコード形式です。内容が文字列の場合にのみ使用します。source を使用している場合、エン
コードは適用されません。
有効な値: plain | base64
authentication
使用する認証方法の名前です。これはデフォルトの認証を無効にします。
例
files:
"c:\\targetdirectory\\targetfile.txt":
API Version 2010-12-01
163
AWS Elastic Beanstalk 開発者ガイド
サーバーのカスタマイズ(Windows)
source: http://foo.bar/myfile
"c:/targetdirectory/targetfile.txt":
content: |
# this is my file
# with content
Note
ファイルパスにバックスラッシュ(\)を使用する場合、例に示すようにこの前にエスケープ文
字(\\)を置く必要があります。
コマンド
commands キーを使用すると、EC2 インスタンスでコマンドを実行できます。コマンドは、名前のア
ルファベット順に処理され、アプリケーションとウェブサーバーが設定されてアプリケーションバー
ジョンファイルが抽出される前に実行されます。
構文
commands:
command name:
command: command to run
cwd: working directory
env:
variable name: variable value
ignoreErrors: true
waitAfterCompletion: number of seconds
オプション
command
必須実行するコマンドを指定する配列または文字列です。配列を使用する場合、スペース文字をエ
スケープしたり、コマンドパラメータを引用符で囲んだりする必要はありません。
cwd
オプション。作業ディレクトリです。デフォルトでは、Elastic Beanstalk はプロジェクトのディレ
クトリの場所を探します。見つからない場合は、デフォルトとして "c:\Windows\System32" を使用
します。
env
オプション。コマンドの環境変数を設定します。このプロパティは、既存の環境に追加するのでは
なく、既存の環境を上書きします。
ignoreErrors
オプション。command キーに含まれるコマンドが失敗した場合(非ゼロ値を返した場合)、他の
コマンドを実行する必要があるかどうかを指定するブール値です。失敗したコマンドがあっても他
のコマンドの実行を続ける場合は、この値を true に設定します。コマンドが失敗したら実行を停
止する場合は、false に設定します。デフォルト値は false です。
test
オプション。Elastic Beanstalk が command キーに含まれるコマンドを処理するために、値 true
(終了コード 0)を返す必要があるコマンドです。
waitAfterCompletion
オプション。コマンドが完了してから次のコマンドを実行するまでに、待機する秒数。コマンドの
完了後にシステムの再起動が必要な場合は、指定された秒数が経過した後にシステムが再起動しま
す。コマンドの結果としてシステムが再起動する場合、Elastic Beanstalk は回復されます。デフォ
API Version 2010-12-01
164
AWS Elastic Beanstalk 開発者ガイド
サーバーのカスタマイズ(Windows)
ルト値は 60 秒です。また、forever を指定することもできますが、別のコマンドを実行する前に
システムが再起動する必要があります。
例
次のスニペットの例では、指定されたファイルに現在定義されている設定値をコピーするコマンドを実
行します。次のコマンドがある場合、Elastic Beanstalk はコマンドの完了後すぐに次のコマンドを実行
します。または、コマンドで再起動が必要な場合は、コマンドの完了後すぐにシステムが再起動しま
す。
commands:
test:
command: set > c:\\myapp\\set.txt
waitAfterCompletion: 0
サービス
services キーを使用すると、インスタンスが起動されるときに開始または停止する必要のあるサービ
スを定義できます。また、services キーではソース、パッケージ、ファイルへの依存関係も指定で
き、インストールされているファイルのために再起動が必要になった場合に、Elastic Beanstalk がサー
ビスの再起動を処理します。
構文
services:
windows:
name of service:
enabled: true
ensureRunning: true
files: "file name"
sources: "directory"
packages:
name of package manager:
package name: version
commands:
name of command:
オプション
ensureRunning
true に設定すると、Elastic Beanstalk が終了した後でサービスが実行されます。
false に設定すると、Elastic Beanstalk が終了した後でサービスは実行されません。
このキーを省略すると、サービスの状態は変更されません。
enabled
true に設定すると、起動時にサービスが自動的に開始されます。
false に設定すると、起動時にサービスが自動的に開始されません。
このキーを省略すると、このプロパティは変更されません。
files
ファイルのリストです。Elastic Beanstalk がファイルブロックによって直接変更した場合、サービ
スは再起動されます。
API Version 2010-12-01
165
AWS Elastic Beanstalk 開発者ガイド
サーバーのカスタマイズ(Windows)
sources
ディレクトリのリストです。Elastic Beanstalk がこれらのディレクトリの 1 つにアーカイブを拡張
した場合、サービスは再起動されます。
packages
パッケージ名のリストに対するパッケージマネージャのマップです。Elastic Beanstalk がこれらの
パッケージの 1 つをインストールまたは更新した場合、サービスは再起動されます。
commands
コマンド名のリストです。Elastic Beanstalk が指定したコマンドを実行した場合、サービスは再起
動されます。
例
次に例を示します。
services:
windows:
myservice:
enabled: true
ensureRunning: true
コンテナコマンド
container_commands キーを使用すると、コンテナに対するコマンドを実行できます。
container_commands 内のコマンドは、名前のアルファベット順に処理されます。コマンドは、アプ
リケーションおよびウェブサーバーが設定され、アプリケーションバージョンファイルが抽出された
後、アプリケーションバージョンがデプロイされる前に実行されます。また、AWS セキュリティ認証
情報などの環境変数にもアクセスできます。
コンテナコマンドは、ソースコードがアプリケーションサーバーにデプロイされる前に抽出されたス
テージングディレクトリから実行されます。コンテナコマンドを使用してステージングディレクトリに
あるソースコードに対して行うすべての変更は、ソースが最終的な場所にデプロイされる際に含まれま
す。
leader_only を使用すると、リーダーインスタンス上のコマンドの実行のみを行うことができます。
1 つのインスタンスを Auto Scaling グループのリーダーとして選択します。leader_only の値を true
に設定すると、コマンドはリーダーとして指定されたインスタンスに対してのみ実行されます。
構文
container_commands:
name of container_command:
command: command to run
leader_only: true
name of container_command:
command: command to run
オプション
command
必須実行するコマンドを指定する配列または文字列です。配列を使用する場合、スペース文字をエ
スケープしたり、コマンドパラメータを引用符で囲んだりする必要はありません。
env
オプション。コマンドの環境変数を設定します。このプロパティは、既存の環境に追加するのでは
なく、既存の環境を上書きします。
API Version 2010-12-01
166
AWS Elastic Beanstalk 開発者ガイド
カスタムリソース
cwd
オプション。作業ディレクトリです。デフォルトでは、Elastic Beanstalk はプロジェクトのディレ
クトリの場所を探します。見つからない場合は、デフォルトとして "c:\" を使用します。
leader_only
オプション。Auto Scaling グループのリーダーにするインスタンスを設定します。leader_only
の値を true に設定すると、コマンドはリーダーとして指定されたインスタンスに対してのみ実行
されます。最初にリーダーが実行されます。
test
オプション。Elastic Beanstalk が command キーに含まれるコマンドを処理するためには値 true
を返す必要があるコマンドです。このオプションを true に設定した場合、leader_only の設定
は無効になります。
ignoreErrors
オプション。command キーに含まれるコマンドが失敗した場合(非ゼロ値を返した場合)、他の
コマンドを実行する必要があるかどうかを指定するブール値です。失敗したコマンドがあっても他
のコマンドの実行を続ける場合は、この値を true に設定します。コマンドが失敗したら実行を停
止する場合は、false に設定します。デフォルト値は false です。
例
次の例では、指定されたファイルに現在定義されている設定値をコピーするコマンドを実行します。こ
れは 1 つのインスタンスのみでコマンドを実行し、コマンドが完了すると、直後に再起動します。
container_commands:
foo:
command: set > c:\\myapp\\set.txt
leader_only: true
waitAfterCompletion: 0
Elastic Beanstalk 環境リソースの追加とカスタマイ
ズ
Abstract
ソースバンドルに設定ファイルを含めることにより、Elastic Beanstalk アプリケーションをデプロイすると同時に
環境リソースをカスタマイズします。
また、Elastic Beanstalk 環境の一部である環境リソースをカスタマイズしたいこともあります。例え
ば、Amazon SQS キューおよびキューの深さに対するアラームを追加したり、Amazon ElastiCache ク
ラスターを追加したりする場合です。ソースバンドルと共に設定ファイルを含めることにより、アプリ
ケーションバージョンのデプロイと同時に環境を簡単にカスタマイズできます。
設定ファイル (p. 147)の Resources キーを使用すると、使用中の環境で AWS のリソースを作成および
カスタマイズできます。設定ファイルで定義されたリソースは、環境を起動するために使用される AWS
CloudFormation テンプレートに追加されます。すべての AWS CloudFormation リソース タイプがサ
ポートされます。
たとえば、次の設定ファイルは Auto Scaling ライフサイクルフックを Elastic Beanstalk によって作成
されたデフォルトの Auto Scaling グループに追加します。
~/my-app/.ebextensions/as-hook.config
Resources:
hookrole:
API Version 2010-12-01
167
AWS Elastic Beanstalk 開発者ガイド
カスタムリソース
Type: AWS::IAM::Role
Properties:
AssumeRolePolicyDocument: {
"Version" : "2012-10-17",
"Statement": [ {
"Effect": "Allow",
"Principal": {
"Service": [ "autoscaling.amazonaws.com" ]
},
"Action": [ "sts:AssumeRole" ]
} ]
}
Policies: [ {
"PolicyName": "SNS",
"PolicyDocument": {
"Version": "2012-10-17",
"Statement": [{
"Effect": "Allow",
"Resource": "*",
"Action": [
"sqs:SendMessage",
"sqs:GetQueueUrl",
"sns:Publish"
]
}
]
}
} ]
hooktopic:
Type: AWS::SNS::Topic
Properties:
Subscription:
- Endpoint: "[email protected]"
Protocol: email
lifecyclehook:
Type: AWS::AutoScaling::LifecycleHook
Properties:
AutoScalingGroupName: { "Ref" : "AWSEBAutoScalingGroup" }
LifecycleTransition: autoscaling:EC2_INSTANCE_TERMINATING
NotificationTargetARN: { "Ref" : "hooktopic" }
RoleARN: { "Fn::GetAtt" : [ "hookrole", "Arn"] }
この例は、3 つのリソース hookrole、hooktopic および lifecyclehook を定義します。最初の 2
つのリソースはメッセージを Amazon SNS に発行する許可を Auto Scaling に付与する IAM ロールと、
Auto Scaling グループから E メールアドレスにメッセージをリレーする SNS トピックです。Elastic
Beanstalk は、指定したプロパティとタイプを持つこれらのリソースを作成します。
最後のリソース lifecyclehook はライフサイクルフック自体です。
lifecyclehook:
Type: AWS::AutoScaling::LifecycleHook
Properties:
AutoScalingGroupName: { "Ref" : "AWSEBAutoScalingGroup" }
LifecycleTransition: autoscaling:EC2_INSTANCE_TERMINATING
NotificationTargetARN: { "Ref" : "hooktopic" }
RoleARN: { "Fn::GetAtt" : [ "hookrole", "Arn"] }
API Version 2010-12-01
168
AWS Elastic Beanstalk 開発者ガイド
カスタムリソース
ライフサイクルフックの定義では、いくつかの組み込み関数を使用して、フックのプロパティに値を入
力します。{ "Ref" : "AWSEBAutoScalingGroup" } は、環境の Elastic Beanstalk によって作成さ
れた Auto Scaling グループの名前を取得します。AWSEBAutoScalingGroup は Elastic Beanstalk に
よって提供される標準リソース名 (p. 184)の 1 つです。
AWS::IAM::Role では、Ref が返すのは ARN ではなくロールの名前のみです。RoleARN パラメータ
の ARN を取得するには、代わりに別の組み込み関数 Fn::GetAtt を使用することで、リソースから属
性を取得できます。RoleARN: { "Fn::GetAtt" : [ "hookrole", "Arn"] } は hookrole リ
ソースから Arn 属性を取得します。
{ "Ref" : "hooktopic" } は、設定ファイルで前に作成した Amazon SNS トピックの ARN を取得
します。Ref から返される値は、リソースタイプによって異なります。これらの値は、AWS
CloudFormation ユーザー ガイドの「AWS::SNS::Topic リソースタイプのトピック」にあります。
スニペット例: ElastiCache
Abstract
Amazon ElastiCache クラスターをユーザーの環境に含めることによって Elastic Beanstalk アプリケーションの環
境リソースをカスタマイズする方法の例。
EC2-Classic および EC2-(デフォルト VPC とカスタム VPC の両方)プラットフォームに Amazon
ElastiCache クラスターを追加するサンプルを以下に示します。これらのプラットフォームの詳細と、
EC2 がユーザーのリージョンおよび AWS アカウントに対してサポートしているプラットフォームにつ
いては、http://docs.aws.amazon.com/AWSEC2/latest/UserGuide/ec2-supported-platforms.html にアク
セスし、このトピックの、使用しているプラットフォームに該当するセクションを参照してください。
• EC2-Classic プラットフォーム (p. 169)
• EC2-VPC(デフォルト) (p. 171)
• EC2-VPC(カスタム) (p. 173)
EC2-Classic プラットフォーム
このサンプルは、EC2-Classic プラットフォーム内にインスタンスが起動される環境に Amazon
ElastiCache クラスターを追加します。この例で示されているすべてのプロパティは、各リソースタイ
プに対して設定する必要のある最低限必要なプロパティです。サンプルは、「ElastiCache Example」
でダウンロードできます。
Note
この例では、課金対象となる可能性のある AWS リソースを作成します。AWS の料金詳細につ
いては、http://aws.amazon.com/pricing/ を参照してください。一部のサービスは、AWS 無料
利用枠の対象です。新規のお客様は、無料でこれらのサービスをテストできる場合がありま
す。詳細については、http://aws.amazon.com/free を参照してください。
この例を使用するには、以下を実行します。
1. ソースバンドルの最上位ディレクトリに .ebextensions ディレクトリを作成します。
2. 拡張子が .config の設定ファイルを 2 つ作成し、.ebextensions ディレクトリに配置します。一
方の設定ファイルではリソースが定義され、もう一方の設定ファイルではオプションが定義されま
す。
3. アプリケーションを Elastic Beanstalk にデプロイします。
設定ファイルは YAML または JSON 形式の規格に準拠している必要があります。 たとえば、YAML
を正しく解釈するにはインデントが重要です。詳細は、それぞれ http://www.yaml.org/start.html また
は http://www.json.org を参照してください。アプリケーションでの設定ファイルのデプロイの詳細
API Version 2010-12-01
169
AWS Elastic Beanstalk 開発者ガイド
カスタムリソース
については、「設定ファイル(.ebextensions)による高度な環境のカスタマイズ (p. 147)」を参照
してください。
リソースを定義する設定ファイル(例: elasticache.config)を作成します。最初に、ElastiCache
クラスターリソースの名前(MyElastiCache)を指定し、タイプを宣言し、クラスターのプロパティ
を設定することによって、ElastiCache クラスターを作成します。この例は、この設定ファイルで作成
され、定義されている ElastiCache セキュリティグループリソースの名前を参照します。次に、
ElastiCache セキュリティグループを作成します。このリソースの名前を定義し、タイプを宣言し、セ
キュリティグループの説明を追加します。最後に、ElastiCache セキュリティグループの入口ルールを
設定し、ElastiCache セキュリティグループ(MyCacheSecurityGroup)および Elastic Beanstalk セ
キュリティグループ(AWSEBSecurityGroup)の内部のインスタンスからのアクセスのみを許可する
ようにします。パラメータ名 AWSEBSecurityGroup は、Elastic Beanstalk によって提供される固定の
リソース名です。Elastic Beanstalk アプリケーションから ElastiCache クラスター内のインスタンスに
接続するには、ElastiCache セキュリティグループ入口ルールに AWSEBSecurityGroup を追加する必
要があります。
#This sample requires you to create a separate configuration file that defines
the custom option settings for CacheCluster properties.
Resources:
MyElastiCache:
Type: AWS::ElastiCache::CacheCluster
Properties:
CacheNodeType:
Fn::GetOptionSetting:
OptionName : CacheNodeType
DefaultValue: cache.m1.small
NumCacheNodes:
Fn::GetOptionSetting:
OptionName : NumCacheNodes
DefaultValue: 1
Engine:
Fn::GetOptionSetting:
OptionName : Engine
DefaultValue: memcached
CacheSecurityGroupNames:
- Ref: MyCacheSecurityGroup
MyCacheSecurityGroup:
Type: AWS::ElastiCache::SecurityGroup
Properties:
Description: "Lock cache down to webserver access only"
MyCacheSecurityGroupIngress:
Type: AWS::ElastiCache::SecurityGroupIngress
Properties:
CacheSecurityGroupName:
Ref: MyCacheSecurityGroup
EC2SecurityGroupName:
Ref: AWSEBSecurityGroup
この設定ファイル例で使用されているリソースの詳細については、以下を参照してください。
• AWS::ElastiCache::CacheCluster
• AWS::ElastiCache::SecurityGroup
• AWS::ElastiCache::SecurityGroupIngress
options.config という名前の別の設定ファイルを作成し、カスタムオプションの設定を定義します。
API Version 2010-12-01
170
AWS Elastic Beanstalk 開発者ガイド
カスタムリソース
option_settings:
"aws:elasticbeanstalk:customoption":
CacheNodeType : cache.m1.small
NumCacheNodes : 1
Engine : memcached
これらの行は、Elastic Beanstalk に対し、CacheNodeType、NumCacheNodes、Engine プロパティの
値を、option_settings セクションと、使用する実際の値を含む名前と値のペアを含む
aws:elasticbeanstalk:customoption セクションが含まれている設定ファイル(この例では options.config)
の CacheNodeType、NumCacheNodes、Engine 値から取得するように指示します。上の例では、これ
は値として cache.m1.small、1、memcached を使用することを意味します。Fn::GetOptionSetting
の詳細については、「Fn::GetOptionSetting (p. 826)」を参照してください。
EC2-VPC(デフォルト)
このサンプルは、EC2-VPC プラットフォーム内にインスタンスが起動される環境に Amazon ElastiCache
クラスターを追加します。具体的には、このセクションの情報は、EC2 がデフォルト VPC 内にインス
タンスを起動するシナリオに適用されます。この例のプロパティはすべて、リソースタイプごとに設定
する必要のある最低限必要なプロパティです。デフォルト VPC の詳細については、Your Default VPC
and Subnets を参照してください。
Note
この例では、課金対象となる可能性のある AWS リソースを作成します。AWS の料金詳細につ
いては、http://aws.amazon.com/pricing/ を参照してください。一部のサービスは、AWS 無料
利用枠の対象です。新規のお客様は、無料でこれらのサービスをテストできる場合がありま
す。詳細については、http://aws.amazon.com/free を参照してください。
この例を使用するには、以下を実行します。
1. ソースバンドルの最上位ディレクトリに .ebextensions ディレクトリを作成します。
2. 拡張子が .config の設定ファイルを 2 つ作成し、.ebextensions ディレクトリに配置します。一
方の設定ファイルではリソースが定義され、もう一方の設定ファイルではオプションが定義されま
す。
3. アプリケーションを Elastic Beanstalk にデプロイします。
設定ファイルは YAML または JSON 形式の規格に準拠している必要があります。 たとえば、YAML
を正しく解釈するにはインデントが重要です。詳細は、それぞれ http://www.yaml.org/start.html また
は http://www.json.org を参照してください。アプリケーションでの設定ファイルのデプロイの詳細
については、「設定ファイル(.ebextensions)による高度な環境のカスタマイズ (p. 147)」を参照
してください。
ここで、リソースの設定ファイルに elasticache.config という名前を付けます。ElastiCache クラ
スターを作成するため、この例は ElastiCache クラスターリソースの名前(MyElastiCache)を指定
し、そのタイプを宣言してから、クラスターのプロパティを設定します。この例は、この設定ファイル
で作成し、定義するセキュリティグループリソースの ID を参照します。
次に、EC2 セキュリティグループを作成します。このリソースの名前の定義、そのタイプの宣言、お
よび説明の入力を行ってから、Elastic Beanstalk セキュリティグループ(AWSEBSecurityGroup)内
のインスタンスからのアクセスのみを許可するようにセキュリティグループの入口ルールを設定します
(AWSEBSecurityGroup というパラメータ名は、Elastic Beanstalk によって提供される固定されたリ
ソース名です。Elastic Beanstalk アプリケーションから ElastiCache クラスター内のインスタンスに接
続するには、ElastiCache セキュリティグループの入口ルールに AWSEBSecurityGroup を追加する必
要があります)。
API Version 2010-12-01
171
AWS Elastic Beanstalk 開発者ガイド
カスタムリソース
EC2 セキュリティグループの入口ルールは、キャッシュノードが接続を受け付けることができる IP プ
ロトコルとポート番号も定義します。Redis の場合、デフォルトのポート番号は 6379 です。
#This sample requires you to create a separate configuration file that defines
the custom option settings for CacheCluster properties.
Resources:
MyCacheSecurityGroup:
Type: "AWS::EC2::SecurityGroup"
Properties:
GroupDescription: "Lock cache down to webserver access only"
SecurityGroupIngress :
- IpProtocol : "tcp"
FromPort :
Fn::GetOptionSetting:
OptionName : "CachePort"
DefaultValue: "6379"
ToPort :
Fn::GetOptionSetting:
OptionName : "CachePort"
DefaultValue: "6379"
SourceSecurityGroupName:
Ref: "AWSEBSecurityGroup"
MyElastiCache:
Type: "AWS::ElastiCache::CacheCluster"
Properties:
CacheNodeType:
Fn::GetOptionSetting:
OptionName : "CacheNodeType"
DefaultValue : "cache.t1.micro"
NumCacheNodes:
Fn::GetOptionSetting:
OptionName : "NumCacheNodes"
DefaultValue : "1"
Engine:
Fn::GetOptionSetting:
OptionName : "Engine"
DefaultValue : "redis"
VpcSecurityGroupIds:
Fn::GetAtt:
- MyCacheSecurityGroup
- GroupId
Outputs:
ElastiCache:
Description : "ID of ElastiCache Cache Cluster with Redis Engine"
Value :
Ref : "MyElastiCache"
この設定ファイル例で使用されているリソースの詳細については、以下を参照してください。
• AWS::ElastiCache::CacheCluster
• AWS::EC2::SecurityGroup
次に、オプションの設定ファイルに options.config という名前を付け、カスタムオプションの設定
を定義します。
API Version 2010-12-01
172
AWS Elastic Beanstalk 開発者ガイド
カスタムリソース
option_settings:
"aws:elasticbeanstalk:customoption":
CacheNodeType : cache.t1.micro
NumCacheNodes : 1
Engine : redis
CachePort : 6379
このコードは、設定ファイル(この例では options.config)の CacheNodeType、NumCacheNodes、
Engine、および CachePort の値から CacheNodeType、NumCacheNodes、Engine、および
CachePort プロパティの値を取得するように Elastic Beanstalk に指示します。そのファイルには
aws:elasticbeanstalk:customoption セクションが含まれており(options_settings に)、
そこには実際に使用される値を示す名前と値のペアが含まれています。前述の例では、
cache.t1.micro、1、redis、および 6379 が値として使用されます。Fn::GetOptionSetting の
詳細については、「Fn::GetOptionSetting (p. 826)」を参照してください。
EC2-VPC(カスタム)
EC2-VPC プラットフォームにカスタム VPC を作成し、EC2 がインスタンスを起動する VPC として指
定する場合、ユーザーの環境に Amazon ElastiCache クラスターを追加するプロセスはデフォルト VPC
の場合とは異なります。主な違いは、ElastiCache クラスター用のサブネットグループを作成する必要
があることです。この例のプロパティはすべて、リソースタイプごとに設定する必要のある最低限必要
なプロパティです。
Note
この例では、課金対象となる可能性のある AWS リソースを作成します。AWS の料金詳細につ
いては、http://aws.amazon.com/pricing/ を参照してください。一部のサービスは、AWS 無料
利用枠の対象です。新規のお客様は、無料でこれらのサービスをテストできる場合がありま
す。詳細については、http://aws.amazon.com/free を参照してください。
この例を使用するには、以下を実行します。
1. ソースバンドルの最上位ディレクトリに .ebextensions ディレクトリを作成します。
2. 拡張子が .config の設定ファイルを 2 つ作成し、.ebextensions ディレクトリに配置します。一
方の設定ファイルではリソースが定義され、もう一方の設定ファイルではオプションが定義されま
す。
3. アプリケーションを Elastic Beanstalk にデプロイします。
設定ファイルは YAML または JSON 形式の規格に準拠している必要があります。 たとえば、YAML
を正しく解釈するにはインデントが重要です。詳細は、それぞれ http://www.yaml.org/start.html また
は http://www.json.org を参照してください。アプリケーションでの設定ファイルのデプロイの詳細
については、「設定ファイル(.ebextensions)による高度な環境のカスタマイズ (p. 147)」を参照
してください。
ここで、リソースの設定ファイルに elasticache.config という名前を付けます。ElastiCache クラ
スターを作成するため、この例は ElastiCache クラスターリソースの名前(MyElastiCache)を指定
し、そのタイプを宣言してから、クラスターのプロパティを設定します。この例のプロパティは、
ElastiCache クラスター用のサブネットグループの名前だけではなく、この設定ファイルで作成し、定
義したセキュリティグループリソースの ID も参照します。
次に、EC2 セキュリティグループを作成します。このリソースの名前の定義、そのタイプの宣言、説
明の入力、および VPC ID の割り当てを行ってから、Elastic Beanstalk セキュリティグループ
(AWSEBSecurityGroup)内のインスタンスからのアクセスのみを許可するようにセキュリティグルー
プの入口ルールを設定します(AWSEBSecurityGroup というパラメータ名は、Elastic Beanstalk に
よって提供される固定されたリソース名です。Elastic Beanstalk アプリケーションから ElastiCache ク
API Version 2010-12-01
173
AWS Elastic Beanstalk 開発者ガイド
カスタムリソース
ラスター内のインスタンスに接続するには、ElastiCache セキュリティグループの入口ルールに
AWSEBSecurityGroup を追加する必要があります)。
EC2 セキュリティグループの入口ルールは、キャッシュノードが接続を受け付けることができる IP プ
ロトコルとポート番号も定義します。Redis の場合、デフォルトのポート番号は 6379 です。最後に、
この例は ElastiCache クラスター用のサブネットグループを作成します。このリソースの名前を定義
し、そのタイプを宣言して、サブネットグループのサブネットの説明と ID を追加します。
Note
ElastiCache クラスターにはプライベートサブネットを使用することが推奨されます。プライ
ベートサブネットを使用する VPC の詳細については、http://docs.aws.amazon.com/AmazonVPC/
latest/UserGuide/VPC_Scenario2.html を参照してください。
#This sample requires you to create a separate configuration file that defines
the custom option settings for CacheCluster properties.
Resources:
MyElastiCache:
Type: "AWS::ElastiCache::CacheCluster"
Properties:
CacheNodeType:
Fn::GetOptionSetting:
OptionName : "CacheNodeType"
DefaultValue : "cache.t1.micro"
NumCacheNodes:
Fn::GetOptionSetting:
OptionName : "NumCacheNodes"
DefaultValue : "1"
Engine:
Fn::GetOptionSetting:
OptionName : "Engine"
DefaultValue : "redis"
CacheSubnetGroupName:
Ref: "MyCacheSubnets"
VpcSecurityGroupIds:
- Ref: "MyCacheSecurityGroup"
MyCacheSecurityGroup:
Type: "AWS::EC2::SecurityGroup"
Properties:
GroupDescription: "Lock cache down to webserver access only"
VpcId:
Fn::GetOptionSetting:
OptionName : "VpcId"
SecurityGroupIngress :
- IpProtocol : "tcp"
FromPort :
Fn::GetOptionSetting:
OptionName : "CachePort"
DefaultValue: "6379"
ToPort :
Fn::GetOptionSetting:
OptionName : "CachePort"
DefaultValue: "6379"
SourceSecurityGroupId:
Ref: "AWSEBSecurityGroup"
MyCacheSubnets:
API Version 2010-12-01
174
AWS Elastic Beanstalk 開発者ガイド
カスタムリソース
Type: "AWS::ElastiCache::SubnetGroup"
Properties:
Description: "Subnets for ElastiCache"
SubnetIds:
Fn::GetOptionSetting:
OptionName : "CacheSubnets"
Outputs:
ElastiCache:
Description : "ID of ElastiCache Cache Cluster with Redis Engine"
Value :
Ref : "MyElastiCache"
この設定ファイル例で使用されているリソースの詳細については、以下を参照してください。
• AWS::ElastiCache::CacheCluster
• AWS::EC2::SecurityGroup
• AWS::ElastiCache::SubnetGroup
次に、オプションの設定ファイルに options.config という名前を付け、カスタムオプションの設定
を定義します。
Note
以下の例では、例の CacheSubnets および VpcId の値をユーザー独自のサブネットおよび
VPC に置き換えます。
option_settings:
"aws:elasticbeanstalk:customoption":
CacheNodeType : cache.t1.micro
NumCacheNodes : 1
Engine : redis
CachePort : 6379
CacheSubnets:
- subnet-1a1a1a1a
- subnet-2b2b2b2b
- subnet-3c3c3c3c
VpcId: vpc-4d4d4d4d
このコードは、設定ファイル(この例では options.config)の CacheNodeType、NumCacheNodes、
Engine、CachePort、CacheSubnets、および VpcId の値から CacheNodeType、NumCacheNodes、
Engine、CachePort、CacheSubnets、および VpcId プロパティの値を取得するように Elastic
Beanstalk に指示します。そのファイルには aws:elasticbeanstalk:customoption セクションが
含まれており(options_settings に)、そこにはサンプルの値を示す名前と値のペアが含まれてい
ます。上の例では、cache.t1.micro、1、redis、6379、subnet-1a1a1a1a、subnet-2b2b2b2b、
subnet-3c3c3c3c、および vpc-4d4d4d4d が値として使用されます。Fn::GetOptionSetting の
詳細については、「Fn::GetOptionSetting (p. 826)」を参照してください。
例: SQS、CloudWatch、SNS
Abstract
Amazon SQS キュー、CloudWatch、および SNS を環境に追加することによって Elastic Beanstalk アプリケーショ
ンの環境リソースをカスタマイズする方法の例。
API Version 2010-12-01
175
AWS Elastic Beanstalk 開発者ガイド
カスタムリソース
この例では、Amazon SQS キューおよびキューの深さに対するアラームを、環境に追加します。この
例で示されているプロパティは、これらの各リソースに対して設定する必要のある最低限必要なプロパ
ティです。サンプルは、「SQS, SNS, and CloudWatch」でダウンロードできます。
Note
この例では、課金対象となる可能性のある AWS リソースを作成します。AWS の料金詳細につ
いては、http://aws.amazon.com/pricing/ を参照してください。一部のサービスは、AWS 無料
利用枠の対象です。新規のお客様は、無料でこれらのサービスをテストできる場合がありま
す。詳細については、http://aws.amazon.com/free を参照してください。
この例を使用するには、以下を実行します。
1. ソースバンドルの最上位ディレクトリに .ebextensions ディレクトリを作成します。
2. 拡張子が .config の設定ファイルを 2 つ作成し、.ebextensions ディレクトリに配置します。一
方の設定ファイルではリソースが定義され、もう一方の設定ファイルではオプションが定義されま
す。
3. アプリケーションを Elastic Beanstalk にデプロイします。
設定ファイルは YAML または JSON 形式の規格に準拠している必要があります。 たとえば、YAML
を正しく解釈するにはインデントが重要です。詳細は、それぞれ http://www.yaml.org/start.html また
は http://www.json.org を参照してください。アプリケーションでの設定ファイルのデプロイの詳細
については、「設定ファイル(.ebextensions)による高度な環境のカスタマイズ (p. 147)」を参照
してください。
リソースを定義する設定ファイル(例: sqs.config)を作成します。この例では、まず SQS キューを作
成し、次に MySQSQueue リソースに VisbilityTimeout プロパティを定義します。次に、SNS Topic
を作成し、アラームが発生したら [email protected] にメールを送信するように指定します。最
後に、キューのメッセージが 10 を超えたら CloudWatch アラームを作成します。Dimensions プロパ
ティでは、ディメンションの名前およびディメンションの測定を表す値を指定します。Fn::GetAtt を
使用して、MySQSQueue から QueueName の値を返します。
#This sample requires you to create a separate configuration file to define the
custom options for the SNS topic and SQS queue.
Resources:
MySQSQueue:
Type: AWS::SQS::Queue
Properties:
VisibilityTimeout:
Fn::GetOptionSetting:
OptionName: VisibilityTimeout
DefaultValue: 30
AlarmTopic:
Type: AWS::SNS::Topic
Properties:
Subscription:
- Endpoint:
Fn::GetOptionSetting:
OptionName: AlarmEmail
DefaultValue: "[email protected]"
Protocol: email
QueueDepthAlarm:
Type: AWS::CloudWatch::Alarm
Properties:
AlarmDescription: "Alarm if queue depth grows beyond 10 messages"
Namespace: "AWS/SQS"
API Version 2010-12-01
176
AWS Elastic Beanstalk 開発者ガイド
カスタムリソース
MetricName: ApproximateNumberOfMessagesVisible
Dimensions:
- Name: QueueName
Value : { "Fn::GetAtt" : [ "MySQSQueue", "QueueName"] }
Statistic: Sum
Period: 300
EvaluationPeriods: 1
Threshold: 10
ComparisonOperator: GreaterThanThreshold
AlarmActions:
- Ref: AlarmTopic
InsufficientDataActions:
- Ref: AlarmTopic
Outputs :
QueueURL:
Description : "URL of newly created SQS Queue"
Value : { Ref : "MySQSQueue" }
QueueARN :
Description : "ARN of newly created SQS Queue"
Value : { "Fn::GetAtt" : [ "MySQSQueue", "Arn"]}
QueueName :
Description : "Name newly created SQS Queue"
Value : { "Fn::GetAtt" : [ "MySQSQueue", "QueueName"]}
この設定ファイル例で使用されているリソースの詳細については、以下を参照してください。
• AWS::SQS::Queue
• AWS::SNS::Topic
• AWS::CloudWatch::Alarm
options.config という名前の別の設定ファイルを作成し、カスタムオプションの設定を定義します。
option_settings:
"aws:elasticbeanstalk:customoption":
VisibilityTimeout : 30
AlarmEmail : "[email protected]"
これらの行は、Elastic Beanstalk に対し、VisibilityTimeout および Subscription Endpoint プロパティの
値を、option_settings セクションと、使用する実際の値を含む名前と値のペアを含む
aws:elasticbeanstalk:customoption セクションが含まれている設定ファイル(この例では options.config)
の VisibilityTimeout および Subscription Endpoint の値から取得するように指示します。上の例では、こ
れは値として 30 および "[email protected]" を使用することを意味します。Fn::GetOptionSetting
の詳細については、「Fn::GetOptionSetting (p. 826)」を参照してください
例: DynamoDB、CloudWatch、SNS
Abstract
eb と Git を使用して更新を実行し、DynamoDB テーブルを Elastic Beanstalk 環境に追加することによって Elastic
Beanstalk アプリケーションの環境リソースをカスタマイズする方法の例。
この設定ファイルでは、AWS SDK for PHP 2 を使用する PHP ベースのアプリケーションに対するセッ
ションハンドラとして DynamoDB テーブルを設定します。この例を使用するには、IAM インスタンス
API Version 2010-12-01
177
AWS Elastic Beanstalk 開発者ガイド
カスタムリソース
プロファイルが必要です。これは、お客様の環境内のインスタンスに追加され、DynamoDB テーブル
にアクセスするために使用されます。
このステップで使用するサンプルは、DynamoDB Session Support Example からダウンロードできま
す。サンプルには以下のファイルが含まれています。
• サンプルアプリケーション index.php
• DynamoDB テーブルおよび他の AWS リソースを設定し、Elastic Beanstalk 環境内のアプリケーショ
ンをホストする EC2 インスタンスにソフトウェアをインストールする、設定ファイル
dynamodb.config
• dynamodb.config のデフォルト設定をこの特定のインストールに固有の設定で上書きする、設定
ファイル options.config
index.php
<?php
// Include the SDK using the Composer autoloader
require '../vendor/autoload.php';
use Aws\DynamoDb\DynamoDbClient;
// Grab the session table name and region from the configuration file
list($tableName, $region) = file(__DIR__ . '/../sessiontable');
$tableName = rtrim($tableName);
$region = rtrim($region);
// Create a DynamoDB client and register the table as the session handler
$dynamodb = DynamoDbClient::factory(array('region' => $region));
$handler = $dynamodb->registerSessionHandler(array('table_name' => $tableName,
'hash_key' => 'username'));
// Grab the instance ID so we can display the EC2 instance that services the
request
$instanceId = file_get_contents("http://169.254.169.254/latest/meta-data/in
stance-id");
?>
<h1>Elastic Beanstalk PHP Sessions Sample</h1>
<p>This sample application shows the integration of the Elastic Beanstalk PHP
container and the session support for DynamoDB from the AWS SDK for PHP 2.
Using DynamoDB session support, the application can be scaled out across
multiple web servers. For more details, see the
<a href="http://aws.amazon.com/php/">PHP Developer Center</a>.</p>
<form id="SimpleForm" name="SimpleForm" method="post" action="index.php">
<?php
echo 'Request serviced from instance ' . $instanceId . '<br/>';
echo '<br/>';
if (isset($_POST['continue'])) {
session_start();
$_SESSION['visits'] = $_SESSION['visits'] + 1;
echo 'Welcome back ' . $_SESSION['username'] . '<br/>';
echo 'This is visit number ' . $_SESSION['visits'] . '<br/>';
session_write_close();
echo '<br/>';
echo '<input type="Submit" value="Refresh" name="continue" id="continue"/>';
API Version 2010-12-01
178
AWS Elastic Beanstalk 開発者ガイド
カスタムリソース
echo '<input type="Submit" value="Delete Session" name="killsession"
id="killsession"/>';
} elseif (isset($_POST['killsession'])) {
session_start();
echo 'Goodbye ' . $_SESSION['username'] . '<br/>';
session_destroy();
echo 'Username: <input type="text" name="username" id="username"
size="30"/><br/>';
echo '<br/>';
echo '<input type="Submit" value="New Session" name="newsession" id="newses
sion"/>';
} elseif (isset($_POST['newsession'])) {
session_start();
$_SESSION['username'] = $_POST['username'];
$_SESSION['visits'] = 1;
echo 'Welcome to a new session ' . $_SESSION['username'] . '<br/>';
session_write_close();
echo '<br/>';
echo '<input type="Submit" value="Refresh" name="continue" id="continue"/>';
echo '<input type="Submit" value="Delete Session" name="killsession"
id="killsession"/>';
} else {
echo 'To get started, enter a username.<br/>';
echo '<br/>';
echo 'Username: <input type="text" name="username" id="username"
size="30"/><br/>';
echo '<input type="Submit" value="New Session" name="newsession" id="newses
sion"/>';
}
?>
</form>
.ebextensions/dynamodb.config
Resources:
SessionTable:
Type: AWS::DynamoDB::Table
Properties:
KeySchema:
HashKeyElement:
AttributeName:
Fn::GetOptionSetting:
OptionName : SessionHashKeyName
DefaultValue: "username"
AttributeType:
Fn::GetOptionSetting:
OptionName : SessionHashKeyType
DefaultValue: "S"
ProvisionedThroughput:
ReadCapacityUnits:
Fn::GetOptionSetting:
OptionName : SessionReadCapacityUnits
DefaultValue: 1
WriteCapacityUnits:
Fn::GetOptionSetting:
API Version 2010-12-01
179
AWS Elastic Beanstalk 開発者ガイド
カスタムリソース
OptionName : SessionWriteCapacityUnits
DefaultValue: 1
SessionWriteCapacityUnitsLimit:
Type: AWS::CloudWatch::Alarm
Properties:
AlarmDescription: { "Fn::Join" : ["", [{ "Ref" : "AWSEBEnvironmentName"
}, " write capacity limit on the session table." ]]}
Namespace: "AWS/DynamoDB"
MetricName: ConsumedWriteCapacityUnits
Dimensions:
- Name: TableName
Value: { "Ref" : "SessionTable" }
Statistic: Sum
Period: 300
EvaluationPeriods: 12
Threshold:
Fn::GetOptionSetting:
OptionName : SessionWriteCapacityUnitsAlarmThreshold
DefaultValue: 240
ComparisonOperator: GreaterThanThreshold
AlarmActions:
- Ref: SessionAlarmTopic
InsufficientDataActions:
- Ref: SessionAlarmTopic
SessionReadCapacityUnitsLimit:
Type: AWS::CloudWatch::Alarm
Properties:
AlarmDescription: { "Fn::Join" : ["", [{ "Ref" : "AWSEBEnvironmentName"
}, " read capacity limit on the session table." ]]}
Namespace: "AWS/DynamoDB"
MetricName: ConsumedReadCapacityUnits
Dimensions:
- Name: TableName
Value: { "Ref" : "SessionTable" }
Statistic: Sum
Period: 300
EvaluationPeriods: 12
Threshold:
Fn::GetOptionSetting:
OptionName : SessionReadCapacityUnitsAlarmThreshold
DefaultValue: 240
ComparisonOperator: GreaterThanThreshold
AlarmActions:
- Ref: SessionAlarmTopic
InsufficientDataActions:
- Ref: SessionAlarmTopic
SessionThrottledRequestsAlarm:
Type: AWS::CloudWatch::Alarm
Properties:
AlarmDescription: { "Fn::Join" : ["", [{ "Ref" : "AWSEBEnvironmentName"
}, ": requests are being throttled." ]]}
Namespace: AWS/DynamoDB
MetricName: ThrottledRequests
Dimensions:
- Name: TableName
API Version 2010-12-01
180
AWS Elastic Beanstalk 開発者ガイド
カスタムリソース
Value: { "Ref" : "SessionTable" }
Statistic: Sum
Period: 300
EvaluationPeriods: 1
Threshold:
Fn::GetOptionSetting:
OptionName: SessionThrottledRequestsThreshold
DefaultValue: 1
ComparisonOperator: GreaterThanThreshold
AlarmActions:
- Ref: SessionAlarmTopic
InsufficientDataActions:
- Ref: SessionAlarmTopic
SessionAlarmTopic:
Type: AWS::SNS::Topic
Properties:
Subscription:
- Endpoint:
Fn::GetOptionSetting:
OptionName: SessionAlarmEmail
DefaultValue: "[email protected]"
Protocol: email
files:
"/var/app/sessiontable":
mode: "000444"
content: |
`{"Ref" : "SessionTable"}`
`{"Ref" : "AWS::Region"}`
"/var/app/composer.json":
mode: "000744"
content:
{
"require": {
"aws/aws-sdk-php": "*"
}
}
container_commands:
"1-install-composer":
command: "cd /var/app; curl -s http://getcomposer.org/installer | php"
"2-install-dependencies":
command: "cd /var/app; php composer.phar install"
"3-cleanup-composer":
command: "rm -Rf /var/app/composer.*"
サンプルの設定ファイルでは、最初に DynamoDB テーブルを作成して、主キー構造と、十分なリソー
スを割り当てて必要なスループットを提供するためのキャパシティーユニットを設定します。次に、
WriteCapacity および ReadCapacity に対する CloudWatch アラームを作成します。アラームしき
い値を超過した場合にメールを "[email protected]" に送信する SNS トピックを作成します。
環境の AWS リソースを作成して設定した後、EC2 インスタンスをカスタマイズする必要があります。
files キーを使用して DynamoDB テーブルの詳細を環境の EC2 インスタンスに渡し、AWS SDK for
PHP 2 の composer.json ファイルに "require" を追加します。最後に、コンテナコマンドを実行し
て、コンポーザーおよび必要な依存関係をインストールし、インストーラを削除します。
API Version 2010-12-01
181
AWS Elastic Beanstalk 開発者ガイド
カスタムリソース
.ebextensions/options.config
option_settings:
"aws:elasticbeanstalk:customoption":
SessionHashKeyName
SessionHashKeyType
SessionReadCapacityUnits
SessionReadCapacityUnitsAlarmThreshold
SessionWriteCapacityUnits
SessionWriteCapacityUnitsAlarmThreshold
SessionThrottledRequestsThreshold
SessionAlarmEmail
:
:
:
:
:
:
:
:
username
S
1
240
1
240
1
[email protected]
SessionAlarmEmail 値をアラーム通知用の E メールに置き換えます。options.config ファイルに
は、dynamodb.config で定義されている変数の一部に使用する値が含まれます。たとえば、
dynamodb.config には以下のような行があります。
Subscription:
- Endpoint:
Fn::GetOptionSetting:
OptionName: SessionAlarmEmail
DefaultValue: "[email protected]"
これらの行は、Elastic Beanstalk に対し、Endpoint プロパティの値を、option_settings セクションと、
使用する実際の値を含む名前と値のペアを含む aws:elasticbeanstalk:customoption セクションが含まれ
ている設定ファイル(このサンプルアプリケーションでは options.config)の SessionAlarmEmail
の値から取得するように指示します。上の例では、これは SessionAlarmEmail に値 [email protected]
が割り当てられることを意味します。
この例で使用されている CloudFormation リソースの詳細については、以下を参照してください。
• AWS::DynamoDB::Table
• AWS::CloudWatch::Alarm
• AWS::SNS::Topic
構文
リソースのプロパティの値は、3 種類の方法で定義できます。
• 値を渡す
• 値のリストを渡す
• オプション名と値を渡す
プロパティの値を取得するには、2 つの関数を使用できます。
• リソースから属性の値を取得するには、Fn::GetAtt を使用します。詳細については、Fn::Join を参
照してください。
• 指定したパラメータまたはリソースの値を取得するには、Ref を使用します。詳細については、Ref
を参照してください。
API Version 2010-12-01
182
AWS Elastic Beanstalk 開発者ガイド
カスタムリソース
Resources:
<name of resource>:
Type: <resource type identifier>
Properties:
# Example syntax of a property that takes in the actual value
<property name>: <literal string>
# Example syntax of a property that takes a list of strings
<property name>: ["<literal string>", "<literal string>"]
# Example syntax of a property that takes the option name and the value
<property name>:
- Name: <option name>
Value: <literal string>
# Example syntax showing how to use Fn::GetAtt to return the value of an
attribute from a resource in the configuration file
<property name>:
- Name: <option name>
Value : { "Fn::GetAtt" : [ "<logicalNameOfResource>", "<attribute
Name>"] }
# Example syntax showing how to use Ref to return the value of a specified
parameter or resource. You can use Ref for single property values and lists.
<property name>:
Ref: <parameter reference>
オプション
次の表では、Resources キーで使用できるキーと説明を示します。
キー
説明
<name of resource> リソースに作成するものの名前です。各リソースには、設定ファイル内で
一意である論理的な名前が必要です。設定ファイル内の別の場所では、こ
の名前を使用してリソースを参照します。
次の表では、指定する各リソース名に対して使用できるキーと説明を示します。
キー
説明
Type
リソースタイプの識別子です。リソースタイプ識別子のリストについては、
「AWS リソースプロパティタイプのリファレンス (p. 824)」を参照してくだ
さい。
Properties
オプション。リソースの Type 宣言のすぐ後で、リソースごとに Properties セクションが宣言されます。プロパティの値には、リテラル文字列、
文字列のリスト、パラメータ参照、疑似参照、または関数によって返され
る値を使用できます。プロパティを宣言する必要のないリソースの場合は、
そのリソースの Properties セクションを省略できます。
API Version 2010-12-01
183
AWS Elastic Beanstalk 開発者ガイド
カスタムリソース
Elastic Beanstalk のリソース名
Elastic Beanstalk では、アプリケーションをデプロイするときに自動的に作成される AWS リソース用
に固定のリソース名が用意されています。設定ファイルでこれらのリソースを参照するときは、リソー
ス名を使用する必要があります。Ref と Fn::GetAtt を使用して、設定ファイルのこれらのリソース
についての情報を取得できます。Ref の使用可能な値と属性は、CloudFormation のリソースのタイプ
によって決まります。
リソース名
説明
AWSEBAutoScalingGroup
環境にアタッチされる Auto Scaling group。
型: AWS::AutoScaling::AutoScalingGroup
AWSEBAutoScalingLaunchConfigur- 環境の Auto Scaling group にアタッチする起動設定。
ation
型: AWS::AutoScaling::LaunchConfiguration
お使いの環境。
AWSEBEnvironmentName
型: AWS::ElasticBeanstalk::Environment
お使いの環境のロードバランサー(該当する場合)。
AWSEBLoadBalancer
型: AWS::ElasticLoadBalancing::LoadBalancer
AWSEBLoadBalancerSecurityGroup カスタム VPC のみで、Elastic Beanstalk がロードバランサー
用に作成するセキュリティグループの名前。デフォルトの
VPC または EC2 classic では、Elastic Load Balancing はデ
フォルトのセキュリティグループをロードバランサーに割り
当てます。
型: AWS::EC2::SecurityGroup
環境にアタッチされる Amazon RDS DB インスタンス(該
当する場合)。
AWSEBRDSDatabase
型: AWS::RDS::DBInstance
Auto Scaling group にアタッチされるセキュリティグルー
プ。
AWSEBSecurityGroup
型: AWS::EC2::SecurityGroup
ワーカー環境では、デーモンが処理の必要があるリクエスト
をプルする対象の Amazon SQS キュー。
AWSEBWorkerQueue
型: AWS::SQS::Queue
AWSEBWorkerDeadLetterQueue
ワーカー環境で、デーモンによって配信できなかったメッ
セージや、正常に処理できなかったその他のメッセージを保
存する Amazon SQS キュー。
型: AWS::SQS::Queue
AWSEBWorkerCronLeaderRegistry
ワーカー環境で、定期的なタスクでデーモンが使用する内部
レジストリである Amazon DynamoDB テーブル。
型: AWS::DynamoDB::Table
API Version 2010-12-01
184
AWS Elastic Beanstalk 開発者ガイド
保存された設定
例
Abstract
Elastic Beanstalk 環境をカスタマイズするために使用できる設定ファイルの例。
次に示すのは、Elastic Beanstalk 環境のカスタマイズに使用できる設定ファイルの例のリストです。
• DynamoDB、CloudWatch、および SNS
• Elastic Load Balancing および CloudWatch
• ElastiCache
• RDS および CloudWatch
• SQS、SNS、および CloudWatch
Elastic Beanstalk 保存済み設定を使用する
Abstract
ユーザーが別の環境に適用できるファイルの設定の環境設定を保存します。
環境の作成中に他の環境または実行中の環境に適用できる環境設定を、オブジェクトとして Amazon
S3 に保存することができます。保存されている設定は、環境のソリューションスタック (p. 25)を定義
する YAML 形式のテンプレートです。
保存済み設定を作成するには
1.
2.
3.
Elastic Beanstalk コンソールを開きます。
環境については「management console (p. 50)」をご覧ください。
[Actions] を選択し、次に [Save Configuration] を選択します。
4.
設定名と説明を入力し、[Save] を選択します。
API Version 2010-12-01
185
AWS Elastic Beanstalk 開発者ガイド
保存された設定
保存済み設定は、アプリケーションに関連する名前のフォルダ内の Elastic Beanstalk S3 バケットに格
納されます。たとえば、アカウント番号 0123456789012 の us-west-2 リージョンにある [my-app] と
いう名前のアプリケーションの設定は、
s3://elasticbeanstalk-us-west-2-0123456789012/resources/templates/my-app/ にあり
ます。
テキストエディタで保存した設定のコンテンツを開いて表示します。次の例は、Elastic Beanstalk 管理
コンソールで起動されたウェブサーバーの環境の設定を示します。
EnvironmentConfigurationMetadata:
Description: Saved configuration from a multicontainer Docker environment
created with the Elastic Beanstalk Management Console
DateCreated: '1452824453000'
DateModified: '1452824453000'
SolutionStack: 64bit Amazon Linux 2015.09 v2.0.6 running Multi-container Docker
1.7.1 (Generic)
OptionSettings:
aws:elasticbeanstalk:command:
BatchSize: '30'
BatchSizeType: Percentage
aws:elasticbeanstalk:sns:topics:
Notification Endpoint: [email protected]
aws:elb:policies:
ConnectionDrainingEnabled: true
ConnectionDrainingTimeout: '20'
aws:elb:loadbalancer:
CrossZone: true
aws:elasticbeanstalk:environment:
ServiceRole: aws-elasticbeanstalk-service-role
aws:elasticbeanstalk:application:
Application Healthcheck URL: /
aws:elasticbeanstalk:healthreporting:system:
SystemType: enhanced
aws:autoscaling:launchconfiguration:
IamInstanceProfile: aws-elasticbeanstalk-ec2-role
InstanceType: t2.micro
EC2KeyName: workstation-uswest2
aws:autoscaling:updatepolicy:rollingupdate:
RollingUpdateType: Health
RollingUpdateEnabled: true
EnvironmentTier:
Type: Standard
Name: WebServer
AWSConfigurationTemplateVersion: 1.1.0.0
Tags:
Cost Center: WebApp Dev
保存した設定の内容を変更し、Amazon S3 の同じ場所にデータを保存することができます。適切な場
所に保存された正しいフォーマットの設定は、Elastic Beanstalk 管理コンソールを使用して環境に適用
できます。
以下のキーがサポートされます。
• AWSConfigurationTemplateVersion(必須)– 設定テンプレートバージョン (1.1.0.0)。
AWSConfigurationTemplateVersion: 1.1.0.0
API Version 2010-12-01
186
AWS Elastic Beanstalk 開発者ガイド
保存された設定
• ソリューションスタック– 環境を作成するために使用されるソリューションスタック (p. 25)の完全
名:
SolutionStack: 64bit Amazon Linux 2015.09 v2.0.6 running Multi-container
Docker 1.7.1 (Generic)
• オプション設定– 設定オプション (p. 101)環境に適用する設定。 たとえば、次のエントリはインスタ
ンスタイプを t2.micro に設定します。
OptionSettings:
aws:autoscaling:launchconfiguration:
InstanceType: t2.micro
• タグ – 環境内で作成されたリソースに適用される最大 7 つのタグ。
Tags:
Cost Center: WebApp Dev
• 環境層– 作成する環境のタイプ。 ウェブサーバーの環境では、このセクションは除外できます(ウェ
ブサーバーがデフォルトとなります)。ワーカー環境では、次を使用します。
EnvironmentTier:
Name: Worker
Type: SQS/HTTP
• CName – 環境用の CNAME。 グループを有効にするために、名前の末尾に + 記号を含めます。
CName: front-A08G28LG+
• EnvironmentName – 作成する環境の名前。 グループを有効にするために、名前の末尾に + 記号を含
めます。
EnvironmentName: front+
グループが有効化されている場合、環境を作成するときにグループ名を指定する必要があります。
Elastic Beanstalk は、環境の名前にハイフンでグループ名を追加します。 たとえば、環境の名前が
front+ で、グループ名が dev の場合、Elastic Beanstalk は環境の作成時に名前を front-dev とし
ます。
• 環境リンク–依存関係にある変数名と環境の名前のマップです。 次の例では、worker+ 環境を依存
化し、WORKERQUEUE という変数にリンク情報を保存するように Elastic Beanstalk に指示していま
す。
EnvironmentLinks:
"WORKERQUEUE" : "worker+"
リンク変数の値は、リンクされた環境の種類によって異なります。 ウェブサーバーの環境では、リ
ンクは環境の CNAME となります。 ワーカーの環境では、リンクは環境内の Amazon SQS キューの
名前となります。
API Version 2010-12-01
187
AWS Elastic Beanstalk 開発者ガイド
env.yaml
[CName、[EnvironmentName]、[EnvironmentLinks] キーは、環境グループ (p. 74)や他の環境へのにリ
ンク (p. 254)を作成するのに使用できます。これらの機能は、現在 EB CLI、AWS CLI または SDK を使
用するときにサポートされます。これらの機能を使用すると、Amazon S3 に保存された設定を参照す
る代わりに、ソースコードの設定を環境マニフェスト (p. 188)として保存された設定に含めることがで
きます。詳細については、該当するトピックを参照してください。
保存した設定でオプションを指定すると、設定ファイルで指定された同じオプションが上書されます。
同様に、AWS マネジメントコンソール で指定されるオプションは保存されている設定を上書きしま
す。詳細については、「優先順位 (p. 145)」を参照してください。
設定を作成し保存した設定に適用する代替の方法については、次のトピックを参照してください。
• 環境を作成する前に設定オプションを設定する (p. 101)
• 環境の作成時の設定オプションの設定 (p. 105)
• 環境の作成後に設定オプションを設定する (p. 110)
マニフェスト環境(env.yaml)
Abstract
環境マニフェストを使用して、環境の作成パラメータをソースバンドルに保存します。
環境を作成するときに使用する、環境の名前、ソリューションスタックと環境リンク (p. 254)を設定す
るために、YAML 形式の環境マニフェストをアプリケーションソースバンドルのルートに含めることが
できます。 環境マニフェストは、保存された設定 (p. 185)と同じ形式を使用します。
このファイル形式には環境グループのサポートが含まれます。 グループを使用するには、マニフェス
ト内の環境の名前の末尾に +記号を指定します。 環境を作成あるいは更新する場合、グループ名を
--group-name (AWS CLI) または --env-group-suffix (EB CLI) と指定します。 グループの詳細に
ついては、「AWS Elastic Beanstalk 環境グループを作成・更新する (p. 74)」を参照してください。
次の例では、マニフェストが、ウェブサーバー環境に依存しているワーカー環境のコンポーネントへの
リンクを持つウェブサーバー環境を定義します。マニフェストは、グループを使用して同じソースバン
ドルで複数の環境を作成することを許可します。
~/myapp/frontend/env.yaml
AWSConfigurationTemplateVersion: 1.1.0.0
SolutionStack: 64bit Amazon Linux 2015.09 v2.0.6 running Multi-container Docker
1.7.1 (Generic)
OptionSettings:
aws:elasticbeanstalk:command:
BatchSize: '30'
BatchSizeType: Percentage
aws:elasticbeanstalk:sns:topics:
Notification Endpoint: [email protected]
aws:elb:policies:
ConnectionDrainingEnabled: true
ConnectionDrainingTimeout: '20'
aws:elb:loadbalancer:
CrossZone: true
aws:elasticbeanstalk:environment:
ServiceRole: aws-elasticbeanstalk-service-role
aws:elasticbeanstalk:application:
Application Healthcheck URL: /
aws:elasticbeanstalk:healthreporting:system:
API Version 2010-12-01
188
AWS Elastic Beanstalk 開発者ガイド
Auto Scaling グループ
SystemType: enhanced
aws:autoscaling:launchconfiguration:
IamInstanceProfile: aws-elasticbeanstalk-ec2-role
InstanceType: t2.micro
EC2KeyName: workstation-uswest2
aws:autoscaling:updatepolicy:rollingupdate:
RollingUpdateType: Health
RollingUpdateEnabled: true
Tags:
Cost Center: WebApp Dev
CName: front-A08G28LG+
EnvironmentName: front+
EnvironmentLinks:
"WORKERQUEUE" : "worker+"
保存されている設定形式とサポートされるキーの詳細については、「Elastic Beanstalk 保存済み設定を
使用する (p. 185)」を参照してください。
Elastic Beanstalk で Auto Scaling を設定する
Abstract
Elastic Beanstalk アプリケーションで Auto Scaling を使用することで、特定の日付と時刻を含むユーザー定義のト
リガに基づいて Amazon EC2 インスタンスを自動的に起動または終了します。
Auto Scaling は、ユーザーが定義したパラメータに基づいて、Auto Scaling group 内の Amazon EC2 イ
ンスタンスを自動的に起動または終了するように設計されたウェブサービスです。Elastic Beanstalk
は、ロードバランシング、Auto Scaling 環境で Auto Scaling をサポートします。Amazon EC2 インス
タンス数を自動的に増減することで、アプリケーションへのトラフィックの変化にシームレスに対応で
きます。ユーザーが Auto Scaling group に対して定義するトリガは、帯域幅の使用量や CPU 使用率な
どのメトリックスに応じてコンピューティングリソースをスケールするように Elastic Beanstalk に指
示します。特定の時刻に実行するようにスケーリングアクションをスケジュールすることもできます。
Auto Scaling は、Amazon CloudWatch と連携して、アプリケーションを実行するサーバーインスタン
スのメトリックスを取得します。
Auto Scaling は、起動した各 Amazon EC2 インスタンスの状態もモニタリングします。インスタンス
が予期せず終了した場合、Auto Scaling は終了を検出し、代わりのインスタンスを起動します。この機
能を使用すると、任意の固定の Amazon EC2 インスタンス数を自動的に維持できます。
Note
Auto Scaling の設定は、ローリング更新に影響する可能性があります。ローリング更新を設定
してある場合、ローリング更新の対象となる稼働中インスタンスの最小数が、Auto Scaling
group の最大サイズより大きい場合、ローリング更新は実行されません。ローリング更新の
[Minimum instances in service] 設定、または Auto Scaling group の [Maximum instance count]
設定のどちらかの値を変更する必要があります。
Auto Scaling の詳細については、Auto Scaling ドキュメントを参照してください。
AWS マネジメントコンソール
Auto Scaling の動作は、環境マネジメントコンソール (p. 50)で環境の [Configuration] ページの [Scaling]
を編集することで設定することができます。
API Version 2010-12-01
189
AWS Elastic Beanstalk 開発者ガイド
AWS マネジメントコンソール
ここでは、アプリケーションの Auto Scaling パラメータの設定方法について説明します。
起動設定
ページの [Auto Scaling] セクションで起動設定を編集することで、Elastic Beanstalk アプリケーション
が Auto Scaling リソースをプロビジョニングする方法を制御できます。
[Minimum instance count] ボックスと [Maximum instance count] ボックスを使用して、Elastic Beanstalk
アプリケーションが使用する Auto Scaling の最小サイズと最大サイズを指定できます。
Note
固定の Amazon EC2 インスタンス数を維持するには、[Minimum instance count] ボックスと
[Maximum instance count] ボックスを同じ値に設定します。
[Availability Zones] ボックスを使用すると、Elastic Beanstalk でインスタンスを起動するアベイラビリ
ティーゾーンの数を指定できます。いずれかのアベイラビリティーゾーンが利用不可になった場合に別
のゾーンでインスタンスを起動できるように、複数のアベイラビリティーゾーンを選択することをお勧
めします。例えば、3 インスタンス以上存在する場合は、[Availability Zones] に「3」を指定します。
[Custom Availability Zones] ボックスを使用すると、リージョン内で Elastic Beanstalk がインスタンス
を起動するアベイラビリティーゾーンを指定できます。カスタムアベイラビリティーゾーンを選択しな
かった場合、Elastic Beanstalk が自動的にアベイラビリティーゾーンを選びます。アベイラビリティー
ゾーンの数は、選択したカスタムアベイラビリティーゾーンと同じかそれ以下でなければなりません。
例えば、[Any 2] を選択した場合は、少なくとも 2 つのカスタムアベイラビリティーゾーンを選択する
必要があります。
Note
アベイラビリティーゾーンでの作業時の注意点がいくつかあります。
• フォールトトレラントなアプリケーションを構築するには、複数のアベイラビリティーゾー
ンでインスタンスを起動することが大切です。それにより、1 つのアベイラビリティーゾー
ンがダウンしても、別のアベイラビリティーゾーンで動作を続行することができます。
• リザーブドインスタンスを購入した場合は、購入時に指定したのと同じアベイラビリティー
ゾーンを指定する必要があります。リザーブドインスタンスでは、インスタンスに対して低
額の予約金支払いを行い、1 年または 3 年間それを予約することで、そのインスタンスを実
行する時間料金を大幅に削減できます。リザーブドインスタンスの詳細については、『Linux
インスタンス用 Amazon EC2 ユーザーガイド』の「リザーブドインスタンス」を参照してく
ださい。
[Scaling cooldown (seconds)] ボックスには、Auto Scaling がインスタンスを起動した後、何らかのス
ケーリングアクティビティを再開するまでに待機する時間を指定します。この指定により、新しいイン
スタンスがトラフィックの処理を開始するための時間が確保されます。クールダウン期間が経過するま
でに、CloudWatch アラームが継続して発行されないような適切なリソースレベルが環境で維持された
場合、新しいインスタンスは起動されません。
トリガ
ページの [Scaling Trigger] セクションを編集することで、Elastic Beanstalk アプリケーションのスケー
リングアクションに関するメトリックスベースのパラメータを設定することができます。トリガとは、
インスタンス数を増やす(スケールアウト)タイミングやインスタンス数を減らす(スケールイン)タ
イミングをシステムに指示するために定義する、Auto Scaling のメカニズムです。Amazon CloudWatch
に対して発行される Amazon EC2 または Elastic Load Balancing のメトリックス(Amazon EC2 イン
API Version 2010-12-01
190
AWS Elastic Beanstalk 開発者ガイド
AWS マネジメントコンソール
スタンスの CPU 使用率など)に基づいて実行するようにトリガを設定し、指定した条件を満たしてい
るかどうかを判断することができます。メトリックスについて指定した条件の上限または下限を、指定
した期間超過すると、トリガによって規模の拡大や縮小と呼ばれる、長時間実行されるプロセスが起動
されます。Amazon EC2 メトリックスの詳細については、『Amazon CloudWatch 開発者ガイド』の
「Amazon Elastic Compute Cloud のディメンションおよびメトリックス」を参照してください。Elastic
Load Balancing メトリックスの詳細については、『Elastic Load Balancing 開発者ガイド』の「Amazon
CloudWatch を使用したロードバランサーの監視」を参照してください。
Auto Scaling のトリガは、インスタンス固有の Amazon CloudWatch メトリックスを監視して動作しま
す。トリガには、CPU 使用率、ネットワークトラフィック、ディスクアクティビティ、インスタンス
の状態が含まれます。[Trigger Measurement] ドロップダウンリストを使用して、トリガのメトリック
スを指定します。
次の一覧では、AWS マネジメントコンソールを使用して設定できるトリガパラメータについて説明し
ます。
• [Trigger statistic] を使用して、トリガが使用する統計を、Minimum、Maximum、Sum、Average から
指定します。
• [Unit of measurement] を使用して、トリガ測定の単位を指定します。
• [Measurement period] に、Amazon CloudWatch がトリガのメトリックスを測定する頻度を指定しま
す。[Breach duration] は、トリガが発せられるまでに、指定した限度([Upper threshold] と [Lower
threshold] の値)を超えることが許可される時間を示します。
• [Upper breach scale increment] と [Lower breach scale increment] ボックスでは、スケーリングアク
ティビティを実行するときに追加または削除する Amazon EC2 インスタンスの数を指定します。
時間に基づくスケーリング
時間に基づくスケーリングでは、各 Auto Scaling group で Amazon EC2 インスタンスを起動または終
了するスケーリングアクションを計画することができます。必要に応じて、スケーリングアクションを
スケジュールできます。有効期限切れも含め、環境でスケジュールされているスケーリングアクション
のリストを表示するには、AWS マネジメントコンソールの [Scaling] ページの [Time-based Scaling] セ
クションを参照してください。1 つの環境には、有効期限切れのアクション(過去に終了したアクショ
ン)を除き、スケジュールに基づくスケーリングアクションを最大 120 個設定できます。
ご使用の Elastic Beanstalk アプリケーションで、特定の時期におけるスケールアウトまたはスケール
インのニーズが予測可能である場合は、スケーリングアクションを反復的にスケジュールできます。ま
た、将来予定される 1 回限りのイベントについて、スケーリングアクションをスケジュールすることも
できます。スケジュールに基づくアクションをまったく新しく作成する代わりに、有効期限切れのスケ
ジュールに基づくアクションの開始時刻を将来の日時に変更することで、アクションを再利用できま
す。(Elastic Beanstalk は、有効期限切れのスケジュールに基づくアクションのうち最新 150 個の履歴
を保持します)。
[Time-based Scaling] セクションの表には、以下の情報が表示されます。
• [Name] 列には、スケジュールに基づくアクションを作成したときに割り当てた名前が表示されます。
作成後にスケーリングアクションの名前を変更することはできません。
• [Limits] 列には、スケジュールに基づくアクションを作成したとき、または最後に変更したときに、
Auto Scaling group に指定したインスタンスの最小数、最大数、希望する数が表示されます。
• [Next occurrence] 列には、スケジュールに基づくアクションが次に有効になる日時が表示されます。
反復的なスケーリングアクションの場合、[Next occurrence] は、CRON 式を使用して指定した繰り
返しに基づきます。
ページの [Time-based Scaling] セクションで、[Add scheduled action] をクリックすると [New scheduled
action] ウィンドウが表示され、以下のオプションを指定できます。
API Version 2010-12-01
191
AWS Elastic Beanstalk 開発者ガイド
AWS マネジメントコンソール
• [Name] を使用して、スケジュールに基づくスケーリングアクションに、他のスケーリングアクショ
ンと区別し、後で探すために使用できる名前を指定します。空白を使用せず、英数字で指定する必要
があります。この名前には 255 文字の制限があります。
• [Instances] には、その Auto Scaling group のインスタンス数の最小値([Min])と最大値([Max])を
指定します。
• [Desired capacity] ボックスには、その Auto Scaling group で実行したいインスタンス数を指定しま
す。希望する容量は、インスタンスの最大数として定義した値以下、かつ最小数として定義した値以
上でなければなりません。
• [Occurrence] では、このスケーリングアクションを 1 回だけ実行するのか、繰り返し実行するのかを
選択します。
• [One-time] を選択する場合、以下の項目を設定します。
• [Start time] – アクションを実行する将来の日付と時刻を指定します。
• [Recurrent] を選択する場合、以下の項目を設定します。
• [Recurrence] – CRON 式を使用して、スケジュールに基づくアクションを実行する頻度を指定し
ます。たとえば、毎週火曜日の午後 6:30(UTC 時刻)に有効になるように反復的なアクション
をスケジュールする場合、「30 6 * * 2」という CRON 式を使用できます。CRON の構文の詳細
については、「Cron」を参照してください。
• [Start time](オプション)– アクションを起動する将来の日付と時刻を指定します。開始時間を
指定しない場合、予定されたアクションは即座にアクティブになります。コンソールは、デフォ
ルトで次の 1 時間の最初を自動的に選択します。
• [End time](オプション)– スケジュールに基づくアクションを停止する将来の日付と時刻を指
定します終了時刻を指定しない場合、そのスケーリングアクションは、終了日時を設定するまで
繰り返されます。
ISO 8601 時間形式を使用して、開始時刻と終了時刻を UTC で指定します。たとえば、
2015-04-28T04:07:02Z のように指定します。ISO 8601 時刻形式の詳細については、「Date and Time
Formats」を参照してください日付はすべての予定されているアクションで一意である必要がありま
す。
スケジュールに基づくアクションは、Elastic Beanstalk マネジメントコンソールを使用して停止するこ
とはできませんが、オプションで EB CLI で停止することができます。スケジュールに基づくスケーリ
ングアクションを停止すると、Elastic Beanstalk はスケジュールに基づくアクションを無視し、何も実
API Version 2010-12-01
192
AWS Elastic Beanstalk 開発者ガイド
AWS マネジメントコンソール
行しません。アクションを停止することで、スケジュールに基づくアクションを削除することなく停止
できるため、必要な場合には後で再開することができます。
時間に基づくスケーリングのオプション設定ファイルの例
このセクションでは、スケジュールに基づくスケーリングアクションを設定するオプション設定ファイ
ルの例を示します。これらのファイルをアプリケーションソースバンドルの .ebextensions ディレ
クトリに含めます。アプリケーションでの設定ファイルのデプロイの詳細については、設定ファイル
(.ebextensions)による高度な環境のカスタマイズ (p. 147)を参照してください。
次の JSON スニペットでは、2015-12-12T00:00:00Z にインスタンス 5 個から 10 個にスケールアウト
するように Elastic Beanstalk に指示しています。
[
{
"Namespace": "aws:autoscaling:scheduledaction",
"ResourceName": "ScheduledScaleUpSpecificTime",
"OptionName": "MinSize",
"Value": "5"
},
{
"Namespace": "aws:autoscaling:scheduledaction",
"ResourceName": "ScheduledScaleUpSpecificTime",
"OptionName": "MaxSize",
"Value": "10"
},
{
"Namespace": "aws:autoscaling:scheduledaction",
"ResourceName": "ScheduledScaleUpSpecificTime",
"OptionName": "DesiredCapacity",
"Value": "5"
},
{
"Namespace": "aws:autoscaling:scheduledaction",
"ResourceName": "ScheduledScaleUpSpecificTime",
"OptionName": "StartTime",
"Value": "2015-12-12T00:00:00Z"
}
]
次の JSON スニペットでは、2015-12-12T07:00:00Z にスケールインするように Elastic Beanstalk に指
示しています。
[
{
"Namespace": "aws:autoscaling:scheduledaction",
"ResourceName": "ScheduledScaleDownSpecificTime",
"OptionName": "MinSize",
"Value": "1"
},
{
"Namespace": "aws:autoscaling:scheduledaction",
"ResourceName": "ScheduledScaleDownSpecificTime",
"OptionName": "MaxSize",
"Value": "1"
},
{
API Version 2010-12-01
193
AWS Elastic Beanstalk 開発者ガイド
AWS マネジメントコンソール
"Namespace": "aws:autoscaling:scheduledaction",
"ResourceName": "ScheduledScaleDownSpecificTime",
"OptionName": "DesiredCapacity",
"Value": "4"
},
{
"Namespace": "aws:autoscaling:scheduledaction",
"ResourceName": "ScheduledScaleDownSpecificTime",
"OptionName": "StartTime",
"Value": "2015-12-12T07:00:00Z"
}
]
次の JSON スニペットでは、毎日午前 9 時にスケールアウトするように Elastic Beanstalk に指示して
います。このアクションは、2015 年 5 月 14 日に開始し、2016 年 1 月 12 日に終了するようにスケ
ジュールされます。
[
{
"Namespace": "aws:autoscaling:scheduledaction",
"ResourceName": "ScheduledPeriodicScaleup",
"OptionName": "MinSize",
"Value": "5"
},
{
"Namespace": "aws:autoscaling:scheduledaction",
"ResourceName": "ScheduledPeriodicScaleup",
"OptionName": "MaxSize",
"Value": "10"
},
{
"Namespace": "aws:autoscaling:scheduledaction",
"ResourceName": "ScheduledPeriodicScaleup",
"OptionName": "DesiredCapacity",
"Value": "5"
},
{
"Namespace": "aws:autoscaling:scheduledaction",
"ResourceName": "ScheduledPeriodicScaleup",
"OptionName": "StartTime",
"Value": "2015-05-14T07:00:00Z"
},
{
"Namespace": "aws:autoscaling:scheduledaction",
"ResourceName": "ScheduledPeriodicScaleup",
"OptionName": "EndTime",
"Value": "2016-01-12T07:00:00Z"
},
{
"Namespace": "aws:autoscaling:scheduledaction",
"ResourceName": "ScheduledPeriodicScaleup",
"OptionName": "Recurrence",
"Value": "0 9 * * *"
}
]
API Version 2010-12-01
194
AWS Elastic Beanstalk 開発者ガイド
コマンドラインインターフェイス(CLI)
次の JSON スニペットでは、毎週金曜日の午後 6 時にスケールインするように Elastic Beanstalk に指
示しています。週末はアプリケーションが大量のトラフィックを受信しないことがわかっている場合
は、同様のスケジュールに基づくアクションを作成できます。
[
{
"Namespace": "aws:autoscaling:scheduledaction",
"ResourceName": "ScheduledWeekendScaleDown",
"OptionName": "MinSize",
"Value": "1"
},
{
"Namespace": "aws:autoscaling:scheduledaction",
"ResourceName": "ScheduledWeekendScaleDown",
"OptionName": "MaxSize",
"Value": "4"
},
{
"Namespace": "aws:autoscaling:scheduledaction",
"ResourceName": "ScheduledWeekendScaleDown",
"OptionName": "DesiredCapacity",
"Value": "1"
},
{
"Namespace": "aws:autoscaling:scheduledaction",
"ResourceName": "ScheduledWeekendScaleDown",
"OptionName": "StartTime",
"Value": "2015-12-12T07:00:00Z"
},
{
"Namespace": "aws:autoscaling:scheduledaction",
"ResourceName": "ScheduledWeekendScaleDown",
"OptionName": "EndTime",
"Value": "2016-01-12T07:00:00Z"
},
{
"Namespace": "aws:autoscaling:scheduledaction",
"ResourceName": "ScheduledWeekendScaleDown",
"OptionName": "Recurrence",
"Value": "0 18 * * 5"
}
]
コマンドラインインターフェイス(CLI)
EB CLI を使用して、Auto Scaling の環境設定を編集できます。
EB CLI を使用してアプリケーションの環境設定を編集するには
1.
アプリケーションの環境設定を更新します。
$ eb config my-env
2.
オプション設定ファイルをテキストエディタで開き、以下の設定を追加します。
API Version 2010-12-01
195
AWS Elastic Beanstalk 開発者ガイド
コマンドラインインターフェイス(CLI)
AWSEBAutoScalingScaleDownPolicy.aws:autoscaling:trigger:
LowerBreachScaleIncrement: '-1'
AWSEBAutoScalingScaleUpPolicy.aws:autoscaling:trigger:
UpperBreachScaleIncrement: '1'
AWSEBCloudwatchAlarmHigh.aws:autoscaling:trigger:
UpperThreshold: '6000000'
AWSEBCloudwatchAlarmLow.aws:autoscaling:trigger:
BreachDuration: '5'
EvaluationPeriods: '1'
LowerThreshold: '2000000'
MeasureName: NetworkOut
Period: '5'
Statistic: Average
Unit: Bytes
aws:autoscaling:asg:
Availability Zones: Any
Cooldown: '360'
Custom Availability Zones: null
MaxSize: '4'
MinSize: '1'
aws:autoscaling:launchconfiguration:
BlockDeviceMappings: null
EC2KeyName: null
IamInstanceProfile: aws-elasticbeanstalk-ec2-role
ImageId: ami-13de5b0e
InstanceType: t1.micro
MonitoringInterval: 5 minute
RootVolumeIOPS: null
RootVolumeSize: null
RootVolumeType: null
SSHSourceRestriction: tcp,22,22,0.0.0.0/0
SecurityGroups: awseb-e-um3yfrzq22-stack-AWSEBSecurityGroup-10MV688E4994W
EB CLI を使用して、カスタムアベイラビリティーゾーンを指定することもできます。
EB CLI を使用してアプリケーション環境設定のカスタムアベイラビリティーゾーンを更新する
には
1.
Auto Scaling 用のカスタムアベイラビリティーゾーンを指定して、アプリケーション環境設定を更
新します。
$ eb config
2.
オプション設定ファイルをテキストエディタで開き、以下の設定を追加します。
aws:autoscaling:asg:
Availability Zones: Any
Cooldown: '360'
Custom Availability Zones: 'us-west-2a,us-west-2b'
MaxSize: '4'
MinSize: '1'
API Version 2010-12-01
196
AWS Elastic Beanstalk 開発者ガイド
ヘルスチェックの設定
EB CLI を使用して、環境内の Auto Scaling group ごとに、インスタンス数をスケールアウトまたはス
ケールインするためのスケジュールに基づくアクションを作成することができます。
EB CLI を使用してスケジュールに基づくスケーリングアクションを作成するには
1.
Run eb config
$ eb config
2.
オプション設定ファイルをテキストエディタで開き、以下の設定を追加して、1 回限りのスケジュー
ルに基づくスケーリングアクションを作成します。
Note
以下の例では、ScheduledScaleUpSpecificTime と ScheduledScaleUpRecurring
は、それぞれのスケジュールに基づくアクションに付ける名前です。設定は、スケジュー
ルに基づくスケーリングアクション名に従ってグループ化されます。
ScheduledScaleUpSpecificTime.aws:autoscaling:scheduledaction:
DesiredCapacity: '5'
EndTime: null
MaxSize: '10'
MinSize: '5'
Recurrence: null
StartTime: '2015-12-12T00:00:00Z'
Suspend: 'false'
オプション設定ファイルをテキストエディタで開き、以下の設定を追加して、反復的なスケジュー
ルに基づくスケーリングアクションを作成します。
ScheduledScaleUpRecurring.aws:autoscaling:scheduledaction:
DesiredCapacity: '5'
EndTime: '2016-01-12T07:00:00Z'
MaxSize: '10'
MinSize: '5'
Recurrence: '0 9 * * *'
StartTime: '2015-12-12T00:00:00Z'
Suspend: 'false'
Auto Scaling ヘルスチェックの設定
Abstract
ELB ヘルスチェックを使用するように Auto Scaling 環境グループを設定します。
デフォルトでは、ご使用の環境向けに作成された Auto Scaling は Amazon EC2 ステータスチェックを
使用します。環境のインスタンスが EC2 ステータスチェックに失敗した場合、そのインスタンスは停
止され、Auto Scaling により置き換えられます。
EC2 ステータスチェックは、インスタンスで実行されているアプリケーション、サーバー、Docker コ
ンテナの状態ではなく、インスタンスの状態のみを確認するものです。アプリケーションがクラッシュ
したが、それが実行されていたインスタンスが正常なままである場合、ロードバランサーの対象から外
れる可能性はありますが、Auto Scaling によって自動的に置き換えられることはありません。
API Version 2010-12-01
197
AWS Elastic Beanstalk 開発者ガイド
ヘルスチェックの設定
Note
Elastic Beanstalk コンソールのロードバランシング設定セクションでヘルスチェック URL (p. 207)
を設定しても、環境の Auto Scaling グループのヘルスチェックの動作には影響しません。
アプリケーションがクラッシュしたときに、トラブルシューティングと復旧の目的で環境内のインスタ
ンスを維持することができます。アプリケーションがクラッシュしてすぐに Auto Scaling によってイ
ンスタンスが置き換えられた場合、起動直後にアプリケーションがクラッシュした場合でも、何が問題
だったのかを判別することはできません。
アプリケーションが応答を停止したインスタンスを Auto Scaling によって再起動したい場合
は、.ebextensions 設定ファイルを使用して、Elastic Load Balancing ヘルスチェックを使用するよ
うに Auto Scaling グループを設定することができます。
Note
インスタンスの開始直後に Elastic Load Balancing ヘルスチェックが失敗する場合、このオプ
ションを有効にすることで、環境を連続して終了し、インスタンスを置き換えることができま
す。その場合、Auto Scaling マネジメントコンソールでヘルスチェックのタイプを EC2 に戻す
か、設定変更を元に戻して環境をデプロイし直します。
環境の起動中に Auto Scaling ヘルスチェックを ELB に設定するには
1.
プロジェクトフォルダに .ebextensions ディレクトリを作成します。
2.
以下の内容で、.ebextensions フォルダに設定ファイルを作成します。
.ebextensions/autoscaling.config
Resources:
AWSEBAutoScalingGroup:
Type: "AWS::AutoScaling::AutoScalingGroup"
Properties:
HealthCheckType: ELB
HealthCheckGracePeriod: 300
3.
猶予期間の設定は、インスタンスがヘルスチェックで失敗した後に、インスタンスを終了して置き
換えることなく保留する秒数を設定します。ロードバランサーの対象から外れた後でもインスタン
スが復旧する可能性があるため、アプリケーションに適した時間をインスタンスに指定します。
環境をデプロイまたは更新します。
デフォルトでは、Elastic Load Balancing ヘルスチェックは、ポート 80 を経由してインスタンスに TCP
接続を試みるように設定されています。これにより、インスタンスで実行されているウェブサーバーが
接続を受け入れたことを確認できますが、ウェブサーバーではなくアプリケーションが良好な状態であ
ることを確認するように、チェックをカスタマイズすることもできます。
環境に応じて Elastic Load Balancing 設定を変更することによって、別のポートを使用するか、アプリ
ケーションが使用するパスに対して HTTP GET リクエストを使用するように Elastic Load Balancing
に指示することができます。詳細については、「Elastic Beanstalk 環境のロードバランサーの設
定 (p. 205)」を参照してください。
API Version 2010-12-01
198
AWS Elastic Beanstalk 開発者ガイド
EC2 インスタンス
Elastic Beanstalk を使用して Amazon EC2 サー
バーインスタンスを設定する
Abstract
必要に応じて、Elastic Beanstalk アプリケーションの任意の合法的な用途で、Amazon EC2 サーバーインスタンス
使用して Amazon のデータセンター内のサーバーインスタンスをいつでも起動し、管理します。
Amazon EC2 は、Amazon のデータセンター内でサーバーインスタンスを起動および管理するための
ウェブサービスです。必要に応じて、任意の合法的な用途で Amazon EC2 サーバーインスタンスをい
つでも使用できます。インスタンスはさまざまなサイズや設定で使用できます。詳細については、
Amazon EC2 の製品ページを参照してください。
AWS マネジメントコンソール
Elastic Beanstalk 環境のAmazon EC2インスタンス設定は、環境マネジメントコンソール (p. 50)の
[Configuration] ページの[Instances] を編集して変更できます。
トピック
• Amazon EC2 インスタンスタイプ (p. 200)
• セキュリティグループ (p. 200)
API Version 2010-12-01
199
AWS Elastic Beanstalk 開発者ガイド
AWS マネジメントコンソール
• EC2 Key Pair (p. 200)
• 間隔を監視する (p. 201)
• カスタム AMI ID (p. 201)
• インスタンスプロファイル (p. 201)
• ルートボリューム(起動デバイス) (p. 202)
• ブロックデバイスマッピング (p. 202)
Amazon EC2 インスタンスタイプ
Abstract
Elastic Beanstalk アプリケーションで使用できるインスタンスタイプが表示されます。
[Instance type] に、Elastic Beanstalk アプリケーションで使用できるインスタンスタイプが表示されま
す。インスタンスタイプを変更して、アプリケーションに最適な特性(メモリサイズや CPU 能力な
ど)を持つサーバーを選択します。例えば、高負荷の操作を長時間実行するアプリケーションでは、よ
り大きい CPU やメモリが必要となる場合があります。Elastic Beanstalk は、実行中のインスタンスを
定期的にチェックして正常であることを確認します。アプリケーションが 95% 以上の CPU を消費し
ている場合、Elastic Beanstalk はイベントをトリガします。このイベントの詳細については、「CPU
使用率が 95% を超えている (p. 812)」を参照してください。
Note
32 ビットと 64 ビットのインスタンスタイプを切り替えることはできません。例えば、アプリ
ケーションが 32 ビットプラットフォーム上に構築されている場合、リストには 32 ビットのイ
ンスタンスタイプのみが表示されます。
Elastic Beanstalk アプリケーションで使用可能な Amazon EC2 インスタンスタイプの詳細については、
Amazon Elastic Compute Cloud User Guide の「Instance Types」を参照してください。
セキュリティグループ
Amazon EC2 セキュリティグループを使用して、Elastic Beanstalk アプリケーションへのアクセスを制
御できます。セキュリティグループとは、インスタンスのファイアウォールのルールを定義するもので
す。このルールでは、どの着信ネットワークトラフィックをご使用のインスタンスに配信するかを指定
します。他の着信トラフィックはすべて破棄されます。グループのルールはいつでも変更することがで
きます。実行中のすべてのインスタンスと、今後起動されるインスタンスについて、新しいルールが自
動的に実施されます。
Amazon EC2 セキュリティグループを設定するには、Amazon EC2 コンソールを使用します。どの
Amazon EC2 セキュリティグループが Elastic Beanstalk アプリケーションへのアクセスを制御するか
を指定するには、1 つまたは複数の Amazon EC2 セキュリティグループ名(コンマで区切ります)を
[EC2 Security Groups] テキストボックスに入力します。Amazon EC2 セキュリティグループの詳細に
ついては、『Amazon Elastic Compute Cloud ユーザーガイド』の「Amazon EC2 セキュリティグルー
プ」を参照してください。
Elastic Beanstalk がデフォルトのセキュリティグループを作成します。セキュリティグループの名前は
[EC2 Security Group] ボックスで確認できます。
EC2 Key Pair
Elastic Beanstalk アプリケーション用にプロビジョニングされた Amazon EC2 インスタンスには、
Amazon EC2 のキーペアを使用して安全にログインできます。
API Version 2010-12-01
200
AWS Elastic Beanstalk 開発者ガイド
AWS マネジメントコンソール
Important
Elastic Beanstalk によってプロビジョニングされた Amazon EC2 インスタンスにアクセスする
には、まず Amazon EC2 キーペアを使用するために、Amazon EC2 キーペアを作成して Elastic
Beanstalk によってプロビジョニングされた Amazon EC2 インスタンスを設定する必要があり
ます。Amazon EC2 キーペアをセットアップするには、AWS マネジメントコンソールを使用
します。Amazon EC2 のキーペアを作成する手順については、「Amazon Elastic Compute
Cloud Getting Started Guide」を参照してください。
[EC2 key pair] テキストボックスを使用して、Elastic Beanstalk アプリケーションを実行している Amazon
EC2 インスタンスに安全にログインするために使用する Amazon EC2 キーペアの名前を指定すること
ができます。
Amazon EC2 のキーペアの詳細については、『Amazon Elastic Compute Cloud ユーザーガイド』の
「ネットワークとセキュリティ」を参照してください。Amazon EC2 インスタンスに接続する方法の
詳細については、『Amazon Elastic Compute Cloud ユーザーガイド』の「インスタンスへの接続」と
「PuTTY を使用した Windows から Linux/UNIX インスタンスへの接続」を参照してください。
間隔を監視する
Abstract
Amazon CloudWatch メトリックスのモニタリング間隔を、Elastic Beanstalk アプリケーションのデフォルトの 5
分間隔より小さくなるように設定します。
[Monitoring interval] を [1 minute] に設定し、環境内のリソースがベーシックヘルスレポートのメトリッ
クス (p. 261)をCloudWatchに公開する頻度を高めます。
Note
Amazon CloudWatch の利用料金で 1 分間隔のメトリックスに申し込むことができます。詳細
については、Amazon CloudWatch を参照してください。
カスタム AMI ID
Abstract
環境でのカスタム AMI の ID を入力して、独自のカスタム AMI と Amazon EC2 インスタンスに使用されるデフォ
ルト AMI を上書きします。
Amazon マシンイメージ(AMI)は、Amazon Linux または Windows Server のマシンイメージで、環
境で EC2 インスタンスを起動する目的で AWS Elastic Beanstalk が使用します。Elastic Beanstalk は、
アプリケーションの実行に必要なツールとリソースを含むマシンイメージを提供します。
Elastic Beanstalk は、選択されるリージョン、プラットフォーム、インスタンスタイプに基づいて、環
境のデフォルト AMI を選択します。カスタム AMI を作成した場合は、デフォルトの AMI ID と置き換
えます。
Elastic Beanstalk で使用するカスタム AMI の作成方法については、「カスタム Amazon マシンイメー
ジ(AMI)の作成 (p. 251)」を参照してください。
インスタンスプロファイル
インスタンスプロファイルは、Elastic Beanstalk 環境で起動されるインスタンスに適用される IAM ロー
ルです。EC2 インスタンスは、AWS へのリクエストに署名し、さらに API などにアクセスして S3 に
ログを書き込むインスタンスプロファイルのロールを引き受けます。
API Version 2010-12-01
201
AWS Elastic Beanstalk 開発者ガイド
コマンドラインインターフェイス(CLI)
AWS マネジメントコンソール で初めて環境を作成する場合、Elastic Beanstalk により、デフォルトの
アクセス権限のセットでインスタンスプロファイルを作成するように求められます。インスタンスが他
の AWS サービスにアクセスできるように、このプロファイルにはアクセス権限を追加することができ
ます。詳細については、Elastic Beanstalk インスタンスプロファイル (p. 21) を参照してください。
ルートボリューム(起動デバイス)
Elastic Beanstalk 環境の Amazon EC2 インスタンスにアタッチするように、ルートボリューム(起動
デバイスとも呼ばれます)を設定できます。Amazon EBS ボリュームは、1 つの Amazon EC2 インス
タンスにアタッチできる、耐久性に優れたブロックレベルのストレージデバイスです。インスタンスに
アタッチした後のボリュームは、他の物理ハードドライブと同じように使用できます。[Root volume
type] のリストには、[Magnetic]、[General Purpose (SSD)]、[Provisioned IOPS (SSD)] のボリュームタ
イプが含まれています。必要なパフォーマンスと価格の要件を満たすボリュームタイプを選択します。
詳細については、「Amazon EBS ボリュームタイプ」および「Amazon EBS 製品の詳細」を参照して
ください。
[Root volume size] では、選択したストレージボリュームのサイズを指定できます。プロビジョンド
IOPS(SSD)をインスタンスで使用するルートボリュームタイプとして選択した場合、目的のルート
ボリュームのサイズを指定する必要があります。他のルートボリュームの場合、独自の値を指定しない
と、Elastic Beanstalk ではストレージボリュームタイプに対してデフォルトのボリュームサイズを使用
します。デフォルトのボリュームサイズは、環境のベースとなるソリューションスタックの AMI によっ
て異なります。プロビジョンド IOPS(SSD)ルートボリュームでは、ギビバイトの最小数は 10 であ
り、最大数は 1024 になります。他のルートボリュームでは、ギビバイトの最小数は 8 であり、最大数
は 1024 になります。
プロビジョンド IOPS(SSD)をルートボリュームタイプとして選択した場合、1 秒あたりの目的の入
出力オペレーション数(IOPS)を指定する必要があります。最小値は 100 で、最大値は 4000 です。
IOPS とボリュームサイズとの比率は最大で 30:1 です。たとえば、3000 IOPS のボリュームのサイズ
は 100 GiB 以上である必要があります。
ブロックデバイスマッピング
Note
このオプションは、AWS マネジメントコンソール を使用して設定できません。EB CLI config
command (p. 424) または EB Extensions (p. 100) を使用して、
aws:autoscaling:launchconfiguration (p. 118) 名前空間の必須の設定オプションを変更します。
それぞれの Amazon Elastic Compute Cloud インスタンスに、起動時のルートデバイスボリュームが関
連付けられていますが、ブロックデバイスマッピングを使用して、追加の Amazon Elastic Block Store
のボリュームまたはインスタンスストアボリュームを Auto Scaling グループのすべてのインスタンス
にアタッチすることができます。ブロックデバイスマッピングの詳細については、「Amazon Elastic
Cloud Computer User Guide」の「Block Device Mapping」を参照してください。インスタンスストレー
ジの詳細については、「Amazon Elastic Cloud Computer User Guide」の「Amazon EC2 Instance
Store」を参照してください。
コマンドラインインターフェイス(CLI)
アプリケーションの環境設定を編集するには
•
アプリケーションの環境設定を更新します。
$ aws elasticbeanstalk update-environment --environment-name my-env --optionsettings file://options.txt
API Version 2010-12-01
202
AWS Elastic Beanstalk 開発者ガイド
API
options.txt
[
{
"Namespace": "aws:autoscaling:launchconfiguration",
"OptionName": "InstanceType",
"Value": "m1.small"
},
{
"Namespace": "aws:autoscaling:launchconfiguration",
"OptionName": "SecurityGroups",
"Value": "awseb-e-98pjjgr9cs-stack-AWSEBSecurityGroup-D1FOQASTKD12"
},
{
"Namespace": "aws:autoscaling:launchconfiguration",
"OptionName": "EC2KeyName",
"Value": "mykeypair"
},
{
"Namespace": "aws:autoscaling:launchconfiguration",
"OptionName": "MonitoringInterval",
"Value": "5 minute"
},
{
"Namespace": "aws:autoscaling:launchconfiguration",
"OptionName": "ImageId",
"Value": "ami-cbab67a2"
},
{
"Namespace": "aws:autoscaling:launchconfiguration",
"OptionName": "IamInstanceProfile",
"Value": "ElasticBeanstalkProfile"
},
{
"Namespace": "aws:autoscaling:launchconfiguration",
"OptionName": "BlockDeviceMappings",
"Value": "/dev/sdj=:100,/dev/sdh=snap-51eef269,/dev/sdb=ephemeral0"
}
]
API
渡すことができるすべてのオプションの値については、「Option Values」を参照してください。
アプリケーションの環境設定を編集するには
•
以下のパラメータを使って UpdateEnvironment を呼び出します。
• EnvironmentName = SampleAppEnv
• OptionSettings.member.1.Namespace = aws:autoscaling:launchconfiguration
• OptionSettings.member.1.OptionName = InstanceType
• OptionSettings.member.1.Value = m1.small
• OptionSettings.member.2.Namespace = aws:autoscaling:launchconfiguration
• OptionSettings.member.2.OptionName = SecurityGroups
API Version 2010-12-01
203
AWS Elastic Beanstalk 開発者ガイド
API
• OptionSettings.member.2.Value = mysecuritygroup
• OptionSettings.member.3.Namespace = aws:autoscaling:launchconfiguration
• OptionSettings.member.3.OptionName = EC2KeyName
• OptionSettings.member.3.Value = mykeypair
• OptionSettings.member.4.Namespace = aws:autoscaling:launchconfiguration
• OptionSettings.member.4.OptionName = MonitoringInterval
• OptionSettings.member.4.Value = 1 minute
• OptionSettings.member.5.Namespace = aws:autoscaling:launchconfiguration
• OptionSettings.member.5.OptionName = ImageId
• OptionSettings.member.5.Value = ami-cbab67a2
• OptionSettings.member.6.Namespace = aws:autoscaling:launchconfiguration
• OptionSettings.member.6.OptionName = IamInstanceProfile
• OptionSettings.member.6.Value = ElasticBeanstalkProfile
• OptionSettings.member.7.Namespace = aws:autoscaling:launchconfiguration
• OptionSettings.member.7.OptionName = BlockDeviceMappings
• OptionSettings.member.7.Value =
/dev/sdj=:100,/dev/sdh=snap-51eef269,/dev/sdb=ephemeral0
Example
https://elasticbeanstalk.us-west-2.amazon.com/?EnvironmentName=SampleAppEnv
&OptionSettings.member.1.Namespace=aws%3Aautoscaling%3Alaunchconfiguration
&OptionSettings.member.1.OptionName=InstanceType
&OptionSettings.member.1.Value=m1.small
&OptionSettings.member.2.Namespace=aws%3Aautoscaling%3Alaunchconfiguration
&OptionSettings.member.2.OptionName=SecurityGroups
&OptionSettings.member.2.Value=awseb-e-98pjjgr9cs-stack-AWSEBSecurityGroupD1FOQASTKD12
&OptionSettings.member.3.Namespace=aws%3Aautoscaling%3Alaunchconfiguration
&OptionSettings.member.3.OptionName=EC2KeyName
&OptionSettings.member.3.Value=mykeypair
&OptionSettings.member.4.Namespace=aws%3Aautoscaling%3Alaunchconfiguration
&OptionSettings.member.4.OptionName=MonitoringInterval
&OptionSettings.member.4.Value=5%20minute
&OptionSettings.member.5.Namespace=aws%3Aautoscaling%3Alaunchconfiguration
&OptionSettings.member.5.OptionName=ImageId
&OptionSettings.member.5.Value=ami-cbab67a2
&OptionSettings.member.6.Namespace=aws%3Aautoscaling%3Alaunchconfiguration
&OptionSettings.member.6.OptionName=IamInstanceProfile
&OptionSettings.member.6.Value=ElasticBeanstalkProfile
&OptionSettings.member.7.Namespace=aws%3Aautoscaling%3Alaunchconfiguration
&OptionSettings.member.7.OptionName=BlockDeviceMappings
&OptionSettings.member.7.Value=/dev/sdj=:100,/dev/sdh=snap51eef269,/dev/sdb=ephemeral0
&Operation=UpdateEnvironment
&AuthParams
API Version 2010-12-01
204
AWS Elastic Beanstalk 開発者ガイド
個のロードバランサー
Elastic Beanstalk 環境のロードバランサーの設定
Abstract
アプリケーションの可用性を向上させ、トラフィック増加に対応する負荷分散によって、Elastic Beanstalk アプリ
ケーションの可用性と拡張性が改善されます。
負荷分散を有効 (p. 91)にしている場合は、環境のインスタンス間でトラフィックを分散する Elastic
Load Balancing ロードバランサーが環境に装備されています。
デフォルトでは、ロードバランサーは、ポート 80 で HTTP トラフィックをリッスンして、同じポート
にインスタンスを転送するよう設定されています。信頼性に優れた接続をサポートするために、ロード
バランサーでポート 443 にリスナーと TLS 証明書を設定できます。
Elastic Load Balancing は、ヘルスチェックを使用して、アプリケーションを実行しているインスタン
スが正常であるかどうかを判断します。ヘルスチェックは、設定した頻度で指定した URL にリクエス
トすることでインスタンスのヘルス状態を判断します。URL からエラーメッセージが返された場合、
または指定したタイムアウト期間内に応答がなかった場合、ヘルスチェックは失敗します。
1 つのサーバーで同じクライアントから複数のリクエストを出させることで、アプリケーションのパ
フォーマンスが向上する場合は、スティッキーセッションを使用するようロードバランサーを設定でき
ます。スティッキーセッションでは、ロードバランサーはリクエストを出す EC2 インスタンスを特定
する HTTP レスポンスにクッキーを追加します。後続のリクエストが同一のクライアントからのもの
である場合、ロードバランサーはクッキー使用して同じインスタンスにリクエストを送信します。
インスタンスが正常でなくなったか環境が縮小されたため、インスタンスがロードバランサーから削除
された場合は、接続のストリーミングによってインスタンスとロードバランサー間の接続を閉じる前
に、リクエストを完了する時間がインスタンスに与えられます。応答を送信するためにインスタンスに
与える時間の長さを変更したり、接続のストリーミングを完全に無効化したりできます。
高度なロードバランサーの設定は、設定オプション (p. 208)を通じて使用できます。これは、ソースコー
ドの設定ファイルに設定するか、Elastic Beanstalk API を使用して環境に直接設定できます。これらの
オプションを使用して、任意のポートにリスナーを設定し、追加のスティッキーセッションの設定を変
更して、EC2 インスタンスに安全に接続するようロードバランサーを設定できます。
AWS マネジメントコンソール で環境のロードバラン
サーを設定する
ロードバランサーの設定は、環境管理コンソール (p. 50)設定 (p. 112)ページの [Network Tier] セクショ
ンで使用できます。
API Version 2010-12-01
205
AWS Elastic Beanstalk 開発者ガイド
AWS マネジメントコンソール で環境のロードバランサー
を設定する
ポートおよびクロスゾーン負荷分散
ロードバランサーの基本的な設定では、ポート 80 に標準のリスナーを、ポート 443 にセキュアリス
ナーを、またはポート 8443 にクロスゾーン負荷分散を設定します。
ロードバランサーにリクエストを現状のまま転送させたい場合は、[listener protocol] を [HTTP] から
[TCP] に変更できます。これにより、ロードバランサーがヘッダー(X-Forwarded-For を含む)を書
き換えることを防ぎ、スティッキーセッションが動作しなくなります。
HTTPS では、セキュアリスナーに [secure listener port] オプションと [protocol] オプションを追加でき
ます。証明書を選択して接続の復号を行う必要もあります。安全な接続のみを使用する場合は、標準リ
スナーを無効にできます。
セキュアリスナーポートをオンにするには
1.
証明書およびキーを作成して AWS Identity and Access Management(IAM)にアップロードしま
す。
2.
3.
証明書の作成とアップロードの詳細については、『Using AWS Identity and Access Management』
のサーバー証明書の管理のページを参照してください。
Elastic Beanstalk コンソールを開きます。
環境については「management console (p. 50)」をご覧ください。
4.
5.
[Configuration] を選択します。
[Secure Listener Port] リストから選択してセキュアリスナーポートを指定します。
6.
[SSL Certificate ID] で、SSL 証明書の ARN を選択します。たとえば,
arn:aws:iam::123456789012:server-certificate/abc/certs/build).
7.
(オプション)[Listener port] を [OFF] に設定して、標準リスナーを無効にします。
8.
[Apply] を選択します。
HTTPS の設定と証明書の使用の詳細については、「Elastic Beanstalk 環境用に HTTPS を設定す
る (p. 217)」を参照してください。
API Version 2010-12-01
206
AWS Elastic Beanstalk 開発者ガイド
AWS マネジメントコンソール で環境のロードバランサー
を設定する
Connection Draining
これらの設定を使用して、接続のストリーミングをオンまたはオフに設定し、[Draining timeout] を最大
[3600] 秒にまで設定します。
セッション
これらの設定を使用してセッション維持を有効にし、セッション長を最大 1000000 秒に設定します。
ヘルスチェック
ロードバランサーが HTTP GET リクエストを行うように、[Application health check URL] を指定しま
す。たとえば、/ を入力してリクエスををアプリケーションのルートに送信させたり、/health を入
力してリクエスを /health のリソースに送信させたりします。ヘルスチェック URL を設定しない場
合、ロードバランサーはインスタンスで TCP 接続を確立するよう試みます。
Note
ヘルスチェック URL を設定しても、環境の Auto Scaling グループのヘルスチェックの動作に
は影響しません。Elastic Load Balancing ヘルスチェックが失敗したインスタンスを Auto Scaling
によって自動的に置き換えるように手動で設定しない限り、Auto Scaling による自動置き換え
は行われません。詳細については、「Auto Scaling ヘルスチェックの設定 (p. 197)」を参照して
ください。
残りのオプションでは、各ヘルスチェック間の秒数([Health check interval])、ヘルスチェックが返さ
れるまで待つ秒数([Health check timeout])、Elastic Load Balancing がインスタンスを正常または異
API Version 2010-12-01
207
AWS Elastic Beanstalk 開発者ガイド
ロードバランサー設定の名前空間
常と判断する前の正常([Healthy check count threshold])または異常([Unhealthy check count
threshold])なヘルスチェック数をカスタマイズすることができます。
ヘルスチェックと、それが環境の全体的な状態に与えるに影響の詳細については、「基本ヘルスレポー
ト (p. 259)」を参照してください。
ロードバランサー設定の名前空間
Elastic Beanstalk は、以下の名前空間で追加設定オプション (p. 101)を提供しており、お使いの環境で
ロードバランサーをさらにカスタマイズすることができます。
• aws:elb:healthcheck (p. 132) – ELB ヘルスチェックのしきい値、チェック間隔、タイムアウトの
設定
• aws:elasticbeanstalk:application (p. 128) – ヘルスチェック URL の設定
• aws:elb:loadbalancer (p. 133) – クロスゾーン負荷分散の有効化ロードバランサーにセキュリティ
グループを割り当て、Elastic Beanstalk が作成したデフォルトのセキュリティグループを上書きしま
す。この名前空間には、aws:elb:listener 名前空間のオプションによって置き換えられた標準リ
スナーおよびセキュアリスナーを設定するための廃止されたオプションが含まれます。
• aws:elb:listener (p. 134) – ポート 80 にデフォルトのリスナー、ポート 443 にセキュアリスナー、
任意のポートにプロトコルの追加リスナーを設定
• aws:elb:policies (p. 135) – ロードバランサーへの追加設定この名前空間のオプションを使用し
て、任意のポートにリスナーを設定し、追加のスティッキーセッションの設定を変更して、EC2 イ
ンスタンスに安全に接続するようロードバランサーを設定できます。
aws:elb:listener
aws:elb:listener 名前空間を使用して、ロードバランサーに追加のリスナーを設定することができ
ます。名前空間として aws:elb:listener を指定している場合、設定はポート 80 のデフォルトリス
ナーに適用されます。ポートを指定している場合(たとえば、aws:elb:listener:443)、リスナー
はそのポートに設定されます。
次の例では、ポート 443 に HTTPS リスナーを設定して、ロードバランサーが安全な接続を終了するの
に使用する証明書を割り当てて、ポート 80 のデフォルトのリスナーを無効にします。ロードバラン
サーは、復号化されたリクエストを HTTP 80 の環境の EC2 インスタンスに転送します。
[
{
"Namespace" : "aws:elb:listener:443",
"OptionName" : "ListenerProtocol",
"Value" : "HTTPS"
},
{
"Namespace" : "aws:elb:listener:443",
"OptionName" : "SSLCertificateId",
"Value" : "arn:aws:iam::123456789012:server-certificate/elastic-beanstalkx509"
},
{
"Namespace" : "aws:elb:listener:443",
"OptionName" : "InstancePort",
"Value" : "80"
},
{
"Namespace" : "aws:elb:listener:443",
"OptionName" : "InstanceProtocol",
API Version 2010-12-01
208
AWS Elastic Beanstalk 開発者ガイド
データベース
"Value" : "HTTP"
},
{
"Namespace" : "aws:elb:listener:80",
"OptionName" : "ListenerEnabled",
"Value" : "false"
}
]
Elastic Beanstalk でデータベースを設定する
Abstract
Amazon Relational Database Service(Amazon RDS)、Amazon DynamoDB、および Amazon ElastiCache のい
ずれかのデータベースオプションを使用する Elastic Beanstalk アプリケーションのクラウドでのリレーショナル
データベースのセットアップ、本番、拡張。
アマゾン ウェブ サービスは、Amazon Relational Database Service (Amazon RDS)、Amazon
DynamoDB、Amazon ElastiCache など、アプリケーションに利用できるさまざまなデータベースオプ
ションを提供しています。
Amazon RDS は、クラウドでリレーショナルデータベースを簡単にセットアップ、本番、拡張するこ
とのできるウェブサービスです。これにより、時間のかかるデータベース管理作業をお客様の代わりに
実行して、お客様を管理業務から解放し、アプリケーションとビジネスに集中させることができます。
このサービスはコスト効率もよく、データベース容量の変更にも柔軟に対応します。
既存の環境の新しい RDS データベースインスタンスを作成して、その設定を確認できます。Elastic
Beanstalk で既存の RDS データベースインスタンスを使用する方法については、Amazon RDS で Elastic
Beanstalk を使用する (p. 308) を参照してください。使用しているプログラミング言語に対応するトピッ
クを参照してください。
[Create New Application] ウィザードを使用せずに、RDS DB インスタンスを環境に追加する場合、ア
プリケーションの [Configuration] ページを使用して行えます。
AWS Elastic Beanstalk を Amazon DynamoDB または Amazon RDS で使用する方法については、
「DynamoDB で Elastic Beanstalk を使用する (p. 307)」または「Amazon RDS で Elastic Beanstalk を
使用する (p. 308)」を参照してください。
AWS マネジメントコンソール
環境に関連付けられたデータベースがある場合、環境マネジメントコンソール (p. 50)で、環境の
[Configuration] ページの [Data Tier] セクションで設定を表示して確認できます。
API Version 2010-12-01
209
AWS Elastic Beanstalk 開発者ガイド
AWS マネジメントコンソール
環境に関連付けられた Amazon RDS データベースがない場合、環境マネジメントコンソール (p. 50)で
[Configuration] ページの [create a new RDS database] をクリックして関連付けることができます。
Amazon RDS データベースを作成して既存の環境に関連付けるには
1.
[Configuration] ページの [Data Tier] で、[create a new RDS database] をクリックします。
2.
データベースに対して次の設定を指定します。
• (オプション)[Snapshot] で、既存のスナップショットから Amazon RDS DB を作成するかど
うかを選択します。
• (オプション)[DB engine] で、データベースエンジンを選択します。
• (オプション)[Instance class] で、データベースインスタンスクラスを選択します。DB インス
タンスクラスの詳細については、http://aws.amazon.com/rds/ を参照してください。
• [Allocated Storage] で、データベースに必要な容量を入力します。5 GB~1024 GB を割り当て
ることができます。設定すると、データベースの割り当て済みストレージを小さい容量に更新す
ることはできません。場合によっては、DB インスタンスに、データベースのサイズ以上のスト
レージを割り当てると、IO のパフォーマンスが改善することがあります。ストレージの割り当
ての詳細については、「Features」を参照してください。
• [Master Username] に、すべてのデータベース権限を持って DB インスタンスにログインするた
めに使用する名前を英数字で入力します。
API Version 2010-12-01
210
AWS Elastic Beanstalk 開発者ガイド
AWS マネジメントコンソール
• [Master Password] に、8~16 文字の印刷可能な ASCII 文字(/、\、@ は除く)を含むパスワー
ドを入力します。
• [Deletion Policy] で、[Create snapshot] を選択し、後で別の Amazon RDS データベースを作成
するために使用できるスナップショットを作成できます。環境を終了するときに DB インスタン
スを削除するには、[Delete] を選択します。[Delete] を選択した場合、関連付けられた Elastic
Beanstalk インスタンスを終了すると、DB インスタンスとその中のすべてのデータが失われま
す。デフォルトでは、Elastic Beanstalk によりスナップショットが作成されて保存されます。ス
ナップショットを使用すると、データを復元して新しい環境で使用できます。スナップショット
がないと、失われたデータを復元できません。
Note
データベースのスナップショットを保存するときに料金が発生する場合があります。詳
細については、Amazon RDS 料金表の「バックアップストレージ」セクションを参照し
てください。
• [Availability] で、次のいずれかを選択します。
• 1 つのアベイラビリティーゾーンでデータベースを設定するには、[Single Availability Zone] を
選択します。1 つのアベイラビリティーゾーンで起動されたデータベースインスタンスは、1
つの場所で障害が発生しても保護されません。
• 複数のアベイラビリティーゾーンでデータベースを設定するには、[Multiple Availability Zones]
を選択します。複数のアベイラビリティーゾーンでデータベースインスタンスを実行すること
により、データベースインスタンスコンポーネントの障害、1 つのアベイラビリティーゾーン
でのサービス障害など、予期せぬイベントが発生したときに、お客様のデータを保護すること
ができます。
3.
[Save] をクリックします。
Elastic Beanstalk で環境が更新され、Amazon RDS データベースが作成されます。更新が完了す
ると、[Configuration] ページでデータベースを確認できます。
アプリケーションの内部から環境変数を使用して DB に接続する際に、接続情報を利用してください。
アプリケーションで Amazon RDS を使用する方法については、以下のトピックを参照してください。
• Java — Amazon RDS データベースを Elastic Beanstalk 環境に追加する (p. 622)
• Node.js — Node.js で新しい Amazon RDS DB インスタンスを使用する (p. 730)
• .NET — .NET で新しい Amazon RDS DB インスタンスを使用する (p. 676)
• PHP — PHP で新しい Amazon RDS DB インスタンスを使用する (p. 755)
• Python — Python での新しい Amazon RDS DB インスタンスの使用 (p. 779)
• Ruby — Ruby で新しい Amazon RDS DB インスタンスを使用する (p. 805)
Elastic Beanstalk マネジメントコンソールを使用して、環境に関連付けられた Amazon RDS データベー
スの一部の設定を編集できます。
環境に関連付けられた Amazon RDS データベースインスタンスを編集するには
1.
[Configuration] ページの [Data Tier] で、
2.
以下のいずれかの Amazon RDS データベース設定の内容を更新します。
([RDS] 設定)をクリックします。
• [Master Password] に、8~16 文字の印刷可能な ASCII 文字(/、\、@ は除く)を含むパスワー
ドを入力します。
API Version 2010-12-01
211
AWS Elastic Beanstalk 開発者ガイド
VPC
• [Allocated Storage] で、データベースに必要な容量を入力します。5 GB~1024 GB を割り当て
ることができます。設定すると、データベースの割り当て済みストレージを小さい容量に更新す
ることはできません。場合によっては、DB インスタンスに、データベースのサイズ以上のスト
レージを割り当てると、IO のパフォーマンスが改善することがあります。ストレージの割り当
ての詳細については、「Features」を参照してください。
• (オプション)[Instance class] で、データベースインスタンスクラスを選択します。DB インス
タンスクラスの詳細については、http://aws.amazon.com/rds/ を参照してください。
• [Deletion Policy] で、[Create snapshot] を選択し、後で別の Amazon RDS データベースを作成
するために使用できるスナップショットを作成できます。環境を終了するときに DB インスタン
スを削除するには、[Delete] を選択します。[Delete] を選択した場合、関連付けられた Elastic
Beanstalk インスタンスを終了すると、DB インスタンスとその中のすべてのデータが失われま
す。デフォルトでは、Elastic Beanstalk によりスナップショットが作成されて保存されます。ス
ナップショットを使用すると、データを復元して新しい環境で使用できます。スナップショット
がないと、失われたデータを復元できません。
Note
データベースのスナップショットを保存するときに料金が発生する場合があります。詳
細については、Amazon RDS 料金表の「バックアップストレージ」セクションを参照し
てください。
• [Availability] で、次のいずれかを選択します。
• 1 つのアベイラビリティーゾーンでデータベースを設定するには、[Single Availability Zone] を
選択します。1 つのアベイラビリティーゾーンで起動されたデータベースインスタンスは、1
つの場所で障害が発生しても保護されません。
• 複数のアベイラビリティーゾーンでデータベースを設定するには、[Multiple Availability Zones]
を選択します。複数のアベイラビリティーゾーンでデータベースインスタンスを実行すること
により、データベースインスタンスコンポーネントの障害、1 つのアベイラビリティーゾーン
でのサービス障害など、予期せぬイベントが発生したときに、お客様のデータを保護すること
ができます。
3.
[Save] をクリックします。
Elastic Beanstalk によって環境が更新され、データベースインスタンスクラスを変更した場合は、
Amazon RDS データベースが置き換わります。
Elastic Beanstalk で VPC を設定する
Abstract
アマゾン ウェブ サービス(AWS)クラウド内の独自の切り離されたセクションで、Amazon Virtual Private Cloud
(VPC)と呼ばれる仮想ネットワークを定義し、Elastic Beanstalk アプリケーションにデプロイします。
Amazon Virtual Private Cloud(Amazon VPC)を使用すると、アマゾン ウェブ サービス(AWS)クラ
ウド内の独自の切り離されたセクションで仮想ネットワーク(Virtual Private Cloud(VPC)とも呼ば
れます)を定義できます。VPC を使用すると、内部ウェブアプリケーション(リクルーティングアプ
リケーションなど)、構内データベースに接続するウェブアプリケーション(VPN 接続を使用)、プ
ライベートウェブサービスバックエンドなど、ウェブアプリケーションの新しいクラスを Elastic
Beanstalk にデプロイできます。Elastic Beanstalk は、VPC 内でインスタンスなどの AWS リソースを
起動します。VPC は従来のネットワークとよく似ていますが、AWS のスケーラブルなインフラストラ
クチャを使用できるというメリットがあります。VPC は完全にコントロールできます。例えば、IP ア
ドレス範囲を選択したり、サブネットを作成したりできます。また、ルートやネットワークゲートウェ
イを設定することもできます。各サブネットでのリソースの保護には、セキュリティグループ、ネット
API Version 2010-12-01
212
AWS Elastic Beanstalk 開発者ガイド
SNS Notifications
ワークアクセスコントロールリストなど、複数のセキュリティレイヤーを使用できます。Amazon VPC
の詳細については、Amazon VPC ユーザーガイド を参照してください。
環境の VPC 設定は、環境の [Configuration] ページの [VPC] 設定を表示して確認できます。[VPC] 設定
が [Configuration] ページに表示されない場合、現在の環境が VPC にありません。これは、レガシーコ
ンテナーを使用しているか、VPC 外に Elastic Beanstalk 環境を作成したためです。レガシーではない
コンテナを移行して Elastic Beanstalk で Amazon VPC を使用する方法については、レガシーコンテナ
タイプからアプリケーションを移行する (p. 86) を参照してください。VPC を作成して VPC 内で Elastic
Beanstalk 環境を起動する方法については、Amazon VPC で Elastic Beanstalk を使用する (p. 319) を参
照してください。
Elastic Beanstalk で Amazon SNS 通知を設定する
Abstract
Simple Notification Service(Amazon SNS)を使用して、Elastic Beanstalk 環境に影響するような重要なイベント
について通知します。
[]
AWS Elastic Beanstalk 環境は、Amazon Simple Notification Service(Amazon SNS)を使用して、ア
プリケーションに影響を与える重要なイベントを通知するように設定できます。環境の作成後に E メー
ルアドレスを指定し、エラーが発生した場合や環境のヘルスステータスが変化した場合に AWS からの
メールを受信することができます。
Note
Elastic Beanstalk は、通知に Amazon Simple Notification Service を使用します。Amazon SNS
料金の詳細については、http://aws.amazon.com/sns/pricing/ を参照してください。
環境に関する通知を設定すると、Elastic Beanstalk は環境の Amazon SNS トピックを作成します。重
要な イベント (p. 811) が発生すると、Elastic Beanstalk はトピックにメッセージを送信します。Amazon
SNS は、受信したメッセージをトピックのサブスクライバ―に中継します。
重要なイベントには、環境作成のエラーや環境およびインスタンスのヘルスステータス (p. 263)のあら
ゆる変化が含まれます。Auto Scaling オペレーションに関するイベント(環境内のインスタンスの追加
や削除)やその他の情報関連のイベントは、通知をトリガしません。
Elastic Beanstalk コンソールでは、Amazon SNS トピックを作成してサブスクリプションできるよう
に、環境の作成時または作成後に E メールアドレスの入力が求められます。Elastic Beanstalk はトピッ
クのライフサイクルを管理し、環境が終了した際にトピックを削除するか、環境マネジメントコンソー
ル (p. 50)内の E メールアドレスを削除します。
aws:elasticbeanstalk:sns:topics 設定オプション名前領域は、設定ファイルで、または CLI や
SDK を使用して、Amazon SNS トピックを設定するオプションを提供します。これらの方法では、サ
ブスクライバ―のタイプやエンドポイントを設定し、サブスクライバ―を SQS キューや HTTP URL に
することができます。
API Version 2010-12-01
213
AWS Elastic Beanstalk 開発者ガイド
Elastic Beanstalk コンソールで Amazon SNSトピックを設
定する
Amazon SNS 通知は、オン/オフの切り替えのみが可能です。環境のサイズや構成に応じて、トピック
に送信される通知の頻度は高くなります。特定の状況下でのみ送信される通知については、カスタムメ
トリックスをパブリッシュするように環境を設定 (p. 276)し、Amazon CloudWatch アラームを設定 (p. 291)
してこれらのメトリックすが異常なしきい値に達したときに通知されるようにできます。
Elastic Beanstalk コンソールで Amazon SNSトピッ
クを設定する
Elastic Beanstalk コンソールでは、環境に関する SNS トピックを作成できるように、環境の作成時ま
たは作成後に E メールアドレスの入力が求められます。
環境の作成 (p. 53)時は、[Configuration Details] ページに E メールアドレスを入力します。
実行中の環境では、[Notifications] の下の環境設定メニューで E メールを入力します。
これらのいずれかの場所に E メールアドレスを入力すると、Elastic Beanstalk は環境に関する SNS ト
ピックを作成し、サブスクリプションを追加します。SNS は、サブスクライバ―のアドレスに E メール
を送信し、サブスクリプションを確認します。サブスクリプションをアクティブ化して通知を受け取る
には、確認用メールに記載されたリンクをクリックする必要があります。
aws:elasticbeanstalk:sns:topics
名前空間
aws:elasticbeanstalk:sns:topics 名前空間 (p. 130)のオプションを使用して、環境に関する SNS 通知を設
定します。これらのオプションは、設定ファイル、CLI、または SDK を使用して設定できます。
[Notification Endpoint] – 通知が送信される E メールアドレス、SQS キュー、または URL です。
このオプションを設定すると、指定したエンドポイントの SQS キューやサブスクリプションが作成さ
れます。エンドポイントが E メールアドレスでない場合は、Notification Protocol オプションも
設定する必要があります。SNS は、Notification Protocol の値に基づいて Notification
Endpoint の値を確認します。このオプションを複数回設定すると、トピックへの追加のサブスクリプ
ションが作成されます。このオプションを削除すると、トピックは削除されます。
[Notification Protocol] – Notification Endpoint に通知を送信するのに使用されるプロトコ
ルです。このオプションのデフォルトは email です。このオプションを email-json に設定して JSON
形式の E メールを送信するか、http または https に設定して JSON 形式の通知を HTTP エンドポイ
ントに投稿します。または、sqs に設定して SQS キューに通知を送信します。
API Version 2010-12-01
214
AWS Elastic Beanstalk 開発者ガイド
ドメイン名
Note
Lambda 通知は現在サポートされていません。
[Notification Topic ARN] – 環境に関する通知のエンドポイントが設定された後、SNS トピックの
ARN を取得するためにこの設定が読み取られます。このオプションは、通知に関する既存の SNS ト
ピックを使用するように設定することもできます。このオプションで環境にアタッチしたトピックは、
このオプションが変更された場合や環境が終了した場合にも削除されません。
[Notification Topic Name] – このオプションを設定して、環境の通知に使用される SNS トピック
の名前をカスタマイズします。同じ名前のトピックが既に存在する場合は、Elastic Beanstalk はそのト
ピックを環境にアタッチします。
Warning
Notification Topic Name で既存の SNSトピックが環境にアタッチされると、環境が終了
した場合またはこの設定が変更された場合に Elastic Beanstalk はトピックを削除します。
このオプションを変更すると、Notification Topic ARN も変更されます。トピックが既に環境に
アタッチされている場合、Elastic Beanstalk は古いトピックを削除し、新しいトピックとサブスクリプ
ションを作成します。
Elastic Beanstalk 環境のドメイン名
Abstract
Elastic Beanstalk アプリケーションのカスタムドメインを使用します。
お使いの環境は、elasticbeanstalk.com のサブドメインのユーザーが使用できます。環境を作成 (p. 54)
すると、アプリケーションを表す一意のサブドメインを選択できます。ユーザーをお使いの環境にルー
ティングするために、Elastic Beanstalk はお使いの環境のロードバランサーをポイントする CNAME レ
コードを登録します。環境ダッシュボード (p. 51)の CNAME の現在の値を表示することができます。
別の環境の CNAME と交換することで、お使いの環境の CNAME を変更できます。手順については、
「AWS Elastic Beanstalk を使用した Blue-Green Deployment (p. 79)」を参照してください。
ドメイン名を所有している場合は、Amazon Route 53 を使用してお使いの環境で解決できます。Amazon
Route 53 でドメイン名を購入するか、別のプロバイダから購入したものを使用します。Amazon Route 53
でドメイン名を購入するには、『Amazon Route 53 開発者ガイド』の「新しいドメインの登録」を参
照してください。
カスタムドメイン名を使用するには、まずドメインのホストゾーンを作成します。ホストゾーンには、
ドメイン名のリクエストを解決する DNS ホストを指定したネームサーバーと Start of Authority(SOA)
のレコードが含まれます。
Amazon Route 53 にホストゾーンを作成するには
1.
Amazon Route 53 マネジメントコンソールを開きます。
2.
3.
[Hosted Zones] を選択します。
[Create Hosted Zone] を選択します。
4.
[Domain Name] に、所有するドメイン名を入力します。例: example.com
5.
[Create] を選択します。
API Version 2010-12-01
215
AWS Elastic Beanstalk 開発者ガイド
ドメイン名
次に、環境にドメイン名を解決できるホストゾーンにレコードを追加します。Amazon Route 53 DNS
サーバーがカスタムドメイン名の名前リクエストを受信すると、環境内のインスタンスにリクエストを
中継する Elastic Load Balancing ロードバランサーのパブリック DNS 名に解決される elasticbeanstalk.com
のサブドメインに解決します。
Note
シングルインスタンスの環境では、elasticbeanstalk.com のサブドメインが、アプリケーショ
ンを実行しているインスタンスにアタッチされる Elastic IP アドレスに解決されます。
お使いの環境にローカル化されたサブドメインがある場合は、Amazon Route 53 エイリアスリソース
レコードセットを使用して、名前解決のコストを節約できます。ローカル化されたサブドメインを使用
した環境のドメイン名には、リージョンが含まれます。例:
my-environment.us-west-2.elasticbeanstalk.com
Amazon Route 53 にエイリアスリソースレコードセットを追加するには
1.
2.
3.
4.
5.
Amazon Route 53 マネジメントコンソールを開きます。
[Hosted Zones] を選択します。
ホストゾーンの名前を選択します。
[Create Record Set] を選択します。
[Name] には、Elastic Beanstalk アプリケーションにリダイレクトするサブドメインを入力します。
例: www
6.
7.
8.
9.
[Type] で、[A - IPv4 address] を選択します。
[Alias] で [Yes] を選択します。
[Alias Target] で、Elastic Beanstalk 環境のドメイン名を選択します。
[Save Record Set] を選択します。
お使いの環境にローカル化されたサブドメインがない場合は、CNAME レコードを作成します。
Amazon Route 53 に CNAME レコードを追加するには
1.
2.
3.
4.
Amazon Route 53 マネジメントコンソールを開きます。
[Hosted Zones] を選択します。
ホストゾーンの名前を選択します。
[Create Record Set] を選択します。
5.
[Name] には、Elastic Beanstalk アプリケーションにリダイレクトするサブドメインを入力します。
例: www
6.
7.
[Type] で、[CNAME - Canonical Name] を選択します。
[Value] で、Elastic Beanstalk 環境のドメイン名を入力します。例:
example.elasticbeanstalk.com
8.
[Save Record Set] を選択します。
DNS レコードは、24 時間あれば世界的に伝播されます。
別のプロバイダでドメイン名を登録した場合は、ドメインの構成の Amazon Route 53 ホストゾーンに
ネームサーバーを登録します。プロバイダはドメイン名の DNS リクエストを受け取ると、それを
Amazon Route 53 のネームサーバーに転送して、ドメイン名を IP アドレスに解決します。Nameservers
という設定を探すか、またはプロバイダのドキュメントを確認してください。
Amazon Route 53 コンソールに、[Hosted Zones] ページの NS レコードのホストゾーンのネームサー
バーのリストが表示されます。
API Version 2010-12-01
216
AWS Elastic Beanstalk 開発者ガイド
HTTPS を設定する
アプリケーションを実行している環境が複数ある場合は、Elastic Beanstalk コンソールを使用して 2 つ
の環境のドメイン名を交換できます。これにより、アプリケーションの新しいバージョンをスタンバイ
環境にデプロイしてそれをテストし、本番環境でドメインを交換できます。
CNAME スワップを実行するとき、ダウンタイムゼロでアプリケーションの新しいバージョンが表示さ
れます。これは、Blue-Green Deployment と呼ばれます。
環境の CNAME を交換するには
1.
2.
3.
4.
5.
Elastic Beanstalk コンソールを開きます。
[Environment Dashboard] を開く環境を選択します。
[Actions] を選択して、[Swap Environment URLs] を選択します。
他の環境を選択します。
[Swap] を選択します。
Elastic Beanstalk 環境用に HTTPS を設定する
Abstract
アプリケーションに HTTPS を使用するように Elastic Beanstalk 環境を設定して、ロードバランサーへのクライア
ント接続トラフィックが暗号化されることを確認します。
Elastic Beanstalk 環境用にカスタムドメイン名 (p. 215)を購入して設定した場合は、お客様のウェブサイ
トにユーザーがセキュアに接続できるように、HTTPS を使用できます。ドメイン名を所有していない
場合でも、開発およびテスト目的に自己署名証明書で、HTTPS を使用できます。HTTPS は、ユーザー
データやログイン情報を送信するいずれのアプリケーションにも必須です。
Elastic Beanstalk 環境で HTTPS を使用する最も簡単な方法は、お客様の環境のロードバランサーに
サーバー証明書を割り当てる (p. 221)ことです。HTTPS を終了するようにロードバランサーを設定する
と、クライアントとロードバランサーとの間の接続はセキュアになります。ロードバランサーと EC2
インスタンスとの間のバックエンド接続では HTTP が使用されるため、インスタンスの追加の設定は
必要ありません。
Note
AWS Certificate Manager (ACM) を使用すると、ドメイン名の信頼された証明書を無料で作成
できます。ACM 証明書は AWS ロードバランサーと CloudFront ディストリビューションでの
み使用できます。ACM がお客様のリージョンで使用できるかどうかを確認するには、『ACM
ユーザーガイド』を確認してください。
Elastic Beanstalk で ACM 証明書を使用するには、「設定ファイルを使用したセキュアなリス
ナーの設定 (p. 221)」を参照してください。
単一インスタンスの環境でアプリケーションを実行したり、ロードバランサーの背後で EC2 インスタ
ンスまでの接続をセキュリティで保護したりする場合は、HTTPS を終了するように、インスタンス上
で実行されるプロキシサーバーを設定 (p. 222)できます。HTTPS 接続を終了するようにインスタンスを
API Version 2010-12-01
217
AWS Elastic Beanstalk 開発者ガイド
証明書を作成する
設定するには、設定ファイル (p. 147)を使用して、インスタンスで実行されるソフトウェアを変更する
ほか、セキュアな接続を許可するようにセキュリティグループを変更する必要があります。
負荷分散環境でのエンドツーエンドの HTTPS の場合、インスタンスとロードバランサーの終了を組み
合わせて (p. 247)、両方の接続を暗号化できます。デフォルトでは、HTTPS を使用するトラフィックを
転送するようにロードバランサーを設定した場合、ロードバランサーはバックエンドインスタンスに
よって提示された証明書をすべて信頼します。セキュリティを最大限に高めるには、インスタンスに
よって提示された公開証明書をロードバランサーが信頼しない場合にそのインスタンスへの接続を禁止
するポリシーを、ロードバランサーにアタッチできます。
Note
また、HTTPS トラフィックを復号化せずに中継する (p. 250)ように、ロードバランサーを設定
することもできます。この方法の欠点は、ロードバランサーがリクエストを見ることができな
いため、ルーティングを最適化したり、応答メトリックスをレポートしたりできないことで
す。
ACM がお客様のリージョンで使用できない場合は、信頼された証明書を第三者から購入できます。第
三者からの証明書はロードバランサー、バックエンドインスタンス、またはその両方で HTTPS トラ
フィックの復号化に使用できます。
開発およびテスト目的に、オープンソースのツールを使用して自分で証明書を作成して署名 (p. 218)で
きます。自己署名証明書は無料で簡単に作成できますが、公開サイトのフロントエンド復号化に使用す
ることはできません。クライアントとの HTTPS 接続に自己署名証明書を使用しようとした場合、ユー
ザーのブラウザーではウェブサイトが安全でないことを示すエラーが表示されます。ただし、自己署名
証明書を使用してバックエンド接続をセキュリティで保護しても問題ありません。
AWS CLI を使用して AWS Identity and Access Management (IAM) に第三者または自己署名証明書とプ
ライベートキーをアップロード (p. 220)できます。IAM に保存されている証明書をロードバランサーと
CloudFront ディストリビューションで使用できます。
Note
The Does it have Snakes? は、GitHub で入手できるサンプルアプリケーションであり、Tomcat
ウェブアプリケーションで HTTPS を設定する方法別に設定ファイルと手順が含まれています。
詳細については、readme ファイルと HTTPS に関する手順を参照してください。
トピック
• X509 証明書を作成し署名する (p. 218)
• IAM に証明書をアップロードする (p. 220)
• HTTPS を終了するように Elastic Beanstalk 環境のロードバランサーを設定する (p. 221)
• インスタンスで HTTPS 接続を終了するようにアプリケーションを設定する (p. 222)
• ロードバランシングされた Elastic Beanstalk 環境でエンドツーエンドの暗号化を設定する (p. 247)
• 環境のロードバランサーを TCP パススルー用に設定する (p. 250)
• 秘密キーを Amazon S3 に安全に保存する (p. 251)
X509 証明書を作成し署名する
Abstract
Elastic Beanstalk でのテストまたはバックエンド認証用に自己署名証明書を作成します。
API Version 2010-12-01
218
AWS Elastic Beanstalk 開発者ガイド
証明書を作成する
OpenSSL で、テストおよび開発用の X509 証明書を作成できます。OpenSSL は標準のオープンソース
ライブラリーで、x509 証明書の作成と署名を含む包括的な暗号関数をサポートしています。OpenSSL
の詳細については、www.openssl.org を参照してください。
コマンドラインで openssl version を実行して、OpenSSL がすでにインストールされているかどう
かを確認します。OpenSSL をインストールしていない場合は、「公開 GitHub リポジトリ」の指示を
使用してソースコードをインストールするか、または好みのパッケージマネージャを使用できます。
OpenSSL は Elastic Beanstalk の Linux イメージにもインストールされているため、簡単な代替策とし
て、EB CLI (p. 403) の eb ssh コマンドを使用して実行環境の EC2 インスタンスに接続できます。
~/eb$ eb ssh
[ec2-user@ip-255-55-55-255 ~]$ openssl version
OpenSSL 1.0.1k-fips 8 Jan 2015
証明書署名リクエスト(CSR)を作成するための RSA プライベートキーを作成する必要があります。
プライベートキーを作成するには、openssl genrsa コマンドを使用します。
[ec2-user@ip-255-55-55-255 ~]$ openssl genrsa 2048 > privatekey.pem
Generating RSA private key, 2048 bit long modulus
.................................................................................................................................+++
...............+++
e is 65537 (0x10001)
privatekey.pem
プライベートキーを保存するファイルの名前です。通常の場合、openssl genrsa コマンドは画面に
プライベートキーの内容を表示しますが、このコマンドは出力をファイルにします。 任意のファ
イル名を選択し、ファイルを後から取得できるように安全な場所に保存します。プライベートキー
をなくした場合は、証明書を使用することはできません。
CSR は、デジタルサーバー証明書を申請するために認証機関(CA)に送信するファイルです。CSR
を作成するには、openssl req コマンドを使用します。
$ openssl req -new -key privatekey.pem -out csr.pem
You are about to be asked to enter information that will be incorporated
into your certificate request.
What you are about to enter is what is called a Distinguished Name or a DN.
There are quite a few fields but you can leave some blank
For some fields there will be a default value,
If you enter '.', the field will be left blank.
要求された情報を入力して、Enter を押します。以下の表は、各フィールドの例を表示して説明したも
のです。
名前
説明
例
国名
2 文字の ISO 略称(国名コード)。
例 :US = アメリカ
州または県
あなたが所属する組織の所在地の州または県。 ワシントン
この名前を省略することはできません。
市区町村
あなたが所属する組織の所在地の市区町村。
シアトル
組織名
組織の正式名称。組織名は、省略不可です。
Example Corp
部門名
追加の部門情報は、省略可能です。
マーケティング
API Version 2010-12-01
219
AWS Elastic Beanstalk 開発者ガイド
証明書をアップロードする
名前
説明
例
共有名
ウェブサイトの完全修飾ドメイン名これは、ユー www.example.com
ザーがサイトを訪問したときに表示されるドメ
イン名と一致する必要があります。一致しない
場合は証明書エラーが表示されます。
E メールアドレス
サイト管理者の E メールアドレス
[email protected]
署名を要求する署名リクエストをサードパーティに送信するか、または開発とテスト用に自分で署名す
ることができます。自己署名証明書は、ロードバランサーと EC2 インスタンス間のバックエンド HTTPS
にも使用できます。
証明書に自己署名するには、openssl x509 コマンドを使用します。以下の例では、以前のステップ
(privatekey.pem)の秘密キーと署名リクエスト(csr.pem)を使用して、365 日間有効な
server.crt という名前の公開証明書を作成します。
$ openssl x509 -req -days 365 -in csr.pem -signkey privatekey.pem -out server.crt
Signature ok
subject=/C=us/ST=washington/L=seattle/O=example corporation/OU=market
ing/CN=www.example.com/[email protected]
Getting Private key
秘密キーと公開証明書は後で使用できるようにしておきます。署名リクエストは破棄できます。秘密
キーは必ず安全な場所に保存し、ソースコードには追加しないことをお勧めします。
IAM に証明書をアップロードする
Abstract
Elastic Beanstalk で使用する HTTPS 証明書を IAM にアップロードします。
Elastic Beanstalk 環境のロードバランサーで証明書を使用するには、AWS Identity and Access
Management (IAM) に証明書とプライベートキーをアップロードします。IAM に保存されている証明書
を Elastic Load Balancing ロードバランサーと CloudFront ディストリビューションで使用できます。
AWS コマンドラインインターフェイス (p. 402)(AWS CLI)を使用して証明書をアップロードできま
す。以下のコマンドは、https-cert.crt という名前の自己署名証明書を、private-key.pem とい
う名前のプライベートキーを使用してアップロードします。
$ aws iam upload-server-certificate --server-certificate-name elastic-beanstalkx509 --certificate-body file://https-cert.crt --private-key file://privatekey.pem
{
"ServerCertificateMetadata": {
"ServerCertificateId": "AS5YBEIONO2Q7CAIHKNGC",
"ServerCertificateName": "elastic-beanstalk-x509",
"Expiration": "2017-01-31T23:06:22Z",
"Path": "/",
"Arn": "arn:aws:iam::123456789012:server-certificate/elastic-beanstalkx509",
"UploadDate": "2016-02-01T23:10:34.167Z"
}
}
API Version 2010-12-01
220
AWS Elastic Beanstalk 開発者ガイド
ロードバランサーで HTTPS を終了する
file:// プレフィックスは、現在のディレクトリにファイルの内容をロードするように、AWS CLI に
指示します。elastic-beanstalk-x509 - IAM で証明書を呼び出すための名前を指定します。
証明機関から証明書を購入し、証明書チェーンファイルを受け取った場合は、--certificate-chain
オプションを含めることで、そのファイルもアップロードします。
$ aws iam upload-server-certificate --server-certificate-name elastic-beanstalkx509 --certificate-chain file://certificate-chain.pem --certificate-body
file://https-cert.crt --private-key file://private-key.pem
証明書の Amazon リソースネーム(ARN)をメモします。これは、HTTPS を使用するロードバラン
サー設定を更新する際に使用します。
IAM で有効な証明書の例については、「AWS Identity and Access Management Using IAM User Guide」
の証明書の例を参照してください。
HTTPS を終了するように Elastic Beanstalk 環境の
ロードバランサーを設定する
Abstract
HTTPS を終了するように Elastic Beanstalk 環境のロードバランサーを設定する
Elastic Beanstalk 環境を更新して HTTPS を使用するには、環境内でロードバランサー用の HTTPS リ
スナーを設定する必要があります。
IAM に証明書をアップロードする (p. 220)場合は、Elastic Beanstalk マネジメントコンソールを使用し
て、セキュアなリスナーを設定し、証明書を割り当てることができます。
お客様の環境のロードバランサーに証明書を割り当てるには(AWS マネジメントコンソール)
1.
2.
3.
4.
Elastic Beanstalk コンソールを開きます。
環境については「management console (p. 50)」をご覧ください。
[Configuration] を選択します。
[Network Tier] セクションで、[Load Balancing] の横にある歯車アイコンを選択します。
Note
[Network Tier] セクションが表示されない場合、お客様の環境にロードバランサー (p. 91)
がありません。
5.
[Load Balancer] セクションで、[SSL certificate ID] ドロップダウンメニューから証明書を選択しま
す。
コンソールでは現在、Amazon Certificate Manager (ACM) 証明書がサポートされていません。ACM 証
明書がある場合は、設定ファイルで aws:elb:listener (p. 208) 名前空間内のオプションを使用してリス
ナーを設定します。
設定ファイルを使用したセキュアなリスナーの設定
以下のような設定ファイル (p. 147)を使用して、ロードバランサーに対してセキュアなリスナーを設定
できます。
API Version 2010-12-01
221
AWS Elastic Beanstalk 開発者ガイド
インスタンスで HTTPS を終了する
Example .ebextensions/securelistener.config
option_settings:
aws:elb:listener:443:
SSLCertificateId: arn:aws:acm:us-east-1:1234567890123:certific
ate/####################################
ListenerProtocol: HTTPS
強調表示されたテキストを証明書の ARN に置き換えます。証明書としては、ACM で作成したものか、
AWS CLI で IAM にアップロードしたものを指定できます。
上記の例では、aws:elb:listener 名前空間内のオプションを使用して、指定した証明書によりポー
ト 443 上の HTTPS リスナーを設定しています。ロードバランサーの設定オプションの詳細について
は、「ロードバランサー設定の名前空間 (p. 208)」を参照してください。
セキュリティグループの構成
ポート 80 以外のインスタンスポートにトラフィックを転送するようにロードバランサーを設定する場
合は、ロードバランサーからのインスタンスポート上のインバウンドトラフィックを許可するルールを
セキュリティグループに追加する必要があります。カスタム VPC 内で環境を作成する場合は、Elastic
Beanstalk によってこのルールが自動的に追加されます。
このルールは、Resourcesキーを、アプリケーションの .ebextensions ディレクトリにある設定ファ
イル (p. 147)に追加することで追加できます。
以下の例の設定ファイルでは、ロードバランサーのセキュリティグループからのポート 1000 上のトラ
フィックを許可する進入ルールを AWSEBSecurityGroup セキュリティグループに追加しています。
Example .ebextensions/sg-ingressfromlb.config
Resources:
sslSecurityGroupIngress:
Type: AWS::EC2::SecurityGroupIngress
Properties:
GroupId: {"Fn::GetAtt" : ["AWSEBSecurityGroup", "GroupId"]}
IpProtocol: tcp
ToPort: 1000
FromPort: 1000
SourceSecurityGroupName: {"Fn::GetAtt" : ["AWSEBLoadBalancer" ,
"SourceSecurityGroup.GroupName"]}
インスタンスで HTTPS 接続を終了するようにアプリ
ケーションを設定する
Abstract
AWS Elastic Beanstalk は、Docker、Tomcat、Python、Node.js、PHP、または Ruby プラットフォームで実行さ
れるアプリケーションのあるシングルインスタンス環境用に HTTPS を設定します。
設定ファイル (p. 147)を使用して、アプリケーションにトラフィックを渡すプロキシサーバーを設定し、
HTTPS 接続を終了できます。これは、単一インスタンス環境で HTTPS を使用している場合、または
トラフィックを復号化しないで渡すようにロードバランサーを設定している場合に便利です。
API Version 2010-12-01
222
AWS Elastic Beanstalk 開発者ガイド
インスタンスで HTTPS を終了する
HTTPS を有効にするには、Elastic Beanstalk アプリケーションが実行されている EC2 インスタンスに
ポート 443 で受信トラフィックを許可する必要があります。このために、設定ファイルの Resources
キーを使用して、AWSEBSecurityGroup の受信ルールにポート 443 のルールを追加します。
次の例は、AWSEBSecurityGroup セキュリティグループに受信ルールを追加して、単一インスタンス
環境のセキュリティグループのすべてのトラフィック用にポート 443 を開きます。
.ebextensions/https-instance-securitygroup.config
Resources:
sslSecurityGroupIngress:
Type: AWS::EC2::SecurityGroupIngress
Properties:
GroupId: {"Fn::GetAtt" : ["AWSEBSecurityGroup", "GroupId"]}
IpProtocol: tcp
ToPort: 443
FromPort: 443
CidrIp: 0.0.0.0/0
デフォルト VPC のロードバランシング環境で、ロードバランサーからのトラフィックのみを受け入れ
るように、このポリシーを変更できます。例については、「ロードバランシングされた Elastic Beanstalk
環境でエンドツーエンドの暗号化を設定する (p. 247)」を参照してください。
プラットフォーム
• Docker を実行している EC2 インスタンスでの HTTPS の終了 (p. 223)
• Go を実行している EC2 インスタンスでの HTTPS の終了 (p. 226)
• Java SE を実行する EC2 インスタンスで HTTPS を終了する (p. 228)
• Node.js を実行している EC2 インスタンスで HTTPS を終了する (p. 230)
• PHP を実行している EC2 インスタンスでの HTTPS の終了 (p. 235)
• Python を実行している EC2 インスタンスの HTTPS を終了する (p. 237)
• Ruby を実行している EC2 インスタンスでの HTTPS の終了 (p. 240)
• Tomcat を実行している EC2 インスタンスでの HTTPS の終了 (p. 245)
Docker を実行している EC2 インスタンスでの HTTPS の終了
Abstract
HTTPS 接続を終了するように単一コンテナの Docker 環境内のインスタンスを設定する
Docker コンテナでは、設定ファイル (p. 147)を使用して HTTPS を有効にします。
次のスニペットを設定ファイルに追加して、証明書とプライベートキー資料を説明に沿って置き換え、
ソースバンドルの .ebextensions ディレクトリに保存します。設定ファイルは以下のタスクを実行
します。
• Resources キーは、環境のインスタンスによって使用されるセキュリティグループでポート 443 を
有効にします。
• files キーはインスタンスに次のファイルを作成します。
/etc/nginx/conf.d/https.conf
nginx サーバーを設定します。このファイルは、nginx サービスの開始時にロードされます。
/etc/pki/tls/certs/server.crt
インスタンスに証明書ファイルを作成します。< > と証明書のコンテンツを置き
換えます。
API Version 2010-12-01
223
AWS Elastic Beanstalk 開発者ガイド
インスタンスで HTTPS を終了する
/etc/pki/tls/certs/server.key
インスタンスにプライベートキーのファイルを作成します。< > と、証明書リ
クエストまたは自己署名証明書を作成するのに使用されたプライベートキーのコンテンツを置き
換えます。
API Version 2010-12-01
224
AWS Elastic Beanstalk 開発者ガイド
インスタンスで HTTPS を終了する
Example .ebextensions/https-instance.config
Resources:
sslSecurityGroupIngress:
Type: AWS::EC2::SecurityGroupIngress
Properties:
GroupId: {"Fn::GetAtt" : ["AWSEBSecurityGroup", "GroupId"]}
IpProtocol: tcp
ToPort: 443
FromPort: 443
CidrIp: 0.0.0.0/0
files:
/etc/nginx/conf.d/https.conf:
mode: "000644"
owner: root
group: root
content: |
# HTTPS Server
server {
listen 443;
server_name localhost;
ssl on;
ssl_certificate /etc/pki/tls/certs/server.crt;
ssl_certificate_key /etc/pki/tls/certs/server.key;
ssl_session_timeout 5m;
ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
ssl_ciphers "EECDH+AESGCM:EDH+AESGCM:AES256+EECDH:AES256+EDH";
ssl_prefer_server_ciphers on;
location / {
proxy_pass http://docker;
proxy_http_version 1.1;
proxy_set_header
proxy_set_header
proxy_set_header
proxy_set_header
Connection "";
Host $host;
X-Real-IP $remote_addr;
X-Forwarded-For $proxy_add_x_forwarded_for;
}
}
/etc/pki/tls/certs/server.crt:
mode: "000400"
owner: root
group: root
content: |
-----BEGIN CERTIFICATE----<certificate file contents>
-----END CERTIFICATE----/etc/pki/tls/certs/server.key:
mode: "000400"
owner: root
group: root
API Version 2010-12-01
225
AWS Elastic Beanstalk 開発者ガイド
インスタンスで HTTPS を終了する
content: |
-----BEGIN RSA PRIVATE KEY----<private key contents> # See note below.
-----END RSA PRIVATE KEY-----
Note
プライベートキーを含む設定ファイルがソースコントロールにコミットされないようにしてく
ださい。設定をテストして機能することを確認したら、プライベートキーを Amazon S3 に保
存して、デプロイメント中にダウンロードするように設定を変更します。手順については、
「秘密キーを Amazon S3 に安全に保存する (p. 251)」を参照してください。
Go を実行している EC2 インスタンスでの HTTPS の終了
Abstract
HTTPS 接続を終了するように Go 環境内のインスタンスを設定する
Go コンテナタイプでは、設定ファイル (p. 147)と nginx 設定ファイルで HTTPS を有効にして、nginx
サーバーが HTTPS を使用するように設定します。
次のスニペットを設定ファイルに追加して、証明書とプライベートキープレースホルダーを説明に沿っ
て置き換え、ソースバンドルの .ebextensions ディレクトリに保存します。 設定ファイルは以下の
タスクを実行します。
• Resources キーは、環境のインスタンスによって使用されるセキュリティグループでポート 443 を
有効にします。
• files キーはインスタンスに次のファイルを作成します。
/etc/pki/tls/certs/server.crt
インスタンスに証明書ファイルを作成します。< > と証明書のコンテンツを置き
換えます。
/etc/pki/tls/certs/server.key
インスタンスにプライベートキーのファイルを作成します。< > と、証明書リ
クエストまたは自己署名証明書を作成するのに使用されたプライベートキーのコンテンツを置き
換えます。
• container_commands キーは、すべての設定が完了してから nginx サーバーを再起動することで、
サーバーが nginx 設定ファイルを読み込みます。
API Version 2010-12-01
226
AWS Elastic Beanstalk 開発者ガイド
インスタンスで HTTPS を終了する
Example .ebextensions/https-instance.config
Resources:
sslSecurityGroupIngress:
Type: AWS::EC2::SecurityGroupIngress
Properties:
GroupId: {"Fn::GetAtt" : ["AWSEBSecurityGroup", "GroupId"]}
IpProtocol: tcp
ToPort: 443
FromPort: 443
CidrIp: 0.0.0.0/0
files:
/etc/pki/tls/certs/server.crt:
content: |
-----BEGIN CERTIFICATE----<certificate file contents>
-----END CERTIFICATE----/etc/pki/tls/certs/server.key:
content: |
-----BEGIN RSA PRIVATE KEY----<private key contents> # See note below.
-----END RSA PRIVATE KEY----container_commands:
01restart_nginx:
command: "service nginx restart"
Note
プライベートキーを含む設定ファイルがソースコントロールにコミットされないようにしてく
ださい。設定をテストして機能することを確認したら、プライベートキーを Amazon S3 に保
存して、デプロイメント中にダウンロードするように設定を変更します。手順については、
「秘密キーを Amazon S3 に安全に保存する (p. 251)」を参照してください。
次を ソースバンドルの .ebextensions/nginx/conf.d/ ダイレクトリ内の .conf 拡張子が付いた
ファイルに保存します(たとえば、.ebextensions/nginx/conf.d/https.conf)。 アプリケー
ションが使用するポート番号に <app_port> を置き換えます。 この例は、SSL を使用してポート番号
443 を使用するように nginx サーバーを設定しています。 Go プラットフォームの設定ファイルについ
ての詳細は、「リバースプロキシを設定する (p. 587)」を参照してください。
API Version 2010-12-01
227
AWS Elastic Beanstalk 開発者ガイド
インスタンスで HTTPS を終了する
Example .ebextensions/nginx/conf.d/https.conf
# HTTPS server
server {
listen
server_name
443;
localhost;
ssl
ssl_certificate
ssl_certificate_key
on;
/etc/pki/tls/certs/server.crt;
/etc/pki/tls/certs/server.key;
ssl_session_timeout
5m;
ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
ssl_ciphers "EECDH+AESGCM:EDH+AESGCM:AES256+EECDH:AES256+EDH";
ssl_prefer_server_ciphers
on;
location / {
proxy_pass http://localhost:<app_port>;
proxy_set_header
Connection "";
proxy_http_version 1.1;
proxy_set_header
Host
$host;
proxy_set_header
X-Real-IP
$remote_addr;
proxy_set_header
X-Forwarded-For $proxy_add_x_forwarded_for;
}
}
Java SE を実行する EC2 インスタンスで HTTPS を終了する
Abstract
Java SE 環境でインスタンスを設定して HTTPS 接続を終了します。
Java SE コンテナタイプでは、.ebextensions ファイルの設定 (p. 147)で HTTPS を有効にして、nginx
設定ファイルで HTTPS を使用する nginx サーバーを設定します。
次のスニペットを設定ファイルに追加して、証明書とプライベートキープレースホルダーを説明に沿っ
て置き換え、.ebextensions ディレクトリに保存します。設定ファイルは以下のタスクを実行しま
す。
• Resources キーは、環境のインスタンスによって使用されるセキュリティグループでポート 443 を
有効にします。
• files キーはインスタンスに次のファイルを作成します。
/etc/pki/tls/certs/server.crt
インスタンスに証明書ファイルを作成します。< > と証明書のコンテンツを置き
換えます。
/etc/pki/tls/certs/server.key
インスタンスにプライベートキーのファイルを作成します。< > と、証明書リ
クエストまたは自己署名証明書を作成するのに使用されたプライベートキーのコンテンツを置き
換えます。
• container_commands キーは、すべての設定が完了してから nginx サーバーを再起動することで、
サーバーが nginx 設定ファイルを読み込みます。
API Version 2010-12-01
228
AWS Elastic Beanstalk 開発者ガイド
インスタンスで HTTPS を終了する
Example .ebextensions/https-instance.config
Resources:
sslSecurityGroupIngress:
Type: AWS::EC2::SecurityGroupIngress
Properties:
GroupId: {"Fn::GetAtt" : ["AWSEBSecurityGroup", "GroupId"]}
IpProtocol: tcp
ToPort: 443
FromPort: 443
CidrIp: 0.0.0.0/0
files:
/etc/pki/tls/certs/server.crt:
content: |
-----BEGIN CERTIFICATE----<certificate file contents>
-----END CERTIFICATE----/etc/pki/tls/certs/server.key:
content: |
-----BEGIN RSA PRIVATE KEY----<private key contents> # See note below.
-----END RSA PRIVATE KEY----container_commands:
01restart_nginx:
command: "service nginx restart"
Note
プライベートキーを含む設定ファイルがソースコントロールにコミットされないようにしてく
ださい。設定をテストして機能することを確認したら、プライベートキーを Amazon S3 に保
存して、デプロイメント中にダウンロードするように設定を変更します。手順については、
「秘密キーを Amazon S3 に安全に保存する (p. 251)」を参照してください。
次を ソースバンドルの .ebextensions/nginx/conf.d/ ダイレクトリ内の .conf 拡張子が付いた
ファイルに保存します(たとえば、.ebextensions/nginx/conf.d/https.conf)。 アプリケー
ションが使用するポート番号に <app_port> を置き換えます。 この例は、SSL を使用してポート番号
443 を使用するように nginx サーバーを設定しています。 Java SE プラットフォームの設定について
の詳細は「リバースプロキシを設定する (p. 620)」を参照してください。
API Version 2010-12-01
229
AWS Elastic Beanstalk 開発者ガイド
インスタンスで HTTPS を終了する
Example ebextensions/nginx/conf.d/https.conf
# HTTPS server
server {
listen
server_name
443;
localhost;
ssl
ssl_certificate
ssl_certificate_key
on;
/etc/pki/tls/certs/server.crt;
/etc/pki/tls/certs/server.key;
ssl_session_timeout
5m;
ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
ssl_ciphers "EECDH+AESGCM:EDH+AESGCM:AES256+EECDH:AES256+EDH";
ssl_prefer_server_ciphers
on;
location / {
proxy_pass http://localhost:<app_port>;
proxy_set_header
Connection "";
proxy_http_version 1.1;
proxy_set_header
Host
$host;
proxy_set_header
X-Real-IP
$remote_addr;
proxy_set_header
X-Forwarded-For $proxy_add_x_forwarded_for;
}
}
Node.js を実行している EC2 インスタンスで HTTPS を終了す
る
Abstract
Node.js 環境でインスタンスを設定して、HTTPS 接続を終了します。
Node.js コンテナタイプでは、設定ファイル (p. 147)を使用して HTTPS を有効にします。
次のスニペットを設定ファイルに追加して、証明書とプライベートキー資料を説明に沿って置き換え、
ソースバンドルの .ebextensions ディレクトリに保存します。設定ファイルは以下のタスクを実行
します。
• Resources キーは、環境のインスタンスによって使用されるセキュリティグループでポート 443 を
有効にします。
• files キーはインスタンスに次のファイルを作成します。
/etc/nginx/conf.d/https.conf
nginx サーバーを設定します。このファイルは、nginx サービスの開始時にロードされます。
/etc/pki/tls/certs/server.crt
インスタンスに証明書ファイルを作成します。< > と証明書のコンテンツを置き
換えます。
/etc/pki/tls/certs/server.key
インスタンスにプライベートキーのファイルを作成します。< > と、証明書リ
クエストまたは自己署名証明書を作成するのに使用されたプライベートキーのコンテンツを置き
換えます。
Android デバイスで実行されるものなど、一部の HTTPS クライアントでは、クライアントが確実に
接続を信頼するように、中間証明書を含める必要があります。サイト証明書のすぐ上の証明書、ウェ
API Version 2010-12-01
230
AWS Elastic Beanstalk 開発者ガイド
インスタンスで HTTPS を終了する
ブサイト証明書という順序で中間証明書を連結して、バンドル全体を files キー内の設定ファイル
に追加します。
たとえば、Linux コマンドラインから次のコマンドを実行すると、複数の証明書を連結してバンドル
を作成します。
$ cat YourWebserverCert.crt FirstIntermediateCert.crt SecondIntermediate
Cert.crt > bundle.crt
API Version 2010-12-01
231
AWS Elastic Beanstalk 開発者ガイド
インスタンスで HTTPS を終了する
Example .ebextensions/https-instance.config
Resources:
sslSecurityGroupIngress:
Type: AWS::EC2::SecurityGroupIngress
Properties:
GroupId: {"Fn::GetAtt" : ["AWSEBSecurityGroup", "GroupId"]}
IpProtocol: tcp
ToPort: 443
FromPort: 443
CidrIp: 0.0.0.0/0
files:
/etc/nginx/conf.d/https.conf:
mode: "000644"
owner: root
group: root
content: |
# HTTPS server
server {
listen
server_name
443;
localhost;
ssl
ssl_certificate
ssl_certificate_key
on;
/etc/pki/tls/certs/server.crt;
/etc/pki/tls/certs/server.key;
ssl_session_timeout
5m;
ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
ssl_ciphers "EECDH+AESGCM:EDH+AESGCM:AES256+EECDH:AES256+EDH";
ssl_prefer_server_ciphers
on;
location / {
proxy_pass http://nodejs;
proxy_set_header
Connection "";
proxy_http_version 1.1;
proxy_set_header
Host
$host;
proxy_set_header
X-Real-IP
$remote_addr;
proxy_set_header
X-Forwarded-For $proxy_add_x_forwarded_for;
}
}
/etc/pki/tls/certs/server.crt:
mode: "000400"
owner: root
group: root
content: |
-----BEGIN CERTIFICATE----<certificate file contents>
-----END CERTIFICATE----/etc/pki/tls/certs/server.key:
mode: "000400"
owner: root
group: root
content: |
API Version 2010-12-01
232
AWS Elastic Beanstalk 開発者ガイド
インスタンスで HTTPS を終了する
-----BEGIN RSA PRIVATE KEY----<private key contents> # See note below.
-----END RSA PRIVATE KEY-----
Note
プライベートキーを含む設定ファイルがソースコントロールにコミットされないようにしてく
ださい。設定をテストして機能することを確認したら、プライベートキーを Amazon S3 に保
存して、デプロイメント中にダウンロードするように設定を変更します。手順については、
「秘密キーを Amazon S3 に安全に保存する (p. 251)」を参照してください。
上記の設定ファイルを使用して HTTPS を設定した後でこの HTTPS が機能しないとき、アップスト
リーム Node.js サーバーを設定するための追加の情報を含める必要がある場合があります。 次の例で
は、IP アドレス 127.0.0.1 の Node.js サーバー上にあるポート 443 にリクエストをプロキシするため
の、nginx サーバーへのアップストリームディレクティブが含まれています。
API Version 2010-12-01
233
AWS Elastic Beanstalk 開発者ガイド
インスタンスで HTTPS を終了する
Example .ebextensions/https-instance.config
Resources:
sslSecurityGroupIngress:
Type: AWS::EC2::SecurityGroupIngress
Properties:
GroupId: {"Fn::GetAtt" : ["AWSEBSecurityGroup", "GroupId"]}
IpProtocol: tcp
ToPort: 443
FromPort: 443
CidrIp: 0.0.0.0/0
files:
/etc/nginx/conf.d/https.conf:
mode: "000644"
owner: root
group: root
content: |
# HTTPS server
upstream nodejs {
server 127.0.0.1:8443;
keepalive 256;
}
server {
listen
server_name
443;
localhost;
ssl
ssl_certificate
ssl_certificate_key
on;
/etc/pki/tls/certs/server.crt;
/etc/pki/tls/certs/server.key;
ssl_session_timeout
5m;
ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
ssl_ciphers ALL:!ADH:!EXPORT56:RC4+RSA:+HIGH:+MEDIUM:+LOW:+SSLv2:+EXP;
ssl_prefer_server_ciphers
on;
location / {
proxy_pass http://nodejs;
proxy_set_header
Connection "";
proxy_http_version 1.1;
proxy_set_header
Host
$host;
proxy_set_header
X-Real-IP
$remote_addr;
proxy_set_header
X-Forwarded-For $proxy_add_x_forwarded_for;
}
}
/etc/pki/tls/certs/server.crt:
mode: "000400"
owner: root
group: root
content: |
-----BEGIN CERTIFICATE----<certificate file contents> # See note below.
-----END CERTIFICATE-----
API Version 2010-12-01
234
AWS Elastic Beanstalk 開発者ガイド
インスタンスで HTTPS を終了する
/etc/pki/tls/certs/server.key:
mode: "000400"
owner: root
group: root
content: |
-----BEGIN RSA PRIVATE KEY----<private key contents> # See note below.
-----END RSA PRIVATE KEY-----
PHP を実行している EC2 インスタンスでの HTTPS の終了
Abstract
HTTPS 接続を終了するように PHP 環境内のインスタンスを設定する
PHP コンテナタイプについては、設定ファイル (p. 147)を使用して、Apache HTTP Server が HTTPS
を使用できるようにします。
次のスニペットを設定ファイルに追加して、証明書とプライベートキー資料を説明に沿って置き換え、
ソースバンドルの .ebextensions ディレクトリに保存します。
設定ファイルは以下のタスクを実行します。
• Resources キーは、環境のインスタンスによって使用されるセキュリティグループでポート 443 を
有効にします。
• packages キーは、yum を使用して mod24_ssl をインストールします。
• files キーはインスタンスに次のファイルを作成します。
/etc/httpd/conf.d/ssl.conf
Apache サーバーを設定します。このファイルは、Apache サービスの開始時期をロードします。
/etc/pki/tls/certs/server.crt
インスタンスに証明書ファイルを作成します。< > と証明書のコンテンツを置き
換えます。
/etc/pki/tls/certs/server.key
インスタンスにプライベートキーのファイルを作成します。< > と、証明書リ
クエストまたは自己署名証明書を作成するのに使用されたプライベートキーのコンテンツを置き
換えます。
• Android デバイスで実行する HTTPS クライアントなど、一部の HTTPS クライアントについては、
中間 certificate authority (CA) バンドルを使用して Apache HTTP Server を設定し、以下をファイル
キーの HTTPS 設定ファイルに追加する必要があります。
• SSLCertificateChainFile "/etc/pki/tls/certs/gd_bundle.crt"
• 中間証明書ファイルのコンテンツ
API Version 2010-12-01
235
AWS Elastic Beanstalk 開発者ガイド
インスタンスで HTTPS を終了する
Example .ebextensions/https-instance.config
Resources:
sslSecurityGroupIngress:
Type: AWS::EC2::SecurityGroupIngress
Properties:
GroupId: {"Fn::GetAtt" : ["AWSEBSecurityGroup", "GroupId"]}
IpProtocol: tcp
ToPort: 443
FromPort: 443
CidrIp: 0.0.0.0/0
packages:
yum:
mod24_ssl : []
files:
/etc/httpd/conf.d/ssl.conf:
mode: "000644"
owner: root
group: root
content: |
LoadModule ssl_module modules/mod_ssl.so
Listen 443
<VirtualHost *:443>
<Proxy *>
Order deny,allow
Allow from all
</Proxy>
SSLEngine
SSLCertificateFile
SSLCertificateKeyFile
SSLCipherSuite
SSLProtocol
SSLHonorCipherOrder
SSLSessionTickets
on
"/etc/pki/tls/certs/server.crt"
"/etc/pki/tls/certs/server.key"
EECDH+AESGCM:EDH+AESGCM:AES256+EECDH:AES256+EDH
All -SSLv2 -SSLv3
On
Off
Header always set Strict-Transport-Security "max-age=63072000; include
Subdomains; preload"
Header always set X-Frame-Options DENY
Header always set X-Content-Type-Options nosniff
ProxyPass / http://localhost:80/ retry=0
ProxyPassReverse / http://localhost:80/
ProxyPreserveHost on
RequestHeader set X-Forwarded-Proto "https" early
LogFormat "%h (%{X-Forwarded-For}i) %l %u %t \"%r\" %>s %b \"%{Refer
er}i\" \"%{User-Agent}i\""
ErrorLog /var/log/httpd/elasticbeanstalk-error_log
TransferLog /var/log/httpd/elasticbeanstalk-access_log
</VirtualHost>
/etc/pki/tls/certs/server.crt:
mode: "000400"
owner: root
group: root
API Version 2010-12-01
236
AWS Elastic Beanstalk 開発者ガイド
インスタンスで HTTPS を終了する
content: |
-----BEGIN CERTIFICATE----<certificate file contents>
-----END CERTIFICATE----/etc/pki/tls/certs/server.key:
mode: "000400"
owner: root
group: root
content: |
-----BEGIN RSA PRIVATE KEY----<private key contents> # See note below.
-----END RSA PRIVATE KEY-----
Note
プライベートキーを含む設定ファイルがソースコントロールにコミットされないようにしてく
ださい。設定をテストして機能することを確認したら、プライベートキーを Amazon S3 に保
存して、デプロイメント中にダウンロードするように設定を変更します。手順については、
「秘密キーを Amazon S3 に安全に保存する (p. 251)」を参照してください。
Python を実行している EC2 インスタンスの HTTPS を終了す
る
Abstract
HTTPS 接続を終了するように Python 環境内のインスタンスを設定する
Web Server Gateway Interface (WSGI) で Apache HTTP Server を使用する Python コンテナタイプの
場合、設定ファイル (p. 147)を使用して、Apache HTTP Server が HTTPS を使用できるようにします。
次のスニペットを設定ファイル (p. 147)に追加して、証明書とプライベートキー資料を説明に沿って置
き換え、ソースバンドルの .ebextensions ディレクトリに保存します。設定ファイルは以下のタス
クを実行します。
• Resources キーは、環境のインスタンスによって使用されるセキュリティグループでポート 443 を
有効にします。
• packages キーは、yum を使用して mod24_ssl をインストールします。
• files キーはインスタンスに次のファイルを作成します。
/etc/httpd/conf.d/ssl.conf
Apache サーバーを設定します。このファイルは、Apache サービスの開始時にロードされます。
<Python >を、環境内の Python サイトパッケージディレクトリにそれぞれの
ディレクトリをコロン (:) で区切って置き換えます。(:)。 Python サイトパッケージのディレクト
リは環境によって異なります。
Python 2.7
• /opt/python/run/venv/lib/python2.7/site-packages
• /opt/python/run/venv/lib64/python2.7/site-packages
Python 3.4
• /opt/python/run/venv/lib/python3.4/site-packages
• /opt/python/run/venv/lib64/python3.4/site-packages
アプリケーションの要件によっては、python-path パラメータに別のディレクトリを追加する必
要があります。
API Version 2010-12-01
237
AWS Elastic Beanstalk 開発者ガイド
インスタンスで HTTPS を終了する
/etc/pki/tls/certs/server.crt
インスタンスに証明書ファイルを作成します。< > と証明書のコンテンツを置き
換えます。
/etc/pki/tls/certs/server.key
インスタンスにプライベートキーのファイルを作成します。< > と、証明書リ
クエストまたは自己署名証明書を作成するのに使用されたプライベートキーのコンテンツを置き
換えます。
• Android デバイスで実行する HTTPS クライアントなど、一部の HTTPS クライアントについては、
中間 certificate authority (CA) バンドルを使用して Apache HTTP Server を設定し、以下をファイル
キーの HTTPS 設定ファイルに追加する必要があります。
• SSLCertificateChainFile "/etc/pki/tls/certs/gd_bundle.crt"
• 中間証明書ファイルのコンテンツ
• container_commands キーは、すべての設定が完了してから httpd サービスを停止し、httpd サービ
スが新しい https.conf ファイルと証明書を使用できるようにします。
• アプリケーションの名前が application.py でない場合は、WSGIScriptAlias の値内の強調表示
されたテキストをそのアプリケーションへのローカルパスに置き換えてください。たとえば、django
アプリケーションであれば、django/wsgi.py に置き換えます。この場所は、お客様の環境用に設
定した WSGIPath オプションの値と一致する必要があります。
API Version 2010-12-01
238
AWS Elastic Beanstalk 開発者ガイド
インスタンスで HTTPS を終了する
Example .ebextensions/https-instance.config
Resources:
sslSecurityGroupIngress:
Type: AWS::EC2::SecurityGroupIngress
Properties:
GroupId: {"Fn::GetAtt" : ["AWSEBSecurityGroup", "GroupId"]}
IpProtocol: tcp
ToPort: 443
FromPort: 443
CidrIp: 0.0.0.0/0
packages:
yum:
mod24_ssl : []
files:
/etc/httpd/conf.d/ssl.conf:
mode: "000644"
owner: root
group: root
content: |
LoadModule wsgi_module modules/mod_wsgi.so
WSGIPythonHome /opt/python/run/baselinenv
WSGISocketPrefix run/wsgi
WSGIRestrictEmbedded On
Listen 443
<VirtualHost *:443>
SSLEngine on
SSLCertificateFile "/etc/pki/tls/certs/server.crt"
SSLCertificateKeyFile "/etc/pki/tls/certs/server.key"
Alias /static/ /opt/python/current/app/static/
<Directory /opt/python/current/app/static>
Order allow,deny
Allow from all
</Directory>
WSGIScriptAlias / /opt/python/current/app/application.py
<Directory /opt/python/current/app>
Require all granted
</Directory>
WSGIDaemonProcess wsgi-ssl processes=1 threads=15 display-name=%{GROUP}
\
python-path=/opt/python/current/app:<python site-packages directories>
\
home=/opt/python/current/app \
user=wsgi \
group=wsgi
WSGIProcessGroup wsgi-ssl
</VirtualHost>
/etc/pki/tls/certs/server.crt:
mode: "000400"
owner: root
API Version 2010-12-01
239
AWS Elastic Beanstalk 開発者ガイド
インスタンスで HTTPS を終了する
group: root
content: |
-----BEGIN CERTIFICATE----<certificate file contents>
-----END CERTIFICATE----/etc/pki/tls/certs/server.key:
mode: "000400"
owner: root
group: root
content: |
-----BEGIN RSA PRIVATE KEY----<private key contents> # See note below.
-----END RSA PRIVATE KEY----container_commands:
01killhttpd:
command: "killall httpd"
02waitforhttpddeath:
command: "sleep 3"
Note
プライベートキーを含む設定ファイルがソースコントロールにコミットされないようにしてく
ださい。設定をテストして機能することを確認したら、プライベートキーを Amazon S3 に保
存して、デプロイメント中にダウンロードするように設定を変更します。手順については、
「秘密キーを Amazon S3 に安全に保存する (p. 251)」を参照してください。
Ruby を実行している EC2 インスタンスでの HTTPS の終了
Abstract
HTTPS 接続を終了するように Ruby 環境内のインスタンスを設定する
Ruby コンテナタイプの場合、HTTPS を有効にする方法は使用するアプリケーションサーバーの種類
によって異なります。
トピック
• Puma を使用する Ruby 用の HTTPS を設定する (p. 240)
• Passenger を使用する Ruby 用の HTTPS を設定する (p. 243)
Puma を使用する Ruby 用の HTTPS を設定する
アプリケーションサーバーとして Puma を使用する Ruby コンテナタイプについては、設定ファイ
ル (p. 147)を使用して HTTPS を有効にします。
次のスニペットを設定ファイルに追加して、証明書とプライベートキー資料を説明に沿って置き換え、
ソースバンドルの .ebextensions ディレクトリに保存します。設定ファイルは以下のタスクを実行
します。
• Resources キーは、環境のインスタンスによって使用されるセキュリティグループでポート 443 を
有効にします。
• files キーはインスタンスに次のファイルを作成します。
/etc/nginx/conf.d/https.conf
nginx サーバーを設定します。このファイルは、nginx サービスの開始時にロードされます。
API Version 2010-12-01
240
AWS Elastic Beanstalk 開発者ガイド
インスタンスで HTTPS を終了する
/etc/pki/tls/certs/server.crt
インスタンスに証明書ファイルを作成します。< > と証明書のコンテンツを置き
換えます。
/etc/pki/tls/certs/server.key
インスタンスにプライベートキーのファイルを作成します。< > と、証明書リ
クエストまたは自己署名証明書を作成するのに使用されたプライベートキーのコンテンツを置き
換えます。
• container_commands キーは、すべての設定が完了してから nginx サーバーを再起動することで、
サーバーが新しい https.conf ファイルを使用できるようにします。
API Version 2010-12-01
241
AWS Elastic Beanstalk 開発者ガイド
インスタンスで HTTPS を終了する
Example .ebextensions/https-instance.config
Resources:
sslSecurityGroupIngress:
Type: AWS::EC2::SecurityGroupIngress
Properties:
GroupId: {"Fn::GetAtt" : ["AWSEBSecurityGroup", "GroupId"]}
IpProtocol: tcp
ToPort: 443
FromPort: 443
CidrIp: 0.0.0.0/0
files:
/etc/nginx/conf.d/https.conf:
content: |
# HTTPS server
server {
listen
server_name
443;
localhost;
ssl
ssl_certificate
ssl_certificate_key
on;
/etc/pki/tls/certs/server.crt;
/etc/pki/tls/certs/server.key;
ssl_session_timeout
5m;
ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
ssl_ciphers "EECDH+AESGCM:EDH+AESGCM:AES256+EECDH:AES256+EDH";
ssl_prefer_server_ciphers
on;
location / {
proxy_pass http://my_app;
proxy_set_header
Host
$host;
proxy_set_header
X-Forwarded-For $proxy_add_x_forwarded_for;
}
location /assets {
alias /var/app/current/public/assets;
gzip_static on;
gzip on;
expires max;
add_header Cache-Control public;
}
location /public {
alias /var/app/current/public;
gzip_static on;
gzip on;
expires max;
add_header Cache-Control public;
}
}
/etc/pki/tls/certs/server.crt:
content: |
-----BEGIN CERTIFICATE-----
API Version 2010-12-01
242
AWS Elastic Beanstalk 開発者ガイド
インスタンスで HTTPS を終了する
<certificate file contents>
-----END CERTIFICATE----/etc/pki/tls/certs/server.key:
content: |
-----BEGIN RSA PRIVATE KEY----<private key contents> # See note below.
-----END RSA PRIVATE KEY----container_commands:
01restart_nginx:
command: "service nginx restart"
Note
プライベートキーを含む設定ファイルがソースコントロールにコミットされないようにしてく
ださい。設定をテストして機能することを確認したら、プライベートキーを Amazon S3 に保
存して、デプロイメント中にダウンロードするように設定を変更します。手順については、
「秘密キーを Amazon S3 に安全に保存する (p. 251)」を参照してください。
Passenger を使用する Ruby 用の HTTPS を設定する
アプリケーションサーバーとして Passenger を使用する Ruby コンテナタイプの場合、設定ファイル
と JSON ファイルの両方を使用してHTTPS を有効にします。
Passenger を使用する Ruby 用の HTTPS を設定する方法
1.
次のスニペットを設定ファイルに追加して、証明書とプライベートキー資料を説明に沿って置き換
え、ソースバンドルの .ebextensions ディレクトリに保存します。設定ファイルは以下のタス
クを実行します。
• Resources キーは、環境のインスタンスによって使用されるセキュリティグループでポート
443 を有効にします。
• files キーはインスタンスに次のファイルを作成します。
/etc/pki/tls/certs/server.crt
インスタンスに証明書ファイルを作成します。< > と証明書のコンテンツを
置き換えます。
/etc/pki/tls/certs/server.key
インスタンスにプライベートキーのファイルを作成します。< > と、証明
書リクエストまたは自己署名証明書を作成するのに使用されたプライベートキーのコンテン
ツを置き換えます。
API Version 2010-12-01
243
AWS Elastic Beanstalk 開発者ガイド
インスタンスで HTTPS を終了する
Example Passenger を使用する Ruby 用 HTTPS を設定するための .ebextensions スニペッ
ト
Resources:
sslSecurityGroupIngress:
Type: AWS::EC2::SecurityGroupIngress
Properties:
GroupId: {"Fn::GetAtt" : ["AWSEBSecurityGroup", "GroupId"]}
IpProtocol: tcp
ToPort: 443
FromPort: 443
CidrIp: 0.0.0.0/0
files:
/etc/pki/tls/certs/server.crt:
content: |
-----BEGIN CERTIFICATE----<certificate file contents>
-----END CERTIFICATE----/etc/pki/tls/certs/server.key:
content: |
-----BEGIN RSA PRIVATE KEY----<private key contents> # See note below.
-----END RSA PRIVATE KEY-----
Note
プライベートキーを含む設定ファイルがソースコントロールにコミットされないようにし
てください。設定をテストして機能することを確認したら、プライベートキーを Amazon
S3 に保存して、デプロイメント中にダウンロードするように設定を変更します。手順に
ついては、「秘密キーを Amazon S3 に安全に保存する (p. 251)」を参照してください。
2.
テキストファイルを作成して、ファイルに次の JSON を追加します。作成したファイルを、
passenger-standalone.json という名前でソースバンドルのルートディレクトリに保存しま
す。この JSON ファイルは、Passenger が HTTPS を使用するように設定します。
Important
この JSON ファイルには、バイト順マーク(BOM)が含まれてはいけません。BOM が含
まれていると、Passenger JSON ライブラリはファイルを正しく読み取れず、Passenger
サービスは開始されません。
Example Passenger を使用する Ruby 用 SSL を設定するための JSON ファイルのスニペッ
ト
{
"ssl" : true,
"ssl_port" : 443,
"ssl_certificate" : "/etc/pki/tls/certs/server.crt",
"ssl_certificate_key" : "/etc/pki/tls/certs/server.key"
}
API Version 2010-12-01
244
AWS Elastic Beanstalk 開発者ガイド
インスタンスで HTTPS を終了する
Tomcat を実行している EC2 インスタンスでの HTTPS の終了
Abstract
HTTPS 接続を終了するように Tomcat 環境内のインスタンスを設定する
Tomcat コンテナタイプでは、設定ファイル (p. 147)を使用して、Tomcat 用のリバースプロキシとして
機能する際に Apache HTTP サーバーが HTTPS を使用できるようにします。
次のスニペットを設定ファイルに追加して、証明書とプライベートキー資料を説明に沿って置き換え、
ソースバンドルの .ebextensions ディレクトリに保存します。設定ファイルは以下のタスクを実行
します。
• Resources キーは、環境のインスタンスによって使用されるセキュリティグループでポート 443 を
有効にします。
• packages キーは、yum を使用して mod_ssl をインストールします。
• files キーはインスタンスに次のファイルを作成します。
/etc/httpd/conf.d/ssl.conf
Apache サーバーを設定します。これは Apache サービスの開始時にロードされます。
/etc/pki/tls/certs/server.crt
インスタンスに証明書ファイルを作成します。< > と証明書のコンテンツを置き
換えます。
/etc/pki/tls/certs/server.key
インスタンスにプライベートキーのファイルを作成します。< > と、証明書リ
クエストまたは自己署名証明書を作成するのに使用されたプライベートキーのコンテンツを置き
換えます。
• Android デバイスで実行する HTTPS クライアントなど、一部の HTTPS クライアントについては、
中間 certificate authority (CA) バンドルを使用して Apache HTTP Server を設定し、以下を SSL 設定
ファイルに追加する必要があります。
• files キーの場合、SSLCertificateChainFile "/etc/pki/tls/certs/gd_bundle.crt"
• files キーの場合、中間証明書ファイルのコンテンツ
• services キーのファイルリストの場合、中間証明書ファイルへのパス
• container_commands キーは、すべての設定が完了してから httpd サービスを停止し、httpd サービ
スが新しい https.conf ファイルと証明書を使用できるようにします。
API Version 2010-12-01
245
AWS Elastic Beanstalk 開発者ガイド
インスタンスで HTTPS を終了する
Example .ebextensions/https-instance.config
Resources:
sslSecurityGroupIngress:
Type: AWS::EC2::SecurityGroupIngress
Properties:
GroupId: {"Fn::GetAtt" : ["AWSEBSecurityGroup", "GroupId"]}
IpProtocol: tcp
ToPort: 443
FromPort: 443
CidrIp: 0.0.0.0/0
packages:
yum:
mod_ssl : []
files:
/etc/httpd/conf.d/ssl.conf:
mode: "000644"
owner: root
group: root
content: |
LoadModule ssl_module modules/mod_ssl.so
Listen 443
<VirtualHost *:443>
<Proxy *>
Order deny,allow
Allow from all
</Proxy>
SSLEngine
SSLCertificateFile
SSLCertificateKeyFile
SSLCipherSuite
SSLProtocol
SSLHonorCipherOrder
on
"/etc/pki/tls/certs/server.crt"
"/etc/pki/tls/certs/server.key"
EECDH+AESGCM:EDH+AESGCM:AES256+EECDH:AES256+EDH
All -SSLv2 -SSLv3
On
Header always set Strict-Transport-Security "max-age=63072000; include
Subdomains; preload"
Header always set X-Frame-Options DENY
Header always set X-Content-Type-Options nosniff
ProxyPass / http://localhost:8080/ retry=0
ProxyPassReverse / http://localhost:8080/
ProxyPreserveHost on
LogFormat "%h (%{X-Forwarded-For}i) %l %u %t \"%r\" %>s %b \"%{Refer
er}i\" \"%{User-Agent}i\""
ErrorLog /var/log/httpd/elasticbeanstalk-error_log
TransferLog /var/log/httpd/elasticbeanstalk-access_log
</VirtualHost>
/etc/pki/tls/certs/server.crt:
mode: "000400"
owner: root
group: root
content: |
-----BEGIN CERTIFICATE-----
API Version 2010-12-01
246
AWS Elastic Beanstalk 開発者ガイド
エンドツーエンドの暗号化
<certificate file contents>
-----END CERTIFICATE----/etc/pki/tls/certs/server.key:
mode: "000400"
owner: root
group: root
content: |
-----BEGIN RSA PRIVATE KEY----<private key contents> # See note below.
-----END RSA PRIVATE KEY----container_commands:
killhttpd:
command: "killall httpd"
waitforhttpddeath:
command: "sleep 3"
Note
プライベートキーを含む設定ファイルがソースコントロールにコミットされないようにしてく
ださい。設定をテストして機能することを確認したら、プライベートキーを Amazon S3 に保
存して、デプロイメント中にダウンロードするように設定を変更します。手順については、
「秘密キーを Amazon S3 に安全に保存する (p. 251)」を参照してください。
ロードバランシングされた Elastic Beanstalk 環境で
エンドツーエンドの暗号化を設定する
Abstract
バックエンド EC2 インスタンスで使用される公開証明書を信頼するように、Elastic Beanstalk 環境のロードバラ
ンサーを設定します。
ロードバランサーとの安全な接続を終了し、バックエンドで HTTP を使用すると、アプリケーション
にとってかもしあります。AWS リソースの間のネットワークトラフィックは、同じアカウントで実行
中であっても、接続の一部ではないインスタンスがリッスンすることはできません。
ただし、厳格な外部規制を遵守するために必要なアプリケーションを開発している場合は、すべての
ネットワーク接続を確保することを要求することができます。設定ファイル (p. 147)を使用し、Elastic
Beanstalk 環境のロードバランサーをバックエンドインスタンスに接続して、これらの要件を満たすこ
とができます。
まだ追加していない場合は、最初にロードバランサーにセキュアリスナーを追加 (p. 221)します。
.ebextensions/https-lbterminate.config
option_settings:
aws:elb:listener:443:
SSLCertificateId: arn:aws:acm:us-east-1:#############:certific
ate/####################################
ListenerProtocol: HTTPS
環境にインスタンスを設定して、安全なポートでリッスンして HTTPS 接続を終了する必要もありま
す。設定はプラットフォームによって異なります。手順については、「インスタンスで HTTPS 接続を
API Version 2010-12-01
247
AWS Elastic Beanstalk 開発者ガイド
エンドツーエンドの暗号化
終了するようにアプリケーションを設定する (p. 222)」を参照してください。自己署名証明書 (p. 218)を
EC2 インスタンスで問題なく使用できます。
次に、アプリケーションが使用するセキュリティポートで HTTPS を使用してトラフィックを転送する
ように、リスナーを設定します。このポートとプロトコルを使用するようにデフォルトのヘルスチェッ
クを変更して、ロードバランサーが安全に接続できるようにすることもできます。以下の設定ファイル
が両方を実行します。
.ebextensions/https-reencrypt.config
option_settings:
aws:elb:listener:443:
InstancePort: 443
InstanceProtocol: HTTPS
aws:elasticbeanstalk:application:
Application Healthcheck URL: HTTPS:443/
以下の部分はより複雑です。トラフィックを許可するようにロードバランサーのセキュリティグループ
を変更する必要がありますが、環境を起動するのがデフォルト VPC であるかカスタム VPC であるか
によって、ロードバランサーのセキュリティグループが異なります。デフォルト VPC では、Elastic
Load Balancing がすべてのロードバランサーで使用できるデフォルトのセキュリティグループを提供
します。自分で作成した VPC では、ロードバランサーが使用するセキュリティグループを Elastic
Beanstalk が作成します。
両方のシナリオをサポートするには、セキュリティグループを作成し、それを使用するように Elastic
Beanstalk に指示することができます。以下の設定ファイルは、セキュリティグループを作成してロー
ドバランサーにアタッチします。
.ebextensions/https-lbsecuritygroup.config
option_settings:
# Use the custom security group for the load balancer
aws:elb:loadbalancer:
SecurityGroups: '`{ "Ref" : "loadbalancersg" }`'
ManagedSecurityGroup: '`{ "Ref" : "loadbalancersg" }`'
Resources:
loadbalancersg:
Type: AWS::EC2::SecurityGroup
Properties:
GroupDescription: load balancer security group
VpcId: vpc-########
SecurityGroupIngress:
- IpProtocol: tcp
FromPort: 443
ToPort: 443
CidrIp: 0.0.0.0/0
- IpProtocol: tcp
FromPort: 80
ToPort: 80
CidrIp: 0.0.0.0/0
SecurityGroupEgress:
- IpProtocol: tcp
FromPort: 80
ToPort: 80
CidrIp: 0.0.0.0/0
API Version 2010-12-01
248
AWS Elastic Beanstalk 開発者ガイド
エンドツーエンドの暗号化
強調表示されたテキストをデフォルトまたはカスタム VPC ID に置き換えます。上記の例には、送受信
にポート 80 を介して HTTP 接続を許可する設定が含まれています。安全な接続を許可する場合のみ、
これらのプロパティを削除できます。
最後に、ロードバランサーのセキュリティグループとインスタンスのセキュリティグループ間で、ポー
ト 443 経由の通信を許可する送受信ルールを追加します。
.ebextensions/https-backendsecurity.config
Resources:
# Add 443-inbound to instance security group (AWSEBSecurityGroup)
httpsFromLoadBalancerSG:
Type: AWS::EC2::SecurityGroupIngress
Properties:
GroupId: {"Fn::GetAtt" : ["AWSEBSecurityGroup", "GroupId"]}
IpProtocol: tcp
ToPort: 443
FromPort: 443
SourceSecurityGroupId: {"Fn::GetAtt" : ["loadbalancersg", "GroupId"]}
# Add 443-outbound to load balancer security group (loadbalancersg)
httpsToBackendInstances:
Type: AWS::EC2::SecurityGroupEgress
Properties:
GroupId: {"Fn::GetAtt" : ["loadbalancersg", "GroupId"]}
IpProtocol: tcp
ToPort: 443
FromPort: 443
DestinationSecurityGroupId: {"Fn::GetAtt" : ["AWSEBSecurityGroup",
"GroupId"]}
これをセキュリティグループの作成とは別に行うことで、循環依存を生じさせることなく、ソースおよ
び送信先のセキュリティグループを制限することができます。
上記のすべてを設定すると、ロードバランサーは HTTPS を使用してバックエンドインスタンスに安全
に接続します。ロードバランサーは、インスタンスの証明書が信頼できる認証局によって発行されたも
のであるかどうかを確認しません。また、提供される証明書をすべて受け入れます。
特定の証明書を信頼するように指示するポリシーをロードバランサーに追加することで、これを変更で
きます。以下の設定ファイルは 2 つのポリシーを作成します。1 つのポリシーは公開証明書を指定する
もので、もう 1 つはし、そのインスタンスは、ポート 443 上のインスタンスへの接続用の証明書のみ
を信頼するようにロードバランサーに指示します。
.ebextensions/https-backendauth.config
option_settings:
# Backend Encryption Policy
aws:elb:policies:backendencryption:
PublicKeyPolicyNames: backendkey
InstancePorts: 443
# Public Key Policy
aws:elb:policies:backendkey:
PublicKey: |
-----BEGIN CERTIFICATE----################################################################
################################################################
################################################################
################################################################
API Version 2010-12-01
249
AWS Elastic Beanstalk 開発者ガイド
TCP パススルー
################################################
-----END CERTIFICATE-----
強調表示されたテキストを EC2 インスタンスの公開証明書の内容に置き換えます。
環境のロードバランサーを TCP パススルー用に設定
する
Abstract
Elastic Beanstalk 環境のロードバランサーを設定して、復号化しないで HTTPS リクエストをバックエンドインス
タンスに中継することができます。
AWS Elastic Beanstalk 環境でロードバランサーに HTTPS トラフィックを複合化させたくない場合は、
リクエストをそのままバックエンドインスタンスに中継するようにセキュアリスナーを設定できます。
最初に環境の EC2 インスタンスが HTTPS を終了するように設定 (p. 222)します。単一インスタンスの
環境の設定をテストして、組み合わせにロードバランサーを追加する前に、すべてが機能していること
を確認します。
設定ファイル (p. 147)をプロジェクトに追加して、TCP パケットをそのままバックエンドインスタンス
のポート 443 に渡すように、ポート 443 のリスナーを設定します。
.ebextensions/https-lb-passthrough.config
option_settings:
aws:elb:listener:443:
ListenerProtocol: TCP
InstancePort: 443
InstanceProtocol: TCP
デフォルトの VPC では、インスタンスのセキュリティグループにルールを追加して、ロードバランサー
から 443 への着信トラフィックを許可する必要があります。
.ebextensions/https-instance-securitygroup.config
Resources:
443inboundfromloadbalancer:
Type: AWS::EC2::SecurityGroupIngress
Properties:
GroupId: {"Fn::GetAtt" : ["AWSEBSecurityGroup", "GroupId"]}
IpProtocol: tcp
ToPort: 443
FromPort: 443
SourceSecurityGroupName: { "Fn::GetAtt": ["AWSEBLoadBalancer",
"SourceSecurityGroup.GroupName"] }
カスタム VPC では、Elastic Beanstalk がセキュリティグループ設定を更新します。
API Version 2010-12-01
250
AWS Elastic Beanstalk 開発者ガイド
キーを安全に保存する
秘密キーを Amazon S3 に安全に保存する
Abstract
Amazon S3 にセキュアにプライベートキーを保存し、デプロイ時に Elastic Beanstalk 環境の EC2 インスタンスに
ダウンロードします。
パブリック証明書の署名に使用するプライベートキーはプライベートであるため、ソースコードにコ
ミットしないでください。プライベートキーファイルを Amazon S3 にアップロードした後にアプリ
ケーションのデプロイ時に Amazon S3 からダウンロードするように Elastic Beanstalk を設定すること
で、設定ファイルにプライベートキーが保存されるのを回避できます。
以下の例で示している設定ファイル (p. 147)の Resources (p. 167) と files (p. 153) のセクションでは、
Amazon S3 バケットからプライベートキーファイルをダウンロードしています。
Example .ebextensions/privatekey.config
Resources:
AWSEBAutoScalingGroup:
Metadata:
AWS::CloudFormation::Authentication:
S3Auth:
type: "s3"
buckets: ["elasticbeanstalk-us-west-2-123456789012"]
roleName:
"Fn::GetOptionSetting":
Namespace: "aws:asg:launchconfiguration"
OptionName: "IamInstanceProfile"
DefaultValue: "aws-elasticbeanstalk-ec2-role"
files:
# Private key
/etc/pki/tls/certs/server.key:
mode: "000400"
owner: root
group: root
authentication: "S3Auth"
source: https://s3-us-west-2.amazonaws.com/elasticbeanstalk-us-west-2123456789012/server.key
例に使用しているバケット名と URL は独自のものに置き換えてください。このファイルの最初のエン
トリは、環境の Auto Scaling グループのメタデータに S3Auth という名前の認証方法を追加します。
お客様の環境用にカスタムインスタンスプロファイル (p. 21)を設定している場合はそのプロファイル
が使用されますが、設定していない場合は aws-elasticbeanstalk-ec2-role のデフォルト値が適
用されます。
2 番目のエントリは、S3Auth 認証方法を使用して、指定された URL からプライベートキーをダウン
ロードし、/etc/pki/tls/certs/server.key に保存します。プロキシサーバーは、この場所から
プライベートキーを読み取って、インスタンスで HTTPS 接続を終了 (p. 222)できます。
カスタム Amazon マシンイメージ(AMI)の作成
Abstract
プロビジョニングの速度を向上させ、低レベルのコンポーネントをカスタマイズするために、カスタム AMI を作成
します。
API Version 2010-12-01
251
AWS Elastic Beanstalk 開発者ガイド
カスタム イメージ
AWS Elastic Beanstalk 環境を作成すると、Amazon マシンイメージ(AMI)を指定して、プラット
フォーム設定のソリューションスタックに含まれる標準 Elastic Beanstalk AMI の代わりに使用できま
す。カスタム AMI では、標準 AMI に含まれていない多数のソフトウェアをインストールする必要があ
る場合、インスタンスがユーザーの環境で起動されていればプロビジョニング時間が向上します。
.ebextensions (p. 100) を使用すると、環境を迅速かつ一貫して設定およびカスタマイズするの役立ちま
す。ただし、設定を適用すると、環境の作成および更新時に時間がかかるようになることがありま
す。.ebextensions で多数のサーバーの設定をする場合は、必要なソフトウェアのインストールおよ
び設定が済んでいるカスタム AMI を作成することによって、その時間を短縮できます。
.ebextensions では実装が困難であったり適用に時間がかかったりする低レベルのコンポーネント
(Linux カーネルなど)に対する変更を、カスタム AMI で行うこともできます。カスタム AMI を作成
するには、Elastic Beanstalk プラットフォーム AMI を Amazon EC2 で起動し、ニーズに合わせてソフ
トウェアと設定をカスタマイズした後、インスタンスを停止して、そこから AMI を保存します。
ベースの Elastic Beanstalk AMI を特定する
1.
2.
3.
4.
5.
6.
7.
Elastic Beanstalk コンソールを開きます。
アプリケーションを実行する Elastic Beanstalk 環境を作成します。Elastic Beanstalk アプリケー
ションを起動する方法の詳細については、「Elastic Beanstalk の使用開始 (p. 4)」を参照してくだ
さい。
環境については「management console (p. 50)」をご覧ください。
[Configuration] を選択します
[Instances] の隣で、 をクリックします。
[Custom AMI ID] ボックスの値をメモします。
環境を終了します。
[Custom AMI ID(カスタム AMI ID)] フィールドの値は、環境を作成したプラットフォームバージョ
ン、EC2 インスタンスアーキテクチャおよびリージョン別のストック Elastic Beanstalk AMI です。複
数のプラットフォーム、アーキテクチャまたはリージョン向けの AMI を作成する必要がある場合、こ
のプロセスを繰り返して各組み合わせの正しいベース AMI を特定します。
Note
Elastic Beanstalk 環境で起動しているインスタンスから AMI を作成しないでください。プロビ
ジョニング時に Elastic Beanstalk がインスタンスに変更を加えるため、保存された AMI で問
題が発生する可能性があります。Elastic Beanstalk 環境のインスタンスからイメージを保存す
ると、そのインスタンスにデプロイされたアプリケーションのバージョンも組み込まれます。
Elastic Beanstalk が発行したものではないコミュニティ AMI からカスタム AMI を作成することもでき
ます。開始点として最新の Amazon Linux AMI を使用できます。非 Beanstalk Linux AMI を使用する環
境を起動する場合、Elastic Beanstalk はプラットフォームソフトウェア(言語、フレームワーク、プロ
キシサーバーなど)および追加のコンポーネントのインストールを試みて、拡張ヘルスレポート (p. 263)
などの機能をサポートします。
Note
Elastic Beanstalk Windows Server プラットフォームでは非 Beanstalk AMI はサポートされてい
ません。
非 Beanstalk AMI を Elastic Beanstalk で使用できますが、Elastic Beanstalk が不足しているコンポーネ
ントをインストールするためにプロビジョニング時間が増大することで、そもそもカスタム AMI を作
成する利点が少なくなったり、まったくなくなったりします。他の Linux ディストリビューションは一
部のトラブルシューティングについては動作しますが、公式にはサポートされていません。アプリケー
ションに特定の Linux ディストリビューションが必要な場合は、1 つの選択肢は Docker イメージを作
API Version 2010-12-01
252
AWS Elastic Beanstalk 開発者ガイド
カスタム イメージ
成し、それを Elastic Beanstalk の単一のコンテナ Docker プラットフォーム (p. 553)またはマルチコンテ
ナ Docker プラットフォーム (p. 559)で実行することです。
カスタム AMI を作成するには
カスタム AMI を使用するには、Elastic Beanstalk 環境マネジメントコンソールの [Configuration] ペー
ジで、[Instances] セクションの [Custom AMI ID] にカスタム AMI ID を指定します。既存のインスタン
スは、新しいカスタムの AMI から起動された新しいインスタンスで置き換えられます。
1.
https://console.aws.amazon.com/ec2/)にある Amazon EC2 コンソールを開きます。
2.
3.
[インスタンスの作成] を選択します。
[Community AMIs] を選択します。
4.
カスタム AMI を作成するためにカスタマイズする Elastic Beanstalk またはコミュニティ AMI の
AMI ID を入力して、Enter キーを押します。
[Select] で AMI を選択します。
インスタンスタイプを選択してから、[Next: Configure Instance Details] を選択します。
5.
6.
7.
(Linux プラットフォーム)[ Advanced Details] セクションを展開し、[User Data] フィールドに以
下のテキストを貼り付けます。
#cloud-config
repo_releasever: repository version number
repo_upgrade: none
リポジトリバージョン番号は、AMI 名の年と月のバージョンです。たとえば、2015 年 3 月リリー
スの Amazon Linux に基づく AMI のリポジトリバージョン番号は 2015.03 です。Elastic Beanstalk
イメージの場合、この値は、プラットフォーム設定 (p. 25)のソリューションスタック名に示され
る日付と同じです。
Note
これらの設定により lock-on-launch 機能が設定されます。この機能を利用すると、AMI の
起動時には、固定された特定のリポジトリのバージョンが AMI で使用され、セキュリティ
更新の自動インストールが無効になります。lock-on-launch 機能およびセキュリティ更新
の自動インストールの無効化は、Elastic Beanstalk でカスタム AMI を使用するために必要
となります。
8.
ウィザードを続行して、EC2 インスタンスを起動します。プロンプトが表示されたら、次のステッ
プでそのインスタンスに接続できるように、アクセス権があるキーペアを選択します。
9. SSH または RDP でインスタンスに接続します。
10. 必要なカスタマイズを行います。
11. (Windows プラットフォーム)EC2Config サービス Sysprep を実行します。EC2Config の詳細に
ついては、「Configuring a Windows Instance Using the EC2Config Service」を参照してください。
AWS マネジメントコンソールから取得できるランダムなパスワードを生成するように Sysprep が
設定されていることを確認します。
12. (Tomcat プラットフォーム)Apache と Tomcat を起動します。
$
$
$
$
sudo -s
cd /etc/init.d
./httpd start
./tomcat7 start
13. Amazon EC2 コンソールで、EC2 インスタンスを停止してから、[Instance Actions] メニューの
[Create Image (EBS AMI)] を選択します。
API Version 2010-12-01
253
AWS Elastic Beanstalk 開発者ガイド
環境リンク
14. AWS の追加料金が発生しないように、EC2 インスタンスを終了します。
AWS Elastic Beanstalk 環境間のリンクを作成する
Abstract
その他の AWS Elastic Beanstalk 環境へのリンクを作成してエンドポイントを取得し、接続を確立します。
アプリケーションが大きくなり、複雑化するにつれて、異なる開発性と運用のライフサイクルのコン
ポーネント別に分割することが必要になる場合があります。 これによって、それぞれのコンポーネン
トを個別に管理・スケーリングでき、さらなる俊敏性を享受できます。 この手法における課題の 1 つ
として、コンポーネント間の接続情報を共有するための要件があります。 この課題は、AWS Elastic
Beanstalk 環境リンクで解決できます。
Note
Elastic Beanstalk は現在、Multicontainer Docker を除くすべてプラットフォームの環境リンク
をサポートしています。
環境リンクを使用すると、アプリケーションのコンポーネント環境間の接続を名前を付けたリファレン
スとして指定できます。 リンクを定義する環境を作成する場合、Elastic Beanstalk はリンクと同じ名
前の環境変数を設定します。 この変数の値は、ウェブサーバーあるいはワーカー環境といったその他
のコンポーネントに接続するための使用できるエンドポイントです。
たとえば、アプリケーションが、フロントエンドによって収集された電子メールアドレスにウェルカム
メールを送付するためにその電子メールアドレスとワーカーを収集するフロントエンドである場合、お
手持ちのフロントエンドでワーカーへのリンクを作成すると、フロントエンドが自動的にワーカーのエ
ンドポイント(キュー URL)を検出するようにできます。
アプリケーションソースのルートの env.yaml 名のYAML 形式のファイルで、ほかの環境へのリンク
を 環境マニフェスト (p. 188) で定義します。 次のマニフェストはワーカーという環境へのリンクを定義
します。
~/workspace/my-app/frontend/env.yaml
AWSConfigurationTemplateVersion: 1.1.0.0
EnvironmentLinks:
"WORKERQUEUE": "worker"
上記の環境マニフェストを含むアプリケーションバージョンで環境を作成する場合、Elastic Beanstalk
は同じアプリケーションに属する worker という環境を検索します。 その環境が存在する場合、Elastic
Beanstalk は WORKERQUEUE という環境プロパティを作成します。 WORKERQUEUE の値は、Amazon
SQS キュー URL です。 フロントエンドアプリケーションは環境変数と同様にこのプロパティを読み
取ることができます。
環境リンクを使用するには、マニフェスト環境をアプリケーションソースに追加して EB CLI、AWS
CLI または SDK にアップロードします。 AWS CLI または SDKを使用する場合、
CreateApplicationVersion を呼び出す際に process フラグを設定します。
$ aws elasticbeanstalk create-application-version --process --application-name
my-app --version-label frontend-v1 --source-bundle S3Bucket="my-buck
et",S3Key="front-v1.zip"
API Version 2010-12-01
254
AWS Elastic Beanstalk 開発者ガイド
環境リンク
このオプションは、アプリケーションバージョンを作成する際に、ソースバンドルの環境マニフェスト
と設定ファイルが Elastic Beanstalk によって有効化されていることを示します。 プロジェクトディレ
クトリに環境マニフェストがある場合には、EB CLI はこのフラグを自動的に設定します。
いずれかのクライアントを使用して環境を通常通りに作成します。環境を終了する必要があるときは、
リンクがある環境を最初に終了します。 環境がその他の環境によってにリンクされている場合、Elastic
Beanstalk はリンクされた環境の終了を防ぎます。 この保護を無効にするには、ForceTerminate フ
ラグを使用します。 このパラメータは、AWS CLI で --force-terminate として利用できます。
$ aws elasticbeanstalk terminate-environment --force-terminate --environmentname worker
API Version 2010-12-01
255
AWS Elastic Beanstalk 開発者ガイド
モニタリングコンソール
環境のモニタリング
Abstract
アプリケーションに関する統計情報を監視し、しきい値を超過するとトリガされるアラートを作成する Elastic
Beanstalk 機能を使用して、アプリケーションの応答性と状態を監視します。
本番ウェブサイトを実行する場合、アプリケーションが利用可能であり、リクエストに応答するか確認
することが重要です。アプリケーションの応答性をモニタリングできるよう、Elastic Beanstalk は、ア
プリケーションに関する統計をモニタリングし、しきい値を超えた場合にトリガするアラートを作成で
きる機能を備えています。
トピック
• AWS マネジメントコンソールでの環境の状態のモニタリング (p. 256)
• 基本ヘルスレポート (p. 259)
• 拡張ヘルスレポートとモニタリング (p. 263)
• アラームの管理 (p. 291)
• イベントの表示 (p. 293)
• サーバーインスタンスの一覧表示と接続 (p. 294)
• インスタンスログ (p. 296)
AWS マネジメントコンソールでの環境の状態のモ
ニタリング
Abstract
Elastic Beanstalk マネジメントコンソールを使用して、環境とインスタンスの正常性をモニタリングします。
http://console.aws.amazon.com/elasticbeanstalk で AWS マネジメントコンソール を使用して、アプリ
ケーションの動作情報にアクセスすることができます。
AWS マネジメントコンソール は、環境の状態とアプリケーションの状態を一目で分かるように表示し
ます。Elastic Beanstalk コンソールアプリケーションページで、それぞれの環境の環境ステータスが色
分けにより示されます。
API Version 2010-12-01
256
AWS Elastic Beanstalk 開発者ガイド
概要
AWS マネジメントコンソールで環境を監視するには
1.
環境に対応する環境マネジメントコンソール (p. 50)に移動します。
2.
左ナビゲーションで [Monitoring] をクリックします。
[Monitoring] ページには、環境全体の統計(CPU 使用率や平均レイテンシー)が表示されます。全
体の統計に加え、時間ごとのリソース使用率を示すモニタリンググラフも表示されます。グラフの
任意の場所をクリックして、詳細情報を表示できます。
Note
デフォルトでは、基本的な CloudWatch メトリックスだけが有効化されていて、5 分周期
でデータを返します。環境の設定を変更することで、より粒度の高い、1 分単位の
CloudWatch メトリックスを有効化することもできます。
概要
環境の状態の概要は、画面の上部近くに表示されます。
概要パネルには、環境内で過去 1 時間に発生したアクティビティに関するカスタマイズ可能な概要が示
されます。[Time Range] ドロップダウンをクリックし、別の範囲を選択することで、5 分から 1 日の
期間に関する情報を表示できます。
モニタリンググラフ
概要の下には、環境全体の状態に関する過去 12 時間のデータを示すグラフがあります。[Time Range]
ドロップダウンをクリックし、別の期間を選択することで、3 時間から 2 週間の期間に関する情報を表
示できます。
API Version 2010-12-01
257
AWS Elastic Beanstalk 開発者ガイド
モニタリングコンソールのカスタマイズ
モニタリングコンソールのカスタマイズ
いずれかのモニタリングセクションの横にある [Edit] をクリックして、表示する情報をカスタマイズし
ます。
既存の項目を削除するには、右上隅にある
をクリックします。
概要またはグラフを追加するには
1.
2.
[Overview] セクションまたは [Monitoring] セクションで [Edit] をクリックします。
[Resource] を選択します。サポートされているリソースは、環境の Auto Scaling グループ、Elastic
Load Balancing ロードバランサー、および環境そのものです。
API Version 2010-12-01
258
AWS Elastic Beanstalk 開発者ガイド
基本ヘルスレポート
3.
4.
5.
6.
7.
リソースの [CloudWatch metric] を選択します。サポートされているメトリックスの詳細な一覧に
ついては、「環境の Amazon CloudWatch カスタムメトリックスのパブリッシュ (p. 276)」を参照
してください。
[Statistic] を選択します。デフォルトの統計情報は、選択された CloudWatch メトリックスに関す
る、期間(概要の場合)またはプロットポイント間(グラフの場合)の平均値です。
[Description] を入力します。これは、モニタリングコンソールに表示される項目のラベルになりま
す。
[Add] をクリックします。
これまでの手順を繰り返して項目を追加するか、[Save] をクリックしてパネルの変更を終了しま
す。
各リソースのメトリックスやディメンションについては、「Amazon CloudWatch 開発者ガイド」の
「Amazon CloudWatch Metrics, Namespaces, and Dimensions Reference」を参照してください。
Elastic Load Balancing および Amazon EC2 のメトリックスは、すべての環境で有効になっています。
拡張ヘルスレポートでは、モニタリングコンソールで自動的に EnvironmentHealth メトリックスが有効
になり、グラフが 1 つ追加されます。追加のメトリックスを環境設定で有効にすると、これらをモニタ
リングコンソールで使用できるようになります。
Note
追加の CloudWatch メトリックスを使用環境用に有効にした場合、レポートが開始されメト
リックスの一覧に表示されるまでに数秒かかります。この一覧を使用して、グラフと概要の統
計情報を追加することができます。
拡張ヘルスレポートで使用可能なメトリックスについては、「環境の Amazon CloudWatch カスタムメ
トリックスのパブリッシュ (p. 276)」を参照してください。
基本ヘルスレポート
Abstract
アプリケーションに関する統計情報を追跡し、しきい値を超過するとトリガされるアラートを作成する AWS Elastic
Beanstalk 機能を使用して、アプリケーションの応答性とヘルスステータスを監視します。
AWS Elastic Beanstalk は、複数のソースからの情報を使用して、対象環境が使用可能であり、インター
ネットへのリクエストを処理中であるかどうかを判断します。環境のヘルスステータスは、4 色のいず
れかで表されて、環境ダッシュボード (p. 50)に表示されます。また、DescribeEnvironments API から
も、EB CLI (p. 403) での eb status の呼び出しによっても使用できます。
バージョン 2 より前の Linux プラットフォーム設定では、ヘルスレポートシステムは基本ヘルスのみで
した。基本ヘルスレポートシステムは、負荷分散環境では Elastic Load Balancing によって、または単
一インスタンス環境では Amazon Elastic Compute Cloud によって行われるヘルスチェックに基づい
て、Elastic Beanstalk 環境内のインスタンスのヘルスステータスに関する情報を提供します。
EC2 インスタンスのヘルスチェックに加えて、Elastic Beanstalk は、対象環境内のその他のリソースの
モニタリングも行い、不足しているリソースや、誤設定のためユーザーに使用不可となったリソースを
レポートします。
対象環境内のリソースによって収集されたメトリックスは、5 分間隔で Amazon CloudWatch に発行さ
れます。これには、EC2 からのオペレーティングシステムメトリックス、Elastic Load Balancing から
のリクエストメトリックスが含まれます。環境コンソールの [Monitoring] ページ (p. 256)で、これらの
API Version 2010-12-01
259
AWS Elastic Beanstalk 開発者ガイド
ヘルスステータスの色
CloudWatch メトリックスに基づいてグラフを表示できます。基本ヘルスの場合、これらのメトリック
スは環境のヘルスステータスを判断するために使用されません。
トピック
• ヘルスステータスの色 (p. 260)
• Elastic Load Balancing ヘルスチェック (p. 260)
• 単一インスタンス環境のヘルスチェック (p. 261)
• 追加のチェック (p. 261)
• Amazon CloudWatch のメトリックス (p. 261)
• ヘルスに関するトラブルシューティング (p. 262)
ヘルスステータスの色
Elastic Beanstalk は、ウェブサーバーの環境のヘルスステータスを、そのサーバーで実行中のアプリ
ケーションによるヘルスチェックへの応答に基づいてレポートします。Elastic Beanstalk は、以下の表
に示しているように、4 色のいずれかでステータスを表します。
色
説明
Grey
環境が更新中です。
Green
環境が最新のヘルスチェックで合格になりました。環境内の少なくとも 1
つのインスタンスが使用可能であり、リクエストを受け取っています。
黄色
対象環境が 1 つ以上のヘルスチェックで失格になりました。環境へのいく
つかのリクエストが失敗しています。
赤
対象環境が 3 つ以上のヘルスチェックで失格になったか、環境のリソース
が使用不可になっています。リクエストは一貫して失敗しています。
これらの説明は、基本ヘルスレポートを使用している環境にのみ適用されます。拡張ヘルスの詳細につ
いては、「状態の色とステータス (p. 273)」を参照してください。
Elastic Load Balancing ヘルスチェック
負荷が分散されている環境では、インスタンスが正常であることを確認するために、Elastic Load
Balancing は環境内の各インスタンスに 30 秒ごとにリクエストを送信します。デフォルトでは、ロー
ドバランサーはポート 80 で TCP 接続を開くように設定されています。インスタンスが接続に応答し
た場合、そのインスタンスは正常と見なされます。
アプリケーションで既存のリソースを指定することによって、この設定をオーバーライドすることもで
きます。/health などのパスを指定した場合、ヘルスチェック URL は http:80/health に設定され
ます。ヘルスチェック URL は、常にアプリケーションによって処理されるパスに設定する必要があり
ます。アプリケーションの前にあるウェブサーバーによって処理またはキャッシュされる静的なページ
に設定すると、ヘルスチェックはアプリケーションサーバーまたはウェブコンテナで発生する問題を検
出しません。ヘルスチェック URL の変更方法については、ヘルスチェック (p. 207) を参照してくださ
い。
ヘルスチェック URL が設定されている場合、Elastic Load Balancing では、送信する GET リクエスト
で 200 OK の応答が返される必要があります。5 秒以内に応答が返されなかった場合、または他の HTTP
ステータスコードで応答が返された場合、アプリケーションはヘルスチェックで失格になります。5 回
連続してヘルスチェックで失格になった後、Elastic Load Balancing はそのインスタンスをサービスか
ら除外します。
API Version 2010-12-01
260
AWS Elastic Beanstalk 開発者ガイド
単一インスタンス環境のヘルスチェック
Elastic Load Balancing ヘルスチェックの詳細については、『Elastic Load Balancing 開発者ガイド』の
「ヘルスチェック」を参照してください。
Note
ヘルスチェック URL を設定しても、環境の Auto Scaling グループのヘルスチェック動作は変
わりません。 正常でないインスタンスはロードバランサーから削除されますが、インスタンス
置き換えの判断基準として Elastic Load Balancing ヘルスチェックを使用するように Auto Scaling
を設定していない場合、そのインスタンスは Auto Scaling によって自動的に置き換えられるこ
とはありません。Elastic Load Balancing のヘルスチェックで失格になったインスタンスを置き
換えるように Auto Scaling を設定するには、「Auto Scaling ヘルスチェックの設定 (p. 197)」を
参照してください。
単一インスタンス環境のヘルスチェック
単一インスタンス環境では、Elastic Beanstalk は、その Amazon EC2 インスタンスのステータスを監
視することで、インスタンスのヘルスステータスを判断します。HTTP ヘルスチェック URL などの
Elastic Load Balancing ヘルス設定を単一インスタンス環境で使用することはできません。
Amazon EC2 インスタンスのステータスチェックの詳細については、『Linux インスタンス用 Amazon
EC2 ユーザーガイド』の「ステータスチェックでインスタンスをモニタリングする」を参照してくだ
さい。
追加のチェック
Elastic Load Balancing ヘルスチェックに加えて、Elastic Beanstalk は、対象環境内のリソースのモニ
タリングを行い、デプロイに失敗したリソースや、誤設定されたリソース、使用不可になったリソース
が見つかった場合、そのリソースのヘルスステータスを赤色に変更します。これらのチェックでは、以
下のことが確認されます。
• 環境の Auto Scaling グループと少なくとも 1 つのインスタンスが使用可能である。
• 環境のセキュリティグループが使用可能で、ポート 80 で受信トラフィックを許可するように設定さ
れている。
• 環境 CNAME が存在し、正しいロードバランサーを指している。
• ワーカー環境において、Amazon Simple Queue Service(Amazon SQS)キューが少なくとも 3 分に
1 回ポーリングされている。
Amazon CloudWatch のメトリックス
基本ヘルスレポートでは、Elastic Beanstalk サービスは Amazon CloudWatch にメトリックスを発行し
ません。環境コンソールの [Monitoring] ページ (p. 256)でグラフの生成に使用される CloudWatch メト
リックスは、対象環境内のリソースによって発行されます。
たとえば、EC2 は対象環境の Auto Scaling グループのインスタンスについて以下のメトリックスを発
行します。
CPUUtilization
現在使用中のコンピューティングユニットのパーセンテージ。
DiskReadBytes, DiskReadOps, DiskWriteBytes, DiskWriteOps
読み取りおよび書き込みバイトの数、読み取りおよび書き込みオペレーションの数。
NetworkIn, NetworkOut
送信および受信バイトの数。
API Version 2010-12-01
261
AWS Elastic Beanstalk 開発者ガイド
ヘルスに関するトラブルシューティング
Elastic Load Balancing は対象環境のロードバランサーについて以下のメトリックスを発行します。
BackendConnectionErrors
対象環境のロードバランサーとインスタンスとの接続失敗の数。
HTTPCode_Backend_2XX, HTTPCode_Backend_4XX
対象環境内のインスタンスによって生成された成功(2XX)とクライアントエラー(4XX)の応答
コードの数。
Latency
ロードバランサーがインスタンスにリクエストを中継してから応答を受信するまでの秒数。
RequestCount
完了したリクエストの数。
これらのリストにはすべてのメトリックスが含まれているわけではありません。これらのリソースにつ
いてレポート可能なメトリックスの完全なリストについては、『Amazon CloudWatch 開発者ガイド』
の以下のトピックを参照してください。
メトリックス
名前空間
トピック
AWS::ElasticLoadBalancing::LoadBalancer
Elastic Load Balancing メトリックスおよびリソー
ス
AWS::AutoScaling::AutoScalingGroup
Amazon Elastic Compute Cloud メトリックスおよ
びリソース
AWS::SQS::Queue
Amazon SQS メトリックスおよびリソース
AWS::RDS::DBInstance
Amazon RDS のディメンションおよびメトリック
ス
ワーカー環境ヘルスメトリックス
ワーカー環境でのみ、SQS デーモンは CloudWatch に環境ヘルスのカスタムメトリックスを発行しま
す(値 1 は緑色です)。ElasticBeanstalk/SQSD 名前空間を使用してアカウントの CloudWatch ヘ
ルスメトリックスデータを確認できます。メトリックスディメンションは EnvironmentName、メト
リックス名は Health です。すべてのインスタンスが、同じ名前空間にメトリックスを公開します。
デーモンがメトリックスを発行できるようにするには、該当する権限を環境のインスタンスプロファイ
ルに付与する必要があります。詳細については、「ワーカー環境枠の IAMロール許可を付与する (p. 345)」
を参照してください。
ヘルスに関するトラブルシューティング
対象環境のヘルスステータスが赤色に変わった場合は、以下の操作を試してください。
• 最新の環境イベント (p. 811)を確認します。デプロイ、負荷、設定の問題に関する Elastic Beanstalk
からのメッセージは、多くの場合、ここに表示されています。
• ログをプル (p. 296)して、最新のログファイルエントリを表示します。ウェブサーバーのログには、
受信リクエストおよびエラーに関する情報が含まれています。
• インスタンスに接続 (p. 294)し、システムリソースをチェックします。
• アプリケーションの以前の作業バージョンにロールバック (p. 76)します。
• 最新の設定変更を元に戻すか、保存した設定 (p. 103)を復元します。
API Version 2010-12-01
262
AWS Elastic Beanstalk 開発者ガイド
拡張ヘルスレポートとモニタリング
• 新しい環境をデプロイします。正常であると表示された場合は、CNAME スワップ (p. 79)を実行し
て、新しい環境にトラフィックをルーティングし、古い環境のデバッグを続けます。
拡張ヘルスレポートとモニタリング
Abstract
アプリケーションとオペレーティングシステムのメトリックスを AWS Elastic Beanstalk の拡張ヘルスレポートで
監視します。
拡張ヘルスレポートは、環境で有効にすることができる機能の 1 つであり、これにより、AWS Elastic
Beanstalk は環境内のリソースに関する追加の情報を収集できます。Elastic Beanstalk は、収集された
情報を分析して環境全体の状態をより的確に示し、アプリケーションの使用を妨げる可能性のある問題
を特定するために役立ちます。
色で状態を示す機能が変更されたことに加え、拡張ヘルスレポートにはステータス記述子が追加されて
います。これは、環境の状態が黄色または赤色の場合に検出された問題の重大度を示します。環境の状
態に関する追加情報がある場合は、原因を示すメッセージが Elastic Beanstalk から提供されます。
更新中の正常(緑色)な環境について、原因が環境ダッシュボードに表示されています。
環境内で実行されている EC2 インスタンスに関する詳細なヘルス情報を提供するため、Elastic Beanstalk
は、拡張ヘルスをサポートする各プラットフォーム設定の Amazon マシンイメージ(AMI)にヘルス
エージェントを含めます。状態エージェントは、ウェブサーバーログとシステムメトリックスを監視し
て、Elastic Beanstalk サービスに中継します。Elastic Beanstalk は、これらのメトリックスを Elastic
Load Balancing および Auto Scaling のデータと共に分析し、環境の状態に関する全体像を提示します。
環境のリソースに関する情報の収集および提示に加えて、Elastic Beanstalk は何種類かのエラー状態に
備えて環境内のリソースを監視し、通知を提供します。これは、障害を回避し、設定の問題を解決する
ために役立ちます。
AWS マネジメントコンソールの環境ダッシュボード (p. 50)を使用するか、EB コマンドラインインター
フェイス (p. 403)(CLI)で eb health コマンドを実行することによって、ヘルスステータスをリアル
タイムで確認できます。Elastic Beanstalk によって収集された拡張ヘルスレポートのための情報を
Amazon CloudWatch にカスタムメトリックスとしてパブリッシュするように環境を設定することで、
環境とインスタンスの状態を記録し、追跡することができます。無料の EnvironmentHealth 以外の
すべてのメトリックスには、カスタムメトリックスに対する CloudWatch 料金がかかります。
拡張状態レポートは、IIS を使用する Windows Server を除くすべてのプラットフォームでサポートさ
れています。利用には、バージョン 2 以降のプラットフォーム設定 (p. 25)が必要です。リソースの監
視とメトリックスの公開を行うには、環境にインスタンスプロファイルとサービスロール (p. 263)の両
API Version 2010-12-01
263
AWS Elastic Beanstalk 開発者ガイド
拡張ヘルスレポートの有効化
方を用意する必要があります。マルチコンテナ Docker の設定は、デフォルトではウェブサーバーを含
んでいませんが、適切な形式でログを提供 (p. 283)するようにウェブサーバーを設定している場合は、
拡張ヘルスレポートで使用できます。
AWS マネジメントコンソールでバージョン 2 プラットフォーム設定を使用して初めて環境を作成する
と、デフォルトでは、必要なロールを作成するよう Elastic Beanstalk から求められ、拡張ヘルスレポー
トが有効になります。拡張ヘルスレポートの詳しいしくみについては、この後の説明を参照してくださ
い。すぐに開始するには、「AWS Elastic Beanstalk 拡張ヘルスレポートの有効化 (p. 264)」を参照して
ください。
AWS Elastic Beanstalk 拡張ヘルスレポートの有効化
Abstract
拡張ヘルスモニタリングで、AWS Elastic Beanstalk 環境のヘルス状態をより正確に把握できるようにします。
最新のプラットフォームバージョン (p. 25)で作成された新しい環境には、拡張ヘルスレポートをサポー
トする AWS Elastic Beanstalk ヘルスエージェント (p. 287)が付属しています。AWS マネジメントコン
ソール または EB CLI を使用して環境を作成する場合は、拡張ヘルスレポートがデフォルトで有効に
なっています。設定ファイル (p. 147)を使用して、アプリケーションのソースコードでヘルスレポート
の設定を変更することもできます。
拡張ヘルスレポートには、一連の標準のアクセス権限に加えて、インスタンスプロファイル (p. 21)と
サービスロール (p. 20)が必要です。Elastic Beanstalk マネジメントコンソールで環境を作成すると、
Elastic Beanstalk によって自動的に必要なロールが作成されます。最初の環境を作成する手順について
は、「Elastic Beanstalk の使用開始 (p. 4)」を参照してください。
トピック
• AWS マネジメントコンソール を使用した拡張ヘルスレポートの有効化 (p. 264)
• EB CLI での拡張ヘルスレポートの有効化 (p. 265)
• 設定ファイルを使用した拡張ヘルスレポートの有効化 (p. 266)
AWS マネジメントコンソール を使用した拡張ヘルスレポート
の有効化
AWS マネジメントコンソール を使用して実行中の環境で拡張ヘルスレポートを有効にするに
は
1.
2.
3.
4.
環境については「management console (p. 50)」をご覧ください。
[Configuration] を選択します。
[Health] パネルの [Web Tier] で
(編集)を選択します。
[Health Reporting] の [System type] で [Enhanced] を選択します。
API Version 2010-12-01
264
AWS Elastic Beanstalk 開発者ガイド
拡張ヘルスレポートの有効化
環境マネジメントコンソールのヘルスレポートオプション。
5.
[Apply] を選択します。
Elastic Beanstalk コンソールでは、バージョン 2 プラットフォーム設定で新しい環境を作成するときに
デフォルトで拡張ヘルスレポートが有効になります。環境の作成中にヘルスレポートオプションを変更
することによって、拡張ヘルスレポートを無効にすることができます。
AWS マネジメントコンソールを使用して環境を作成しているときに拡張ヘルスレポートを無
効にするは
1.
2.
3.
Elastic Beanstalk コンソールを開きます。
新しいアプリケーションを作成 (p. 39)するか、既存のアプリケーションを選択します。
環境を作成します (p. 53)。[Configuration Details] ページの [Health Reporting] で、ヘルスレポート
のタイプとして [Basic] を選択します。
EB CLI での拡張ヘルスレポートの有効化
eb create コマンドを使用して新しい環境を作成すると、EB CLI では拡張ヘルスレポートがデフォル
トで有効になり、デフォルトのインスタンスプロファイルとサービスロールが適用されます。
--service-role オプションでは異なるサービスロールを名前で指定できます。
API Version 2010-12-01
265
AWS Elastic Beanstalk 開発者ガイド
拡張ヘルスレポートの有効化
バージョン 2 プラットフォーム設定で基本ヘルスレポートが使用されている環境を実行している場合、
拡張ヘルスに切り替えるには、以下の手順を実行します。
EB CLI (p. 403) を使用して実行中の環境の拡張ヘルスレポートを有効にするには
1.
eb config コマンドを使用して、設定ファイルをデフォルトのテキストエディタで開きます。
~/project$ eb config
2.
設定セクションで、aws:elasticbeanstalk:environment 名前空間を見つけます。ServiceRole
の値が null ではなく、サービスロール (p. 20)の名前と一致していることを確認します。
aws:elasticbeanstalk:environment:
EnvironmentType: LoadBalanced
ServiceRole: aws-elasticbeanstalk-service-role
3.
aws:elasticbeanstalk:healthreporting:system: 名前空間で、SystemType の値を
enhanced に変更します。
aws:elasticbeanstalk:healthreporting:system:
SystemType: enhanced
4.
5.
設定ファイルを保存し、テキストエディタを閉じます。
EB CLI によって環境の更新が開始されて、設定の変更が適用されます。オペレーションの完了を
待つか、Ctrl+C キーを押して安全に終了します。
~/project$ eb config
Printing Status:
INFO: Environment update is starting.
INFO: Health reporting type changed to ENHANCED.
INFO: Updating environment no-role-test's configuration settings.
設定ファイルを使用した拡張ヘルスレポートの有効化
ソースバンドルに設定ファイル (p. 147)を含めることで、拡張ヘルスレポートを有効にすることができ
ます。以下の例では、拡張ヘルスレポートを有効にし、デフォルトのサービスとインスタンスプロファ
イルを環境に割り当てる、設定ファイルを示しています。
Example .ebextensions/enhanced-health.config
option_settings:
aws:elasticbeanstalk:healthreporting:system:
SystemType: enhanced
aws:autoscaling:launchconfiguration:
IamInstanceProfile: aws-elasticbeanstalk-ec2-role
aws:elasticbeanstalk:environment:
ServiceRole: aws-elasticbeanstalk-service-role
独自のインスタンスプロファイルやサービスロールを作成した場合は、強調表示されたテキストをそれ
らのロールの名前に置き換えます。
API Version 2010-12-01
266
AWS Elastic Beanstalk 開発者ガイド
ヘルスコンソール
環境管理コンソールでの拡張ヘルスモニタリング
Abstract
AWS Elastic Beanstalk マネジメントコンソールを使用して、それを構成している環境と AWS リソースについての
ヘルス情報を取得します。
拡張ヘルスレポートを有効にしている場合は、環境管理コンソール (p. 50)を使用して、ヘルス情報と
オプションを確認できます。
トピック
• 環境の概要 (p. 267)
• モニターページ (p. 268)
• 環境の状態ページ (p. 268)
環境の概要
[Dashboard] の [Overview] セクションには、環境のヘルスステータス (p. 273)と [Causes] ボタンが表示
されます。現在のヘルスステータスに関する情報を確認するには、[Causes] を選択します。
API Version 2010-12-01
267
AWS Elastic Beanstalk 開発者ガイド
ヘルスコンソール
モニターページ
コンソールの [Monitoring] ページには、拡張ヘルスレポートシステムによって生成された Amazon
CloudWatch カスタムメトリックスの統計サマリーとグラフが表示されます。このページにグラフと統
計情報を追加する手順については、「AWS マネジメントコンソールでの環境の状態のモニタリン
グ (p. 256)」を参照してください。Elastic Beanstalk 拡張ヘルスレポートによって生成されるすべてのメ
トリックスを確認するには、「環境の Amazon CloudWatch カスタムメトリックスのパブリッ
シュ (p. 276)」を参照してください。
環境の状態ページ
コンソールの [ヘルス] ページは、環境の状態を有効にした場合にのみ表示されます。 このページでは、
環境全体だけではなく、その環境のそれぞれ個別の EC2 インスタンスのヘルス状況、メトリックスと
原因が表示されます。
このページの情報には、10 秒毎に環境の最新ヘルス情報が更新されます。 このページで表示されるメ
トリックスの詳細については、「インスタンスメトリックス (p. 275)」を参照してください。
このページに表示されるインスタンスを絞り込むためには、[Filter By] を選択して、続いて 状態 (p. 273)
を選び、その状態にあるインスタンスのみを表示できます。
インスタンスが不健全な状態になった場合には、[インスタンスのアクション] を選択し、続いて [再起
動] または [終了] を選択することにより、このインスタンスを再起動、または終了することができま
す。
[詳細の非表示] を選択すると、環境の全体的なヘルス状態に関する詳細が折りたたまれます。
API Version 2010-12-01
268
AWS Elastic Beanstalk 開発者ガイド
EB CLI ヘルスコマンド
EB CLI を使用した環境ヘルスのモニタリング
Abstract
Elastic Beanstalk コマンドラインインターフェイス(EB CLI)を使用して、それを構成している環境と AWS リ
ソースについてのヘルス情報を取得します。
EB コマンドラインインターフェイス (p. 403)(CLI)は、AWS Elastic Beanstalk 環境を管理するための
コマンドラインツールの 1 つです。EB CLI では、環境の状態をリアルタイムで、現在の AWS マネジ
メントコンソールより細かくモニタリングすることもできます。
EB CLI をインストール (p. 403)し、設定 (p. 409)したら、eb create コマンドを使用して、新しい環境
を起動 (p. 413)し、それにコードをデプロイできます。AWS マネジメントコンソールで既に環境を作成
している場合は、プロジェクトフォルダ(空でも問題ありません)で eb init を実行し、プロンプト
に従うことによって、その環境に EB CLI をアタッチできます。
Important
--upgrade オプションを付けて pip install を実行し、EB CLI の最新バージョンを使用し
ていることを確認します。
$ sudo pip install --upgrade awsebcli
EB CLI の詳細なインストール手順については、「EB コマンドラインインターフェイス(CLI)
のインストール (p. 403)」を参照してください。
EB CLI を使用して対象環境のヘルスステータスを監視するには、eb init を実行して画面の指示に従
うことで、まず、ローカルのプロジェクトフォルダを設定する必要があります。詳細な手順について
は、「EB CLI の設定 (p. 409)」を参照してください。
Elastic Beanstalk で既に環境が実行されており、EB CLI を使用してその状態をモニタリングする場合
は、既存の環境を使用するために、以下の手順を実行して、それに EB CLI をアタッチします。
EB CLI を既存の環境にアタッチするには
1.
2.
コマンドラインターミナルを開き、ユーザーフォルダに移動します。
対象環境用に新しいフォルダを作成して開きます。
3.
eb init コマンドを実行し、モニタリングするアプリケーションと環境を選択します。選択した
アプリケーションを実行している環境が 1 つしかない場合、EB CLI は自動的にそれを選択するの
で、次の例に示すように、手動で環境を選択する必要はありません。
~/project$ eb init
Select an application to use
1) elastic-beanstalk-example
2) [ Create new Application ]
(default is 2): 1
Select the default environment.
You can change this later by typing "eb use [environment_name]".
1) elasticBeanstalkEx2-env
2) elasticBeanstalkExa-env
(default is 1): 1
API Version 2010-12-01
269
AWS Elastic Beanstalk 開発者ガイド
EB CLI ヘルスコマンド
EB CLI を使用して状態をモニタリングするには
トピック
1.
コマンドラインを開き、ユーザーフォルダに移動します。
2.
eb health コマンドを実行して、お客様の環境内のインスタンスのヘルスステータスを表示しま
す。この例では、5 つのインスタンスが環境内で実行されています。
~/project $ eb health
elasticBeanstalkExa-env
2015-07-08 23:13:20
WebServer
Ruby 2.1 (Puma)
total
ok
warning degraded
5
5
0
0
id
Overall
i-d581497d
i-d481497c
i-136e00c0
i-126e00c1
i-8b2cf575
id
p75
p50
Overall
i-d581497d
i-d481497c
i-136e00c0
i-126e00c1
i-8b2cf575
-
id
system% idle%
i-d581497d
0.0
99.7
i-d481497c
0.0
99.7
i-136e00c0
0.0
99.9
i-126e00c1
0.0
99.7
i-8b2cf575
0.1
99.6
status
Ok
Ok
Ok
Ok
Ok
Ok
r/sec
p10
0.0
0.0
0.0
0.0
0.0
0.0
-
Ok
severe
0
info
0
pending
0
unknown
0
p99
p90
cause
%2xx
%3xx
%4xx
%5xx
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
az
iowait%
us-east-1a
0.1
us-east-1a
0.0
us-east-1b
0.0
us-east-1b
0.1
us-east-1c
0.1
running
load 1
load 5
user%
nice%
12 mins
0.0
0.03
0.2
0.0
12 mins
0.0
0.03
0.3
0.0
12 mins
0.0
0.04
0.1
0.0
12 mins
0.01
0.04
0.2
0.0
1 hour
0.0
0.01
0.2
0.0
出力の読み取り
出力は、環境の名前、環境の総合的な状態、および現在の日付を画面の上部に表示します。
API Version 2010-12-01
270
AWS Elastic Beanstalk 開発者ガイド
EB CLI ヘルスコマンド
elasticBeanstalkExa-env
2015-07-08 23:13:20
Ok
その次の 3 行には、環境のタイプ(ここでは "WebServer")、設定(Ruby 2.1 with Puma)、および 7
つの状態にあるインスタンスの数が表示されます。
WebServer
total
5
Ruby 2.1 (Puma)
ok
warning
5
0
degraded
0
severe
0
info
0
pending
0
unknown
0
出力の残りは 3 つのセクションに分かれています。最初のセクションには、環境全体と各インスタンス
のステータスとそのステータスの原因が表示されます。以下の例は、環境内のステータスが Info であ
る 2 つのインスタンスと、デプロイが開始されたことを示す原因を示しています。
id
Overall
i-d581497d
seconds)
i-d481497c
seconds)
i-136e00c0
i-126e00c1
i-8b2cf575
status
Ok
Info
cause
Info
Performing application deployment (running for 3
Performing application deployment (running for 3
Ok
Ok
Ok
ヘルスのステータスと色の詳細については、「状態の色とステータス (p. 273)」を参照してください。
その次のセクションには、各インスタンスに関するウェブサーバーログからの情報が表示されます。こ
の例では、各インスタンスは正常にリクエストを受け取っており、エラーはありません。
id
p50
p10
Overall
0.413
0.079
i-d581497d
0.413
0.091
i-d481497c
0.305
0.062
i-136e00c0
0.524
0.104
i-126e00c1
0.344
0.197
i-8b2cf575
0.477
0.076
r/sec
%2xx
%3xx
%4xx
%5xx
p99
p90
p75
13.7
100.0
0.0
0.0
0.0
1.403
0.970
0.710
2.4
100.0
0.0
0.0
0.0
1.102*
0.865
0.601
2.7
100.0
0.0
0.0
0.0
0.842*
0.788
0.480
4.1
100.0
0.0
0.0
0.0
1.520*
1.088
0.883
2.2
100.0
0.0
0.0
0.0
1.334*
0.791
0.760
2.3
100.0
0.0
0.0
0.0
1.162*
0.867
0.698
最後のセクションには、各インスタンスのオペレーティングシステムメトリックスが表示されます。
id
system% idle%
i-d581497d
0.7
95.2
i-d481497c
0.8
95.8
i-136e00c0
az
iowait%
us-east-1a
0.5
us-east-1a
0.1
us-east-1b
running
load 1
load 5
user%
nice%
1 hour
0.06
0.05
3.5
0.0
1 hour
0.0
0.01
3.2
0.0
1 hour
0.0
0.01
3.4
0.0
API Version 2010-12-01
271
AWS Elastic Beanstalk 開発者ガイド
EB CLI ヘルスコマンド
0.7
95.8
i-126e00c1
0.7
95.9
i-8b2cf575
0.5
97.5
0.0
us-east-1b
0.1
us-east-1c
0.1
1 hour
0.06
0.04
3.2
0.0
2 hours
0.0
0.03
1.8
0.0
サーバーとオペレーティングシステムのメトリックスの詳細については、「インスタンスメトリック
ス (p. 275)」を参照してください。
インタラクティブヘルスビュー
eb health コマンドは、環境の状態のスナップショットを表示します。表示される情報が 10 秒ごと
に更新されるようにするには、--refresh オプションを使用します。
$ eb health --refresh
elasticBeanstalkExa-env
2015-07-09 22:10:04 (1 secs)
WebServer
Ruby 2.1 (Puma)
total
ok
warning degraded
5
5
0
0
id
Overall
i-bb65c145
took 26 seconds
i-ba65c144
took 25 seconds
i-f6a2d525
took 26 seconds
i-e8a2d53b
took 31 seconds
i-e81cca40
id
severe
0
info
0
pending
0
unknown
0
status
Ok
Ok
Application deployment completed 35 seconds ago and
Ok
Application deployment completed 17 seconds ago and
Ok
Application deployment completed 53 seconds ago and
Ok
Application deployment completed 32 seconds ago and
cause
Ok
r/sec
p50
p10
Overall
0.0
i-bb65c145
0.0
i-ba65c144
0.0
i-f6a2d525
0.0
i-e8a2d53b
0.0
i-e81cca40
0.0
-
id
system% idle%
i-bb65c145
0.2
98.0
i-ba65c144
2.6
90.7
i-f6a2d525
Ok
%2xx
%3xx
%4xx
%5xx
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
az
iowait%
us-east-1c
1.2
us-east-1c
2.9
us-east-1b
running
p99
p90
p75
load 1
load 5
user%
nice%
3 mins
0.33
0.16
0.6
0.0
3 mins
0.51
0.16
3.7
0.0
3 mins
0.33
0.18
0.6
0.0
API Version 2010-12-01
272
AWS Elastic Beanstalk 開発者ガイド
状態の色とステータス
0.1
99.3
i-e8a2d53b
0.0
98.5
i-e81cca40
0.0
99.6
0.0
us-east-1b
1.1
us-east-1a
0.1
3 mins
0.45
0.2
0.4
0.0
3 hours
0.0
0.01
0.3
0.0
(Commands: Help,Quit, )
この例は、最近、インスタンスを 1 個から 5 個にスケールアップした環境を示しています。スケーリ
ングオペレーションが完了し、すべてのインスタンスがヘルスチェックに合格したら、リクエストを受
け取ることができるようになります。対話モードでは、ヘルスステータスが 10 秒ごとに更新されま
す。右上隅で、タイマーが次の更新までカウントダウンされます。
左下隅で、レポートがオプションのリストを表示します。インタラクティブモードを終了するには、Q
キーを押します。 スクロールするには、矢印キーを押します。他のコマンドのリストを表示するには、
H キーを押します。
インタラクティブヘルスビューのオプション
環境の状態をインタラクティブに表示する場合、キーボードのキーを使用して、表示を調整したり、
個々のインスタンスを置換または再起動するように Elastic Beanstalk に指示したりできます。インタ
ラクティブモードでヘルスレポートを表示しているときに使用できるコマンドのリストを表示するに
は、H キーを押します。
up,down,home,end
left,right
F
X
B
<,>
-,+
P
Z
Scroll vertically
Scroll horizontally
Freeze/unfreeze data
Replace instance
Reboot instance
Move sort column left/right
Sort order descending/ascending
Save health snapshot data file
Toggle color/mono mode
Views
1
2
3
4
H
All tables/split view
Status Table
Request Summary Table
CPU%/Load Table
This help menu
状態の色とステータス
Abstract
AWS Elastic Beanstalk 拡張ヘルスレポートで使用される色と状態について説明します。
拡張ヘルスレポートは、基本ヘルスレポート (p. 259)と同様に、インスタンスと環境全体の状態を 4 色
で表します。また、拡張ヘルスレポートは、単一の単語で示される 7 つのヘルスステータスも表示しま
す。これにより、環境の状態をより的確に把握できます。
インスタンスのステータスと環境ステータス
Elastic Beanstalk が環境のヘルスチェックを実行するたびに、拡張ヘルスレポートは、使用できるすべ
てのデータ (p. 288)を分析することによって、環境内の各インスタンスの状態をチェックします。低い
API Version 2010-12-01
273
AWS Elastic Beanstalk 開発者ガイド
状態の色とステータス
レベルのチェックに合格しなければ、Elastic Beanstalk はインスタンスの状態をダウングレードしま
す。
Elastic Beanstalk は、環境全体のヘルス情報(色、ステータス、および原因)を環境マネジメントコン
ソール (p. 50)に表示します。この情報は、EB CLI でも使用できます。個々のインスタンスのヘルスス
テータスと原因のメッセージは、10 秒ごとに更新され、EB CLI (p. 403) から eb health (p. 269) を使
用してヘルスステータスを表示するときに確認できます。
Elastic Beanstalk は、インスタンスの状態の変化に基づいて環境の状態を評価しますが、環境のヘルス
ステータスをすぐに変更するわけではありません。インスタンスが 1 分間に 3 回以上ヘルスチェック
に不合格になると、Elastic Beanstalk は環境の状態をダウングレードする場合があります。環境内のイ
ンスタンスの数と特定された問題によっては、1 つのインスタンスに異常があるだけで、Elastic Beanstalk
が情報メッセージを表示する、または環境のヘルスステータスを緑色(OK)から黄色(Warning)ま
たは赤色(Degraded または Severe)に変更することがあります。
OK(緑色)
インスタンスはヘルスチェックに合格し、ヘルスエージェントは問題を報告していません。
環境内のほとんどのインスタンスがヘルスチェックに合格し、ヘルスエージェントは重大な問題を報告
していません。
インスタンスはヘルスチェックに合格し、リクエストを正常に完了しています。
例: 環境がデプロイされたばかりであり、リクエストを正常に受け取っています。5% のリクエストが
400 シリーズのエラーを返しています。各インスタンスでデプロイが正常に完了しました。
メッセージ(インスタンス): Application deployment completed 23 seconds ago and took 26 seconds。
Warning(黄色)
ヘルスエージェントが、ある程度の数のリクエストが不合格であったこと、あるいはインスタンスまた
は環境にその他の問題があることを報告しています。
インスタンスで進行中の操作に、非常に長い時間がかかっています。
例: 環境内の 1 つのインスタンスのステータスが Severe です。
メッセージ(環境): Impaired services on 1 out of 5 instances
Degraded(赤色)
ヘルスエージェントが、多数のリクエストが不合格であったこと、あるいはインスタンスまたは環境に
その他の問題があることを報告しています。
例: 環境が 5 つのインスタンスへのスケールアップを処理しています。
メッセージ(環境): 4 active instances is below Auto Scaling group minimum size 5
Severe(赤色)
ヘルスエージェントが、非常に多くのリクエストが不合格であったこと、あるいはインスタンスまたは
環境にその他の問題があることを報告しています。
例: Elastic Beanstalk はロードバランサーにアクセスしてインスタンスの状態を取得できません。
メッセージ(環境): ELB health is failing or not available for all instances. None of the instances are
sending data. Unable to assume role "arn:aws:iam::0123456789012:role/aws-elasticbeanstalk-service-role".
Verify that the role exists and is configured correctly.
API Version 2010-12-01
274
AWS Elastic Beanstalk 開発者ガイド
インスタンスメトリックス
メッセージ(インスタンス): Instance ELB health has not been available for 37 minutes. No data. Last
seen 37 minutes ago.
Info(緑色)
インスタンスで操作が進行中です。
環境内の複数のインスタンスで操作が進行中です。
例: 実行中のインスタンスに新しいアプリケーションバージョンがデプロイされています。
メッセージ(環境): Command is executing on 3 out of 5 instances
メッセージ(環境): Performing application deployment (running for 3 seconds)
Pending(灰色)
コマンドタイムアウト (p. 289)の時間内でインスタンスでの操作が進行中です。
例: 環境を最近作成したばかりであり、インスタンスのブートストラップが行われています。
メッセージ: Performing initialization (running for 12 seconds)
Unknown(灰色)
Elastic Beanstalk とヘルスエージェントが、インスタンスのデータの量が不足していることを報告して
います。
例: データを受け取っていません。
インスタンスメトリックス
Abstract
お客様の AWS Elastic Beanstalk 環境内のインスタンスによって出力されるメトリックスについて説明します。
インスタンスメトリックスは、環境にあるインスタンスの健全性に関する情報を提供します。 AWS
Elastic Beanstalk Elastic Beanstalk ヘルスエージェント (p. 287)はインスタンスに関するメトリックスを
収集し、中継された Elastic Beanstalk はそのメトリックスを分析して環境内のインスタンスの状態を
特定します。
Elastic Beanstalk ヘルスエージェントは、ウェブサーバーログとオペレーティングシステムからインス
タンスに関するメトリックスを収集します。ウェブサーバーログは、着信 HTTP リクエストに関する
情報(届いたリクエストの数、エラーとなった数、解決までの時間)を提供します。オペレーティング
システムはインスタンスのリソース状態についてのスナップショット情報を提供します。各プロセスタ
イプごとの CPU 負荷および配信経過時間。 これらのメトリックスは、Linux サーバーで top を実行し
た場合に表示される情報のサブセットです。
ヘルスエージェントはウェブサーバーとオペレーティングシステムのメトリックスを収集し、10 秒ご
とに Elastic Beanstalk に中継します。Elastic Beanstalk は中継されたデータを分析し、その結果を使用
して、各インスタンスと環境のヘルスステータスを更新します。
ウェブサーバーのメトリックス
Elastic Beanstalk ヘルスエージェントは、ウェブコンテナまたは環境内の各インスタンスでリクエスト
を処理するサーバーによって生成されたログからウェブサーバーメトリックスを読み取ります。Elastic
Beanstalk プラットフォームは、人間が読み取れる形式と機械による読み取りが可能な形式の 2 つのロ
API Version 2010-12-01
275
AWS Elastic Beanstalk 開発者ガイド
CloudWatch
グを生成するように設定されています。機械による読み取りが可能なログは、ヘルスエージェントに
よって 10 秒ごとに Elastic Beanstalk に中継されます。
Elastic Beanstalk で使用されるログ形式の詳細については、「拡張ヘルスログ形式 (p. 283)」を参照して
ください。
ウェブサーバーのメトリックス
RequestCount
直前の 10 秒間にウェブサーバーによって処理されたリクエストの 1 秒あたりの数。 EB CLI と 環
境の状態ページ (p. 268) に表示される平均 r/sec (1 秒ごとのリクエスト)
Status2xx, Status3xx, Status4xx, Status5xx
直前の 10 秒間に各タイプのステータスコードが返されたリクエストの数。 たとえば、正常なリク
エストには 200 OK、リダイレクトには 301 が返され、アプリケーション内のどのリソースとも一
致しない URL が入力された場合は 404 が返されます。
EB CLI と 環境の状態ページ (p. 268) は、インスタンスへのリクエスト未処理数、そして環境内の
総体的なリクエストのパーセンテージとしてこれらのメトリックスを示します。
p99.9, p99, p95, p90, p85, p75, p50, p10
最近 10 秒間で最も遅かったリクエストの x パーセントの平均レイテンシー。x はこの数値と 100
との差異です。たとえば、p99 は、直近の 10 秒間で最も遅かった 1% のリクエストのレイテンシー
を表します。
オペレーティングシステムのメトリックス
Elastic Beanstalk ヘルスエージェントは、以下のオペレーティングシステムメトリックスを報告しま
す。Elastic Beanstalk は、これらのメトリックスを使用して、継続的に重い負荷がかかっているインス
タンスを識別します。
オペレーティングシステムのメトリックス
Running
インスタンスが起動してから経過した時間。
Load 1, Load 5
直前の 1 分間と 5 分間の平均負荷。この期間に実行されていたプロセスの平均数を小数値で示し
ます。表示された数が使用可能な vCPU(スレッド)の数よりも多い場合、余りは待機中だったプ
ロセスの平均数です。
たとえば、インスタンスタイプが 4 vCPU であり、負荷が 4.5 である場合、その期間において、平
均で .5 のプロセスが待機していたことになり、その期間の 50% にわたって 1 つのプロセスが待機
していたことを意味します。
User %, Nice %, System %, Idle %, I/O Wait %
過去 10 秒間に CPU が各状態で費やした時間のパーセンテージ。
環境の Amazon CloudWatch カスタムメトリックス
のパブリッシュ
Abstract
AWS Elastic Beanstalk 環境のヘルス状態の変化を追跡するための追加のメトリックスを Amazon CloudWatch に
公開します。
AWS Elastic Beanstalk の拡張ヘルスレポートによって収集されたデータをカスタムメトリックスとし
て Amazon CloudWatch にパブリッシュできます。CloudWatch にメトリックスをパブリッシュするこ
API Version 2010-12-01
276
AWS Elastic Beanstalk 開発者ガイド
CloudWatch
とにより、時間の経過に伴うアプリケーションのパフォーマンスの変化をモニタリングできるほか、リ
ソースの使用状況やリクエストのレイテンシーが負荷に応じてどのようにスケーリングするかを追跡す
ることによって、発生する可能性のある問題を特定できます。
また、CloudWatch にメトリックスをパブリッシュすることにより、モニタリンググラフ (p. 257)とア
ラーム (p. 291)でメトリックスを使用できます。無料のメトリックスである EnvironmentHealth は、拡
張ヘルスレポートを使用するとき、自動的に有効になります。EnvironmentHealth 以外のカスタムメト
リックスを使用する場合、CloudWatch の標準料金が課金されます。
環境の CloudWatch カスタムメトリックスをパブリッシュするには、まず環境で拡張ヘルスレポートを
有効にする必要があります。手順については、「AWS Elastic Beanstalk 拡張ヘルスレポートの有効
化 (p. 264)」を参照してください。
トピック
• 拡張ヘルスレポートのメトリックス (p. 277)
• AWS マネジメントコンソールでの CloudWatch メトリックスの設定 (p. 278)
• EB CLI での CloudWatch カスタムメトリックスの設定 (p. 278)
• カスタムメトリックス設定ドキュメントの提供 (p. 279)
拡張ヘルスレポートのメトリックス
環境で拡張ヘルスレポートを有効にすると、拡張ヘルスレポートシステムが CloudWatch カスタムメト
リックスの 1 つである EnvironmentHealth を自動的にパブリッシュします。追加のメトリックスを
CloudWatch にパブリッシュするには、AWS マネジメントコンソール (p. 278)、EB CLI (p. 278)、または
.ebextensions (p. 101) を使用して、パブリッシュするメトリックスで環境を設定します。
EnvironmentHealth
環境のみが対象。他のメトリックスを設定していなければ、拡張ヘルスレポートシステムから公開
される唯一の CloudWatch メトリックスです。環境の状態は、7 種類のステータス (p. 273)のいずれ
かで表されます。CloudWatch コンソールでは、これらのステータスは以下の値にマッピングされ
ます。
•
•
•
•
•
0 – OK
1 – Info
5 – Unknown
10 – No data
15 – Warning
• 20 – Degraded
• 25 – Severe
InstancesSevere, InstancesDegraded, InstancesWarning, InstancesInfo, InstancesOk,
InstancesPending, InstancesUnknown, InstancesNoData
環境のみが対象。これらのメトリックスは、各ヘルスステータスにある環境内のインスタンスの数
を示します。InstancesNoData は、データを受け取っていないインスタンスの数を示します(該
当する場合)。
ApplicationRequestsTotal, ApplicationRequests5xx, ApplicationRequests4xx,
ApplicationRequests3xx, ApplicationRequests2xx
インスタンスと環境が対象。 インスタンスまたは環境で完了したリクエストの総数と、各ステー
タスコードカテゴリで完了したリクエストの数を示します。
ApplicationLatencyP10, ApplicationLatencyP50, ApplicationLatencyP75,
ApplicationLatencyP85, ApplicationLatencyP90, ApplicationLatencyP95,
ApplicationLatencyP99, ApplicationLatencyP99.9
インスタンスと環境が対象。 リクエストのうち、早い方から x パーセントの完了にかかった平均
時間を示します。
API Version 2010-12-01
277
AWS Elastic Beanstalk 開発者ガイド
CloudWatch
LoadAverage1min
インスタンスのみが対象。インスタンスに関する過去 1 分間の CPU 負荷の平均値。
InstanceHealth
インスタンスのみが対象。インスタンスの現在のヘルスステータスを示します。
RootFilesystemUtil
インスタンスのみが対象。使用中のディスク容量の割合を示します。
CPUIrq, CPUUser, CPUIdle, CPUSystem, CPUSoftirq, CPUIowait, CPUNice
インスタンスのみが対象。過去 1 分間に CPU が各状態で消費した時間の割合を示します。
AWS マネジメントコンソールでの CloudWatch メトリックス
の設定
AWS マネジメントコンソールを使用して、拡張ヘルスレポートのメトリックスを CloudWatch にパブ
リッシュし、モニタリンググラフとアラームで使用できるように環境を設定します。
AWS マネジメントコンソールで CloudWatch カスタムメトリックスを設定するには
1.
2.
3.
4.
5.
Elastic Beanstalk コンソールを開きます。
環境については「management console (p. 50)」をご覧ください。
[Configuration] を選択します。
[Health] パネルの [Web Tier] で
(編集)を選択します。
[Health Reporting] で、インスタンスと CloudWatch にパブリッシュする環境メトリックスを選択
します。複数のメトリックスを選択するには、Ctrl キーを押したまま選択します。
CloudWatch カスタムメトリックスを有効にすると、モニタリングコンソール (p. 256)で使用できるメト
リックスのリストにこれらのメトリックスが追加されます。
EB CLI での CloudWatch カスタムメトリックスの設定
EB CLI を使用すると、環境の設定をローカルに保存し、パブリッシュするメトリックスを定義するエ
ントリを追加してから、その設定を Elastic Beanstalk にアップロードすることによって、カスタムメ
トリックスを設定できます。保存した設定は、環境を作成する前または作成した後に環境に適用できま
す。
EB CLI と保存した設定を使用して CloudWatch カスタムメトリックスを設定するには
1.
eb init (p. 409) でプロジェクトフォルダを初期化します。
2.
eb create (p. 413) コマンドを実行して、環境を作成します。
3.
eb config save コマンドを実行して、設定テンプレートをローカルに保存します。次の例では、
--cfg オプションを使用して、設定の名前が指定されています。
$ eb config save --cfg 01-base-state
Configuration saved at: ~/project/.elasticbeanstalk/saved_configs/01-basestate.cfg.yml
4.
保存した設定ファイルをテキストエディタで開きます。
5.
OptionSettings > aws:elasticbeanstalk:healthreporting:system: で、ConfigDocument
キーを追加して、CloudWatch メトリックスを個別に有効にします。たとえば、次に示す
ConfigDocument は、環境レベルで ApplicationRequests5xx メトリックスと
ApplicationRequests4xx メトリックスをパブリッシュし、インスタンスレベルで
ApplicationRequestsTotal メトリックスをパブリッシュします。
API Version 2010-12-01
278
AWS Elastic Beanstalk 開発者ガイド
CloudWatch
OptionSettings:
...
aws:elasticbeanstalk:healthreporting:system:
ConfigDocument:
CloudWatchMetrics:
Environment
ApplicationRequests5xx: 60
ApplicationRequests4xx: 60
Instance:
ApplicationRequestsTotal: 60
Version: 1
SystemType: enhanced
...
Note
この例では、60 は測定間隔の秒数を示しています。これは、現在サポートされている唯一
の値です。
6.
7.
設定ファイルを保存し、テキストエディタを閉じます。この例では、更新した設定ファイルは、ダ
ウンロードした設定ファイルとは異なる名前(02-cloudwatch-enabled.cfg.yml)で保存され
ています。このファイルがアップロードされると、別の保存済み設定が作成されます。ダウンロー
ドしたファイル同じ名前を使用すると、新しいキーペアを作成せずに既存の設定を上書きできま
す。
eb config put コマンドを使用して、更新した設定ファイルを Elastic Beanstalk にアップロード
します。
$ eb config put 02-cloudwatch-enabled
8.
保存した設定に対して eb config get コマンドと put コマンドを使用するときは、ファイル拡
張子を含めないでください。
実行中の環境に、保存済みの設定を適用します。
$ eb config --cfg 02-cloudwatch-enabled
--cfg オプションは、環境に適用される名前付き設定ファイルを指定します。設定は、ローカル
の場所または Elastic Beanstalk に保存できます。指定した名前を持つ設定ファイルが両方の場所
に存在する場合、EB CLI はローカルファイルを使用します。
カスタムメトリックス設定ドキュメントの提供
Amazon CloudWatch カスタムメトリックスの設定ドキュメントは、環境レベルとインスタンスレベル
でパブリッシュするメトリックスのリストが含まれている JSON ドキュメントです。次の例は、使用
できるすべてのカスタムメトリックスを有効にする設定ドキュメントを示しています。
{
"CloudWatchMetrics": {
"Environment": {
"ApplicationLatencyP99.9": 60,
"InstancesSevere": 60,
"ApplicationLatencyP90": 60,
API Version 2010-12-01
279
AWS Elastic Beanstalk 開発者ガイド
CloudWatch
"ApplicationLatencyP99": 60,
"ApplicationLatencyP95": 60,
"InstancesUnknown": 60,
"ApplicationLatencyP85": 60,
"InstancesInfo": 60,
"ApplicationRequests2xx": 60,
"InstancesDegraded": 60,
"InstancesWarning": 60,
"ApplicationLatencyP50": 60,
"ApplicationRequestsTotal": 60,
"InstancesNoData": 60,
"InstancesPending": 60,
"ApplicationLatencyP10": 60,
"ApplicationRequests5xx": 60,
"ApplicationLatencyP75": 60,
"InstancesOk": 60,
"ApplicationRequests3xx": 60,
"ApplicationRequests4xx": 60
},
"Instance": {
"ApplicationLatencyP99.9": 60,
"ApplicationLatencyP90": 60,
"ApplicationLatencyP99": 60,
"ApplicationLatencyP95": 60,
"ApplicationLatencyP85": 60,
"CPUUser": 60,
"ApplicationRequests2xx": 60,
"CPUIdle": 60,
"ApplicationLatencyP50": 60,
"ApplicationRequestsTotal": 60,
"RootFilesystemUtil": 60,
"LoadAverage1min": 60,
"CPUIrq": 60,
"CPUNice": 60,
"CPUIowait": 60,
"ApplicationLatencyP10": 60,
"LoadAverage5min": 60,
"ApplicationRequests5xx": 60,
"ApplicationLatencyP75": 60,
"CPUSystem": 60,
"ApplicationRequests3xx": 60,
"ApplicationRequests4xx": 60,
"InstanceHealth": 60,
"CPUSoftirq": 60
}
},
"Version": 1
}
AWS CLI では、JSON オブジェクトであるオプション設定引数の Value キーの値としてドキュメント
を渡します。この場合、埋め込まれているドキュメントの引用符はエスケープする必要があります。
$ aws elasticbeanstalk validate-configuration-settings --application-name myapp --environment-name my-env --option-settings '[
{
"Namespace": "aws:elasticbeanstalk:healthreporting:system",
"OptionName": "ConfigDocument",
API Version 2010-12-01
280
AWS Elastic Beanstalk 開発者ガイド
CloudWatch
"Value": "{\"CloudWatchMetrics\": {\"Environment\": {\"Application
LatencyP99.9\": 60,\"InstancesSevere\": 60,\"ApplicationLatencyP90\": 60,\"Ap
plicationLatencyP99\": 60,\"ApplicationLatencyP95\": 60,\"InstancesUnknown\":
60,\"ApplicationLatencyP85\": 60,\"InstancesInfo\": 60,\"ApplicationRe
quests2xx\": 60,\"InstancesDegraded\": 60,\"InstancesWarning\": 60,\"Applica
tionLatencyP50\": 60,\"ApplicationRequestsTotal\": 60,\"InstancesNoData\":
60,\"InstancesPending\": 60,\"ApplicationLatencyP10\": 60,\"ApplicationRe
quests5xx\": 60,\"ApplicationLatencyP75\": 60,\"InstancesOk\": 60,\"Application
Requests3xx\": 60,\"ApplicationRequests4xx\": 60},\"Instance\": {\"Application
LatencyP99.9\": 60,\"ApplicationLatencyP90\": 60,\"ApplicationLatencyP99\":
60,\"ApplicationLatencyP95\": 60,\"ApplicationLatencyP85\": 60,\"CPUUser\":
60,\"ApplicationRequests2xx\": 60,\"CPUIdle\": 60,\"ApplicationLatencyP50\":
60,\"ApplicationRequestsTotal\": 60,\"RootFilesystemUtil\": 60,\"LoadAver
age1min\": 60,\"CPUIrq\": 60,\"CPUNice\": 60,\"CPUIowait\": 60,\"Application
LatencyP10\": 60,\"LoadAverage5min\": 60,\"ApplicationRequests5xx\": 60,\"Ap
plicationLatencyP75\": 60,\"CPUSystem\": 60,\"ApplicationRequests3xx\":
60,\"ApplicationRequests4xx\": 60,\"InstanceHealth\": 60,\"CPUSoftirq\":
60}},\"Version\": 1}"}
]'
YAML の .ebextensions 設定ファイルの場合は、JSON ドキュメントをそのまま提供できます。
option_settings:
- namespace: aws:elasticbeanstalk:healthreporting:system
option_name: ConfigDocument
value: {
"CloudWatchMetrics": {
"Environment": {
"ApplicationLatencyP99.9": 60,
"InstancesSevere": 60,
"ApplicationLatencyP90": 60,
"ApplicationLatencyP99": 60,
"ApplicationLatencyP95": 60,
"InstancesUnknown": 60,
"ApplicationLatencyP85": 60,
"InstancesInfo": 60,
"ApplicationRequests2xx": 60,
"InstancesDegraded": 60,
"InstancesWarning": 60,
"ApplicationLatencyP50": 60,
"ApplicationRequestsTotal": 60,
"InstancesNoData": 60,
"InstancesPending": 60,
"ApplicationLatencyP10": 60,
"ApplicationRequests5xx": 60,
"ApplicationLatencyP75": 60,
"InstancesOk": 60,
"ApplicationRequests3xx": 60,
"ApplicationRequests4xx": 60
},
"Instance": {
"ApplicationLatencyP99.9": 60,
"ApplicationLatencyP90": 60,
"ApplicationLatencyP99": 60,
"ApplicationLatencyP95": 60,
"ApplicationLatencyP85": 60,
"CPUUser": 60,
API Version 2010-12-01
281
AWS Elastic Beanstalk 開発者ガイド
API ユーザー
"ApplicationRequests2xx": 60,
"CPUIdle": 60,
"ApplicationLatencyP50": 60,
"ApplicationRequestsTotal": 60,
"RootFilesystemUtil": 60,
"LoadAverage1min": 60,
"CPUIrq": 60,
"CPUNice": 60,
"CPUIowait": 60,
"ApplicationLatencyP10": 60,
"LoadAverage5min": 60,
"ApplicationRequests5xx": 60,
"ApplicationLatencyP75": 60,
"CPUSystem": 60,
"ApplicationRequests3xx": 60,
"ApplicationRequests4xx": 60,
"InstanceHealth": 60,
"CPUSoftirq": 60
}
},
"Version": 1
}
AWS Elastic Beanstalk API での拡張ヘルスレポート
の使用
Abstract
AWS Elastic Beanstalk API を使用して、お客様の環境とそれを構成する AWS リソースに関するヘルス情報を取得
します。
AWS Elastic Beanstalk の拡張ヘルスレポートにはロール要件とソリューションスタック要件があるた
め、拡張ヘルスレポートを使用するには、そのリリース前に使用していたスクリプトとコードを更新す
る必要があります。下位互換性を維持するため、拡張ヘルスレポートは、Elastic Beanstalk API を使用
して環境を作成するとき、デフォルトでは有効になりません。
環境のサービスロール、インスタンスプロファイル、および Amazon CloudWatch 設定オプションを設
定することによって、拡張ヘルスレポートを設定します。これは、.ebextensions フォルダで設定オ
プションを設定する、保存されている設定を使用する、または create-environment 呼び出しの
option-settings パラメータで直接設定オプションを設定することによって行うことができます。
API、SDK、または AWS コマンドラインインターフェイス(CLI)を使用して、拡張ヘルスをサポート
する環境を作成するには、以下の操作を行う必要があります。
• 適切なアクセス権限 (p. 19)を含むサービスロールとインスタンスプロファイルを作成する
• 新しいバージョンのプラットフォーム設定 (p. 25)のソリューションスタックを使用する新しい環境
を作成する
• ヘルスシステムのタイプ、インスタンスプロファイル、サービスロールの設定オプション (p. 101)を
設定する
aws:elasticbeanstalk:healthreporting:system、aws:autoscaling:launchconfiguration、
および aws:elasticbeanstalk:environment の 3 つの名前空間で以下の設定オプションを使用し
て、拡張ヘルスレポートの環境を設定します。
API Version 2010-12-01
282
AWS Elastic Beanstalk 開発者ガイド
拡張ヘルスログ形式
拡張ヘルスの設定オプション
SystemType
名前空間: aws:elasticbeanstalk:healthreporting:system
拡張ヘルスレポートを有効にするには、「enhanced」に設定します。
IamInstanceProfile
名前空間: aws:autoscaling:launchconfiguration
Elastic Beanstalk 用に設定されたインスタンスプロファイルの名前に設定します。
ServiceRole
名前空間: aws:elasticbeanstalk:environment
Elastic Beanstalk 用に設定されたサービスロールの名前に設定します。
ConfigDocument(オプション)
名前空間: aws:elasticbeanstalk:healthreporting:system
インスタンスと CloudWatch にパブリッシュする環境メトリックスを定義する JSON ドキュメント。
以下に例を示します。
{
"CloudWatchMetrics":
{
"Environment":
{
"ApplicationLatencyP99.9":60,
"InstancesSevere":60
}
"Instance":
{
"ApplicationLatencyP85":60,
"CPUUser": 60
}
}
"Version":1
}
Note
設定ドキュメントでは、Elastic Beanstalk への提供方法に応じて、引用符のエスケープなどの
特別なフォーマットが必要になることがあります。設定ドキュメントの例については、「カス
タムメトリックス設定ドキュメントの提供 (p. 279)」を参照してください。
拡張ヘルスログ形式
Abstract
Elastic Beanstalk 拡張ヘルスモニタリングと統合するようにアプリケーションのログ記録をカスタマイズします。
API Version 2010-12-01
283
AWS Elastic Beanstalk 開発者ガイド
拡張ヘルスログ形式
AWS Elastic Beanstalk プラットフォームは、カスタムウェブサーバーログ形式を使用して、HTTP リ
クエストに関する情報を効率的に拡張ヘルスレポートシステムに中継します。ログの分析と問題の特定
はそこで行われ、それに基づいてインスタンスと環境の状態が設定されます。対象環境でウェブサー
バープロキシを無効にし、ウェブコンテナから直接リクエストを処理する場合でも、Elastic Beanstalk
ヘルスエージェント (p. 287)によって使用される場所と形式でログを出力するようにサーバーを設定す
ることで、拡張ヘルスレポートを最大限に活用できます。
ウェブサーバーログ設定
Elastic Beanstalk プラットフォームは、HTTP リクエストに関する情報を含む 2 つのログを出力するよ
うに設定されています。最初のログは、詳細形式であり、リクエストに関する詳細な情報(リクエスタ
のユーザーエージェント情報や人間が読み取れる形式のタイムスタンプなど)を提供します。
以下の例は、Ruby ウェブサーバー環境で実行されている nginx プロキシのものですが、その形式は
Apache のものに似ています。
/var/log/nginx/access.log
172.31.24.3 - - [23/Jul/2015:00:21:20 +0000] "GET
"curl/7.22.0 (x86_64-pc-linux-gnu) libcurl/7.22.0
libidn/1.23 librtmp/2.3" "177.72.242.17"
172.31.24.3 - - [23/Jul/2015:00:21:21 +0000] "GET
"curl/7.22.0 (x86_64-pc-linux-gnu) libcurl/7.22.0
libidn/1.23 librtmp/2.3" "177.72.242.17"
172.31.24.3 - - [23/Jul/2015:00:21:22 +0000] "GET
"curl/7.22.0 (x86_64-pc-linux-gnu) libcurl/7.22.0
libidn/1.23 librtmp/2.3" "177.72.242.17"
172.31.24.3 - - [23/Jul/2015:00:21:22 +0000] "GET
"curl/7.22.0 (x86_64-pc-linux-gnu) libcurl/7.22.0
libidn/1.23 librtmp/2.3" "177.72.242.17"
172.31.24.3 - - [23/Jul/2015:00:21:22 +0000] "GET
"curl/7.22.0 (x86_64-pc-linux-gnu) libcurl/7.22.0
libidn/1.23 librtmp/2.3" "177.72.242.17"
/ HTTP/1.1" 200 11 "-"
OpenSSL/1.0.1 zlib/1.2.3.4
/ HTTP/1.1" 200 11 "-"
OpenSSL/1.0.1 zlib/1.2.3.4
/ HTTP/1.1" 200 11 "-"
OpenSSL/1.0.1 zlib/1.2.3.4
/ HTTP/1.1" 200 11 "-"
OpenSSL/1.0.1 zlib/1.2.3.4
/ HTTP/1.1" 200 11 "-"
OpenSSL/1.0.1 zlib/1.2.3.4
2 つ目のログは、簡易形式です。これは、拡張ヘルスレポートに関連する情報のみを提供します。この
ログは、healthd という名前のサブフォルダに出力され、1 時間ごとにローテーションされます。古
いログは、ローテーション直後に削除されます。
次の例は、機械による読み取りが可能な形式のログを示しています。
/var/log/nginx/healthd/application.log.2015-07-23-00
1437609879.311"/"200"0.083"0.083"177.72.242.17
1437609879.874"/"200"0.347"0.347"177.72.242.17
1437609880.006"/bad/path"404"0.001"0.001"177.72.242.17
1437609880.058"/"200"0.530"0.530"177.72.242.17
1437609880.928"/bad/path"404"0.001"0.001"177.72.242.17
拡張ヘルスログ形式には、以下の情報が含まれます。
• リクエストの時間(Unix 時間)。nginx では、これは小数点以下 3 桁の浮動小数点で表した秒数で
す。Apache では、整数で表したミリ秒数です。
• リクエストのパス。
• 結果に対応する HTTP ステータスコード。
• リクエスト時間を浮動小数点で表した秒数。
API Version 2010-12-01
284
AWS Elastic Beanstalk 開発者ガイド
拡張ヘルスログ形式
• アップストリーム時間を浮動小数点で表した秒数。
• X-Forwarded-For HTTP ヘッダー。
この例は、healthd ログ形式が強調表示されている nginx のログ設定を示しています。
/etc/nginx/conf.d/webapp_healthd.conf
upstream my_app {
server unix:///var/run/puma/my_app.sock;
}
log_format healthd '$msec"$uri"'
'$status"$request_time"$upstream_response_time"'
'$http_x_forwarded_for';
server {
listen 80;
server_name _ localhost; # need to listen to localhost for worker tier
if ($time_iso8601 ~ "^(\d{4})-(\d{2})-(\d{2})T(\d{2})") {
set $year $1;
set $month $2;
set $day $3;
set $hour $4;
}
access_log /var/log/nginx/access.log main;
access_log /var/log/nginx/healthd/application.log.$year-$month-$day-$hour
healthd;
location / {
proxy_pass http://my_app; # match the name of upstream directive which is
defined above
proxy_set_header Host $host;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}
location /assets {
alias /var/app/current/public/assets;
gzip_static on;
gzip on;
expires max;
add_header Cache-Control public;
}
location /public {
alias /var/app/current/public;
gzip_static on;
gzip on;
expires max;
add_header Cache-Control public;
}
}
API Version 2010-12-01
285
AWS Elastic Beanstalk 開発者ガイド
通知とトラブルシューティング
拡張ヘルスレポート用のログの生成
ヘルスエージェントにログを提供するには、以下の操作を行う必要があります。
• 前のセクションで示したように、正しい形式でログを出力する
• /var/log/nginx/healthd/ にログを出力する
• application.log.$year-$month-$day-$hour という形式を使用してログに名前を付ける
• ログを 1 時間に 1 回ローテーションさせる
• ログは切り捨てないでください
通知とトラブルシューティング
Abstract
AWS Elastic Beanstalk 拡張ヘルスレポートによって報告された問題のトラブルシューティングを行います。
このページには、一般的な問題に対する原因メッセージの例と詳細情報へのリンクが一覧表示されま
す。いくつかのチェックにわたって持続的に状態に問題があることが検出されると、原因メッセージが
環境ダッシュボード (p. 256)に表示され、イベント (p. 293)に記録されます。
アプリケーションサーバー
15% of requests are erroring with HTTP 4xx
20% of the requests to the ELB are erroring with HTTP 4xx.
インスタンスまたは環境に対する HTTP リクエストの多くが 4xx エラーを原因として失敗しています。
400 シリーズのステータスコードは、ユーザーが存在しないページをリクエスト(404 File Not Found)
するなどの不適切なリクエストをした、またはユーザーにはアクセスする権利がない(403 Forbidden)
ことを示します。404 の数が低いことは珍しくありませんが、その数が多いと、存在しないページへの
内部リンクまたは外部リンクがあることを意味する場合があります。このような問題は、不適切な内部
リンクを修正し、不適切な外部リンクにリダイレクトを追加することによって解決できます。
5% of the requests are failing with HTTP 5xx
3% of the requests to the ELB are failing with HTTP 5xx.
インスタンスまたは環境に対する HTTP リクエストの多くが 500 シリーズのステータスコードを原因
として失敗しています。
500 シリーズのステータスコードは、アプリケーションサーバーで内部エラーが発生したことを示しま
す。このような問題は、アプリケーションコードにエラーがあり、迅速にエラーを特定し、修正する必
要があることを示します。
95% of CPU is in use
インスタンスについて、ヘルスエージェントが非常に高い CPU 使用率をレポートしており、インスタ
ンスのヘルスステータスが Warning または Degraded に設定されています。
環境をスケールしてインスタンスの負荷を軽減します。
ワーカーインスタンス
20 messages waiting in the queue (25 seconds ago)
API Version 2010-12-01
286
AWS Elastic Beanstalk 開発者ガイド
Elastic Beanstalk 状態エージェント
リクエストの処理速度よりも速くリクエストがワーカー環境のキューに追加されています。環境をス
ケールして処理能力を向上させます。
5 messages in Dead Letter Queue (15 seconds ago)
ワーカーリクエストが繰り返し失敗しており、デッドレターキュー (p. 95)に追加されています。デッ
ドレターキュー内のリクエストをチェックして、失敗している理由を確認します。
その他のリソース
4 active instances is below Auto Scaling group minimum size 5
環境内で実行されているインスタンスの数が、Auto Scaling group に対して設定されている最小数に達
していません。
Auto Scaling group (groupname) notifications have been deleted or modified
Auto Scaling group に対して設定されている通知が Elastic Beanstalk 外部で修正されています。
トピック
• Elastic Beanstalk 状態エージェント (p. 287)
• インスタンスと環境の状態を判断するための要素 (p. 288)
• 拡張ヘルスレポートのロール (p. 289)
• 拡張ヘルスレポートのイベント (p. 290)
• 更新、デプロイ、およびスケーリング中の拡張ヘルスレポートの動作 (p. 290)
Elastic Beanstalk 状態エージェント
Elastic Beanstalk のヘルスエージェントは、環境内の各 EC2 インスタンスで実行されるデーモンプロ
セスであり、オペレーティングシステムおよびアプリケーションレベルのヘルスメトリックスをモニタ
リングし、問題を Elastic Beanstalk に報告します。状態エージェントは、各設定のバージョン 2.0 以
降、すべての Linux プラットフォームソリューションスタックに含まれます。
状態エージェントからの報告内容は、ベーシックヘルスレポート (p. 259)の一部として Auto Scaling お
よび Elastic Load Balancing によって CloudWatch に公開される (p. 261)メトリックスと似ており、CPU
負荷、HTTP コード、レイテンシーなどが含まれます。ただし、状態エージェントによるレポートは、
ベーシックヘルスレポートより高い詳細度と頻度で直接 Elastic Beanstalk に送信されます。
ベーシックヘルスレポートの場合、これらのメトリックスは、5 分間隔で公開され、環境マネジメント
コンソールのグラフで確認できます。拡張ヘルスレポートの場合、Elastic Beanstalk の状態エージェン
トが 10 秒間隔でメトリックスを Elastic Beanstalk に報告します。Elastic Beanstalk は状態エージェン
トから提供されたメトリックスを使用して、環境内の各インスタンスのヘルスステータスを判断しま
す。さらに、他の要素 (p. 288)と組み合わせて、環境全体の状態を判断します。
環境全体の状態は、Elastic Beanstalk によって 60 秒間隔で CloudWatch に公開され、環境ダッシュボー
ドを使用してリアルタイムで確認できます。状態エージェントによって報告された詳細なメトリックス
は、EB CLI (p. 403) の eb health (p. 269) コマンドを使用してリアルタイムで確認できます。
個々のインスタンスおよび環境レベルのメトリックスを 60 秒間隔で CloudWatch に公開することもで
きます(追加料金が必要です)。CloudWatch に公開されたメトリックスを使用すると、環境マネジメ
ントコンソール (p. 50)でモニタリンググラフ (p. 258)を作成できます。
拡張ヘルスレポートで料金が発生するのは、拡張ヘルスレポートのメトリックスを CloudWatch に公開
するオプションを選択した場合のみです。拡張ヘルスレポートを使用していて、拡張ヘルスレポートの
メトリックスを公開するオプションを選択していなくても、ベーシックヘルスレポートのメトリックス
は無料で公開できます。
API Version 2010-12-01
287
AWS Elastic Beanstalk 開発者ガイド
インスタンスと環境の状態を判断するための要素
状態エージェントによって報告されるメトリックスの詳細については、「インスタンスメトリック
ス (p. 275)」を参照してください。拡張ヘルスメトリックスのメトリックスを CloudWatch に公開する
方法の詳細については、「環境の Amazon CloudWatch カスタムメトリックスのパブリッシュ (p. 276)」
を参照してください。
インスタンスと環境の状態を判断するための要素
基本ヘルスレポートシステムのチェック(Elastic Load Balancing ヘルスチェック (p. 260)、リソースモ
ニタリング (p. 261)など)に加えて、Elastic Beanstalk の拡張ヘルスレポートは、環境内のインスタンス
の状態に関する追加のデータを収集します。これには、オペレーティングシステムメトリックス、サー
バーログ、デプロイや更新などの進行中の環境オペレーションの状態が含まれます。Elastic Beanstalk
ヘルスレポートサービスは、利用可能なすべてのソースからの情報を組み合わせて分析し、環境全体の
状態を判断します。
オペレーションとコマンド
環境内でオペレーション(アプリケーションの新しいバージョンのデプロイなど)を実行する場合、
Elastic Beanstalk ではいくつかの変更が行われ、これによって環境のヘルスステータスも変化します。
たとえば、複数のインスタンスを実行する環境にアプリケーションの新しいバージョンをデプロイする
場合、EB CLI (p. 269) で環境の状態を監視していると、次のようなメッセージが表示されることがあり
ます。
id
Overall
i-bb65c145
status
Info
Pending
cause
Command is executing on 3 out of 5 instances
91 % of CPU is in use. 24 % in I/O wait
Performing application deployment (running for 31
seconds)
i-ba65c144
Pending
Performing initialization (running for 12 seconds)
i-f6a2d525
Ok
took 26 seconds
i-e8a2d53b
Pending
Application deployment completed 23 seconds ago and
seconds)
i-e81cca40
94 % of CPU is in use. 52 % in I/O wait
Performing application deployment (running for 33
Ok
この例では、環境全体のステータスが Ok であり、このステータスの原因は Command is executing on
3 out of 5 instances です。環境内の 3 つのインスタンスのステータスが Pending であり、オペレーショ
ンが進行中であることを示します。
オペレーションが完了すると、Elastic Beanstalk により、オペレーションに関する追加情報が報告され
ます。たとえば、アプリケーションの新しいバージョンに更新が完了しているインスタンスについて
は、次の情報が表示されます。
i-f6a2d525
Ok
took 26 seconds
Application deployment completed 23 seconds ago and
Elastic Beanstalk は、原因を示す列に、成功したオペレーションに関する情報メッセージと、複数のヘ
ルスチェックにおけるその他のヘルスステータスを表示しますが、これらは無期限に保存されるわけで
はありません。環境の異常な状態の原因を示す情報が保存されるのは、環境の状態が正常に戻るまでで
す。
API Version 2010-12-01
288
AWS Elastic Beanstalk 開発者ガイド
拡張ヘルスレポートのロール
コマンドタイムアウト
インスタンスが正常な状態に移行できるように、Elastic Beanstalk では、オペレーションが開始した時
点からコマンドタイムアウトが適用されます。このコマンドタイムアウトは、環境の更新およびデプロ
イ設定(aws:elasticbeanstalk:command (p. 129) 名前空間)で設定されており、デフォルト値は 10 分で
す。
ローリング更新の実行中、Elastic Beanstalk は、オペレーション内の各バッチに別々のタイムアウトを
適用します。このタイムアウトは環境のローリング更新の一部として
(aws:autoscaling:updatepolicy:rollingupdate (p. 125) 名前空間で)設定されます。バッチ内のすべての
インスタンスがコマンドタイムアウト内で正常に実行されている場合は、オペレーションが次のバッチ
に進みます。それ以外の場合、オペレーションは失敗となります。
ウェブサーバー環境が正常であると見なされるには、環境内またはバッチ内の各インスタンスが 2 分間
にわたって連続して行われる 12 のヘルスチェックに合格する必要があります。ワーカー枠の場合は、
各インスタンスが 18 のヘルスチェックに合格する必要があります。Elastic Beanstalk は、ヘルスチェッ
クで異常が検出されても、コマンドタイムアウトの前には、環境のヘルスステータスを引き下げませ
ん。環境内のインスタンスがコマンドタイムアウト内に正常な状態になれば、オペレーションは成功と
なります。
HTTP リクエスト
環境で進行中のオペレーションがない場合、インスタンスと環境の状態に関する情報のプライマリソー
スは、各インスタンスのウェブサーバーログです。インスタンスの状態と環境全体の状態を判断するた
めには、リクエストの数、各リクエストの結果、各リクエストが解決された速度が考慮されます。
ウェブサーバーを含んでいないマルチコンテナ Docker を使用する場合、または他の Elastic Beanstalk
プラットフォームに含まれているウェブサーバー(nginx または Apache)を無効にしている場合、
Elastic Beanstalk サービスにヘルス情報を中継するために必要な形式で Elastic Beanstalk ヘルスエー
ジェント (p. 287)のログを取得するには、追加の設定が必要です。詳細については、「拡張ヘルスログ
形式 (p. 283)」を参照してください。
オペレーティングシステムのメトリックス
Elastic Beanstalk は、状態エージェントから報告されたオペレーティング システムのメトリックスを
監視し、継続的にシステムリソースが不足しているインスタンスを特定します。
状態エージェントによって報告されるメトリックスの詳細については、「インスタンスメトリック
ス (p. 275)」を参照してください。
拡張ヘルスレポートのロール
拡張ヘルスレポートは、Elastic Beanstalk 用のサービスロールと環境用のインスタンスプロファイルの
2 つのロールを必要とします。サービスロールにより、Elastic Beanstalk はユーザーの代わりに他の
AWS サービスと対話して、環境内のリソースに関する情報を収集できます。インスタンスプロファイ
ルを使用すると、環境内のインスタンスが Amazon S3 にログを出力することができます。
AWS マネジメントコンソールで Elastic Beanstalk 環境を作成すると、適切なアクセス許可を持つイン
スタンスプロファイルとサービスロールを作成するように求められます。これらのロールは、EB CLI
で eb create を呼び出して環境を作成する際に作成することもできます。
API、SDK、または AWS CLI を使用して環境を作成する場合に、拡張ヘルスを使用するには、これら
のロールをあらかじめ作成してから、環境の作成中に指定する必要があります。環境に適切なロールを
作成する方法については、「サービスロール、インスタンスプロファイル、ユーザーポリシー (p. 19)」
を参照してください。
API Version 2010-12-01
289
AWS Elastic Beanstalk 開発者ガイド
拡張ヘルスレポートのイベント
拡張ヘルスレポートのイベント
拡張ヘルスレポートのシステムでは、環境の状態が変化するとイベントが生成されます。次の例は、環
境の状態が Info、OK、Severe の間で変化した場合に出力されたイベントを示しています。
現在より悪い状態に変化した場合は、イベントの原因を示すメッセージも出力に含められます。
インスタンスレベルでのステータスの変化がすべてイベントの出力になるわけではありません。Elastic
Beanstalk では、誤ったアラームを回避するために、複数のチェックで同じ問題が生じている場合の
み、状態に関連したイベントを出力します。
ステータス、色、原因など、環境レベルのリアルタイムの状態情報は、環境ダッシュボード (p. 51)ま
たは EB CLI (p. 403) から利用できます。EB CLI を環境にアタッチして eb health (p. 269) コマンドを
実行すると、環境内のインスタンスに関するリアルタイムのステータスを表示することもできます。
更新、デプロイ、およびスケーリング中の拡張ヘル
スレポートの動作
拡張ヘルスレポートを有効にすると、設定更新中およびデプロイ中の環境の動作に影響が及ぶ可能性が
あります。Elastic Beanstalk は、すべてのインスタンスが一貫してヘルスチェックに合格するまで、更
新のバッチを完了しません。拡張ヘルスレポートは、基本ヘルスチェックより高い標準を適用し、より
多くの要因をモニタリングするため、基本ヘルスレポートの ELB ヘルスチェック (p. 260)に合格したイ
ンスタンスが拡張ヘルスレポートに合格するとは限りません。ヘルスチェックがアップデート処理にど
のように影響するかについては、ローリング設定更新 (p. 82)およびローリングデプロイ (p. 77)のトピッ
クを参照してください。
拡張ヘルスレポートは、Elastic Load Balancing のヘルスチェック URL (p. 207) を適切に設定する必要
があることについても指摘します。要求に対応するために環境がスケールアップすると、新しいインス
タンスは、十分な数の ELB ヘルスチェックに合格するとすぐにリクエストの受け取りを開始します。
ヘルスチェック URL が設定されていなければ、新しいインスタンスが TCP 接続を受け付けてからわず
か 20 秒で開始することがあります。
ロードバランサーによってアプリケーションが正常であり、トラフィックを受け取っても問題がないと
宣言されるまでにアプリケーションの起動が終了していない場合、大量のリクエストが失敗し、環境が
ヘルスチェックに合格しなくなります。アプリケーションによって処理されるパスをヒットするヘルス
チェック URL がこの問題を防止します。ヘルスチェック URL への GET リクエストが 200 シリーズの
ステータスコードを返すまで、ELB ヘルスチェックに合格しません。
API Version 2010-12-01
290
AWS Elastic Beanstalk 開発者ガイド
アラームの管理
アラームの管理
Abstract
AWS マネジメントコンソールを使用して、モニタリングしている Elastic Beanstalk アプリケーションのメトリッ
クスに対するアラームを作成します。
AWS マネジメントコンソールを使用して、モニタリングしているメトリックスに対するアラームを作
成できます。アラームを使用すると、使用環境の変化をモニタリングしやすくなり、問題が発生する前
に簡単に特定して影響を緩和できます。たとえば、環境の CPU 使用率が特定のしきい値を超えた場合
に通知するアラームを設定し、潜在的な問題が発生する前に気づくことができます。詳細については、
「Amazon CloudWatch で Elastic Beanstalk を使用する (p. 303)」を参照してください。
Note
Elastic Beanstalk は CloudWatch を使用してモニタリングやアラームを行います。CloudWatch
コストの平均が、使用したアラームの AWS アカウントに適用されます。
特定のメトリックスのモニタリングの詳細については、「基本ヘルスレポート (p. 259)」を参照してく
ださい。
アラームの状態を確認するには
1.
2.
Elastic Beanstalk コンソールアプリケーションページから、アラームを管理する環境名をクリック
します。
ナビゲーションメニューから、[Alarms] をクリックしてアラームのリストを表示します。
3.
アラーム状態にあるアラームは、 (警告)のフラグが付いています。
アラームをフィルタするには、ドロップダウンフィルタをクリックして、目的のフィルタを選択し
ます。
4.
アラームを編集または削除するには、
(編集)または (削除)をクリックします。
API Version 2010-12-01
291
AWS Elastic Beanstalk 開発者ガイド
アラームの管理
アラームを作成するには
1.
Elastic Beanstalk コンソールアプリケーションページから、アラームを追加する環境名をクリック
します。
2.
ナビゲーションメニューから、[Monitoring] をクリックします。
3.
アラームを作成する対象がメトリックの場合、
ます。
4.
アラームについての詳細を入力します:
をクリックします。[Alarms] ページが表示され
• [Name]: このアラームの名前。
• [Description](オプション):このアラームの内容の短い説明。
• [Period]: 読み取り間隔。
• [Threshold]:アラームがトリガされるためのメトリックスの動作と超えるべき値を指定します。
• [Change state after]: アラームの状態変更をトリガするしきい値を超えた後の時間。
• [Notify]: アラームの状態が変更された時に通知される Amazon SNS トピック。
• [Notify when state changes to]:
API Version 2010-12-01
292
AWS Elastic Beanstalk 開発者ガイド
イベントの表示
• [OK]: メトリックスの値が、定義されたしきい値の範囲内にあります。
• [Alarm]: 定義したしきい値を超えたメトリックス。
• [Insufficient data]: アラームが開始されたか、メトリックスが利用可能でないか、またはメト
リックスがアラームの状態を決定するためのデータが不足しています。
5.
[Add] をクリックします。環境の更新中は環境ステータスがグレーになります。[Alarms] ページで
作成したアラームを確認できるようになります。
イベントの表示
Abstract
AWS マネジメントコンソールを使用して、Elastic Beanstalk アプリケーションに関連付けられたイベントと通知
にアクセスできます。
AWS マネジメントコンソールを使用して、アプリケーションに関連付けられたイベントと通知にアク
セスできます。一般的なイベントの詳細については、「環境イベントについて (p. 811)」を参照してく
ださい。AWS Toolkit for Eclipse を使用してイベントを表示する方法の詳細については、イベントを表
示する (p. 641) を参照してください。
AWS マネジメントコンソール
環境およびアプリケーションイベントを表示するには
1.
2.
環境については「management console (p. 50)」をご覧ください。
ナビゲーションメニューから、[Events] をクリックします。
イベントページに、環境およびアプリケーションバージョンで記録されたすべてのイベントが一覧
表示されます。[Severity] ドロップダウンリストを使用して、イベントのタイプをフィルタできま
す。また、タイムスライダを使用してイベントの発生時期をフィルタできます。
API Version 2010-12-01
293
AWS Elastic Beanstalk 開発者ガイド
コマンドライン
コマンドライン
EB CLI (p. 403) と AWS CLI (p. 921) はどちらも、イベントを取得するためのコマンドを提供しています。
EB CLI を使用して環境を管理する場合に、イベントの一覧を出力するには、eb events (p. 436) を使
用します。このコマンドには、Ctrl+C を押して出力を停止するまで新しいイベントの表示を続行する
--follow オプションもあります。
AWS CLI を使用してイベントを取得するには、環境の名前または ID を指定して describe-events
コマンドを実行します。
$ aws elasticbeanstalk describe-events --environment-id e-gbjzqccra3
{
"Events": [
{
"ApplicationName": "elastic-beanstalk-example",
"EnvironmentName": "elasticBeanstalkExa-env",
"Severity": "INFO",
"RequestId": "a4c7bfd6-2043-11e5-91e2-9114455c358a",
"Message": "Environment update completed successfully.",
"EventDate": "2015-07-01T22:52:12.639Z"
},
...
コマンドラインツールの詳細については、「ツール (p. 403)」を参照してください。
API
Elastic Beanstalk API を使用して、アプリケーションのすべてのイベントを表示できます。この例で
は、API を使用して、「My First Elastic Beanstalk Application」という名前のアプリケーションのすべ
てのイベントをリストを取得します。
すべてのアプリケーションイベントを表示するには
•
以下のパラメータを使って DescribeEvents を呼び出します。
• ApplicationName = My First Elastic Beanstalk Application
Example
https://elasticbeanstalk.us-west-2.amazon.com/?Application
Name=My%20First%20Elastic%20Beanstalk%20Application
&Operation=DescribeEvents
&AuthParams
サーバーインスタンスの一覧表示と接続
Abstract
AWS マネジメントコンソールを使用して、Elastic Beanstalk アプリケーション環境を実行している Amazon EC2
インスタンスのリストを表示します。
API Version 2010-12-01
294
AWS Elastic Beanstalk 開発者ガイド
インスタンスの監視
AWS マネジメントコンソールを使用して、Elastic Beanstalk アプリケーション環境を実行している
Amazon EC2 インスタンスのリストを表示することができます。インスタンスは、SSH クライアント
を使用して接続できます。AWS Toolkit for Eclipse を使用してサーバーインスタンスをリストし接続す
る方法については、サーバーインスタンスの一覧表示と接続 (p. 642) を参照してください。Windows の
Remote Desktop を使用してインスタンスに接続することもできます。AWS Toolkit for Visual Studio を
使用してサーバーインスタンスをリストし接続する方法については、サーバーインスタンスの一覧表示
と接続 (p. 691) を参照してください。
Important
Elastic Beanstalk 提供の Amazon EC2 インスタンスにアクセスする前に、Amazon EC2 のキー
ペアを作成し、Elastic Beanstalk 提供の Amazon EC2 インスタンスが Amazon EC2 のキーペ
アを使用するよう設定する必要があります。Amazon EC2 キーペアをセットアップするには、
AWS マネジメントコンソールを使用します。Amazon EC2 のキーペアを作成する方法につい
ては、「Amazon EC2 Getting Started Guide」を参照してください。Amazon EC2 インスタン
スを設定して Amazon EC2 キーペアを使用する方法の詳細については、EC2 Key Pair (p. 200)
を参照してください。
Elastic Beanstalk は、デフォルトでは、レガシー Windows コンテナを除き、Windows コンテ
ナ内の EC2 インスタンスへのリモート接続を有効にしません(Beanstalk は、RDP 接続用に
ポート 3389 を使用するようにレガシー Windows コンテナ内の EC2 インスタンスを設定しま
す)。インスタンスへのインバウンドトラフィックを許可するセキュリティグループにルール
を追加することにより、Windows を実行している EC2 インスタンスへのリモート接続の有効
にすることができます。リモート接続を終了するときにこのルールを削除することを強くお勧
めします。次回リモートでログインする必要があるときには、ルールを再度追加できます。詳
細については、『Microsoft Windows 用 Amazon Elastic Compute Cloud ユーザーガイド』の
「Windows インスタンスに対するインバウンド RDP トラフィックのルールの追加」および
「Windows インスタンスへの接続」を参照してください。
環境の Amazon EC2 インスタンスを表示して接続するには
1.
2.
https://console.aws.amazon.com/ec2/)にある Amazon EC2 コンソールを開きます。
コンソールのナビゲーション(左)ペインで、[Load Balancers] をクリックしてください。
3.
Elastic Beanstalk によって作成されたロードバランサーの名前には awseb が含まれます。お使い
の環境のロードバランサーを探し、クリックしてください。
API Version 2010-12-01
295
AWS Elastic Beanstalk 開発者ガイド
インスタンスログ
4.
5.
6.
7.
8.
コンソールウィンドウの下のペインで [Instances] タブをクリックします。
Elastic Beanstalk 環境のロードバランサーが使用するインスタンスのリストが表示されます。接続
したいインスタンス ID をメモしてください。
Amazon EC2 コンソールの左側にある [Instances] リンクをクリックし、リスト内で目的のインス
タンス ID を探します。
お使いの環境で実行されている Amazon EC2 インスタンスのインスタンス ID を右クリックし、
[Connect] を選択します。
[Description] タブにある、インスタンスのパブリック DNS アドレスをメモしてください。
Linux を実行しているインスタンスに接続するには、任意の SSH クライアントを使用してインス
タンスに接続し、ssh -i .ec2/mykeypair.pem ec2-user@<public-DNS-of-the-instance> と入力しま
す。Windows を実行しているインスタンスに接続する方法については、『Amazon Elastic Compute
Cloud Microsoft Windows ガイド』の「Windows インスタンスへの接続」を参照してください。
Amazon EC2 インスタンスに接続する方法の詳細については、「Amazon Elastic Compute Cloud Getting
Started Guide」を参照してください。
インスタンスログ
Abstract
Amazon EC2 インスタンスからログにアクセスします。そのためには、Elastic Beanstalk コンソールでログのス
ナップショットを表示するか、すべてのログをダウンロードします。または、ログを Amazon S3 バケットに発行
するように環境を設定します。
Elastic Beanstalk 環境の EC2 インスタンスが、アプリケーションまたは設定ファイルに関する問題を
解決する際に表示できるログを生成します。ウェブサーバー、アプリケーションサーバー、Elastic
Beanstalk プラットフォームスクリプトおよび AWS CloudFormation によって作成されたログは、個々
のインスタンス上でローカルに保管され、環境管理コンソールまたは EB CLI を使用して簡単に取得す
ることができます。
ログ末尾は、最もよく使われるログファイル – Elastic Beanstalk 運用ログおよびウェブサーバーやアプ
リケーション サーバーのログの最後の 100 行です。環境管理コンソールで、または eb logs を使用
してログ末尾をリクエストすると、環境のインスタンスが最新のログエントリを単一のテキストファイ
ルに連結して、それを Amazon S3 にアップロードします。
バンドルログは、yum および cron のログおよび AWS CloudFormation の複数のログを含むさまざまな
ログファイルのフルログです。バンドルログをリクエストすると、環境のインスタンスはフルログファ
イルを ZIP のアーカイブにパッケージ化して、それを Amazon S3 にアップロードします。
API Version 2010-12-01
296
AWS Elastic Beanstalk 開発者ガイド
インスタンスログ
Note
Elastic Beanstalk Windows Server プラットフォームは、バンドルログをサポートしません。
環境マネジメントコンソール (p. 50)でログを取得するには、[Logs] に移動し、[Request Logs(ログの
リクエスト)] を選択して、取得するログの種類を選択します。ログ末尾を取得するには、[Last 100
Lines(最新 100 行)] を選択します。バンドルログを取得するには、[Full Logs(フルログ)] を選択し
ます。
Elastic Beanstalk がログの取得を完了したら、[Download(ダウンロード)] を選択します。
ログ末尾およびバンドルログは、作成の 15 分後に Amazon S3 から削除されます。ログを保持するた
めに、ログがローテーションされると自動的に Amazon S3 に対してログを発行するように環境を設定
できます。
Amazon S3 へのログのローテーションを有効にするには、環境管理コンソールの [Configuration(設
定)] ページ (p. 112)の [Software Configuration(ソフトウェア設定)] セクションに移動します。[Log
Options(ログオプション)] で、[Enable log file rotation to Amazon S3] を選択してから、[Apply(適
用)] を選択します。環境のインスタンスは 1 時間に一度ローテーションされるログをアップロードし
ようと試みます。
ローテーションされたログを Amazon S3 にアップロードするには、環境のインスタンスに Elastic
Beanstalk Amazon S3 バケットに書き込むためのアクセス許可をもつインスタンスプロファイル (p. 21)
が必要です。これらのアクセス許可は Elastic Beanstalk コンソールで初めて環境を起動する際に Elastic
Beanstalk によって作成するよう求められる、デフォルトのインスタンスプロファイルに含まれていま
す。
アプリケーションが、環境のプラットフォームのデフォルトの設定の一部ではない場所にあるログを生
成する場合、設定ファイル(.ebextensions (p. 147))を使用してデフォルトの設定を拡張できま
す。アプリケーションのログファイルをログ末尾、バンドルログ、またはログローテーションに追加で
きます。
セクション
• インスタンス上のログの場所 (p. 298)
• S3 のログの場所 (p. 298)
• デフォルトのログタスク設定の拡張 (p. 299)
• ローカルインスタンスログのローテーションの設定 (p. 300)
API Version 2010-12-01
297
AWS Elastic Beanstalk 開発者ガイド
インスタンス上のログの場所
インスタンス上のログの場所
ログは、環境内の EC2 インスタンスで標準の場所に保存されます。Elastic Beanstalk は、以下のログ
を生成します。
Linux
• /var/log/eb-activity.log
• /var/log/eb-commandprocessor.log
• /var/log/eb-version-deployment.log
Windows Server
• C:\Program Files\Amazon\ElasticBeanstalk\logs\
これらのログには、設定ファイルに関するメッセージなど、デプロイメントアクティビティに関する
メッセージが含まれます(.ebextensions (p. 147))。
各アプリケーションとウェブサーバーは、固有フォルダにログを保存します。
• Apache – /var/log/httpd/
• IIS – C:\inetpub\wwwroot\
• Node.js – /var/log/nodejs/
• nginx – /var/log/nginx/
• Passenger – /var/app/support/logs/
• Puma – /var/log/puma/
• Python – /opt/python/log/
• Tomcat – /var/log/tomcat8/
S3 のログの場所
環境のログ末尾またはバンドルログをリクエストしたり、インスタンスがローテーションされたログを
アップロードすると、それらは Amazon S3 の Elastic Beanstalk バケットに格納されます。Elastic
Beanstalk は、作成する環境内の各リージョンについて elasticbeanstalk-region-account-id
という名前のバケットを作成します。このバケット内で、ログはパス
resources/environments/logs/logtype/environment-id/instance-id に格納されます。
たとえば、インスタンス i-0a1fd158、Elastic Beanstalk 環境 e-mpcwnwheky、リージョン us-west-2、
アカウント 0123456789012 のログは次の場所に格納されます。
• ログ末尾 –
s3://elasticbeanstalk-us-west-2-0123456789012/resources/environments/logs/tail/e-mpcwnwheky/i-0a1fd158
• バンドルログ –
s3://elasticbeanstalk-us-west-2-0123456789012/resources/environments/logs/bundle/e-mpcwnwheky/i-0a1fd158
• ローテーションされたログ –
s3://elasticbeanstalk-us-west-2-0123456789012/resources/environments/logs/publish/e-mpcwnwheky/i-0a1fd158
API Version 2010-12-01
298
AWS Elastic Beanstalk 開発者ガイド
デフォルトのログタスク設定の拡張
Tip
環境 IDは、環境管理コンソール (p. 50)に表示されます。
Elastic Beanstalk は、ログ末尾とバンドルログを作成から 15 分後に自動的に Amazon S3 から削除し
ます。ローテーションされたログは、削除するか Amazon Glacier に移動するまで保持されます。
デフォルトのログタスク設定の拡張
Elastic Beanstalk は、EC2 インスタンスの /opt/elasticbeanstalk/tasks(Linux)または
C:/Program Files/Amazon/ElasticBeanstalk/config(Windows サーバー)のサブフォルダの
ファイルを使用して、ログ末尾、バンドルログおよびログローテーションのタスクを設定します。
Linux
• ログ末尾 –
/opt/elasticbeanstalk/tasks/taillogs.d/
• バンドルログ –
/opt/elasticbeanstalk/tasks/bundlelogs.d/
• ローテーションされたログ –
/opt/elasticbeanstalk/tasks/publishlogs.d/
Windows Server
• ログ末尾 –
c:/Program Files/Amazon/ElasticBeanstalk/config/taillogs.d/
• ローテーションされたログ –
c:/Program Files/Amazon/ElasticBeanstalk/config/publogs.d/
たとえば、ファイル eb-activity.conf が 2 つのログファイルを末尾ログのタスクに追加します。
/opt/elasticbeanstalk/tasks/taillogs.d/eb-activity.conf
/var/log/eb-commandprocessor.log
/var/log/eb-activity.log
設定ファイル(.ebextensions (p. 147))を使用して .conf ファイルをこれらのフォルダに追加し
て、アプリケーションに固有のログファイルをそれらのタスクに追加できます。
files (p. 153) キーを使用して、変更するタスクに設定ファイルを追加します。たとえば、次の設定
ファイルは /var/log/cloud-init.log をログ末尾に追加する config を環境の各インスタンスに追
加します。
files:
"/opt/elasticbeanstalk/tasks/taillogs.d/cloud-init.conf" :
mode: "000755"
owner: root
group: root
API Version 2010-12-01
299
AWS Elastic Beanstalk 開発者ガイド
ローカルインスタンスログのローテーションの設定
content: |
/var/log/cloud-init.log
このテキストを .config 拡張子をもつファイルに追加して .ebextensions という名前のフォルダ内の
ソースバンドルに追加します。
~/workspace/my-app
|-- .ebextensions
|
`-- tail-logs.config
|-- index.php
`-- styles.css
ログのタスク設定でワイルドカードを使用することもできます。この設定ファイルは .log 拡張子をも
つすべてのファイルをアプリケーションのルートにある log フォルダからバンドルログに追加します。
files:
"/opt/elasticbeanstalk/tasks/bundlelogs.d/applogs.conf" :
mode: "000755"
owner: root
group: root
content: |
/var/app/current/log/*.log
設定ファイルの使用の詳細については、「設定ファイル(.ebextensions)による高度な環境のカス
タマイズ (p. 147)」を参照してください。
ローカルインスタンスログのローテーションの設定
Linux プラットフォームで、Elastic Beanstalk は logrotate を使用して定期的にログのローテーションを
行います。ログがローカルでローテーションされた場合、そのログはローテーションタスクにより選択
され、設定されている場合は Amazon S3 にアップロードされます。ローカルにローテーションされた
ログは、ログの末尾またはバンドルログにはデフォルトで表示されません。
Elastic Beanstalk の logrotate 用の設定ファイルは、/etc/logrotate.elasticbeanstalk.hourly/
にあります。特定のローテーション設定はプラットフォームに固有で、今後のプラットフォームのバー
ジョンで変更される場合があります。使用できる設定の設定と例の詳細については、man logrotate
を実行してください。
設定ファイルは、/etc/cron.hourly/ の cron ジョブで呼び出されます。cron の詳細については、
man cron を実行してください。
API Version 2010-12-01
300
AWS Elastic Beanstalk 開発者ガイド
アーキテクチャの概要
他の AWS サービスで Elastic
Beanstalk を使用する
Abstract
Amazon CloudFront、Amazon Simple Storage Service (Amazon S3)、および Amazon Relational Database Service
(Amazon RDS)などのその他の AWS サービスと Elastic Beanstalk を統合できます。
この章では、Elastic Beanstalk に管理されていないそのほかの AWS サービスのリソースを環境の一部
として Elastic Beanstalk に統合するトピックについて説明します。
アーキテクチャの概要
次の図には、Amazon CloudFront、Amazon Simple Storage Service(Amazon S3)、および Amazon
Relational Database Service(Amazon RDS)などの他の AWS 製品を使用する複数のアベイラビリ
ティーゾーン全体の Elastic Beanstalk のアーキテクチャーの例を示しています。Amazon Route 53、
Elastic Load Balancing、Amazon Elastic Compute Cloud(Amazon EC2)およびホストマネージャ
(HM)の詳細な説明については、「アーキテクチャの概要 (p. 16)」 を参照してください。
API Version 2010-12-01
301
AWS Elastic Beanstalk 開発者ガイド
CloudFront
耐障害性に備えて、N+1 Amazon EC2 インスタンスを確保し、複数のアベイラビリティーゾーンにイ
ンスタンスを分散させることをお勧めします。アベイラビリティーゾーンが停止することはあまりあり
ませんが、たとえ停止しても、別のアベイラビリティーゾーンで実行されている Amazon EC2 インス
タンスを引き続き利用できます。最小インスタンス数と複数のアベイラビリティーゾーンに合わせて、
Auto Scaling を調整することができます。これを行う手順については、「起動設定 (p. 190)」を参照して
ください。耐障害性を備えたアプリケーション構築の詳細については、「Building Fault-Tolerant
Applications on AWS」を参照してください。
次のセクションでは、Amazon CloudFront、Amazon CloudWatch、Amazon DynamoDB Amazon
ElastiCache、 Amazon RDS、Amazon Route 53、Amazon Simple Storage Service、Amazon VPC、お
よび IAM について詳細に説明します。
トピック
• Amazon CloudFront で Elastic Beanstalk を使用する (p. 302)
• AWS CloudTrail とともに Elastic Beanstalk を使用する (p. 302)
• Amazon CloudWatch で Elastic Beanstalk を使用する (p. 303)
•
•
•
•
•
•
•
Amazon CloudWatch Logs で Elastic Beanstalk を使用する (p. 303)
DynamoDB で Elastic Beanstalk を使用する (p. 307)
Amazon ElastiCache で Elastic Beanstalk を使用する (p. 308)
Amazon RDS で Elastic Beanstalk を使用する (p. 308)
Amazon S3 で Elastic Beanstalk を使用する (p. 319)
Amazon VPC で Elastic Beanstalk を使用する (p. 319)
Elastic Beanstalk を AWS Identity and Access Management に使用する (p. 344)
Amazon CloudFront で Elastic Beanstalk を使用す
る
Abstract
Elastic Beanstalk を作成してデプロイした後は、Amazon CloudFront を使用して、世界中のエッジロケーションの
ネットワークを介してウェブコンテンツを配信できます。
Amazon CloudFront は、世界各地に設置されたエッジロケーションのネットワークを使って、ウェブ
コンテンツ(画像、動画など)を配信します。エンドユーザーがルーティングされるのは最寄りのエッ
ジロケーションです。したがって、コンテンツは可能な限り最良のパフォーマンスで配信されます。
CloudFront は、Amazon S3 とシームレスに連携します。Elastic Beanstalk を作成およびデプロイした
ら、Amazon CloudFront にサインアップし、Amazon CloudFront の使用を開始して、コンテンツを配
信することができます。カスタムオリジンからディストリビューションを作成し、Elastic Beanstalk ド
メイン名を使用します。Amazon CloudFront の使用を開始するには、「Amazon CloudFront Developer
Guide」を参照してください。
AWS CloudTrail とともに Elastic Beanstalk を使用
する
Abstract
Elastic Beanstalk アプリケーションを作成してデプロイした後、AWS CloudTrail を使用してアカウントに対する
AWS API 呼び出しをキャプチャし、ログファイル内で履歴を確認できます。
API Version 2010-12-01
302
AWS Elastic Beanstalk 開発者ガイド
CloudWatch
AWS CloudTrail は、その他の AWS サービスからの API の呼び出しの履歴を記録する AWS サービス
です。CloudTrail は、特定の API を呼び出したユーザーおよびアカウント、各呼び出し元の IP アドレ
ス、および呼び出しが発生した時間を特定できます。アプリケーションを Elastic Beanstalk にデプロ
イした後に、CloudTrail をオンにします。
CloudTrail は、新しいまたは既存の Amazon S3 バケットにログファイルを配信します。その後 Amazon
S3 を使用して、暗号化されたログファイルを表示できます。必要であれば、バケット内にログファイ
ルを無期限に保管するか、Amazon S3 ライフサイクルのルールを定義して、自動的にログファイルを
アーカイブまたは削除することができます。
その他の AWS サービスは、CloudTrail の使用を強化できます。たとえば、CloudTrail が新しいログファ
イルを Amazon S3 バケットに配信するときに通知を受けるように、Amazon SNS を設定できます。あ
るいは、さまざまな CloudTrail タスクを実行できるユーザーを明示的に指定するために IAM を使用し
ます。これらのタスクには、CloudTrail 証跡の作成、設定、または削除、ログ記録の開始と停止、およ
びログファイルを使用したバケットへのアクセスが含まれます。
CloudTrail の使用を開始するには 『CloudTrail User Guide』を参照してください。
Amazon CloudWatch で Elastic Beanstalk を使用
する
Abstract
Elastic Beanstalk を作成およびデプロイした後、Amazon CloudWatch を使用してさまざまなメトリックスを監視、
管理、および発行するほか、メトリックスからのデータに基づいてアラームアクションを設定できます。
Amazon CloudWatch では、さまざまなメトリックスをモニタリング、管理、および発行し、メトリッ
クスのデータに基づいてアラームアクションを設定できます。Amazon CloudWatch モニタリングによ
り、システムとアプリケーションのメトリックスを収集、分析、および表示できます。これにより、確
信を持って運用上の決定やビジネス上の決定を下すことができます。Amazon CloudWatch を使用する
と、Amazon EC2 インスタンスのパフォーマンスなど、Amazon Web Services(AWS)リソースのメ
トリックスを収集できます。独自のメトリックスを Amazon CloudWatch に対して直接発行することも
できます。Amazon CloudWatch アラームは、定義したルールに基づいて通知を送信したり、モニタリ
ング対象のリソースを自動的に変更したりするための機能です。これにより、決定事項がさらに実装し
やすくなります。たとえば、Auto Scaling および Amazon Simple Notification Service(Amazon SNS)
アクションを自動的に開始するためのアラームを作成することができます。Elastic Beanstalk は Amazon
CloudWatch を自動的に使用して、アプリケーションや環境のステータスのモニタリングに役立てま
す。Amazon CloudWatch コンソールに移動し、ダッシュボードを表示すると、すべてのリソースとア
ラームの概要情報を入手できます。また、メトリックスの詳細を表示して、カスタムメトリックスを追
加することもできます。Amazon CloudWatch の詳細については、「Amazon CloudWatch Developer
Guide」を参照してください。Elastic Beanstalk で Amazon CloudWatch を使用する方法の例について
は、「例: カスタム Amazon CloudWatch メトリックスの使用 (p. 158)」を参照してください。
Amazon CloudWatch Logs で Elastic Beanstalk を
使用する
Abstract
Elastic Beanstalk は Amazon CloudWatch Logs と統合して、Elastic Beanstalk アプリケーション、システム、およ
びカスタムのログファイルを監視できます。ログの内容をフィルタリングして分析し、フィルタリングされたログ
に基づいてアラームアクションを作成することができます。
API Version 2010-12-01
303
AWS Elastic Beanstalk 開発者ガイド
CloudWatch
CloudWatch Logs を使用すると、Elastic Beanstalk アプリケーション、システム、およびカスタムのロ
グファイルを監視してアーカイブできます。さらに、アラームを設定することで、メトリックスフィル
タが抽出する特定のログストリームイベントに反応してアクションを簡単に実行できるようになりま
す。環境の各 Amazon EC2 にインストールされた CloudWatch Logs エージェントは、設定した各ログ
グループの CloudWatch サービスに対してメトリックスのデータポイントを発行します。各ロググルー
プは、独自のフィルタパターンを適用して、どのログストリームイベントをデータポイントとして
CloudWatch に送信するかを決定します。同じロググループに属するログストリームは、保持、監視、
アクセス制御について同じ設定を共有します。用語と概念も含めて、CloudWatch Logs の詳細につい
ては、「システム、アプリケーション、およびカスタムログファイルのモニタリング」を参照してくだ
さい。
次の図は、CloudWatch Logs を統合して設定された環境で [Monitoring] ページに表示されるグラフを示
しています。この環境のサンプルメトリックスには、CWLHttp4xx および CWLHttp5xx という名前が付
けられています。画像では、CWLHttp4xx メトリックスが、設定ファイルで指定された条件に従ってア
ラームをトリガしています。
次の図は、それぞれ CWLHttp4xx および CWLHttp5xx メトリックスに対応する、
AWSEBCWLHttp4xxPercentAlarm および AWSEBCWLHttp5xxCountAlarm というサンプルアラームに
ついて [Alarms] ページに表示されるグラフを示しています。
API Version 2010-12-01
304
AWS Elastic Beanstalk 開発者ガイド
IAM アクセス許可の付与
CloudWatch Logs エージェント用の IAM アクセス許
可を付与する
CloudWatch Logs との統合を設定する前に、CloudWatch Logs エージェントで使用する IAM アクセス
許可をセットアップする必要があります。環境に割り当てるインスタンスプロファイル (p. 21)に次の
カスタムポリシーをアタッチできます。
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Action": [
"logs:CreateLogGroup",
"logs:CreateLogStream",
"logs:GetLogEvents",
"logs:PutLogEvents",
"logs:DescribeLogGroups",
"logs:DescribeLogStreams",
"logs:PutRetentionPolicy"
],
"Resource": [
"arn:aws:logs:us-west-2:*:*"
]
}
]
}
上記のポリシーのリージョンを、環境を起動するリージョンと置き換えます。
API Version 2010-12-01
305
AWS Elastic Beanstalk 開発者ガイド
設定ファイルを使って CloudWatch Logs 統合をセットアッ
プする
設定ファイルを使って CloudWatch Logs 統合をセッ
トアップする
環境を作成または更新するときに、以下のリストにあるサンプル設定ファイルを使用して、CloudWatch
Logs との統合をセットアップし設定することができます。以下の設定ファイルを含む .zip ファイル
または抽出した設定ファイルを、アプリケーションソースバンドルの最上位レベルにある .ebextensions
ディレクトリに含めることができます。コンテナタイプのウェブサーバーに適したファイルを使用しま
す。各コンテナタイプで使用するウェブサーバーの詳細については、「サポートされているプラット
フォーム (p. 25)」を参照してください。
Note
.NET コンテナで作成された Elastic Beanstalk アプリケーションと CloudWatch Logs との統合
は設定できません。
設定ファイルは次の場所でダウンロードできます。
• Tomcat(Java)設定ファイル
• Apache(PHP および Python)設定ファイル
• nginx(Ruby、Node.js、Docker)設定ファイル
各 .zip ファイルは以下の設定ファイルを含みます。
• cwl-setup.config - このファイルは、環境の各 Amazon EC2 インスタンスに CloudWatch Logs
エージェントをインストールして、エージェントを設定します。また、このファイルは、Elastic
Beanstalk がインスタンスを起動するときに general.conf ファイルを作成します。
cwl-setup.config ファイルは変更しなくても使用できます。
必要に応じて、『Amazon CloudWatch 開発者ガイド』の「クイックスタート: 新しい EC2 インスタ
ンスでの CloudWatch Logs エージェントのインストールと設定」(新規インスタンスの場合)また
は「クイックスタート: 既存の EC2 インスタンスでの CloudWatch Logs エージェントのインストー
ルと設定」(既存インスタンスの場合)で説明されているように、CloudWatch Logs エージェント
を手動でセットアップすることもできます。
• cwl-webrequest-metrics.config - このファイルは、CloudWatch Logs エージェントがどのログ
を監視するかを指定します。また、エージェントで監視する各ログに CloudWatch Logs エージェン
トが適用するメトリックスフィルタも指定します。メトリックスフィルタは、ログファイルの空白区
切りのエントリに対応したフィルタパターンを含みます(カスタムログがある場合は、このサンプル
設定ファイルのサンプルフィルタパターンを必要に応じて更新または置換します)。
メトリックスフィルタは、CloudWatch Logs エージェントが CloudWatch サービスにメトリックス
のデータポイントを送信するときに使用するメトリックス名と値を指定するメトリックス変換も含み
ます。CloudWatch Logs エージェントは、ウェブサーバーのアクセスログファイルのエントリーが
フィルタパターンと一致するかどうかに基づいて、メトリックスのデータポイントを送信します。
最後に、設定ファイルは、環境に Amazon Simple Notification Service トピックが作成されている場
合、cwl-setup.config ファイルで指定されたアラーム条件が満たされたときに、トピックにメッ
セージを送信するアラームアクションも含みます。フィルタパターンの詳細については、『Amazon
CloudWatch 開発者ガイド』の「フィルタとパターンの構文」を参照してください。Amazon SNS の
詳細については、『Amazon Simple Notification Service 開発者ガイド』を参照してください。Elastic
Beanstalk 管理コンソールからアラームを管理する方法の詳細については、「アラームの管理 (p. 291)」
を参照してください。
Note
CloudWatch コストは、使用するアラームについて AWS アカウントに適用されます。
API Version 2010-12-01
306
AWS Elastic Beanstalk 開発者ガイド
CloudWatch Logs 統合のトラブルシューティング
• eb-logs.config - このファイルは、CloudWatch Logs エージェントの CloudWatch Logs ログファ
イルをセットアップします。また、この設定ファイルは、ログのローテーションの一環として、ログ
ファイルが Amazon S3 にコピーされるようにもします。このファイルは変更しなくても使用できま
す。
CloudWatch Logs 統合のトラブルシューティング
Elastic Beanstalk を CloudWatch Logs と統合しようとしたときに、Elastic Beanstalk が環境を起動で
きない場合は、次の一般的な問題を調査します。
• IAM ロールが必要な IAM アクセス許可を持っていません。
• CloudWatch Logs がサポートされていないリージョンで環境を起動しようとしました。
• アクセスログが cwl-webrequest-metrics.config ファイル
(/var/log/httpd/elasticbeanstalk-access_log)で指定されたパスに存在していません。
DynamoDB で Elastic Beanstalk を使用する
Abstract
完全に管理された NoSQL データベースサービスである DynamoDB で Elastic Beanstalk を使用して、高速で予測
可能なパフォーマンスとシームレスな拡張性を提供できます。
DynamoDB は、完全に管理された NoSQL データベースサービスで、高速かつ予測可能なパフォーマ
ンスとシームレスな拡張性を提供します。開発者が DynamoDB を使用して作成したデータベーステー
ブルでは、任意の量のデータを格納して取り出すことができ、どのような量のリクエストトラフィック
も処理できます。DynamoDB によって自動的に、そのテーブルのデータとトラフィックが多数のサー
バーに分散されます。サーバーの数は、指定のリクエスト容量と格納されているデータを処理するのに
十分であるように選択されます。このような分散処理の間も、パフォーマンスは一定で、高速です。
データ項目はすべて SSD(Solid State Disk)に格納され、1 つのリージョン内の複数のアベイラビリ
ティーゾーン間で自動的にレプリケートすることによって、高い可用性とデータ堅牢性を実現します。
データベース管理者は、新しい DynamoDB データベーステーブルの起動、テーブルのリクエスト容量
の増減(このときにダウンタイムやパフォーマンス低下は発生しません)、リソース利用率とパフォー
マンスメトリックスの確認を、すべて AWS マネジメントコンソール から行うことができます。
DynamoDB を使用すると、分散データベースの本番とスケーリングに伴う管理作業を AWS にオフロー
ドできるので、ハードウェアのプロビジョニング、設定と構成、レプリケーション、ソフトウェアパッ
チ適用、クラスタースケーリングなどを自分で行う必要はなくなります。
DynamoDB の詳細については、「DynamoDB Developer Guide」を参照してください。Elastic Beanstalk
での DynamoDB の使用を示すウォークスルーの例については、「例: DynamoDB、CloudWatch、
SNS (p. 177)」を参照してください。DynamoDB を Apache Tomcat アプリケーションのセッション状
態のプロバイダとして使用するため、AWS SDK for Java に基づいて構築されているプロジェクトの詳
細については、AWS SDK for Java ドキュメントの「Manage Tomcat Session State with DynamoDB」
を参照してください。
API Version 2010-12-01
307
AWS Elastic Beanstalk 開発者ガイド
ElastiCache
Amazon ElastiCache で Elastic Beanstalk を使用す
る
Abstract
Amazon ElastiCache ウェブサービスで Elastic Beanstalk を使用して、クラウドで分散型インメモリキャッシュ環
境を設定、管理、および拡大縮小できます。
Amazon ElastiCache は、クラウドでのメモリ内分散キャッシュ環境のセットアップ、管理、およびス
ケーリングを容易に行えるようにするウェブサービスです。このサービスは、パフォーマンスとコスト
効率に優れ、サイズ変更も可能なメモリ内キャッシュを提供するとともに、分散キャッシュ環境のデプ
ロイと管理に伴う複雑性を排除します。Amazon ElastiCache は、Memcached のプロトコルに準拠し
ているため、既存の Memcached 環境でお客様が現在使用しているコード、アプリケーション、および
よく使用されるツールは、サービスでシームレスに機能します。Amazon ElastiCache の詳細について
は、Amazon ElastiCache の製品ページを参照してください。
Amazon ElastiCache で Elastic Beanstalk を使用するには
1.
ElastiCache クラスターを作成します。ElastiCache クラスターを作成する手順については、
「Amazon ElastiCache Getting Started Guide」の「Create a Cache Cluster」を参照してくださ
い。
2.
Amazon ElastiCache セキュリティグループを設定し、Elastic Beanstalk アプリケーションに使用
する Amazon EC2 セキュリティグループからアクセスできるようにします。AWS マネジメントコ
ンソールを使用した EC2 セキュリティグループ名の検索手順については、「セキュリティグルー
プ (p. 200)」を参照してください。詳細については、「Amazon ElastiCache Getting Started Guide」
の「Authorize Access」を参照してください。
レガシーではないコンテナを使用する場合は、設定ファイルを使用して、Amazon ElastiCache を使用
するように Elastic Beanstalk 環境をカスタマイズすることもできます。サポートされているコンテナ
タイプ、および環境のカスタマイズについては、「AWS Elastic Beanstalk 環境設定 (p. 100)」を参照し
てください。Elastic Beanstalk での Amazon ElastiCache の使用を示すスニペットの例については、
「スニペット例: ElastiCache (p. 169)」を参照してください。
Amazon RDS で Elastic Beanstalk を使用する
Abstract
Amazon Relational Database Service(Amazon RDS)ウェブサービスで Elastic Beanstalk を使用して、クラウド
でリレーショナルデータベースを設定、運用、および拡張できます。
Elastic Beanstalk は、「Elastic Beanstalk 環境での Amazon RDS インスタンスの実行 (p. 209)」をサポー
トします。この作業は環境の開発およびテストに適していますが、データベースインスタンスのライフ
サイクルをアプリケーション環境のライフサイクルに結び付けるため、実稼働環境に理想的なものでは
ありません。
Note
アプリケーションで DB インスタンスを使用したことがない場合は、最初に Elastic Beanstalk
コンソールを使用してテスト環境にインスタンスを追加してください。これにより、アプリ
ケーションが環境プロパティを読み取り、接続文字列を作成し、VPC とセキュリティグループ
設定を組み合わせに追加する前に DB インスタンスに接続できることを確認します。詳細につ
いては、「Elastic Beanstalk でデータベースを設定する (p. 209)」を参照してください。
API Version 2010-12-01
308
AWS Elastic Beanstalk 開発者ガイド
デフォルトの VPC で外部 RDS インスタンスを起動して接
続
環境からデータベースインスタンスを分離するには、Amazon Relational Database Service でデータ
ベースインスタンスを実行し、アプリケーションの起動時にそれに接続するように設定します。これに
より、複数の環境をデータベースに接続し、データベースに影響を与えないで環境を終了して、青/緑
のデプロイメントでシームレスな更新を実行できるようになります。
環境内で EC2 インスタンスに外部データベースへの接続を許可するために、追加のセキュリティグルー
プで環境の Auto Scaling グループを設定できます。環境にアタッチするセキュリティグループには、
データベースのインスタンスにアタッチするセキュリティグループ、またはデータベースセキュリティ
グループが着信を許可する別のセキュリティグループと同じものを指定できます。
Note
Elastic Beanstalk が環境の Auto Scaling グループにアタッチする自動生成されるセキュリティ
グループからの着信を許可するデータベースのセキュリティグループにルールを追加すること
で、データベースに環境を接続することができます。ただし、これを行うことで 2 つのセキュ
リティグループ間に依存性が生じます。したがって、データベースのセキュリティグループは
環境のセキュリティグループに依存するため、環境を終了しようとすると、Elastic Beanstalk
は環境のセキュリティグループを削除できなくなります。
データベースインスタンスを起動しセキュリティグループを設定すると、環境内でデータベースインス
タンスを実行するときに Elastic Beanstalk が使用するのと同じメカニズムである環境プロパティを使
用して、接続情報(エンドポイントやパスワードなど)をアプリケーションに配信することができま
す。
セキュリティを高めるには、接続情報を Amazon S3 に保存し、デプロイの間にデータを取得するよう
に Elastic Beanstalk を設定します。設定ファイル(.ebextensions) (p. 147)を使用して環境内のイン
スタンスを設定し、アプリケーションをデプロイするときに、Amazon S3 からファイルを安全に取得
できます。
トピック
• デフォルトの VPC で外部 RDS インスタンスを起動して接続 (p. 309)
• EC2 Classic で外部 RDS インスタンスを起動して接続する (p. 313)
• Amazon S3 に接続文字列を保存する (p. 317)
デフォルトの VPC で外部 RDS インスタンスを起動
して接続
Elastic Beanstalk で実行するアプリケーションで外部データベースを使用するには、まず Amazon RDS
で DB インスタンスを起動します。Amazon RDS で起動するどのインスタンスも Elastic Beanstalk と
Elastic Beanstalk 環境から完全に独立しており、設定で Elastic Beanstalk には依存していません。これ
は、Amazon RDS でサポートされている DB エンジンとインスタンスタイプを、これらが Elastic
Beanstalk で使用されていなくても使用できることを意味します。
以下で、「デフォルト VPC」の手順について説明します。このプロセスは、カスタム VPC を使用する
場合と同じです。唯一の追加要件となるのが、環境と DB インスタンスが相互に通信可能な同じサブ
ネット内に存在することです。カスタム VPC を Elastic Beanstalk で設定する方法の詳細については、
「Amazon VPC で Elastic Beanstalk を使用する (p. 319)」を参照してください。
RDS インスタンスをデフォルトの VPC 内で起動するには
1.
2.
3.
RDS マネジメントコンソールを開きます。
[Launch a DB Instance] を選択します。
[Advanced Settings] に達するまで、ウィザードを進みます。次のオプションに入力した値を書き
留めてください。
API Version 2010-12-01
309
AWS Elastic Beanstalk 開発者ガイド
デフォルトの VPC で外部 RDS インスタンスを起動して接
続
• Master Username
• Master Password
4.
[Network and Security] 設定では、以下を選択します。
• VPC – Default VPC
• Subnet Group – default
• Publicly Accessible – No
• Availability Zone – No Preference
• VPC Security Groups – Create new Security Group
5.
残りのオプションを設定して、[Launch DB Instance] を選択します。次のオプションに入力した値
を書き留めてください。
• Database Name
• Database Port
次に、DB インスタンスにアタッチするセキュリティグループを変更して、適切なポートへのインバウ
ンドトラフィックを許可します。これは、後で Elastic Beanstalk 環境にアタッチするのと同じセキュ
リティグループで、追加するルールは、同じセキュリティグループ内の他のリソースにアクセス許可を
付与するものです。
RDS インスタンスのセキュリティグループの進入ルールを変更する
1.
2.
3.
4.
5.
Amazon RDS コンソールを開きます。
[Instances] を選択します。
DB インスタンスのエントリの横にある矢印を選択して、ビューを展開します。
[Details] タブを選択します。
[Security and Network] セクションでは、DB インスタンスに関連付けられるセキュリティグループ
が表示されます。リンクを開いて、Amazon EC2 コンソールにセキュリティグループを表示しま
す。
API Version 2010-12-01
310
AWS Elastic Beanstalk 開発者ガイド
デフォルトの VPC で外部 RDS インスタンスを起動して接
続
6.
7.
8.
9.
10.
セキュリティグループの詳細で、[Inbound] タブを選択します。
[Edit] を選択します。
[Add Rule] を選択します。
[Type] で、アプリケーションが使用する DB エンジンを選択します。
[Source] で、[Custom IP] を選択し、続いてセキュリティグループ自体の ID を入力します。つま
り、同じグループ内の他のリソースからのトラフィックをデータベースポートで受信するためのセ
キュリティグループリソースを提供します。
11. [Save] を選択します。
次に、実行中の環境に DB インスタンスのセキュリティグループを追加します。この手順によって、ア
タッチされる追加のセキュリティグループを使用して、Elastic Beanstalk が環境内のすべてのインスタ
ンスの再プロビジョニングを行います。
Note
カスタム VPC では、グループ名ではなくセキュリティグループの ID を使用します。
環境にセキュリティグループを追加するには
1.
Elastic Beanstalk コンソールを開きます。
API Version 2010-12-01
311
AWS Elastic Beanstalk 開発者ガイド
デフォルトの VPC で外部 RDS インスタンスを起動して接
続
2.
3.
4.
環境については「management console (p. 50)」をご覧ください。
[Configuration] を選択します。
[Instances] を選択します。
5.
[EC2 security groups] で、自動生成されるセキュリティグループ名の後にコンマを入力し、続いて
RDS インスタンスのセキュリティグループの名前を入力します。デフォルトでは、RDS コンソー
ルが rds-launch-wizard というセキュリティグループを作成します。
6.
7.
[Apply] を選択します。
警告を読み取って、[Save] を選択します。
次に、環境プロパティを使用して環境に接続情報を渡します。Elastic Beanstalk コンソールを使用して
DB インスタンスを環境に追加する (p. 209)と、Elastic Beanstalk は [RDS_HOSTNAME] など環境プロ
パティを使用して、アプリケーションに接続情報を渡します。同じ特性を使用して、統合された DB イ
ンスタンスおよび外部 DB インスタンスの両方で同じアプリケーションコードを使用することができま
す。または、独自のプロパティ名を選択することもできます。
環境プロパティを設定するには
1.
2.
3.
4.
5.
Elastic Beanstalk コンソールを開きます。
環境については「management console (p. 50)」をご覧ください。
[Configuration] を選択します。
[Software Configuration] セクションで、 を選択します。
[Environment Properties] セクションで、アプリケーションが読み取る変数を定義して、接続文字
列を構成します。統合された RDS インスタンスがある環境との互換性を考慮して、次を使用しま
す。
•
•
•
•
•
RDS_DB_NAME – Amazon RDS コンソールに表示される [DB Name]。
RDS_USERNAME – 環境にデータベースを追加するときに入力する [Master Username]。
RDS_PASSWORDE – 環境にデータベースを追加するときに入力する [Master PASSWORD]。
RDS_HOSTNAME – Amazon RDS コンソールに表示される DB インスタンスの [Endpoint]。
RDS_PORT – Amazon RDS コンソールに表示される [Port]。
プラス記号を選択して、プロパティを追加します。
6.
[Apply] を選択します。
API Version 2010-12-01
312
AWS Elastic Beanstalk 開発者ガイド
EC2 Classic で外部 RDS インスタンスを起動して接続する
アプリケーションが環境プロパティを読み込み、接続文字列を作成するようにまだプログラムしていな
い場合は、次の言語固有のトピックで手順を参照してください。
• Java — Amazon RDS データベースを Elastic Beanstalk 環境に追加する (p. 622)
• Node.js — Node.js で新しい Amazon RDS DB インスタンスを使用する (p. 730)
• .NET — .NET で新しい Amazon RDS DB インスタンスを使用する (p. 676)
• PHP — PHP で新しい Amazon RDS DB インスタンスを使用する (p. 755)
• Python — Python での新しい Amazon RDS DB インスタンスの使用 (p. 779)
• Ruby — Ruby で新しい Amazon RDS DB インスタンスを使用する (p. 805)
最後に、環境変数を読み込むアプリケーションによっては、環境のインスタンス上でアプリケーション
サーバーを再起動する必要があります。
環境のアプリケーションサーバーを再起動するには
1.
2.
3.
Elastic Beanstalk コンソールを開きます。
環境については「management console (p. 50)」をご覧ください。
[Actions] を選択し、[Restart App Server(s)] を選択します。
EC2 Classic で外部 RDS インスタンスを起動して接
続する
Elastic Beanstalk で EC2 Classic(VPC がない)を使用すると、セキュリティグループの動作の違いに
より、手順が多少変更されます。EC2 Classic では、DB インスタンスは EC2 セキュリティグループを
使用できません。そのため、Amazon RDS でのみ動作する DB セキュリティグループを取得します。
EC2 セキュリティグループからの進入を許可するルールを DB セキュリティグループに追加できます
が、環境の Auto Scaling グループに DB セキュリティグループをアタッチすることはできません。DB
セキュリティグループと環境間に依存性が生じてしまうことを避けるために、Amazon EC2 に 3 番目
のセキュリティグループを作成し、それに DB セキュリティグループの着信を許可します。次に、Elastic
Beanstalk 環境の Auto Scaling グループにそのセキュリティグループを割り当てます。
EC2 Classic(VPC なし)で RDS インスタンスを起動するには
1.
2.
RDS マネジメントコンソールを開きます。
[Launch a DB Instance] を選択します。
3.
[Advanced Settings] に達するまで、ウィザードを進みます。次のオプションに入力した値を書き
留めてください。
• Master Username
• Master Password
4.
[Network and Security] 設定では、以下を選択します。
• VPC – Not in VPCこのオプションを使用できない場合、お使いのアカウントが EC2-Classic を
サポートしていない可能性があり、VPC でのみ使用可能なインスタンスタイプを選択すること
もできます。
• Availability Zone – No Preference
• DB Security Group(s) – Create new Security Group
API Version 2010-12-01
313
AWS Elastic Beanstalk 開発者ガイド
EC2 Classic で外部 RDS インスタンスを起動して接続する
5.
残りのオプションを設定して、[Launch DB Instance] を選択します。次のオプションに入力した値
を書き留めてください。
• Database Name
• Database Port
EC2-Classic では、DB インスタンスに VPC セキュリティグループに代わる DB セキュリティグループ
があります。Elastic Beanstalk 環境に DB セキュリティグループをアタッチすることはできないため、
DB インスタンスへのアクセスと環境へのアタッチを許可する新しいセキュリティグループを作成する
必要があります。ここでは、これをブリッジセキュリティグループとして、webapp-bridge という名
前を指定します。
ブリッジセキュリティグループを作成するには
1.
2.
3.
4.
Amazon EC2 コンソールを開きます。
ナビゲーションサイドバーで、[Network & Security] の下にある [Security Groups] を選択します。
[Create Security Group] を選択します。
[Security group name] に「webapp-bridge」と入力します。
5.
[Description] には、「Provide access to DB instance from Elastic Beanstalk
environment instances」と入力します。
6.
7.
[VPC] で [No VPC] を選択します。
[Create] を選択します。
次に、DB インスタンスにアタッチするセキュリティグループを変更して、ブリッジセキュリティグ
ループからのインバウンドトラフィックを許可します。
RDS インスタンスのセキュリティグループの進入ルールを変更する
1.
2.
3.
4.
5.
Amazon RDS コンソールを開きます。
[Instances] を選択します。
DB インスタンスのエントリの横にある矢印を選択して、ビューを展開します。
[Details] タブを選択します。
[Security and Network] セクションでは、DB インスタンスに関連付けられるセキュリティグループ
が表示されます。リンクを開いて、Amazon EC2 コンソールにセキュリティグループを表示しま
す。
API Version 2010-12-01
314
AWS Elastic Beanstalk 開発者ガイド
EC2 Classic で外部 RDS インスタンスを起動して接続する
6.
7.
8.
セキュリティグループの詳細で、[Connection Type] を [EC2 Security Group] に設定します。
[EC2 Security Group Name] に、作成したブリッジセキュリティグループの名前を設定します。
[Authorize] を選択します。
次に、実行中の環境にブリッジセキュリティグループを追加します。この手順では、アタッチされる追
加のセキュリティグループで環境内のすべてのインスタンスを再プロビジョニングする必要がありま
す。
環境にセキュリティグループを追加するには
1.
2.
3.
4.
5.
6.
7.
Elastic Beanstalk コンソールを開きます。
環境については「management console (p. 50)」をご覧ください。
[Configuration] を選択します。
[Instances] を選択します。
[EC2 security groups] で、自動生成されるセキュリティグループ名の後にコンマを入力し、続いて
作成したブリッジセキュリティグループ名を入力します。
[Apply] を選択します。
警告を読み取って、[Save] を選択します。
次に、環境プロパティを使用して環境に接続情報を渡します。Elastic Beanstalk コンソールを使用して
DB インスタンスを環境に追加する (p. 209)と、Elastic Beanstalk は [RDS_HOSTNAME] など環境プロ
パティを使用して、アプリケーションに接続情報を渡します。同じ特性を使用して、統合された DB イ
ンスタンスおよび外部 DB インスタンスの両方で同じアプリケーションコードを使用することができま
す。または、独自のプロパティ名を選択することもできます。
環境プロパティを設定するには
1.
2.
Elastic Beanstalk コンソールを開きます。
環境については「management console (p. 50)」をご覧ください。
3.
4.
[Configuration] を選択します。
[Software Configuration] セクションで、
を選択します。
API Version 2010-12-01
315
AWS Elastic Beanstalk 開発者ガイド
EC2 Classic で外部 RDS インスタンスを起動して接続する
5.
[Environment Properties] セクションで、アプリケーションが読み取る変数を定義して、接続文字
列を構成します。統合された RDS インスタンスがある環境との互換性を考慮して、次を使用しま
す。
• RDS_DB_NAME – Amazon RDS コンソールに表示される [DB Name]。
• RDS_USERNAME – 環境にデータベースを追加するときに入力する [Master Username]。
• RDS_PASSWORDE – 環境にデータベースを追加するときに入力する [Master PASSWORD]。
• RDS_HOSTNAME – Amazon RDS コンソールに表示される DB インスタンスの [Endpoint]。
• RDS_PORT – Amazon RDS コンソールに表示される [Port]。
プラス記号を選択して、プロパティを追加します。
6.
[Apply] を選択します。
アプリケーションが環境プロパティを読み込み、接続文字列を作成するようにまだプログラムしていな
い場合は、次の言語固有のトピックで手順を参照してください。
• Java — Amazon RDS データベースを Elastic Beanstalk 環境に追加する (p. 622)
• Node.js — Node.js で新しい Amazon RDS DB インスタンスを使用する (p. 730)
• .NET — .NET で新しい Amazon RDS DB インスタンスを使用する (p. 676)
• PHP — PHP で新しい Amazon RDS DB インスタンスを使用する (p. 755)
• Python — Python での新しい Amazon RDS DB インスタンスの使用 (p. 779)
• Ruby — Ruby で新しい Amazon RDS DB インスタンスを使用する (p. 805)
最後に、環境変数を読み込むアプリケーションによっては、環境のインスタンス上でアプリケーション
サーバーを再起動する必要があります。
環境のアプリケーションサーバーを再起動するには
1.
Elastic Beanstalk コンソールを開きます。
2.
3.
環境については「management console (p. 50)」をご覧ください。
[Actions] を選択し、[Restart App Server(s)] を選択します。
API Version 2010-12-01
316
AWS Elastic Beanstalk 開発者ガイド
Amazon S3 に接続文字列を保存する
Amazon S3 に接続文字列を保存する
環境プロパティでアプリケーションへの接続情報を提供するのは、コードからのパスワードを維持する
優れた方法ですが、完全なソリューションではありません。環境プロパティは環境管理コンソール (p. 50)
では検出されず、環境に設定を記述する権限を持つ任ユーザーが確認できます。プラットフォームに
よっては、環境プロパティはインスタンスログ (p. 296)に表示される場合があります。
自分で制御する Amazon S3 バケットに保存することで、接続情報をロックできます。基本的なステッ
プは次のとおりです。
• 接続文字列を含むファイルを Amazon S3 バケットにアップロードします。
• EC2 インスタンスプロファイルのアクセス権限を付与して、ファイルを読み込みます。
• デプロイの間にファイルをダウンロードするようにアプリケーションを設定します。
• アプリケーションコード内のファイルを読み込みます。
最初に、接続文字列を含むファイルを保存するためのバケットを作成します。この例では、単一のキー
と値を持つ JSON ファイルを使用します。値は、次の Amazon RDS の PostgreSQL DB インスタンス
の JDBC 接続文字列です。
beanstalk-database.json
{
"connection": "jdbc:postgresql://mydb.b5uacpxznijm.us-west-2.rds.amazon
aws.com:5432/ebdb?user=username&password=mypassword"
}
URL の強調表示された部分は、データベースのエンドポイント、ポート、DB 名、ユーザー名とパス
ワードに対応します。
バケットを作成しファイルをアップロードするには
1.
2.
3.
4.
5.
6.
Amazon S3 コンソールを開きます。
[Create Bucket] を選択します。
[Bucket Name] と入力して、[Region] を選択します。
[Create] を選択します。
バケットを開き、[Upload] を選択します。
プロンプトに従ってファイルをアップロードします。
デフォルトでは、アカウントはファイルを所有しそれを管理する権限を持っていますが、アクセス権限
を明示的に付与するまで、IAM ユーザーとロールはそれらを持つことができません。インスタンスプロ
ファイル (p. 21)をポリシーに追加することで、Elastic Beanstalk 環境にインスタンスを付与します。
デフォルトのインスタンスには、aws-elasticbeanstalk-ec2-role という名前を付けます。イン
スタンスプロファイルの名前が不明な場合は、環境管理コンソール (p. 199)の [Configuration] ページで
確認できます。
インスタンスプロファイルにアクセス権限を追加するには
1.
IAM コンソールを開きます。
2.
3.
[Roles] を選択します。
[aws-elasticbeanstalk-ec2-role] を選択します。
4.
5.
[Inline Policies] で [Create Role Policy] を選択します。[Custom Policy] を選択します。
以下のポリシーを追加して、インスタンスにファイルの取得を許可します。
API Version 2010-12-01
317
AWS Elastic Beanstalk 開発者ガイド
Amazon S3 に接続文字列を保存する
{
"Version": "2012-10-17",
"Statement": [
{
"Sid": "database",
"Action": [
"s3:GetObject"
],
"Effect": "Allow",
"Resource": [
"arn:aws:s3:::my-secret-bucket-123456789012/beanstalk-data
base.json"
]
}
]
}
バケットとオブジェクトをバケットとオブジェクトの名前に置き換えます。
次に、デプロイの間に Elastic Beanstalk に Amazon S3 からファイルをダウンロードさせる、以下の設
定ファイル (p. 147)をソースコードに追加します。
~/my-app/.ebextensions/database.config
Resources:
AWSEBAutoScalingGroup:
Metadata:
AWS::CloudFormation::Authentication:
S3Auth:
type: "s3"
buckets: ["my-secret-bucket-123456789012"]
roleName: "aws-elasticbeanstalk-ec2-role"
files:
"/tmp/beanstalk-database.json" :
mode: "000644"
owner: root
group: root
authentication: "S3Auth"
source: https://s3-us-west-2.amazonaws.com/my-secret-bucket123456789012/beanstalk-database.json
この設定ファイルでは、二つの手順を実行します。Resources キーは、Elastic Beanstalk が Amazon
S3 にアクセスするのに使用できる、お使いの環境の Auto Scaling グループのメタデータに対する認証
方法を追加します。files キーは、Elastic Beanstalk に対してデプロイの間に Amazon S3 からファイ
ルをダウンロードして、/tmp/ に保存するよう指示します。
ソースコードのルートの .ebextensions フォルダの設定ファイルでアプリケーションをデプロイし
ます。アクセス権限を正しく設定した場合、デプロイが成功し、ファイルが環境のインスタンスすべて
にダウンロードされます。正しく設定していない場合、デプロイは失敗します。
最後に、JSON ファイルを読み取り、その接続文字列を使用してデータベースに接続するように、アプ
リケーションにコードを追加します。詳細については、以下の各言語固有のトピックを参照してくださ
い。
• Java — Amazon RDS データベースを Elastic Beanstalk 環境に追加する (p. 622)
API Version 2010-12-01
318
AWS Elastic Beanstalk 開発者ガイド
Amazon S3
• Node.js — Node.js で新しい Amazon RDS DB インスタンスを使用する (p. 730)
• .NET — .NET で新しい Amazon RDS DB インスタンスを使用する (p. 676)
• PHP — PHP で新しい Amazon RDS DB インスタンスを使用する (p. 755)
• Python — Python での新しい Amazon RDS DB インスタンスの使用 (p. 779)
• Ruby — Ruby で新しい Amazon RDS DB インスタンスを使用する (p. 805)
Amazon S3 で Elastic Beanstalk を使用する
Abstract
Amazon S3 シンプルウェブサービスで Elastic Beanstalk を使用して、高耐久性でフォールトトレラントなデータ
ストレージを提供できます。
Amazon S3 には、耐久性と耐障害性の高いデータストレージが用意されています。見た目はシンプル
ですが、実際は Amazon S3 によって、リージョンの複数の施設の複数のデバイスにわたって、オブ
ジェクトが冗長的に保存されます。
Elastic Beanstalk は、作成する環境内の各リージョン用に elasticbeanstalk-region-account-id とい
う名前の Amazon S3 バケットを作成します。Elastic Beanstalk は、このバケットを使用してアプリケー
ションのバージョン、ログ、その他のサポートファイルを保存します。
Elastic Beanstalk は、環境でのバケットへの書き込みを許可し誤った削除を禁止するバケットポリシー
を作成し、バケットに適用します。Elastic Beanstalk によって作成されたバケットを削除する必要があ
る場合は、その前に Amazon S3 マネジメントコンソールでバケットプロパティの [Permissions] セク
ションからバケットポリシーを削除してください。
Elastic Beanstalk ストレージバケットを削除するには(コンソール)
1.
2.
3.
4.
5.
6.
7.
8.
9.
Amazon S3 マネジメントコンソールを開きます。
Elastic Beanstalk ストレージバケットを選択します。
[Properties] を選択します。
[Permissions] を選択します。
[Edit Bucket Policy] を選択します。
[Delete] を選択します。
[OK] を選択します。
[Actions] を選択してから、[Delete Bucket] を選択します。
バケットの名前を入力し、[Delete] を選択します。
Amazon VPC で Elastic Beanstalk を使用する
Abstract
Amazon Virtual Private Cloud(Amazon VPC)を使用すると、アマゾン ウェブ サービス(AWS)クラウド内の独
自の切り離されたセクションで仮想ネットワーク(Virtual Private Cloud(VPC)とも呼ばれます)を定義できま
す。
Amazon Virtual Private Cloud(Amazon VPC)を使用すると、アマゾン ウェブ サービス(AWS)クラ
ウド内の独自の切り離されたセクションで仮想ネットワーク(Virtual Private Cloud(VPC)とも呼ば
れます)を定義できます。VPC を使用すると、内部ウェブアプリケーション(リクルーティングアプ
リケーションなど)、構内データベースに接続するウェブアプリケーション(VPN 接続を使用)、プ
API Version 2010-12-01
319
AWS Elastic Beanstalk 開発者ガイド
必要な VPC 設定の確認
ライベートウェブサービスバックエンドなど、ウェブアプリケーションの新しいクラスを Elastic
Beanstalk にデプロイできます。Elastic Beanstalk は、VPC 内でインスタンスなどの AWS リソースを
起動します。VPC は従来のネットワークとよく似ていますが、AWS のスケーラブルなインフラストラ
クチャを使用できるというメリットがあります。VPC は完全にコントロールできます。例えば、IP ア
ドレス範囲を選択したり、サブネットを作成したりできます。また、ルートやネットワークゲートウェ
イを設定することもできます。各サブネットでのリソースの保護には、セキュリティグループ、ネット
ワークアクセスコントロールリストなど、複数のセキュリティレイヤーを使用できます。Amazon VPC
の詳細については、「Amazon VPC ユーザーガイド」を参照してください。
Note
Elastic Beanstalk は、現在ウェブのプロキシを設定する Linux プロキシ設定(HTTP_PROXY、
HTTPS_PROXY および NO_PROXY)をサポートしていません。お客様の環境内のインスタン
スは、インターネットへ直接アクセスするか、NAT デバイスを介してアクセスする必要があり
ます。
Important
Elastic Beanstalk 環境内のインスタンスでは、Network Time Protocol (NTP)を使用してシス
テムクロックを同期させます。インスタンスが UDP ポート 123 上で通信できない場合は、ク
ロックが同期しなくなり、Elastic Beanstalk ヘルスレポートに問題が発生することがあります。
これらの問題を回避するには、VPC のセキュリティグループとネットワーク ACL で、ポート
123 上の送信 UDP トラフィックを許可していることを確認してください。
必要な VPC 設定の確認
Elastic Beanstalk で Amazon VPC を使用する場合、Amazon EC2 インスタンスなどの Elastic Beanstalk
リソースをパブリックサブネットまたはプライベートサブネットで起動することができます。必要なサ
ブネットは、使用する Elastic Beanstalk アプリケーション環境タイプと、起動するリソースがパブリッ
クかプライベートかによって異なります。次のシナリオでは、特定の環境で使用するサンプル VPC 設
定について説明します。
トピック
• 単一インスタンス環境 (p. 320)
• ロードバランシングでオートスケーリングの環境 (p. 321)
• AWS への独自ネットワーク拡張 (p. 322)
単一インスタンス環境
単一インスタンス環境では、Elastic Beanstalk は Elastic IP アドレス(静的なパブリック IP アドレス)
をインスタンスに割り当てることで、インターネットを使用した直接通信を可能にします。単一インス
タンス環境では、ネットワークアドレス変換(NAT)など、他のネットワークインターフェイスは必要
ありません。
バックエンド Amazon RDS DB インスタンスなど、関連付けられているプライベートリソースがない
単一インスタンス環境の場合、1 つのパブリックサブネットで VPC を作成し、そのサブネットにその
インスタンスを含めます。詳細については、「例: 関連付けられているプライベートリソースが VPC
内にない単一インスタンスの環境の起動 (p. 322)」を参照してください。
パブリックにしたくないリソースがある場合、1 つのパブリックサブネットと 1 つのプライベートサブ
ネットで VPC を作成します単一 Amazon EC2 インスタンスなど、すべてのパブリックリソースをパブ
リックサブネットに追加し、バックエンド Amazon RDS DB インスタンスなどのプライベートリソー
スをプライベートサブネットに追加します。VPC で Amazon RDS DB インスタンスを起動する場合は、
API Version 2010-12-01
320
AWS Elastic Beanstalk 開発者ガイド
必要な VPC 設定の確認
異なるアベイラビリティーゾーンに 2 つ以上の別のプライベートサブネットを作成する必要があります
(Amazon RDS は必須)。
ロードバランシングでオートスケーリングの環境
負荷分散型オートスケーリング環境の場合は、VPC としてパブリック/プライベートサブネットを作成
するか、単一パブリックサブネットを使用することができます。負荷分散型オートスケーリング環境で
パブリックサブネットとプライベートサブネットの両方を持つ場合、プライベートサブネットにある
Amazon EC2 インスタンスはインターネット接続を必要とします。以下のシナリオを検討してくださ
い。
シナリオ
• Amazon EC2 インスタンスにプライベート IP アドレスを使用させる (p. 321)
• プライベートなリソースを用意する (p. 321)
• プライベートリソースを用意しない (p. 321)
• プライベートサブネットの Amazon EC2 インスタンスへの直接アクセス権が必要です。 (p. 322)
Amazon EC2 インスタンスにプライベート IP アドレスを使用させる
各アベイラビリティーゾーン(Elastic Beanstalk 条件)で、VPC 用のパブリックおよびプライベート
サブネットを作成します。次に、パブリックサブネットにロードバランサーや NAT などのパブリック
リソースを追加します。Elastic Beanstalk がそれらに一意の Elastic IP アドレス(静的なパブリック IP
アドレス)を割り当てます。プライベートサブネット内の Amazon EC2 インスタンスを起動します。
これにより、Elastic Beanstalk は、プライベート IP アドレスをそれらに割り当てます。
パブリック IP アドレスがなければ、Amazon EC2 インスタンスはインターネットと直接通信できませ
ん。プライベートサブネット内の Amazon EC2 インスタンスはデフォルトではアウトバウンドトラ
フィックを送信できませんが、インターネットから未承諾のインバウンド接続を受け取ることもできま
せん。
プライベートサブネットおよびパブリックサブネットと、パブリックサブネットより外のインターネッ
トが通信可能にするために、以下の処理を行うルーティングルールを作成します。
• ロードバランサーを使用して Amazon EC2 インスタンスへのすべてのインバウンドトラフィックを
ルーティングする。
• Amazon EC2 インスタンスから NAT デバイスを介して、すべてのアウトバウンドトラフィックを
ルーティングする。
プライベートなリソースを用意する
バックエンド Amazon RDS DB インスタンスなどのプライベートリソースを関連付けている場合は、
プライベートサブネットでリソースを起動します。
Note
Amazon RDS では、別のアベイラビリティーゾーンに少なくとも 2 つのサブネットが必要で
す。詳細については、「例: Amazon RDS を使用して VPC で Elastic Beanstalk を起動す
る (p. 335)」を参照してください。
プライベートリソースを用意しない
VPC 用のパブリックサブネットを 1 つ作成できます。単一パブリックサブネットを使用する場合は、
[Associate Public IP Address] を選択して、ロードバランサーと Amazon EC2 インスタンスをパブリッ
クサブネットに追加する必要があります。Elastic Beanstalk は各 Amazon EC2 インスタンスにパブリッ
API Version 2010-12-01
321
AWS Elastic Beanstalk 開発者ガイド
VPC のシングルインスタンス環境
ク IP アドレスを割り当てるため、これらのインスタンスはインターネットと通信するために NAT デバ
イスを必要としません。
詳細については、「例: VPC 内のパブリックリソースとプライベートリソースで構成される負荷分散型
オートスケーリング環境の起動 (p. 326)」を参照してください。
プライベートサブネットの Amazon EC2 インスタンスへの直接アクセス権が必
要です。
プライベートサブネット内の Amazon EC2 インスタンスに直接アクセスする必要がある場合は(SSH
を使用してインスタンスにサインインする場合など)、インターネットからのリクエストをプロキシす
る拠点ホストをパブリックサブネット内に作成します。拠点ホストを使用して、インターネットからイ
ンスタンスに接続することができます。詳細については、「Example: 拠点ホストを使用して VPC で
Elastic Beanstalk アプリケーションを起動する (p. 332)」を参照してください。
AWS への独自ネットワーク拡張
独自ネットワークをクラウドに拡張し、VPC からインターネットへの直接アクセスを可能にするには、
VPN ゲートウェイを作成します。VPN ゲートウェイを作成する詳細については、『Amazon VPC ユー
ザーガイド』の「シナリオ 3: パブリックサブネットとプライベートサブネット、およびハードウェア
VPN アクセスを持つ VPC」を参照してください。
例: 関連付けられているプライベートリソースが VPC
内にない単一インスタンスの環境の起動
Abstract
Elastic Beanstalk アプリケーションをパブリックサブネットにデプロイできます。パブリックアクセスを禁止した
い Amazon RDS DB インスタンスの場合など、インスタンスに関連付けられているプライベートリソースがない単
一インスタンスのみを使用している場合は、この設定を使用します。
Elastic Beanstalk アプリケーションをパブリックサブネットにデプロイできます。パブリックアクセス
を禁止したい Amazon RDS DB インスタンスの場合など、インスタンスに関連付けられているプライ
ベートリソースがない単一インスタンスのみを使用している場合は、この設定を使用します。Elastic
Beanstalk は Elastic IP アドレスをインスタンスに関連付けることによって、VPC インターネットゲー
トウェイを経由してインターネットにアクセスできるようになります。
API Version 2010-12-01
322
AWS Elastic Beanstalk 開発者ガイド
VPC のシングルインスタンス環境
VPC 内でシングルインスタンス Elastic Beanstalk アプリケーションをデプロイするには、次の操作を
完了する必要があります。
トピック
• パブリックサブネットを持つ VPC を作成する (p. 323)
• Elastic Beanstalk へのデプロイ (p. 325)
パブリックサブネットを持つ VPC を作成する
VPC を作成するには
1.
2.
3.
AWS マネジメントコンソールにサインインした後、Amazon VPC コンソール(https://
console.aws.amazon.com/vpc/)を開きます。
ナビゲーションペインで、[VPC Dashboard] を選択します。次に、[Start VPC Wizard] を選択しま
す。
[VPC with a Single Public Subnet] を選択し、[Select] を選択します。
API Version 2010-12-01
323
AWS Elastic Beanstalk 開発者ガイド
VPC のシングルインスタンス環境
確認ページが表示され、VPC およびサブネットに使用されている CIDR ブロックが示されます。
このページには、サブネットおよび関連付けられているアベイラビリティーゾーンも表示されま
す。
4.
[VPC の作成] を選択します。
AWS によって、VPC、サブネット、インターネットゲートウェイ、およびルートテーブルが作成
されます。[OK] を選択してウィザードを終了します。
AWS は、VPC を正常に作成した後、その VPC に VPC ID を割り当てます。これは、次のステッ
プで必要になります。VPC ID を表示するには、[Amazon VPC console] の左ペインで [Your VPCs]
を選択します。
API Version 2010-12-01
324
AWS Elastic Beanstalk 開発者ガイド
VPC のシングルインスタンス環境
Elastic Beanstalk へのデプロイ
VPC を設定したら、VPC 内部に環境を作成して、アプリケーションを Elastic Beanstalk にデプロイで
きます。インストールには、Elastic Beanstalk コンソールを使用するか、AWS ツールキット、AWS
CLI、EB CLI、または Elastic Beanstalk API を使用できます。Elastic Beanstalk コンソールを使用した
場合、.war ファイルまたは .zip ファイルをアップロードして、ウィザード内で VPC 設定を選択する
だけでかまいません。その後、Elastic Beanstalk は VPC 内に環境を作成し、アプリケーションをデプ
ロイします。または、AWS ツールキット、AWS CLI EB CLI、Elastic Beanstalk API を使用してアプリ
ケーションをデプロイできます。その場合は、設定ファイルで VPC オプション設定を定義して、この
ファイルをソースバンドルと共にデプロイする必要があります。このトピックでは、両方の方法の手順
を説明します。
Elastic Beanstalk コンソールでデプロイする
Elastic Beanstalk アプリケーションの作成時、または環境の起動時に、Elastic Beanstalk コンソールは
VPC 内に環境を作成する方法をガイドします。詳細については、「アプリケーションを作成しま
す。 (p. 39)」を参照してください。
インスタンスの VPC ID とサブネット ID を選択する必要があります。デフォルトでは、VPC は
10.0.0.0/24 を使用してがパブリックサブネットを作成します。 サブネット ID を表示するには、[Amazon
VPC console] で [Subnets] を選択します。
AWS ツールキット、Eb、CLI、または API でデプロイする
AWS Toolkit、eb、CLI または API を使用してアプリケーションを Elastic Beanstalk にデプロイする場
合は、ファイルで VPC オプション設定を指定して、ソースバンドルと一緒にデプロイする必要があり
ます。ツールキットまたは eb を使用してアプリケーションをデプロイするには、拡張子が .config
の設定ファイル(例:myconfig.config)を作成し、ソースバンドルの最上位ディレクトリの
.ebextensions というディレクトリ内に配置します。CLI または API を使用する場合は、ファイル名
でこれらの設定を指定して、ファイル名をパラメータとして渡すことができます。次のいずれかの方法
を使用して、アプリケーションを Elastic Beanstalk にデプロイします。
• Java — AWS Elastic Beanstalk で Java アプリケーションを作成してデプロイする (p. 591)
API Version 2010-12-01
325
AWS Elastic Beanstalk 開発者ガイド
専用インスタンスによる負荷分散環境
• EB CLI – Elastic Beanstalk コマンドラインインターフェイス(EB CLI) (p. 403)
• CLI または API – アプリケーションを作成します。 (p. 39)(CLI または API のセクションを参照)
• CLI または API – AWS Elastic Beanstalk 環境を作成する (p. 53)(CLI または API のセクションを参
照)
aws:ec2:vpc (p. 128) 名前空間:
VPCId
VPC の識別子。
Subnets
インスタンスを起動するサブネットの識別子。
カンマで区切ることで、複数の識別子を指定できます。
option_settings:
aws:ec2:vpc:
VPCId: "vpd_id"
Subnets: "instance_subnet, etc"
例: VPC 内のパブリックリソースとプライベートリ
ソースで構成される負荷分散型オートスケーリング
環境の起動
Abstract
この例は、NAT インスタンスを使用して、Elastic Beanstalk アプリケーションを Amazon Virtual Private Cloud
(Amazon VPC)内の負荷分散型オートスケーリング環境にデプロイする方法を示しています。プライベートサブ
ネットの Amazon EC2 インスタンスがインターネットと通信するには、アウトバウンド接続用の NAT インスタン
スがパブリックサブネットにあり、インバウンド接続用のロードバランサーが同じくパブリックサブネットにある
必要があります。
パブリック/プライベートサブネットを持つ VPC 内の負荷分散型オートスケーリング環境に Elastic
Beanstalk アプリケーションをデプロイできます。Elastic Beanstalk が Amazon EC2 インスタンスにプ
ライベート IP アドレスを割り当てるようにする場合は、この設定を使用します。この設定では、プラ
イベートサブネットの Amazon EC2 インスタンスは、パブリックサブネット内のロードバランサーと
ネットワークアドレス変換(NAT)ゲートウェイを必要とします。ロードバランサーは、インターネッ
トからのインバウンドトラフィックを Amazon EC2 インスタンスにルーティングします。Amazon EC2
インスタンスからのアウトバウンドトラフィックをインターネットにルーティングするには、NAT ゲー
トウェイを作成する必要があります。インフラストラクチャは次の図と似ています。
API Version 2010-12-01
326
AWS Elastic Beanstalk 開発者ガイド
専用インスタンスによる負荷分散環境
Note
この設定では、インスタンスがプライベートサブネットに配置されているため、インスタンス
に接続できません。インスタンスに接続する必要があり、インスタンスがプライベートサブ
ネットにある場合は、「Example: 拠点ホストを使用して VPC で Elastic Beanstalk アプリケー
ションを起動する (p. 332)」で説明されているように、拠点ホストを実装する必要があります。
NAT ゲートウェイを使用して VPC 内で Elastic Beanstalk アプリケーションをデプロイするには、次の
操作を行う必要があります。
トピック
• パブリックサブネットとプライベートサブネットでの VPC の作成 (p. 327)
• インスタンスのセキュリティグループを作成する (p. 329)
• Elastic Beanstalk へのデプロイ (p. 329)
パブリックサブネットとプライベートサブネットでの VPC の
作成
Amazon VPC コンソールを使用して VPC を作成します。
VPC を作成するには
1.
[Amazon VPC console] にサインインします。
2.
ナビゲーションペインで、[VPC Dashboard] を選択します。続いて、[Start VPC Wizard] を選択し
ます。
[VPC with Public and Private Subnets]、[Select] の順に選択します。
3.
API Version 2010-12-01
327
AWS Elastic Beanstalk 開発者ガイド
専用インスタンスによる負荷分散環境
4.
Elastic Load Balancing ロードバランサーと Amazon EC2 インスタンスが通信できるようにするに
は、これらが同じアベイラビリティーゾーンにある必要があります。各 [Availability Zone] リスト
から同じアベイラビリティーゾーンを選択します。
5.
6.
NAT ゲートウェイの Elastic IP アドレスを選択します。
[Create VPC] を選択します。
ウィザードが、VPC、サブネット、インターネットゲートウェイの作成を開始します。また、メイ
ンルートテーブルを更新して、カスタムルートテーブルを作成します。最後に、ウィザードはパブ
リックサブネットで NAT ゲートウェイを作成します。
Note
NAT ゲートウェイの代わりにパブリックサブネットで NATインスタンスを起動すること
を選択できます。 詳細については、Amazon VPC ユーザーガイドの「シナリオ 2: パブリッ
クサブネットとプライベートサブネットを持つ VPC (NAT)」を参照してください。
<step>
VPC が正しく作成されると、VPC ID が発行されます。 これは、次のステップで必要になります。
VPC ID を表示するには、[Amazon VPC console] の左ペインで [Your VPCs] を選択します。
</step>
API Version 2010-12-01
328
AWS Elastic Beanstalk 開発者ガイド
専用インスタンスによる負荷分散環境
インスタンスのセキュリティグループを作成する
オプションで、Elastic Beanstalk インスタンスのセキュリティグループを作成できます。セキュリティ
グループに関連するインスタンスとの送受信トラフィックを制御するルールを、各セキュリティグルー
プに追加できます。セキュリティグループを作成するには、以下の手順を実行します。後でセキュリ
ティグループを識別できるように、このセキュリティグループに Instance Group のような有効な名
前を付ける必要があります。セキュリティグループの詳細については、『Amazon VPC ユーザーガイ
ド』の 「VPC のセキュリティグループ」を参照してください。
新しいセキュリティグループを作成するには
1.
https://console.aws.amazon.com/vpc/にある Amazon VPC コンソールを開きます。
2.
3.
4.
ナビゲーションペインで、[Security Groups] を選択します。
[Create Security Group] を選択します。
[Create Security Group] ダイアログボックスで、次の内容を入力して [Yes, Create] を選択します。
Name tag (オプション)
セキュリティグループの名前タグを入力します。
グループ名
セキュリティグループの名前を入力します。
説明
セキュリティグループの説明を入力します。
VPC
VPC を選択します。
セキュリティグループが作成され、[セキュリティグループ] ページに表示されます。ID
(sg-xxxxxxxx など) が付いている点に注目してください。ページの右上にある [Show/Hide] をク
リックして、[Group ID] の列をオンにする必要がある場合があります。
Elastic Beanstalk へのデプロイ
VPC を設定したら、VPC 内部に環境を作成して、アプリケーションを Elastic Beanstalk にデプロイで
きます。インストールには、Elastic Beanstalk コンソールを使用するか、AWS ツールキット、AWS
CLI、EB CLI、または Elastic Beanstalk API を使用できます。Elastic Beanstalk コンソールを使用した
場合、.war ファイルまたは .zip ファイルをアップロードして、ウィザード内で VPC 設定を選択する
だけでかまいません。その後、Elastic Beanstalk は VPC 内に環境を作成し、アプリケーションをデプ
ロイします。または、AWS ツールキット、AWS CLI EB CLI、Elastic Beanstalk API を使用してアプリ
ケーションをデプロイできます。その場合は、設定ファイルで VPC オプション設定を定義して、この
ファイルをソースバンドルと共にデプロイする必要があります。このトピックでは、両方の方法の手順
を説明します。
トピック
• Elastic Beanstalk コンソールでデプロイする (p. 329)
• AWS ツールキット、AWS CLI、EB CLI、または Elastic Beanstalk API でデプロイする (p. 330)
Elastic Beanstalk コンソールでデプロイする
Elastic Beanstalk コンソールに、VPC 内部に新しい環境を作成する手順が表示されます。.war ファイ
ル (Java アプリケーション)、または .zip (その他すべてのアプリケーション) ファイルを提供する必
要があります。Elastic Beanstalk 環境ウィザードの [VPC Configuration] ページで、次の選択を行う必
要があります。
API Version 2010-12-01
329
AWS Elastic Beanstalk 開発者ガイド
専用インスタンスによる負荷分散環境
VPC
VPC を選択します。
VPC セキュリティグループ
上の手順で作成したインスタンスセキュリティグループを選択します。
ELB の可視性
ロードバランサーを公開する場合は External を選択し、ロードバランサーを VPC 内でのみ使用
できるようにする場合は Internal を選択します。
ロードバランサーと EC2 インスタンスのサブネットを選択します。必ず、ロードバランサーのパブリッ
クサブネットと Amazon EC2 インスタンスのプライベートサブネットを選択します。デフォルトでは、
VPC 作成ウィザードにより 10.0.0.0/24 にパブリックサブネットが、10.0.1.0/24 にプライベート
サブネットが作成されます。
サブネット ID を表示するには、[Amazon VPC console] で [Subnets] を選択します。
AWS ツールキット、AWS CLI、EB CLI、または Elastic Beanstalk API でデプ
ロイする
AWS Toolkit、eb、CLI または API を使用してアプリケーションを Elastic Beanstalk にデプロイする場
合は、ファイルで VPC オプション設定を指定して、ソースバンドルと一緒にデプロイする必要があり
ます。ツールキットまたは eb を使用してアプリケーションをデプロイするには、拡張子が .config
の設定ファイル(例:myconfig.config)を作成し、ソースバンドルの最上位ディレクトリの
.ebextensions というディレクトリ内に配置します。CLI または API を使用する場合は、ファイル名
でこれらの設定を指定して、ファイル名をパラメータとして渡すことができます。次のいずれかの方法
を使用して、アプリケーションを Elastic Beanstalk にデプロイします。
• Java — AWS Elastic Beanstalk で Java アプリケーションを作成してデプロイする (p. 591)
• EB CLI – Elastic Beanstalk コマンドラインインターフェイス(EB CLI) (p. 403)
• CLI または API – アプリケーションを作成します。 (p. 39)(CLI または API のセクションを参照)
• CLI または API – AWS Elastic Beanstalk 環境を作成する (p. 53)(CLI または API のセクションを参
照)
オプション設定で設定ファイルを作成する場合は、次の設定オプションを指定する必要があります。
API Version 2010-12-01
330
AWS Elastic Beanstalk 開発者ガイド
専用インスタンスによる負荷分散環境
aws:autoscaling:launchconfiguration (p. 118) 名前空間:
EC2KeyName
インスタンスに適用する Amazon EC2 キーペアの名前。
InstanceType
環境でアプリケーションを実行するために使用されるインスタンスタイプ。
使用できるインスタンスタイプは、プラットフォーム、ソリューションスタック(設定)、リー
ジョンによって異なります。選択したソリューションスタックで使用できるインスタンスタイプを
取得するには、DescribeConfigurationOptions アクション(API の場合)、
describe-configuration-options コマンド(AWS CLI (p. 921) の場合)を使用します。
SecurityGroups
インスタンスに適用されるセキュリティグループの識別子。この例では、「インスタンスのセキュ
リティグループを作成する (p. 329)」で作成したセキュリティグループの識別子となります。セキュ
リティグループを作成していない場合は、VPC のデフォルトのセキュリティグループを使用でき
ます。
カンマで区切ることで、複数の識別子を指定できます。
aws:ec2:vpc (p. 128) 名前空間:
VPCId
VPC の識別子。
Subnets
インスタンスを起動するサブネットの識別子。この例では、これはプライベートサブネットの ID
です。
カンマで区切ることで、複数の識別子を指定できます。
ELBSubnets
ロードバランサーのサブネットの識別子。この例では、これはパブリックサブネットの ID です。
カンマで区切ることで、複数の識別子を指定できます。
ELBScheme(オプション)
VPC 外部から Elastic Beanstalk アプリケーションにアクセスできないようにするために VPC 内に
内部ロードバランサーを作成する場合は、internal を指定します。
DBSubnets(オプション)
Amazon RDS DB サブネットの識別子を含みます。Amazon RDS DB インスタンスをアプリケー
ションの一部として追加する場合にのみ使用します。例については、「例: Amazon RDS を使用し
て VPC で Elastic Beanstalk を起動する (p. 335)」を参照してください。
Note
DBSubnets を使用する場合は、VPC で追加のサブネットを作成し、リージョン内のすべ
てのアベイラビリティーゾーンを対象にする必要があります。
VPC 内で Elastic Beanstalk アプリケーションをデプロイするときに設定できるオプション設定の例を
次に示します。
option_settings:
aws:autoscaling:launchconfiguration:
EC2KeyName: "ec2_key_name"
InstanceType: "instance_type"
SecurityGroups: "security_group_id, etc"
aws:ec2:vpc:
VPCId: "vpd_id"
API Version 2010-12-01
331
AWS Elastic Beanstalk 開発者ガイド
拠点ホスト
Subnets: "instance_subnet, etc"
ELBSubnets: "elb_subnet, etc"
Example: 拠点ホストを使用して VPC で Elastic
Beanstalk アプリケーションを起動する
Abstract
このようなインスタンスに接続するには、パブリックサブネット内に作成した拠点ホストに接続する必要がありま
す。プライベート/パブリックサブネットで構成される Amazon Virtual Private Cloud(Amazon VPC)を作成でき
ます。
プライベートサブネット内に配置されている Amazon EC2 インスタンスに、リモートで接続すること
はできません。インスタンスに接続するには、プロキシとして動作する拠点サーバーをパブリックサブ
ネットに設定できます。例えば、パブリックサブネットで SSH ポートフォーワード機能または RDP
ゲートウェイを設定し、ご自身のネットワークからデータベースサーバーに向かうトラフィックをプロ
キシできます。このセクションの例では、プライベートサブネットおよびパブリックサブネットで VPC
を作成する方法を示しています。インスタンスはプライベートサブネット内に、拠点ホスト、NAT ゲー
トウェイ、およびロードバランサーはパブリックサブネット内に配置されています。インフラストラク
チャは次の図と似ています。
拠点ホストを使用して VPC 内で Elastic Beanstalk アプリケーションをデプロイするには、次の操作を
完了する必要があります。
トピック
• パブリックサブネットとプライベートサブネットでの VPC の作成 (p. 332)
• 拠点ホストのセキュリティグループを作成および設定する (p. 333)
• インスタンスのセキュリティグループの更新 (p. 334)
• 拠点ホストの作成 (p. 334)
パブリックサブネットとプライベートサブネットでの VPC の
作成
アプリケーションのデプロイを含む、「例: VPC 内のパブリックリソースとプライベートリソースで構
成される負荷分散型オートスケーリング環境の起動 (p. 326)」のすべての手順を完了します。アプリケー
ションをデプロイする際、そのインスタンスの Amazon EC2 キーペアを指定して、リモートで接続で
API Version 2010-12-01
332
AWS Elastic Beanstalk 開発者ガイド
拠点ホスト
きるようにする必要があります。インスタンスのキーペアを指定する方法の詳細については、「Elastic
Beanstalk を使用して Amazon EC2 サーバーインスタンスを設定する (p. 199)」を参照してください。
拠点ホストのセキュリティグループを作成および設定する
拠点ホストのセキュリティグループを作成し、インターネットからのインバウンド SSH トラフィック
と Amazon EC2 インスタンスが含まれるプライベートサブネットへのアウトバウンド SSH トラフィッ
クを許可するルールを追加します。
1.
拠点ホストのセキュリティグループを作成します。
新しいセキュリティグループを作成するには
1.
2.
3.
https://console.aws.amazon.com/vpc/にある Amazon VPC コンソールを開きます。
ナビゲーションペインで、[Security Groups] を選択します。
[Create Security Group] を選択します。
4.
[Create Security Group] ダイアログボックスで、次の内容を入力して [Yes, Create] を選択し
ます。
Name tag (オプション)
セキュリティグループの名前タグを入力します。
グループ名
セキュリティグループの名前を入力します。
説明
セキュリティグループの説明を入力します。
VPC
VPC を選択します。
セキュリティグループが作成され、[セキュリティグループ] ページに表示されます。ID
(sg-xxxxxxxx など) が付いている点に注目してください。ページの右上にある [Show/Hide]
をクリックして、[Group ID] の列をオンにする必要がある場合があります。
2.
拠点ホストのセキュリティグループを設定します。
拠点ホストのセキュリティグループを更新するには
1.
セキュリティグループのリストで、拠点ホストに対して作成したばかりのセキュリティグルー
プのチェックボックスを選択します。
2.
3.
[Inbound ] タブで、[Edit] を選択します。
必要に応じて、[Add another rule] を選択します。
4.
拠点ホストが Linux インスタンスである場合は、[Type] で [SSH] を選択します。
5.
拠点ホストが Windows インスタンスである場合は、[Type] で [RDP] を選択します。
[Source] フィールドに希望するソース CIDR の範囲を入力して、[Save] を選択します。
API Version 2010-12-01
333
AWS Elastic Beanstalk 開発者ガイド
拠点ホスト
インスタンスのセキュリティグループの更新
デフォルトでは、インスタンス用に作成したセキュリティグループでは着信トラフィックを許可してい
ません。Elastic Beanstalk はインスタンスのデフォルトグループを変更して SSH トラフィックを許可
しますが、使用するインスタンスが Windows インスタンスの場合は、セキュリティグループで RDP
トラフィックを許可するよう、カスタムインスタンスを変更する必要があります。
RDP のインスタンスセキュリティグループを更新するには
1.
2.
3.
4.
セキュリティグループのリストで、インスタンスセキュリティグループのチェックボックスを選択
します。
[Inbound ] タブで、[Edit] を選択します。
必要に応じて、[Add another rule] を選択します。
以下の値を入力して、[Save] を選択します。
タイプ
RDP
プロトコル
TCP
ポート範囲
3389
送信元
拠点ホストセキュリティグループの ID(sg-8a6f71e8 など)を入力し、[Save] を選択しま
す。
拠点ホストの作成
拠点ホストを作成するには、拠点ホストとして動作するパブリックサブネットで Amazon EC2 インス
タンスを起動します。
API Version 2010-12-01
334
AWS Elastic Beanstalk 開発者ガイド
Amazon RDS
プライベートサブネットで Windows インスタンスの拠点ホストをセットアップする詳細については、
「踏み台サーバーを使用した EC2 インスタンスへのネットワークアクセスの制御」を参照してくださ
い。
プライベートサブネットで Linux インスタンスの拠点ホストをセットアップする詳細については、「プ
ライベート Amazon VPC で実行中の Linux インスタンスに安全に接続する」を参照してください。
例: Amazon RDS を使用して VPC で Elastic Beanstalk
を起動する
Abstract
この例は、NAT インスタンスを使用して、Amazon RDS を持つ Elastic Beanstalk アプリケーションを Amazon
Virtual Private Cloud(Amazon VPC)にデプロイする方法を示しています。
このトピックでは、NAT ゲートウェイを使用して VPC で Amazon RDS によって Elastic Beanstalk ア
プリケーションをデプロイする手順について説明します。インフラストラクチャは次の図と似ていま
す。
Note
これまでアプリケーションで DB インスタンスを使用したことがない場合は、テスト環境に DB
インスタンスを追加し、両方に VPC 設定を追加する前に、外部 DB インスタンスへの接続 (p. 308)
を試みます。
NAT ゲートウェイを使用して VPC 内で Amazon RDS によって Elastic Beanstalk アプリケーションを
デプロイするには、次の操作を完了する必要があります。
トピック
• パブリックサブネットとプライベートサブネットでの VPC の作成 (p. 335)
• DB サブネットグループを作成する (p. 337)
• Elastic Beanstalk へのデプロイ (p. 337)
パブリックサブネットとプライベートサブネットでの VPC の
作成
Amazon VPC コンソールを使用して VPC を作成します。
API Version 2010-12-01
335
AWS Elastic Beanstalk 開発者ガイド
Amazon RDS
VPC を作成するには
1.
[Amazon VPC console] にサインインします。
2.
ナビゲーションペインで、[VPC Dashboard] を選択します。続いて、[Start VPC Wizard] を選択し
ます。
[VPC with Public and Private Subnets]、[Select] の順に選択します。
3.
4.
Elastic Load Balancing ロードバランサーと Amazon EC2 インスタンスが通信できるようにするに
は、これらが同じアベイラビリティーゾーンにある必要があります。各 [Availability Zone] リスト
から同じアベイラビリティーゾーンを選択します。
5.
6.
NAT ゲートウェイの Elastic IP アドレスを選択します。
[Create VPC] を選択します。
ウィザードが、VPC、サブネット、インターネットゲートウェイの作成を開始します。また、メイ
ンルートテーブルを更新して、カスタムルートテーブルを作成します。最後に、ウィザードはパブ
リックサブネットで NAT ゲートウェイを作成します。
Note
NAT ゲートウェイの代わりにパブリックサブネットで NATインスタンスを起動すること
を選択できます。 詳細については、Amazon VPC ユーザーガイドの「シナリオ 2: パブリッ
クサブネットとプライベートサブネットを持つ VPC (NAT)」を参照してください。
<step>
VPC が正しく作成されると、VPC ID が発行されます。 これは、次のステップで必要になります。
VPC ID を表示するには、[Amazon VPC console] の左ペインで [Your VPCs] を選択します。
API Version 2010-12-01
336
AWS Elastic Beanstalk 開発者ガイド
Amazon RDS
</step>
DB サブネットグループを作成する
VPC の DB サブネットグループは、バックエンド RDS DB インスタンス用に指定するサブネットのコ
レクション(通常はプライベート)です。各 DB サブネットグループには、特定のリージョン内の
Availability Zone ごとに 1 つ以上のサブネットを指定する必要があります。
DB サブネットグループを作成する
1.
2.
3.
4.
5.
https://console.aws.amazon.com/rds/ にある Amazon RDS コンソールを開きます。
ナビゲーションペインで、[Subnet Groups] をクリックします。
[Create DB Subnet Group] をクリックします。
[Name] をクリックし、DB サブネットグループの名前を入力します。
[Description] をクリックし、DB サブネットグループの説明を入力します。
6.
[VPC ID] の横にある、作成した VPC の ID を選択します。
7.
[Add Subnet(s) to this Subnet Group] セクションで、[add all the subnets] リンクをクリックしま
す。
8.
完了したら、[Yes, Create] をクリックします。
9.
確認ウィンドウで、[Close] をクリックします。
RDS コンソールの [DB Subnet Groups] リストに新しい DB サブネットグループが表示されます。
その DB サブネットグループをクリックすると、そのグループに関連付けられているすべてのサブ
ネットなどの詳細情報が、ウィンドウの下部にある詳細ペインに表示されます。
Elastic Beanstalk へのデプロイ
VPC を設定したら、VPC 内部に環境を作成して、アプリケーションを Elastic Beanstalk にデプロイで
きます。インストールには、Elastic Beanstalk コンソールを使用するか、AWS ツールキット、AWS
CLI、EB CLI、または Elastic Beanstalk API を使用できます。Elastic Beanstalk コンソールを使用した
API Version 2010-12-01
337
AWS Elastic Beanstalk 開発者ガイド
Amazon RDS
場合、.war ファイルまたは .zip ファイルをアップロードして、ウィザード内で VPC 設定を選択する
だけでかまいません。その後、Elastic Beanstalk は VPC 内に環境を作成し、アプリケーションをデプ
ロイします。または、AWS ツールキット、AWS CLI EB CLI、Elastic Beanstalk API を使用してアプリ
ケーションをデプロイできます。その場合は、設定ファイルで VPC オプション設定を定義して、この
ファイルをソースバンドルと共にデプロイする必要があります。このトピックでは、両方の方法の手順
を説明します。
Elastic Beanstalk コンソールでデプロイする
Elastic Beanstalk コンソールに、VPC 内部に新しい環境を作成する手順が表示されます。.war ファイ
ル (Java アプリケーション)、または .zip (その他すべてのアプリケーション) ファイルを提供する必
要があります。Elastic Beanstalk 環境ウィザードの [VPC Configuration] ページで、次の選択を行う必
要があります。
VPC
VPC を選択します。
VPC セキュリティグループ
上の手順で作成したインスタンスセキュリティグループを選択します。
ELB の可視性
ロードバランサーを公開する場合は External を選択し、ロードバランサーを VPC 内でのみ使用
できるようにする場合は Internal を選択します。
ロードバランサーと EC2 インスタンスのサブネットを選択します。必ず、ロードバランサーのパブリッ
クサブネットと Amazon EC2 インスタンスのプライベートサブネットを選択します。デフォルトでは、
VPC 作成ウィザードにより 10.0.0.0/24 にパブリックサブネットが、10.0.1.0/24 にプライベート
サブネットが作成されます。
サブネット ID を表示するには、[Amazon VPC console] で [Subnets] を選択します。
AWS ツールキット、Eb、CLI、または API でデプロイする
AWS Toolkit、eb、CLI または API を使用してアプリケーションを Elastic Beanstalk にデプロイする場
合は、ファイルで VPC オプション設定を指定して、ソースバンドルと一緒にデプロイする必要があり
ます。ツールキットまたは eb を使用してアプリケーションをデプロイするには、拡張子が .config
の設定ファイル(例:myconfig.config)を作成し、ソースバンドルの最上位ディレクトリの
.ebextensions というディレクトリ内に配置します。CLI または API を使用する場合は、ファイル名
でこれらの設定を指定して、ファイル名をパラメータとして渡すことができます。次のいずれかの方法
を使用して、アプリケーションを Elastic Beanstalk にデプロイします。
API Version 2010-12-01
338
AWS Elastic Beanstalk 開発者ガイド
Amazon RDS
• Java — AWS Elastic Beanstalk で Java アプリケーションを作成してデプロイする (p. 591)
• EB CLI – Elastic Beanstalk コマンドラインインターフェイス(EB CLI) (p. 403)
• CLI または API – アプリケーションを作成します。 (p. 39)(CLI または API のセクションを参照)
• CLI または API – AWS Elastic Beanstalk 環境を作成する (p. 53)(CLI または API のセクションを参
照)
オプション設定を更新するときに、少なくとも次を指定する必要があります。
• VPCId – VPC の ID が含まれます。
• Subnets – Auto Scaling グループのサブネット ID が含まれます。この例では、これはプライベート
サブネットの ID です。
• ELBSubnets – Elastic Load Balancing のサブネットの ID が含まれます。この例では、これはパブリッ
クサブネットの ID です。
• [SecurityGroups] – セキュリティグループの ID が含まれます。
• DBSubnets – DB サブネットの ID が含まれます。
Note
DBSubnets を使用する場合は、VPC で追加のサブネットを作成し、リージョン内のすべて
のアベイラビリティーゾーンを対象にする必要があります。
オプションで、次の情報を指定することもできます。
• ELBScheme – VPC 外部から Elastic Beanstalk アプリケーションにアクセスできないようにするため
に VPC 内に内部ロードバランサーを作成する場合は、internal を指定します。
VPC 内で Elastic Beanstalk アプリケーションをデプロイするときに使用可能なオプション設定の例を
次に示します。VPC オプション設定の詳細(オプション設定の指定方法の例、デフォルト値、有効な
値など)については、「設定オプション (p. 101)」に記載されている aws:ec2:vpc 名前空間の表を参照
してください。
option_settings:
- namespace: aws:autoscaling:launchconfiguration
option_name: EC2KeyName
value: ec2keypair
- namespace: aws:ec2:vpc
option_name: VPCId
value: vpc-170647c
- namespace: aws:ec2:vpc
option_name: Subnets
value: subnet-4f195024
- namespace: aws:ec2:vpc
option_name: ELBSubnets
value: subnet-fe064f95
- namespace: aws:ec2:vpc
option_name: DBSubnets
value: subnet-fg148g78
API Version 2010-12-01
339
AWS Elastic Beanstalk 開発者ガイド
パブリックインスタンスによる負荷分散環境
- namespace: aws:autoscaling:launchconfiguration
option_name: InstanceType
value: m1.small
- namespace: aws:autoscaling:launchconfiguration
option_name: SecurityGroups
value: sg-7f1ef110
Note
DBSubnets を使用する場合は、VPC にサブネットが含まれ、リージョン内のすべてのアベイ
ラビリティーゾーンがそのサブネットの対象になっていることを確認してください。
例: VPC 内のパブリックインスタンスで構成される
負荷分散型オートスケーリング環境の起動
Abstract
Elastic Beanstalk アプリケーションをパブリックサブネットにデプロイできます。パブリックサブネットにインス
タンスがある負荷分散型オートスケーリング環境を使用する場合は、この設定を使用します。
単一パブリックサブネット内の負荷分散型オートスケーリング環境に Elastic Beanstalk アプリケーショ
ンをデプロイできます。プライベートリソースが Amazon EC2 インスタンスに関連付けられていない
単一パブリックサブネットを使用する場合は、この設定を使用します。この設定では、Elastic Beanstalk
は Amazon EC2 インスタンスにパブリック IP アドレスを割り当てるため、それぞれが VPC インター
ネットゲートウェイを介して直接インターネットにアクセスできます。VPC でネットワークアドレス
変換(NAT)設定を作成する必要はありません。
API Version 2010-12-01
340
AWS Elastic Beanstalk 開発者ガイド
パブリックインスタンスによる負荷分散環境
単一パブリックサブネット内の負荷分散型オートスケーリング環境に Elastic Beanstalk アプリケーショ
ンをデプロイするには、次のタスクを完了する必要があります。
トピック
• パブリックサブネットを持つ VPC を作成する (p. 341)
• Elastic Beanstalk へのデプロイ (p. 343)
パブリックサブネットを持つ VPC を作成する
VPC を作成するには
1.
AWS マネジメントコンソールにサインインした後、Amazon VPC コンソール(https://
console.aws.amazon.com/vpc/)を開きます。
2.
ナビゲーションペインで、[VPC Dashboard] を選択します。次に、[Start VPC Wizard] を選択しま
す。
API Version 2010-12-01
341
AWS Elastic Beanstalk 開発者ガイド
パブリックインスタンスによる負荷分散環境
3.
[VPC with a Single Public Subnet] を選択し、[Select] を選択します。
確認ページが表示され、VPC およびサブネットに使用されている CIDR ブロックが示されます。
このページには、サブネットおよび関連付けられているアベイラビリティーゾーンも表示されま
す。
4.
[VPC の作成] を選択します。
AWS によって、VPC、サブネット、インターネットゲートウェイ、およびルートテーブルが作成
されます。[OK] を選択してウィザードを終了します。
AWS は、VPC を正常に作成した後、その VPC に VPC ID を割り当てます。これは、次のステッ
プで必要になります。VPC ID を表示するには、[Amazon VPC console] の左ペインで [Your VPCs]
を選択します。
API Version 2010-12-01
342
AWS Elastic Beanstalk 開発者ガイド
パブリックインスタンスによる負荷分散環境
Elastic Beanstalk へのデプロイ
VPC を設定したら、VPC 内部に環境を作成して、アプリケーションを Elastic Beanstalk にデプロイで
きます。インストールには、Elastic Beanstalk コンソールを使用するか、AWS ツールキット、AWS
CLI、EB CLI、または Elastic Beanstalk API を使用できます。Elastic Beanstalk コンソールを使用した
場合、.war ファイルまたは .zip ファイルをアップロードして、ウィザード内で VPC 設定を選択する
だけでかまいません。その後、Elastic Beanstalk は VPC 内に環境を作成し、アプリケーションをデプ
ロイします。または、AWS ツールキット、AWS CLI EB CLI、Elastic Beanstalk API を使用してアプリ
ケーションをデプロイできます。その場合は、設定ファイルで VPC オプション設定を定義して、この
ファイルをソースバンドルと共にデプロイする必要があります。このトピックでは、両方の方法の手順
を説明します。
トピック
• Elastic Beanstalk コンソールを使用してデプロイする (p. 343)
• AWS ツールキット、AWS CLI、EB CLI、または Elastic Beanstalk API でデプロイする (p. 343)
Elastic Beanstalk コンソールを使用してデプロイする
Elastic Beanstalk アプリケーションの作成時、または環境の起動時に、Elastic Beanstalk コンソールは
VPC 内に環境を作成する方法をガイドします。詳細については、「アプリケーションを作成しま
す。 (p. 39)」を参照してください。
インスタンスの VPC ID とサブネット ID を選択する必要があります。デフォルトでは、VPC は
10.0.0.0/24 を使用してがパブリックサブネットを作成します。 サブネット ID を表示するには、[Amazon
VPC console] で [Subnets] をクリックします。
AWS ツールキット、AWS CLI、EB CLI、または Elastic Beanstalk API でデプ
ロイする
AWS Toolkit、eb、CLI または API を使用してアプリケーションを Elastic Beanstalk にデプロイする場
合は、ファイルで VPC オプション設定を指定して、ソースバンドルと一緒にデプロイする必要があり
ます。ツールキットまたは eb を使用してアプリケーションをデプロイするには、拡張子が .config
の設定ファイル(例:myconfig.config)を作成し、ソースバンドルの最上位ディレクトリの
.ebextensions というディレクトリ内に配置します。CLI または API を使用する場合は、ファイル名
でこれらの設定を指定して、ファイル名をパラメータとして渡すことができます。次のいずれかの方法
を使用して、アプリケーションを Elastic Beanstalk にデプロイします。
API Version 2010-12-01
343
AWS Elastic Beanstalk 開発者ガイド
IAM
• Java — AWS Elastic Beanstalk で Java アプリケーションを作成してデプロイする (p. 591)
• EB CLI – Elastic Beanstalk コマンドラインインターフェイス(EB CLI) (p. 403)
• CLI または API – アプリケーションを作成します。 (p. 39)(CLI または API のセクションを参照)
• CLI または API – AWS Elastic Beanstalk 環境を作成する (p. 53)(CLI または API のセクションを参
照)
オプション設定で設定ファイルを作成する場合は、次の設定オプションを指定する必要があります。
aws:ec2:vpc (p. 128) 名前空間:
VPCId
VPC の識別子。
Subnets
インスタンスを起動するサブネットの識別子。
カンマで区切ることで、複数の識別子を指定できます。
AssociatePublicIpAddress
VPC 内のパブリック IP アドレスを持つインスタンスを起動するかどうかを指定します。パブリッ
ク IP アドレスを持つインスタンスは、インターネットと通信するために NAT デバイスを必要とし
ません。ロードバランサーとインスタンスを 1 つのパブリックサブネットに含める場合は、値を
true に設定する必要があります。
VPC 内で Elastic Beanstalk アプリケーションをデプロイするときに設定できるオプション設定の例を
次に示します。
option_settings:
aws:ec2:vpc:
VPCId: "vpd_id"
Subnets: "instance_subnet, etc"
AssociatePublicIpAddress: "true"
Elastic Beanstalk を AWS Identity and Access
Management に使用する
Abstract
AWS Identity and Access Management(IAM)で Elastic Beanstalk を使用すると、AWS リソースへのアクセスを
安全に制御し、アカウントの認証情報をプライベートに保持することができます。
AWS Identity and Access Management(IAM)は、AWS リソースへのアクセスを安全にコントロール
する際に役立ちます。このセクションには、IAM ポリシー、インスタンスプロファイル、サービスロー
ルを使用するためのリファレンスが含まれています。
アクセス権限の概要については、「サービスロール、インスタンスプロファイル、ユーザーポリ
シー (p. 19)」を参照してください。ほとんどの環境では、お客様の最初の環境を起動したときに AWS
マネジメントコンソール で作成するように求められる、サービスロールとインスタンスプロファイル
に、必要なすべてのアクセス権限があります。同様に、フルアクセスと読み取り専用アクセス用に
Elastic Beanstalk によって提供される管理ポリシー (p. 355)には、日常の使用に必要なユーザーアクセス
権限がすべて含まれています。
『IAM ユーザーガイド』では、AWS のアクセス権限について詳細に説明しています。
API Version 2010-12-01
344
AWS Elastic Beanstalk 開発者ガイド
IAM ロールの使用
トピック
• Elastic Beanstalk で IAM ロールを使用する (p. 345)
• 管理ポリシーを使用して Elastic Beanstalk へのアクセスを制御する (p. 355)
• ポリシーを作成して特定の Elastic Beanstalk リソースへのアクセスをコントロールする (p. 356)
• Elastic Beanstalk の Amazon リソースネーム形式 (p. 360)
• Elastic Beanstalk アクションのリソースと条件 (p. 361)
• 管理ポリシーに基づくポリシーの例 (p. 386)
• リソース許可に基づいたポリシーの例 (p. 389)
Elastic Beanstalk で IAM ロールを使用する
Abstract
IAM ロールを使用して、Elastic Beanstalk アプリケーションがアクセスできるアクションおよび AWS サービスを
制御できます。ロールを使用すると、リソースにアクセスする必要があるエンティティごとに、長期的な認証情報
を共有したり、許可を定義したりする必要がなくなります。
IAM ロールは、Elastic Beanstalk アプリケーションがアクセスできるアクションや AWS サービスを制
御します。ロールを使用すると、リソースにアクセスする必要があるエンティティごとに、長期的な認
証情報を共有したり、許可を定義したりする必要がなくなります。AWS リソースにアクセスする許可
をアプリケーションに付与するには、IAM ロールにカスタムアクションポリシーをアタッチし、その
ロールに関連付けられたインスタンスプロファイルを使用して Amazon EC2 インスタンスを起動しま
す。Elastic Beanstalk が IAM ロールを使用するタイミングの例として、アプリケーションが DynamoDB
などの AWS リソースにアクセスする必要があるときや、Elastic Beanstalk で Amazon S3 へのログを
ローテーションするときがあります。
Elastic Beanstalk で実行中のアプリケーションに、IAM ロールを使用してアクセス権限を付与する手順
の概要については、「サービスロール、インスタンスプロファイル、ユーザーポリシー (p. 19)」を参
照してください。
次のセクションでは、サンプルアクションポリシーを含め、IAM ロールを Elastic Beanstalk と共に使
用する例を示します。
ワーカー環境枠の IAM ロール許可を付与する
次のサンプルステートメントでは、ワーカー環境枠で aws-sqsd デーモンを実行してメトリックスを
CloudWatch に発行するために、インスタンスプロファイル内の IAM ロールにアクセス権限を付与しま
す。定期的なタスクを実行するアプリケーションが含まれるワーカー環境枠では、ステートメントに
DynamoDB へのアクセス許可も含まれます。
{
"Version": "2012-10-17",
"Statement": [
{
"Sid": "BucketAccess",
"Action": [
"s3:Get*",
"s3:List*",
"s3:PutObject"
],
"Effect": "Allow",
"Resource": [
"arn:aws:s3:::elasticbeanstalk-*",
"arn:aws:s3:::elasticbeanstalk-*/*"
API Version 2010-12-01
345
AWS Elastic Beanstalk 開発者ガイド
IAM ロールの使用
]
}, {
"Sid": "ECSAccess",
"Effect": "Allow",
"Action": [
"ecs:Poll",
"ecs:StartTask",
"ecs:StopTask",
"ecs:DiscoverPollEndpoint",
"ecs:StartTelemetrySession",
"ecs:RegisterContainerInstance",
"ecs:DeregisterContainerInstance",
"ecs:DescribeContainerInstances",
"ecs:Submit*"
],
"Resource": "*"
}, {
"Sid": "QueueAccess",
"Action": [
"sqs:ChangeMessageVisibility",
"sqs:DeleteMessage",
"sqs:ReceiveMessage",
"sqs:SendMessage"
],
"Effect": "Allow",
"Resource": "*"
}, {
"Sid": "DynamoPeriodicTasks",
"Action": [
"dynamodb:BatchGetItem",
"dynamodb:BatchWriteItem",
"dynamodb:DeleteItem",
"dynamodb:GetItem",
"dynamodb:PutItem",
"dynamodb:Query",
"dynamodb:Scan",
"dynamodb:UpdateItem"
],
"Effect": "Allow",
"Resource": [
"arn:aws:dynamodb:*:*:table/*-stack-AWSEBWorkerCronLeaderRegistry*"
]
}, {
"Sid": "MetricsAccess",
"Action": [
"cloudwatch:PutMetricData"
],
"Effect": "Allow",
"Resource": "*"
}
]
}
アンマネージド Amazon SQS キューで異なるアカウントを使用している場合は、キューへのアクセス
権を他のアカウント(ワーカー枠で使用するアカウントなど)に付与するようにキューのポリシーを編
集する必要もあります。サンプルステートメントについては、『AWS Identity and Access Management
API Version 2010-12-01
346
AWS Elastic Beanstalk 開発者ガイド
IAM ロールの使用
ユーザーガイド』の「例: リソースベースのポリシーを使用して、他のアカウントの Amazon SQS
キューへのアクセス権を委任する」を参照してください。
IAM ロールが Amazon S3 バケットにアクセスするためのアク
セス許可の付与
以下の例のポリシーは、「my-bucket」という Amazon S3 バケットへの読み取り専用アクセス権限を
「janedoe」という名前の IAM ロールに付与します。IAM では、このポリシーはリソースベースのポリ
シーと呼ばれます。この例のリソースは Amazon S3 バケットです(Amazon S3 では、これはバケッ
トポリシーと呼ばれます)。IAM マネジメントコンソールを使用して、独自のポリシーをゼロから作成
することもできます。このポリシーに「S3ReadOnlyPerms」という名前を付けて、
「your-account-ID-without-hyphens」というテキストをお客様のアカウント ID に置き換えます。詳細
については、「カスタマー管理ポリシーの作成」を参照してください。
{
"Version": "2012-10-17",
"Statement": [
{
"Sid": "S3ReadOnlyPerms",
"Effect": "Allow",
"Principal": {
"AWS": "arn:aws:iam::accountid:role/janedoe"
},
"Action": [
"s3:ListBucketVersions",
"s3:GetObjectVersion",
"s3:ListBucket",
"s3:GetObject"
],
"Resource": [
"arn:aws:s3:::my-bucket/*",
"arn:aws:s3:::my-bucket"
]
}
]
}
例: DynamoDB へのアクセス許可を Elastic Beanstalk アプリ
ケーションに付与する
Abstract
この例では、Elastic Beanstalk で IAM ロールを使用して DynamoDB へのアクセスを制御する方法を説明します。
ここでは、ロールを作成して渡すのに必要な IAM の許可が付与されていることを前提にしています。
このウォークスルーでは、Elastic Beanstalk で AWS Identity and Access Management(IAM)ロール
を使用して Amazon DynamoDB(DynamoDB)へのアクセスを制御する方法を説明します。ここでは、
ロールを作成して渡すのに必要な IAM のアクセス許可が付与されていることを前提にしています。
DynamoDB を使用したアプリケーション開発の詳細については、「Amazon DynamoDB Developer
Guide」を参照してください。このウォークスルーでは、次の作業を行います。
1. Elastic Beanstalk の IAM ロールを作成して設定します。
2. アプリケーションを更新して一時的なセキュリティ認証情報を取得し、AWS API で DynamoDB を
呼び出します。
3. アプリケーションを Elastic Beanstalk にデプロイします。
API Version 2010-12-01
347
AWS Elastic Beanstalk 開発者ガイド
IAM ロールの使用
このウォークスルーでは、IAM コンソールを使用して IAM ロールを作成します。 ただし、Elastic
Beanstalk 環境を作成または更新するときに、Elastic Beanstalk ではデフォルトのインスタンスプロファ
イルを作成できます。他の AWS リソースにアクセスする許可をアプリケーションに付与するには、デ
フォルトのロールに新しいカスタムポリシーをアタッチするだけで済みます。Elastic Beanstalk コン
ソールでデフォルトのインスタンスプロファイルを使用して新しいアプリケーションを作成する手順に
ついては、「アプリケーションを作成します。 (p. 39)」を参照してください。 既存の環境を更新する
手順については、「インスタンスプロファイル (p. 201)」を参照してください。 EB CLI の手順について
は、「Elastic Beanstalk コマンドラインインターフェイス(EB CLI) (p. 403)」を参照してください。
ステップ 1: Elastic Beanstalk の IAM ロールを作成して設定する
IAM ロールを作成および設定する方法には、次の 2 つがあります。
• Elastic Beanstalk は、アプリケーションをデプロイするときにデフォルトのロールを作成できます。
• IAM ロールは、IAM コンソールを使用して作成できます。
次に、ロールにポリシーをアタッチします。このセクションでは、両方の方法について説明します。
トピック
• カスタムポリシーの作成 (p. 348)
• デフォルトロールの作成 (p. 349)
• 新しいロールの作成 (p. 349)
カスタムポリシーの作成
ロールの作成方法に関係なく、ロールにアタッチするポリシーを作成する必要があります。ポリシーを
作成するには、以下の手順を実行します。
IAM でポリシーを作成するには
1.
2.
3.
4.
5.
AWS マネジメントコンソール にサインインし、IAM コンソール(https://console.aws.amazon.com/
iam/)を開きます。
ナビゲーションペインで、[Policies] を選択します。ウェルカムページが表示される場合は、[Get
Started(はじめに)] を選択します。
[Create Policy] を選択します。
[Create Your Own Policy (独自のポリシーを作成)] で、[Select] を選択します。
次のフィールドに入力し、[Create Policy(ポリシーの作成)] を選択します。
ポリシー名
ポリシーの名前。
説明
ポリシーの説明。
ポリシードキュメント
次のテキストをコピーしてポリシードキュメントに貼り付けて、説明したようにパラメータを
置き換えます。
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Action": [
"dynamodb:GetItem",
"dynamodb:BatchGetItem"
API Version 2010-12-01
348
AWS Elastic Beanstalk 開発者ガイド
IAM ロールの使用
],
"Resource": "arn:aws:dynamodb:<region>:<account_id>:table/*"
}
]
}
< >
必要なデータを含むテーブルをもつリージョンの識別子。
<account_id>
AWS アカウント番号(例: 111122223333)。
AWS アカウント番号を見つけるには、AWS マネジメントコンソール に移動し、[My
Account(自分のアカウント)] をクリックします。AWS アカウント番号は [Manage Your
Account(アカウントの管理)] ページの右上に表示されます。AWS アカウント番号には
ダッシュ(-)を含めないでください。
デフォルトロールの作成
この手順では、Elastic Beanstalk を使用してデフォルトのロールを作成し、次にそれにカスタムポリ
シーをアタッチします。
ポリシーを Elastic Beanstalk のデフォルトのロールにアタッチするには
1.
次のいずれかの方法を使用して、サンプルアプリケーションを Elastic Beanstalk にデプロイしま
す。プロンプトが表示されたら、オプションを選択してデフォルトのインスタンスプロファイルを
作成します。
•
•
•
•
2.
Elastic Beanstalk コンソール – アプリケーションを作成します。 (p. 39)
EB CLI - Elastic Beanstalk コマンドラインインターフェイス(EB CLI) (p. 403)
AWS Toolkit for Eclipse — AWS Toolkit for Eclipse を使用する (p. 628)
AWS Toolkit for Visual Studio — 開発、テスト、デプロイ (p. 659)
Elastic Beanstalk は、aws-elasticbeanstalk-ec2-role という名前の IAM ロールを作成しま
す。
カスタムポリシーを aws-elasticbeanstalk-ec2-role ロールにアタッチします。
a.
b.
c.
AWS マネジメントコンソール にサインインし、IAM コンソール(https://
console.aws.amazon.com/iam/)を開きます。
ナビゲーションペインで [Roles(ロール)] を選択します。
aws-elasticbeanstalk-ec2-role ロールを選択します。
d.
e.
[Permissions] タブを選択してから、[Attach Policy(ポリシーのアタッチ)] を選択します。
前に作成したポリシーを選択して [Attach Policy(ポリシーのアタッチ)] を選択します。
ポリシーの管理の詳細については、IAM ユーザーガイドの「ポリシーの使用」を参照してくださ
い。
新しいロールの作成
この手順では、IAM コンソールを使用して IAM のロールを作成し、それにカスタムポリシーをアタッ
チします。
API Version 2010-12-01
349
AWS Elastic Beanstalk 開発者ガイド
IAM ロールの使用
ロールを作成して、アクションポリシーをロールにアタッチするには
1.
AWS マネジメントコンソール にサインインし、IAM コンソール(https://console.aws.amazon.com/
iam/)を開きます。
2.
3.
4.
ナビゲーションペインで [Roles(ロール)] を選択します。
[Create New Role] を選択します。
[Role Name] にロールの名前を入力し、[Next Step] を選択します。
5.
[AWS Service Roles] で、[Amazon EC2] の横にある [Select] を選択して、EC2 インスタンスがお
客様に代わって AWS サービスを呼び出すことができるようにします。
6.
7.
以前に作成したポリシーを選択し、[Next Step] を選択します。
[Review] ページで、入力した情報を確認し、[Create Role] を選択します。
IAM によって、ロールと、その IAM ロールに関連付けられたインスタンスプロファイルが作成さ
れます。インスタンスプロファイルの名前は役割と同じです。このインスタンスプロファイルを使
用すると、Amazon EC2 インスタンスで実行されているアプリケーションが、AWS API リクエス
トを行えるよう一時的なセキュリティ認証情報にアクセスできます。
ステップ 2: アプリケーションを更新して一時的な認証情報にアクセスする
IAM ロールを作成して設定したので、アプリケーションは、そのロールに関連付けられているインスタ
ンスプロファイルを使用して一時的なセキュリティ認証情報を取得し、AWS API 呼び出しを行うこと
ができます。アプリケーションを Elastic Beanstalk にデプロイするとき、Elastic Beanstalk は、指定し
たインスタンスプロファイルを使用して EC2 インスタンスを開始します。アプリケーションは、その
EC2 インスタンスで使用できるロール認証情報を使用します。アプリケーションは、インスタンスメ
タデータサービス(IMDS)からロール認証情報を取得し、その認証情報を使用して API で DyanmoDB
を呼び出します。EC2 での IAM ロールの使用の詳細については、「AWS Identity and Access Management
Using IAM」の「Granting Applications that Run on Amazon EC2 Instances Access to AWS Resources」
を参照してください。
AWS SDK を使用する場合、ソフトウェアでは、パラメータをとらないコンストラクタのオーバーロー
ドを使用して、AWS サービス用のクライアントオブジェクトが作成されます。このパラメータのない
コンストラクタは、実行時に "認証情報プロバイダチェーン" を検索します。認証情報がパラメータと
して明示的に指定されていない場合、コンストラクタは、この認証情報プロバイダチェーンに含まれる
API Version 2010-12-01
350
AWS Elastic Beanstalk 開発者ガイド
IAM ロールの使用
一連の場所を順番にチェックして、認証情報を見つけようとします。コンストラクタによる場所のチェッ
クの順番は、プログラミング言語によって異なります。詳細については、対応する SDK ドキュメント
を参照してください。IMDS の IAM ロール認証情報が SDK で自動的に使用されるようにパラメータを
指定することもできます。このセクションでは、SDK を使用してロール認証情報を使用するコード例
を示します。
Java
AmazonDynamoDB client = new AmazonDynamoDBClient(new InstanceProfileCreden
tialsProvider());
詳細については、「AWS SDK for Java Developer Guide」の「Using IAM Roles for EC2 Instances with
the SDK for Java」を参照してください。
.NET
AmazonDynamoDBClient client = new AmazonDynamoDBClient(new InstanceProfileAWSCre
dentials());
詳細については、「AWS SDK for .NET Developer Guide」の「Using IAM Roles for EC2 Instances with
the SDK for .NET」を参照してください。
PHP
$dynamoDB = new AmazonDynamoDB(array(
'default_cache_config' => '/tmp/secure-dir'
));
詳細については、『AWS SDK for PHP 開発者のためのガイド』の「認証情報」を参照してください。
Python
import boto
conn = boto.connect_dynamodb()
詳細については、「boto: A Python interface to Amazon Web Services」を参照してください。
Ruby
ロール認証情報を指定する例:
AWS.config(:credential_provider => AWS::Core::CredentialProviders::EC2Pro
vider.new)
Ruby については、認証情報プロバイダチェーンは、AWS.config、環境変数、および IMDS における静
的な認証情報です。
ロール認証情報を指定しない例:
ddb = AWS::DynamoDB.new
詳細については、「AWS SDK for Ruby Developer Guide」の「Using IAM Roles for Amazon EC2
Instances with the AWS SDK for Ruby」を参照してください。
API Version 2010-12-01
351
AWS Elastic Beanstalk 開発者ガイド
IAM ロールの使用
ステップ 3: Elastic Beanstalk へのデプロイ
アプリケーションを更新したら、インスタンスプロファイルを使用して、そのアプリケーションを
Elastic Beanstalk にデプロイできます。
Elastic Beanstalk を使用してデフォルトのインスタンスプロファイルを作成した場合は、更新したアプ
リケーションを環境に再デプロイできます。手順については、次のいずれかを参照してください。
• Elastic Beanstalk コンソール – アプリケーションバージョンを作成する (p. 40)
• EB CLI - Elastic Beanstalk コマンドラインインターフェイス(EB CLI) (p. 403)
• AWS Toolkit for Eclipse — AWS Toolkit for Eclipse を使用する (p. 628)
• AWS Toolkit for Visual Studio — アプリケーションを編集して再デプロイする (p. 667)
IAM コンソールを使用してロールを作成した場合は、IAM コンソールが自動的にインスタンスプロファ
イルを作成および管理します。インスタンスプロファイルの名前は、作成したロールの名前と同じで
す。アプリケーションを Elastic Beanstalk にデプロイするには、次のいずれかの方法を使用します。
プロンプトが表示されたら、作成したインスタンスプロファイルを選択します。
•
•
•
•
Elastic Beanstalk コンソール – アプリケーションを作成します。 (p. 39)
EB CLI - Elastic Beanstalk コマンドラインインターフェイス(EB CLI) (p. 403)
AWS Toolkit for Eclipse — AWS Toolkit for Eclipse を使用する (p. 628)
AWS Toolkit for Visual Studio — 開発、テスト、デプロイ (p. 659)
例: Amazon S3 でログのローテーションを行う許可を Elastic
Beanstalk に付与する
Abstract
この例では、両方の方法を使用してログをローテーションする許可を Elastic Beanstalk に付与する手順を説明しま
す。ここでは、ロールを作成して渡すのに必要な IAM 権限を持っていることを前提にしています。
Elastic Beanstalk は、アプリケーションの Amazon EC2 インスタンスのログファイルを、アプリケー
ションに関連付けられている Amazon S3 バケットにコピーします。Elastic Beanstalk には、この
Amazon S3 バケットへのアクセス許可が必要です。ログをローテーションする許可を Elastic Beanstalk
に付与するには、次のいずれかを実行します。
• Elastic Beanstalk コンソールまたは eb を使用して、デフォルトのインスタンスプロファイルを作成
します。
• IAM のカスタムロールを使用して、Elastic Beanstalk にアクセス許可を付与するポリシーをアタッチ
します。
このトピックでは、両方の方法を使用してログをローテーションする許可を Elastic Beanstalk に付与
する手順を説明します。ここでは、ロールを作成して渡すのに必要な IAM 権限を持っていることを前
提にしています。
カスタムインスタンスプロファイルの使用
IAM ロールの作成時、または既存の IAM ロールの使用時に、Amazon EC2 が信頼済みのエンティティ
である場合は、そのロールを使用してアプリケーションを Elastic Beanstalk にデプロイできます。ロ
グのローテーションを有効にするには、ログをローテーションする許可を Elastic Beanstalk に付与す
るポリシーを IAM ロールにアタッチする必要があります。アプリケーションを Elastic Beanstalk にデ
プロイするときは、IAM ロールに関連付けられたインスタンスプロファイルを使用します。IAM コン
ソールを使用して IAM ロールを作成すると、インスタンスプロファイルの名前はロールと同じ名前に
なります。
API Version 2010-12-01
352
AWS Elastic Beanstalk 開発者ガイド
IAM ロールの使用
Elastic Beanstalk に対してログをローテーションするためのカスタムアクションポリシーを作
成するには
1.
AWS マネジメントコンソール にサインインし、IAM コンソール(https://console.aws.amazon.com/
iam/)を開きます。
2.
3.
4.
ナビゲーションペインで、[Policies] を選択します。
[Create Policy] を選択して、[Create Policy] ウィザードを起動します。
[Create Your Own Policy(独自のポリシーを作成)] で、[Select] を選択します。
5.
次のフィールドに入力し、[Create Policy(ポリシーの作成)] を選択します。
ポリシー名
ポリシーの名前。
説明
ポリシーの説明。
ポリシードキュメント
次のテキストをコピーしてポリシードキュメントに貼り付けます。
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Action": "s3:PutObject",
"Resource": "arn:aws:s3:::elasticbeanstalk-*/resources/environ
ments/logs/*"
}
]
}
6.
7.
(オプション)ポリシードキュメントが有効であることを確認するには、[Validate Policy(ポリ
シーの検証)] を選択します。
[Create Policy] を選択します。
新しい IAM ロールを使用して、ログをローテーションする許可を Elastic Beanstalk に付与する
には
1.
2.
3.
4.
5.
AWS マネジメントコンソール にサインインし、IAM コンソール(https://console.aws.amazon.com/
iam/)を開きます。
ナビゲーションペインで [Roles(ロール)] を選択します。
[Create New Role] を選択します。
[Role Name] にロールの名前を入力し、[Next Step] を選択します。
[AWS Service Roles] で、[Amazon EC2] の横にある [Select] を選択して、EC2 インスタンスがお
客様に代わって AWS サービスを呼び出すことができるようにします。
API Version 2010-12-01
353
AWS Elastic Beanstalk 開発者ガイド
IAM ロールの使用
6.
7.
8.
以前に作成したポリシーを選択し、[Next Step] を選択します。
[Review] ページで、入力した情報を確認し、[Create Role] を選択します。
IAM によって、ロールと、その IAM ロールに関連付けられたインスタンスプロファイルが作成さ
れます。インスタンスプロファイルの名前は役割と同じです。このインスタンスプロファイルを使
用すると、Amazon EC2 インスタンスで実行されているアプリケーションが、AWS API リクエス
トを行えるよう一時的なセキュリティ認証情報にアクセスできます。
次のいずれかの方法を使用して、アプリケーションを Elastic Beanstalk にデプロイし、プロンプ
トが表示されたら、作成したインスタンスプロファイルを選択します。
•
•
•
•
Elastic Beanstalk コンソール – アプリケーションを作成します。 (p. 39)
EB CLI - Elastic Beanstalk コマンドラインインターフェイス(EB CLI) (p. 403)
AWS Toolkit for Eclipse — AWS Toolkit for Eclipse を使用する (p. 628)
AWS Toolkit for Visual Studio — 開発、テスト、デプロイ (p. 659)
すでにアプリケーションが Elastic Beanstalk にデプロイされている場合は、環境を更新してデフォ
ルトのインスタンスプロファイルを使用することもできます。手順については、「Elastic Beanstalk
を使用して Amazon EC2 サーバーインスタンスを設定する (p. 199)」を参照してください。
既存の IAM ロールを使用して、ログをローテーションする許可を Elastic Beanstalk に付与する
には
1.
IAM ロールが作成済みで、Amazon EC2 が信頼済みのエンティティであることを確認してくださ
い。https://console.aws.amazon.com/iam/ で IAM マネジメントコンソールを使用すると、信頼済
みのエンティティを確認できます。ロールのリストで、[IAM role(IAM ロール)] を選択します。
[Trust Relationships(信頼関係)] の [Trusted Entities(信頼されたエンティティ)] に
[ec2.amazonaws.com] が表示されない場合は、信頼ポリシーを更新する必要があります。
信頼ポリシーを更新する必要がある場合は、以下の手順を実行します。
a.
b.
[Trust Relationship] の [Edit Trust Relationship] を選択します。
信頼ポリシーを更新して、次の例に示すように ec2.amazonaws.com を含めます。
API Version 2010-12-01
354
AWS Elastic Beanstalk 開発者ガイド
管理ユーザーポリシー
{
"Version": "2012-10-17",
"Statement": [
{
"Sid": "",
"Effect": "Allow",
"Principal": {
"Service": [
"ec2.amazonaws.com"
]
},
"Action": "sts:AssumeRole"
}
]
}
c.
2.
ログをローテーションする許可を Elastic Beanstalk に付与する IAM ロールにアクションポリシー
をアタッチします。適切なアクセス権限を使って既にポリシーを作成していない場合、「Elastic
Beanstalk がログをローテーションするためのカスタムポリシーを作成するには」の手順に従いま
す。
a.
b.
c.
d.
3.
[Update Trust Policy] を選択します。
IAM マネジメントコンソールのナビゲーションペインで、[Roles(ロール)] を選択します。
ロールの一覧で、アクションポリシーをアタッチする [IAM role(IAM ロール)] を選択しま
す。
[Permissions] タブを選択してから、[Attach Policy(ポリシーのアタッチ)] を選択します。
前に作成したポリシーの名前の横にあるチェックボックスをオンにし、[Attach Policy(ポリ
シーのアタッチ)] を選択します。
ポリシーの管理の詳細については、IAM ユーザーガイドの「ポリシーの使用」を参照してくださ
い。
次のいずれかの方法を使用して、アプリケーションを Elastic Beanstalk にデプロイし、プロンプ
トが表示されたら、インスタンスプロファイルを選択します。
• Elastic Beanstalk コンソール – アプリケーションを作成します。 (p. 39)
• EB CLI - Elastic Beanstalk コマンドラインインターフェイス(EB CLI) (p. 403)
• AWS Toolkit for Eclipse — AWS Toolkit for Eclipse を使用する (p. 628)
• AWS Toolkit for Visual Studio — 開発、テスト、デプロイ (p. 659)
すでにアプリケーションが Elastic Beanstalk にデプロイされている場合は、環境を更新してデフォ
ルトのインスタンスプロファイルを使用することもできます。手順については、「Elastic Beanstalk
を使用して Amazon EC2 サーバーインスタンスを設定する (p. 199)」を参照してください。
管理ポリシーを使用して Elastic Beanstalk へのアク
セスを制御する
Abstract
AWS Elastic Beanstalk では、すべての Elastic Beanstalk リソースへの完全アクセスまたは読み取り専用アクセス
を付与できる管理ポリシーを 2 つ用意しています。
API Version 2010-12-01
355
AWS Elastic Beanstalk 開発者ガイド
カスタムユーザーのポリシー
AWS Elastic Beanstalk では、すべての Elastic Beanstalk リソースへの完全アクセスまたは読み取り専
用アクセスを付与できる管理ポリシーを 2 つ用意しています。このポリシーは、ユーザーまたはグルー
プにアタッチできます。これらのポリシーは、ご使用の AWS アカウントのすべての Elastic Beanstalk
リソースに対して広範囲のアクセス権限を付与するために使用します。特定のリソースに対するアクセ
ス権限を制御するには、「ポリシーを作成して特定の Elastic Beanstalk リソースへのアクセスをコン
トロールする (p. 356)」の説明に従って新しいポリシーを作成します。
次の表では、各管理ポリシーについて説明しています。
管理ポリシー
説明
AWSElasticBeanstalkFullAccess
このポリシーは、Elastic Beanstalk アプリケーショ
ン、アプリケーションバージョン、設定、環境、
およびそれらの基盤となるリソースを作成、変
更、削除することをユーザーに対して許可しま
す。
レガシーではないコンテナタイプの場合、このポ
リシーは、Elastic Beanstalk がユーザーの代わり
に他のサービスでリソースのプロビジョニングと
管理を行うことも許可します。サポートされてい
るレガシーではないコンテナタイプのリストにつ
いては、「いくつかのコンテナタイプがレガシー
とマークされている理由 (p. 86)」を参照してくだ
さい。
AWSElasticBeanstalkReadOnlyAccess
このポリシーは、アプリケーションおよび環境を
表示することをユーザーに対して許可しますが、
そのアプリケーションや環境に対する操作は許可
しません。すべての Elastic Beanstalk リソースへ
の読み取り専用アクセスを提供します。
管理ポリシーをユーザーまたはグループに適用するには
1.
2.
3.
4.
5.
AWS マネジメントコンソール にサインインし、IAM コンソール(https://console.aws.amazon.com/
iam/)を開きます。
ナビゲーションペインで、[Policies] を選択します。
ポリシーのリストで、アタッチするポリシーの名前の横にあるチェックボックスをオンにします。
ポリシーのリストをフィルタリングするには、[Filter] メニューまたは [Search] ボックスを使用し
ます。
[Policy Actions]、[Attach] の順に選択します。
ポリシーをアタッチするプリンシパルエンティティを選択します。プリンシパルエンティティのリ
ストをフィルタリングするには、[Filter] メニューまたは [Search] ボックスを使用します。ポリシー
をアタッチするプリンシパルエンティティを選択し、[Attach Policy] を選択します。
ポリシーを作成して特定の Elastic Beanstalk リソー
スへのアクセスをコントロールする
Abstract
独自の IAM ポリシーを作成し、特定の Elastic Beanstalk リソースに対する特定の Elastic Beanstalk API アクショ
ンを許可または拒否できます。
API Version 2010-12-01
356
AWS Elastic Beanstalk 開発者ガイド
カスタムユーザーのポリシー
独自の IAM ポリシーを作成し、特定の Elastic Beanstalk リソースに対する特定の Elastic Beanstalk API
アクションを許可または拒否できます。ポリシーを有効にするには、IAM コンソール、コマンドライン
インターフェイス、または API を使用して、そのポリシーをユーザーまたはグループにアタッチしま
す。ユーザーまたはグループへのポリシーのアタッチの詳細については、「Using AWS Identity and
Access Management」の「Managing IAM Policies」を参照してください。
IAM ポリシーには、付与する特定の許可について説明するポリシーステートメントが含まれます。Elastic
Beanstalk のポリシーステートメントを作成する場合、そのステートメントの次の 4 つの部分につい
て、使い方を把握しておく必要があります。
• 効果は、ステートメントのアクションを許可または拒否するかどうかを指定します。
• アクションは、コントロールするアクションを指定します。Elastic Beanstalk アクションを指定する
には、そのアクション名の前に小文字の文字列 elasticbeanstalk を付ける必要があります。Elastic
Beanstalk に関係するすべてのアクションを指定するには、ワイルドカードを使用します。"*" とい
うワイルドカードは、ゼロ文字以上とマッチします。例えば、すべての作成アクション許可を付与す
るには、IAM ポリシーで elasticbeanstalk:create* を指定します。
Note
各アクションをリストするのではなく、ワイルドカードを使ってすべてのアクションを指定
する場合、Elastic Beanstalk に対する更新によって何らかのアクションが新しく追加される
と、このポリシーでは、その新しいアクションに対するアクセスが対象者に自動的に付与さ
れることに注意してください。
すべての Elastic Beanstalk アクションのリストについては、「Elastic Beanstalk API Reference」で
API アクション名を参照してください。許可とポリシーの詳細については、「Using AWS Identity and
Access Management」の「Permissions and Policies」を参照してください。
特定の Elastic Beanstalk API アクションの使用を許可されたユーザーが、それらのアクションを実行
できます。環境の作成などの作成オペレーションには、これらのアクションを実行するための追加の
許可が必要になる場合があります。API アクションが、他のアクションへの許可に依存するかどう
か、また、必要な許可すべてが割り当てられていることを確認するには、「Elastic Beanstalk アク
ションのリソースと条件 (p. 361)」セクションに記載されている情報を参照してください。
• リソースは、アクセスをコントロールする対象のリソースを指定します。Elastic Beanstalk リソース
を指定するには、各リソースの Amazon リソースネーム(ARN)をリストします。詳細については、
「Elastic Beanstalk の Amazon リソースネーム形式 (p. 360)」を参照してください。各 Elastic Beanstalk
アクションは、特定のリソースで動作します。例えば、UpdateApplicationVersion アクション
は、1 つ以上のバージョンリソースとして指定したアプリケーションバージョンで動作します。詳細
については、「Elastic Beanstalk の Amazon リソースネーム形式 (p. 360)」を参照してください。複
数の ARN を指定するには、各リソースの ARN をリストするか、ゼロ文字または複数の文字に対応
する "*" ワイルドカードを使用します。
• 条件は、ステートメントに付与された許可に対する制限を指定します。前に説明したように、アク
ションは特定のリソースで動作します。ただし、そのアクションは、アクションが発生した場所や、
オペレーションを完了するためにアクションがアクセスする必要があるリソースなど、他の Elastic
Beanstalk リソースに依存する場合があります。前者の例としてはアプリケーションでの環境の作
成、後者の例としては設定テンプレートやアプリケーションバージョンからの環境の更新などがあり
ます。詳細については、「Elastic Beanstalk アクションのリソースと条件 (p. 361)」を参照してくださ
い。
IAM ポリシーは、JSON 形式で表されます。IAM ポリシーとステートメントの構造については、「Using
AWS Identity and Access Management」の「Basic Policy Structure」を参照してください。次のサンプ
ルポリシーには 3 つのステートメントが含まれています。これにより、このポリシーが指定されたユー
ザーは、CreateEnvironment アクションを呼び出して、アプリケーション My First Elastic
Beanstalk Application でアプリケーションバージョン First Release を使用し、名前が Test
で始まる環境を作成できます。ポリシーを使用することで、ユーザーは、環境の作成に必要なアクショ
ンをリソースに対して実行することもできます。CreateEnvironmentPerm ステートメントは、
API Version 2010-12-01
357
AWS Elastic Beanstalk 開発者ガイド
カスタムユーザーのポリシー
elasticbeanstalk:CreateEnvironment アクションが、上記で指定された制限に基づいて環境を
作成できるようにします。AllNonResourceCalls ステートメントは、
elasticbeanstalk:CreateEnvironment が、環境の作成に必要な Elastic Beanstalk アクションを
実行できるようにします。OtherServicePerms ステートメントは、
elasticbeanstalk:CreateEnvironment が、他の AWS サービスでリソースを作成するためのアク
ションを呼び出して、環境の作成を完了できるようにします。
Note
ポリシーの例を次に示します。これにより、アプリケーションと環境を管理する際に Elastic
Beanstalk が使用する AWS 製品に、広範な許可セットが付与されます。たとえば、ec2:* を
使用すると、IAM ユーザーが AWS アカウントで、任意の Amazon EC2 リソースに対して任意
のアクションを実行できます。これらの許可は、Elastic Beanstalk で使用するリソースに限定
されません。ベストプラクティスとして、職務遂行に必要な許可のみを個人に付与することを
お勧めします。
{
"Version": "2012-10-17",
"Statement": [
{
"Sid":"CreateEnvironmentPerm",
"Action": [
"elasticbeanstalk:CreateEnvironment"
],
"Effect": "Allow",
"Resource": [
"arn:aws:elasticbeanstalk:us-east-1:123456789012:environment/My First
Elastic Beanstalk Application/Test*"
],
"Condition": {
"StringEquals": {
"elasticbeanstalk:InApplication": ["arn:aws:elasticbeanstalk:us-east1:123456789012:application/My First Elastic Beanstalk Application"],
"elasticbeanstalk:FromApplicationVersion": ["arn:aws:elasticbean
stalk:us-east-1:123456789012:applicationversion/My First Elastic Beanstalk Ap
plication/First Release"]
}
}
},
{
"Sid":"AllNonResourceCalls",
"Action":[
"elasticbeanstalk:CheckDNSAvailability",
"elasticbeanstalk:CreateStorageLocation"
],
"Effect":"Allow",
"Resource":[
"*"
]
},
{
"Sid":"OtherServicePerms",
"Effect":"Allow",
"Action":[
"ec2:*",
"elasticloadbalancing:*",
"autoscaling:*",
API Version 2010-12-01
358
AWS Elastic Beanstalk 開発者ガイド
カスタムユーザーのポリシー
"cloudwatch:*",
"s3:*",
"sns:*",
"rds:*",
"cloudformation:*"
],
"Resource":"*"
}
]
}
上記のポリシーを使用すると、ユーザーが Elastic Beanstalk CreateEnvironment API および
elastic-beanstalk-create-environment (p. 506) コマンドを使用して環境を作成できます。そのユーザーが
Elastic Beanstalk コンソールを使って環境を作成できるようにしたい場合は、次のポリシーもユーザー
に追加する必要があります。ユーザーは Elastic Beanstalk コンソールで環境を作成するとき、アプリ
ケーション My First Elastic Beanstalk Application
(elasticbeanstalk:DescribeApplications)に移動できなければなりません。ユーザーが
[Launch New Environment] をクリックしたときに、Elastic Beanstalk コンソールは既存の環境
(elasticbeanstalk:DescribeEnvironments)、使用するアプリケーションバージョン
(elasticbeanstalk:DescribeApplicationVersions)、およびソリューションスタック
(elasticbeanstalk:ListAvailableSolutionStacks および
elasticbeanstalk:DescribeConfigurationOptions)に関する情報を取得する必要があります。
Elastic Beanstalk コンソール内で特定のアクションを有効にする場合は、この例で説明した依存関係の
タイプを考慮する必要があります。
{
"Version": "2012-10-17",
"Statement": [
{
"Action": [
"elasticbeanstalk:DescribeApplications"
],
"Effect": "Allow",
"Resource": [
"arn:aws:elasticbeanstalk:us-east-1:155363561088:application/My First
Elastic Beanstalk Application"
]
},
{
"Action": "elasticbeanstalk:DescribeEnvironments",
"Effect": "Allow",
"Resource": [
"arn:aws:elasticbeanstalk:us-east-1:123456789012:environment/My First
Elastic Beanstalk Application/Test*"
]
},
{
"Action": "elasticbeanstalk:DescribeApplicationVersions",
"Effect": "Allow",
"Resource": [
"arn:aws:elasticbeanstalk:us-east-1:123456789012:applicationversion/My
First Elastic Beanstalk Application/First Release"
]
},
{
"Action": [
API Version 2010-12-01
359
AWS Elastic Beanstalk 開発者ガイド
ARN 形式
"elasticbeanstalk:ListAvailableSolutionStacks"
],
"Effect": "Allow",
"Resource": "arn:aws:elasticbeanstalk:us-east-1::solutionstack/*"
},
{
"Action": "elasticbeanstalk:DescribeConfigurationOptions",
"Effect": "Allow",
"Resource": [
"arn:aws:elasticbeanstalk:us-east-1::solutionstack/*"
]
}
]
}
Elastic Beanstalk の Amazon リソースネーム形式
Abstract
リソースの Amazon リソースネーム(ARN)を使用して、IAM ポリシーのリソースを指定します。
リソースの Amazon リソースネーム(ARN)を使用して、IAM ポリシーのリソースを指定します。
Elastic Beanstalk の場合の ARN 形式を次に示します。
arn:aws:elasticbeanstalk:region:accountid:resourcetype/resourcepath
各パラメータの意味は次のとおりです。
• region は、リソースが存在するリージョンです(us-west-2 など)。
• accountid は、ハイフンなしの AWS アカウント ID です(123456789012 など)。
• resourcetype は、Elastic Beanstalk リソースのタイプ(environment など)を識別します。すべ
ての Elastic Beanstalk リソースタイプのリストについては、以下の表を参照してください。
• resourcepath は、特定のリソースを識別する部分です。Elastic Beanstalk リソースには、そのリ
ソースを一意に識別するパスが含まれます。各リソースタイプのリソースパスの形式については、以
下の表を参照してください。例えば、アプリケーションには必ず環境が関連付けられています。アプ
リケーション myApp の環境 myEnvironment のパスは次のようになります。
myApp/myEnvironment
Elastic Beanstalk には複数のリソースタイプがあり、ポリシーで指定できます。次の表は、各リソース
タイプの ARN 形式と例を示しています。
リソースタイ
プ
ARN フォーマット
application arn:aws:elasticbeanstalk:region:accountid:application/applicationname
例: arn:aws:elasticbeanstalk:us-west-2:123456789012:application/My
App
API Version 2010-12-01
360
AWS Elastic Beanstalk 開発者ガイド
リソースと条件
リソースタイ
プ
ARN フォーマット
application- arn:aws:elasticbeanstalk:region:accountid:applicationversion/apversion
plicationname/versionlabel
例: arn:aws:elasticbeanstalk:us-west-2:123456789012:applicationversion/My App/My Version
environment arn:aws:elasticbeanstalk:region:accountid:environment/applicationname/environmentname
例: arn:aws:elasticbeanstalk:us-west-2:123456789012:environment/My
App/MyEnvironment
solutionstack
arn:aws:elasticbeanstalk:region::solutionstack/solutionstackname
例: arn:aws:elasticbeanstalk:us-west-2::solutionstack/32bit Amazon
Linux running Tomcat 7
configurationtemplate
arn:aws:elasticbeanstalk:region:accountid:configurationtemplate/applicationname/templatename
例: arn:aws:elasticbeanstalk:us-west-2:123456789012:configurationtemplate/My App/My Template
特定のアプリケーションには必ず環境、アプリケーションバージョン、および設定テンプレートが含ま
れます。このすべてのリソースのパスにアプリケーション名が含まれています。したがって、リソース
は、名前と自身が属するアプリケーションによって一意に識別されます。ソリューションスタックは、
設定テンプレートと環境によって使用されますが、アプリケーションまたは AWS アカウント特有では
ないので、ARN にアプリケーションまたは AWS アカウントは含まれません。
Elastic Beanstalk アクションのリソースと条件
Abstract
ポリシーステートメントのリソースと条件を使用して、特定の Elastic Beanstalk リソース上で特定の Elastic Beanstalk
アクションが実行されるためのアクセス許可を与えることができます。
このセクションでは、ポリシーステートメントで使用できるリソースと条件について説明します。この
ポリシーステートメントは、特定の Elastic Beanstalk リソースでの特定の Elastic Beanstalk アクショ
ンの実行を許可します。
条件を使用すると、アクションが完了する必要があるリソースに対する許可を指定できます。例えば、
CreateEnvironment アクションを呼び出すときは、デプロイするアプリケーションバージョンと、
そのアプリケーション名が含まれるアプリケーションも指定する必要があります。CreateEnvironment
アクションの許可を設定するとき、InApplication および FromApplicationVersion 条件を使用
して、アクションの実行対象アプリケーションとアプリケーションバージョンを指定します。
さらに、ソリューションスタック(FromSolutionStack)または設定テンプレート
(FromConfigurationTemplate)で環境設定を指定することもできます。次のポリシーステートメ
ントでは、CreateEnvironment アクションが、アプリケーション My App(InApplication 条件で
指定)で、myenv(Resource で指定)という名前の環境を、アプリケーションバージョン My Version
(FromApplicationVersion)と 32bit Amazon Linux running Tomcat 7 設定
(FromSolutionStack)を使用して作成できるようにします。
API Version 2010-12-01
361
AWS Elastic Beanstalk 開発者ガイド
リソースと条件
{
"Version": "2012-10-17",
"Statement": [
{
"Action": [
"elasticbeanstalk:CreateEnvironment"
],
"Effect": "Allow",
"Resource": [
"arn:aws:elasticbeanstalk:us-west-2:123456789012:environment/My
App/myenv"
],
"Condition": {
"StringEquals": {
"elasticbeanstalk:InApplication": ["arn:aws:elasticbeanstalk:us-west2:123456789012:application/My App"],
"elasticbeanstalk:FromApplicationVersion": ["arn:aws:elasticbean
stalk:us-west-2:123456789012:applicationversion/My App/My Version"],
"elasticbeanstalk:FromSolutionStack": ["arn:aws:elasticbeanstalk:uswest-2::solutionstack/32bit Amazon Linux running Tomcat 7"]
}
}
}
]
}
セクション
• Elastic Beanstalk アクションのポリシー情報 (p. 362)
• Elastic Beanstalk アクションの条件キー (p. 383)
Elastic Beanstalk アクションのポリシー情報
次の表は、すべての Elastic Beanstalk アクション、各アクションの対象リソース、および条件によっ
て提供できる追加コンテキスト情報のリストです。
Elastic Beanstalk アクションのポリシー情報(リソース、条件、例、依存関係など)
リソース
条件
ステートメント例
アクション: AbortEnvironmentUpdate
API Version 2010-12-01
362
AWS Elastic Beanstalk 開発者ガイド
リソースと条件
リソース
条件
ステートメント例
application
該当なし
以下のポリシーでは、ユーザーが My App という名前のア
プリケーションに属する環境の更新オペレーションを中止
できるようにします。
environment
{
"Version": "2012-10-17",
"Statement": [
{
"Action": [
"elasticbeanstalk:AbortEnvironmentUp
date"
],
"Effect": "Allow",
"Resource": [
"arn:aws:elasticbeanstalk:us-west2:123456789012:application/My App"
]
}
]
}
アクション: CheckDNSAvailability
"*"
該当なし
{
"Version": "2012-10-17",
"Statement": [
{
"Action": [
"elasticbeanstalk:CheckDNSAvailabil
ity"
],
"Effect": "Allow",
"Resource": "*"
}
]
}
アクション: ComposeEnvironments
API Version 2010-12-01
363
AWS Elastic Beanstalk 開発者ガイド
リソースと条件
リソース
条件
ステートメント例
application
該当なし
以下のポリシーでは、ユーザーが My App という名前のア
プリケーションに属する環境を構成できるようにします。
{
"Version": "2012-10-17",
"Statement": [
{
"Action": [
"elasticbeanstalk:ComposeEnviron
ments"
],
"Effect": "Allow",
"Resource": [
"arn:aws:elasticbeanstalk:us-west2:123456789012:environment/My App"
]
}
]
}
アクション: CreateApplication
application
該当なし
この例では、CreateApplication アクションが、DivA
で始まる名前のアプリケーションを作成できるようにしま
す。
{
"Version": "2012-10-17",
"Statement": [
{
"Action": [
"elasticbeanstalk:CreateApplication"
],
"Effect": "Allow",
"Resource": [
"arn:aws:elasticbeanstalk:us-west2:123456789012:application/DivA*"
]
}
]
}
アクション: CreateApplicationVersion
API Version 2010-12-01
364
AWS Elastic Beanstalk 開発者ガイド
リソースと条件
リソース
条件
ステートメント例
applicationver- InApplication
sion
この例では、CreateApplicationVersion アクション
が、アプリケーション My App で任意の名前(*)のアプ
リケーションバージョンを作成できるようにします。
{
"Version": "2012-10-17",
"Statement": [
{
"Action": [
"elasticbeanstalk:CreateApplication
Version"
],
"Effect": "Allow",
"Resource": [
"arn:aws:elasticbeanstalk:us-west2:123456789012:applicationversion/My App/*"
],
"Condition": {
"StringEquals": {
"elasticbeanstalk:InApplication":
["arn:aws:elasticbeanstalk:us-west2:123456789012:application/My App"]
}
}
}
]
}
アクション: CreateConfigurationTemplate
API Version 2010-12-01
365
AWS Elastic Beanstalk 開発者ガイド
リソースと条件
リソース
条件
ステートメント例
configurationtemplate
InApplication
以下のポリシーでは、CreateConfigurationTemplate
アクションが、アプリケーション My App で、名前が My
FromApplication Template(My Template*)で始まる設定テンプレート
を作成できるようにします。
FromApplicationVersion
{
"Version": "2012-10-17",
FromConfigura"Statement": [
tionTemplate
{
"Action": [
FromEnvironment
"elasticbeanstalk:CreateConfiguration
FromSolutionTemplate"
],
Stack
"Effect": "Allow",
"Resource": [
"arn:aws:elasticbeanstalk:us-west2:123456789012:configurationtemplate/My
App/My Template*"
],
"Condition": {
"StringEquals": {
"elasticbeanstalk:InApplication":
["arn:aws:elasticbeanstalk:us-west2:123456789012:application/My App"],
"elasticbeanstalk:FromSolution
Stack": ["arn:aws:elasticbeanstalk:us-west2::solutionstack/32bit Amazon Linux running
Tomcat 7"]
}
}
}
]
}
アクション: CreateEnvironment
API Version 2010-12-01
366
AWS Elastic Beanstalk 開発者ガイド
リソースと条件
リソース
条件
ステートメント例
environment
InApplication
以下のポリシーでは、CreateEnvironment アクション
が、アプリケーション My App で myenv という名前の環
FromApplication- 境を、32bit Amazon Linux running Tomcat 7 を使
Version
用して作成できるようにします。
FromConfigurationTemplate
{
"Version": "2012-10-17",
"Statement": [
{
"Action": [
"elasticbeanstalk:CreateEnvironment"
FromSolutionStack
],
"Effect": "Allow",
"Resource": [
"arn:aws:elasticbeanstalk:us-west2:123456789012:environment/My App/myenv"
],
"Condition": {
"StringEquals": {
"elasticbeanstalk:InApplication":
["arn:aws:elasticbeanstalk:us-west2:123456789012:application/My App"],
"elasticbeanstalk:FromApplication
Version": ["arn:aws:elasticbeanstalk:us-west2:123456789012:applicationversion/My App/My
Version"],
"elasticbeanstalk:FromSolution
Stack": ["arn:aws:elasticbeanstalk:us-west2::solutionstack/32bit Amazon Linux running
Tomcat 7"]
}
}
}
]
}
アクション: CreateStorageLocation
"*"
該当なし
{
"Version": "2012-10-17",
"Statement": [
{
"Action": [
"elasticbeanstalk:CreateStorageLoca
tion"
],
"Effect": "Allow",
"Resource": "*"
}
]
}
API Version 2010-12-01
367
AWS Elastic Beanstalk 開発者ガイド
リソースと条件
リソース
条件
ステートメント例
アクション: DeleteApplication
application
該当なし
以下のポリシーでは、DeleteApplication アクション
が、アプリケーション My App を削除できるようにしま
す。
{
"Version": "2012-10-17",
"Statement": [
{
"Action": [
"elasticbeanstalk:DeleteApplication"
],
"Effect": "Allow",
"Resource": [
"arn:aws:elasticbeanstalk:us-west2:123456789012:application/My App"
]
}
]
}
アクション: DeleteApplicationVersion
applicationver- InApplication
sion
以下のポリシーでは、DeleteApplicationVersion ア
クションが、アプリケーション My App で My Version
という名前のアプリケーションバージョンを削除できるよ
うにします。
{
"Version": "2012-10-17",
"Statement": [
{
"Action": [
"elasticbeanstalk:DeleteApplication
Version"
],
"Effect": "Allow",
"Resource": [
"arn:aws:elasticbeanstalk:us-west2:123456789012:applicationversion/My App/My
Version"
],
"Condition": {
"StringEquals": {
"elasticbeanstalk:InApplication":
["arn:aws:elasticbeanstalk:us-west2:123456789012:application/My App"]
}
}
}
]
}
API Version 2010-12-01
368
AWS Elastic Beanstalk 開発者ガイド
リソースと条件
リソース
条件
ステートメント例
アクション: DeleteConfigurationTemplate
configurationtemplate
InApplication
(オプション)
以下のポリシーでは、DeleteConfigurationTemplate
アクションが、アプリケーション My App で My Template
という名前の設定テンプレートを削除できるようにしま
す。アプリケーション名を条件として指定するかどうかは
オプションです。
{
"Version": "2012-10-17",
"Statement": [
{
"Action": [
"elasticbeanstalk:DeleteConfiguration
Template"
],
"Effect": "Allow",
"Resource": [
"arn:aws:elasticbeanstalk:us-west2:123456789012:configurationtemplate/My
App/My Template"
]
}
]
}
アクション: DeleteEnvironmentConfiguration
environment
InApplication
(オプション)
以下のポリシーでは、DeleteEnvironmentConfiguration アクションが、アプリケーション My App で環境
myenv のドラフト設定を削除できるようにします。アプ
リケーション名を条件として指定するかどうかはオプショ
ンです。
{
"Version": "2012-10-17",
"Statement": [
{
"Action": [
"elasticbeanstalk:DeleteEnvironment
Configuration"
],
"Effect": "Allow",
"Resource": [
"arn:aws:elasticbeanstalk:us-west2:123456789012:environment/My App/myenv"
]
}
]
}
アクション: DescribeApplications
API Version 2010-12-01
369
AWS Elastic Beanstalk 開発者ガイド
リソースと条件
リソース
条件
ステートメント例
application
該当なし
以下のポリシーでは、DescribeApplications アクショ
ンが、アプリケーション My App の定義を表示できるよう
にします。
{
"Version": "2012-10-17",
"Statement": [
{
"Action": [
"elasticbeanstalk:DescribeApplica
tions"
],
"Effect": "Allow",
"Resource": [
"arn:aws:elasticbeanstalk:us-west2:123456789012:application/My App"
]
}
]
}
アクション: DescribeApplicationVersions
applicationver- InApplication
sion
(オプション)
以下のポリシーでは、DescribeApplicationVersions
アクションが、アプリケーション My App でアプリケー
ションバージョン My Version の定義を表示できるよう
にします。アプリケーション名を条件として指定するかど
うかはオプションです。
{
"Version": "2012-10-17",
"Statement": [
{
"Action": [
"elasticbeanstalk:DescribeApplication
Versions"
],
"Effect": "Allow",
"Resource": [
"arn:aws:elasticbeanstalk:us-west2:123456789012:applicationversion/My App/My
Version"
]
}
]
}
アクション: DescribeConfigurationOptions
API Version 2010-12-01
370
AWS Elastic Beanstalk 開発者ガイド
リソースと条件
リソース
条件
ステートメント例
environment
InApplication
(オプション)
以下のポリシーでは、DescribeConfigurationOptions
アクションが、アプリケーション My App で環境 myenv
の設定オプションの定義を表示できるようにします。アプ
リケーション名を条件として指定するかどうかはオプショ
ンです。
configurationtemplate
solutionstack
{
"Version": "2012-10-17",
"Statement": [
{
"Action": "elasticbeanstalk:DescribeCon
figurationOptions",
"Effect": "Allow",
"Resource": [
"arn:aws:elasticbeanstalk:us-west2:123456789012:environment/My App/myenv"
]
}
]
}
アクション: DescribeConfigurationSettings
environment,
configurationtemplate
InApplication
(オプション)
以下のポリシーでは、DescribeConfigurationSettings アクションが、アプリケーション My App で環境
myenv の構成設定の定義を表示できるようにします。ア
プリケーション名を条件として指定するかどうかはオプ
ションです。
{
"Version": "2012-10-17",
"Statement": [
{
"Action": "elasticbeanstalk:DescribeCon
figurationSettings",
"Effect": "Allow",
"Resource": [
"arn:aws:elasticbeanstalk:us-west2:123456789012:environment/My App/myenv"
]
}
]
}
アクション: DescribeEnvironmentHealth
API Version 2010-12-01
371
AWS Elastic Beanstalk 開発者ガイド
リソースと条件
リソース
条件
ステートメント例
environment
該当なし
以下のポリシーでは、DescribeEnvironmentHealth を
使用して myenv という名前の環境のヘルス情報を取得で
きるようにします。
{
"Version": "2012-10-17",
"Statement": [
{
"Action": "elasticbeanstalk:DescribeEn
vironmentHealth",
"Effect": "Allow",
"Resource": [
"arn:aws:elasticbeanstalk:us-west2:123456789012:environment/My App/myenv"
]
}
]
}
アクション: DescribeEnvironmentResources
environment
InApplication
(オプション)
以下のポリシーでは、DescribeEnvironmentResources
アクションが、アプリケーション My App で環境 myenv
の AWS リソースのリストを返せるようにします。アプリ
ケーション名を条件として指定するかどうかはオプション
です。
{
"Version": "2012-10-17",
"Statement": [
{
"Action": "elasticbeanstalk:DescribeEn
vironmentResources",
"Effect": "Allow",
"Resource": [
"arn:aws:elasticbeanstalk:us-west2:123456789012:environment/My App/myenv"
]
}
]
}
アクション: DescribeEnvironments
API Version 2010-12-01
372
AWS Elastic Beanstalk 開発者ガイド
リソースと条件
リソース
条件
ステートメント例
environment
InApplication
(オプション)
以下のポリシーでは、DescribeEnvironments アクショ
ンが、アプリケーション My App で環境 myenv と
myotherenv の定義を表示できるようにします。アプリ
ケーション名を条件として指定するかどうかはオプション
です。
{
"Version": "2012-10-17",
"Statement": [
{
"Action": "elasticbeanstalk:DescribeEn
vironments",
"Effect": "Allow",
"Resource": [
"arn:aws:elasticbeanstalk:us-west2:123456789012:environment/My App/myenv",
"arn:aws:elasticbeanstalk:us-west2:123456789012:environment/My App2/myother
env"
]
}
]
}
アクション: DescribeEvents
API Version 2010-12-01
373
AWS Elastic Beanstalk 開発者ガイド
リソースと条件
リソース
条件
ステートメント例
application
InApplication
applicationversion
以下のポリシーでは、DescribeEvents アクションが、
アプリケーション My App で環境 myenv とアプリケーショ
ンバージョン My Version のイベント定義のリストを返
せるようにします。
configurationtemplate
{
"Version": "2012-10-17",
"Statement": [
{
"Action": "elasticbeanstalk:Descri
beEvents",
"Effect": "Allow",
"Resource": [
"arn:aws:elasticbeanstalk:us-west2:123456789012:environment/My App/myenv",
"arn:aws:elasticbeanstalk:us-west2:123456789012:applicationversion/My App/My
Version"
],
"Condition": {
"StringEquals": {
"elasticbeanstalk:InApplication":
["arn:aws:elasticbeanstalk:us-west2:123456789012:application/My App"]
}
}
}
]
}
environment
アクション: DescribeInstancesHealth
environment
該当なし
以下のポリシーでは、DescribeInstancesHealth を使
用して myenv という名前の環境内のインスタンスのヘル
ス情報を取得できるようにします。
{
"Version": "2012-10-17",
"Statement": [
{
"Action": "elasticbeanstalk:DescribeIn
stancesHealth",
"Effect": "Allow",
"Resource": [
"arn:aws:elasticbeanstalk:us-west2:123456789012:environment/My App/myenv"
]
}
]
}
アクション: ListAvailableSolutionStacks
API Version 2010-12-01
374
AWS Elastic Beanstalk 開発者ガイド
リソースと条件
リソース
条件
ステートメント例
solutionstack
該当なし
以下のポリシーでは、ListAvailableSolutionStacks
アクションが、ソリューションスタック 32bit Amazon
Linux running Tomcat 7 のみを返せるようにします。
{
"Version": "2012-10-17",
"Statement": [
{
"Action": [
"elasticbeanstalk:ListAvailableSolu
tionStacks"
],
"Effect": "Allow",
"Resource": "arn:aws:elasticbean
stalk:us-west-2::solutionstack/32bit Amazon
Linux running Tomcat 7"
}
]
}
アクション: RebuildEnvironment
environment
InApplication
以下のポリシーでは、RebuildEnvironment アクション
が、アプリケーション My App で環境 myenv を再ビルド
できるようにします。
{
"Version": "2012-10-17",
"Statement": [
{
"Action": [
"elasticbeanstalk:RebuildEnvironment"
],
"Effect": "Allow",
"Resource": [
"arn:aws:elasticbeanstalk:us-west2:123456789012:environment/My App/myenv"
],
"Condition": {
"StringEquals": {
"elasticbeanstalk:InApplication":
["arn:aws:elasticbeanstalk:us-west2:123456789012:application/My App"]
}
}
}
]
}
アクション: RequestEnvironmentInfo
API Version 2010-12-01
375
AWS Elastic Beanstalk 開発者ガイド
リソースと条件
リソース
条件
ステートメント例
environment
InApplication
以下のポリシーでは、RequestEnvironmentInfo アク
ションが、アプリケーション My App で環境 myenv に関
する情報をコンパイルできるようにします。
{
"Version": "2012-10-17",
"Statement": [
{
"Action": [
"elasticbeanstalk:RequestEnviron
mentInfo"
],
"Effect": "Allow",
"Resource": [
"arn:aws:elasticbeanstalk:us-west2:123456789012:environment/My App/myenv"
],
"Condition": {
"StringEquals": {
"elasticbeanstalk:InApplication":
["arn:aws:elasticbeanstalk:us-west2:123456789012:application/My App"]
}
}
}
]
}
アクション: RestartAppServer
API Version 2010-12-01
376
AWS Elastic Beanstalk 開発者ガイド
リソースと条件
リソース
条件
ステートメント例
environment
InApplication
以下のポリシーでは、RestartAppServer アクション
が、アプリケーション My App で環境 myenv のアプリケー
ションコンテナサーバーを再起動できるようにします。
{
"Version": "2012-10-17",
"Statement": [
{
"Action": [
"elasticbeanstalk:RestartAppServer"
],
"Effect": "Allow",
"Resource": [
"arn:aws:elasticbeanstalk:us-west2:123456789012:environment/My App/myenv"
],
"Condition": {
"StringEquals": {
"elasticbeanstalk:InApplication":
["arn:aws:elasticbeanstalk:us-west2:123456789012:application/My App"]
}
}
}
]
}
アクション: RetrieveEnvironmentInfo
API Version 2010-12-01
377
AWS Elastic Beanstalk 開発者ガイド
リソースと条件
リソース
条件
ステートメント例
environment
InApplication
以下のポリシーでは、RetrieveEnvironmentInfo アク
ションが、アプリケーション My App で環境 myenv のコ
ンパイルされた情報を取得できるようにします。
{
"Version": "2012-10-17",
"Statement": [
{
"Action": [
"elasticbeanstalk:RetrieveEnviron
mentInfo"
],
"Effect": "Allow",
"Resource": [
"arn:aws:elasticbeanstalk:us-west2:123456789012:environment/My App/myenv"
],
"Condition": {
"StringEquals": {
"elasticbeanstalk:InApplication":
["arn:aws:elasticbeanstalk:us-west2:123456789012:application/My App"]
}
}
}
]
}
アクション: SwapEnvironmentCNAMEs
environment
InApplication
(オプション)
FromEnvironment
(オプション)
以下のポリシーでは、SwapEnvironmentCNAMEs アクショ
ンが、環境 mysrcenv と mydestenv の CNAME を交換
できるようにします。
{
"Version": "2012-10-17",
"Statement": [
{
"Action": [
"elasticbeanstalk:SwapEnvironmentC
NAMEs"
],
"Effect": "Allow",
"Resource": [
"arn:aws:elasticbeanstalk:us-west2:123456789012:environment/My App/mysrcenv",
"arn:aws:elasticbeanstalk:us-west2:123456789012:environment/My App/mydestenv"
]
}
]
}
API Version 2010-12-01
378
AWS Elastic Beanstalk 開発者ガイド
リソースと条件
リソース
条件
ステートメント例
アクション: TerminateEnvironment
environment
InApplication
以下のポリシーでは、TerminateEnvironment アクショ
ンが、アプリケーション My App で環境 myenv を終了で
きるようにします。
{
"Version": "2012-10-17",
"Statement": [
{
"Action": [
"elasticbeanstalk:TerminateEnviron
ment"
],
"Effect": "Allow",
"Resource": [
"arn:aws:elasticbeanstalk:us-west2:123456789012:environment/My App/myenv"
],
"Condition": {
"StringEquals": {
"elasticbeanstalk:InApplication":
["arn:aws:elasticbeanstalk:us-west2:123456789012:application/My App"]
}
}
}
]
}
アクション: UpdateApplication
application
該当なし
以下のポリシーでは、UpdateApplication アクション
が、アプリケーション My App のプロパティを更新できる
ようにします。
{
"Version": "2012-10-17",
"Statement": [
{
"Action": [
"elasticbeanstalk:UpdateApplication"
],
"Effect": "Allow",
"Resource": [
"arn:aws:elasticbeanstalk:us-west2:123456789012:application/My App"
]
}
]
}
API Version 2010-12-01
379
AWS Elastic Beanstalk 開発者ガイド
リソースと条件
リソース
条件
ステートメント例
アクション: UpdateApplicationVersion
applicationver- InApplication
sion
以下のポリシーでは、UpdateApplicationVersion ア
クションが、アプリケーション My App でアプリケーショ
ンバージョン My Version のプロパティを更新できるよ
うにします。
{
"Version": "2012-10-17",
"Statement": [
{
"Action": [
"elasticbeanstalk:UpdateApplication
Version"
],
"Effect": "Allow",
"Resource": [
"arn:aws:elasticbeanstalk:us-west2:123456789012:applicationversion/My App/My
Version"
],
"Condition": {
"StringEquals": {
"elasticbeanstalk:InApplication":
["arn:aws:elasticbeanstalk:us-west2:123456789012:application/My App"]
}
}
}
]
}
アクション: UpdateConfigurationTemplate
API Version 2010-12-01
380
AWS Elastic Beanstalk 開発者ガイド
リソースと条件
リソース
条件
ステートメント例
configurationtemplate
InApplication
以下のポリシーでは、UpdateConfigurationTemplate
アクションが、アプリケーション My App で設定テンプ
レート My Template のプロパティまたはオプションを更
新できるようにします。
{
"Version": "2012-10-17",
"Statement": [
{
"Action": [
"elasticbeanstalk:UpdateConfiguration
Template"
],
"Effect": "Allow",
"Resource": [
"arn:aws:elasticbeanstalk:us-west2:123456789012:configurationtemplate/My
App/My Template"
],
"Condition": {
"StringEquals": {
"elasticbeanstalk:InApplication":
["arn:aws:elasticbeanstalk:us-west2:123456789012:application/My App"]
}
}
}
]
}
アクション: UpdateEnvironment
API Version 2010-12-01
381
AWS Elastic Beanstalk 開発者ガイド
リソースと条件
リソース
条件
ステートメント例
environment
InApplication
以下のポリシーでは、アプリケーションバージョン My
Version をデプロイすることにより、UpdateEnvironFromApplication- ment アクションが、アプリケーション My App で環境
Version
myenv を更新できるようにします。
FromConfigurationTemplate
{
"Version": "2012-10-17",
"Statement": [
{
"Action": [
"elasticbeanstalk:UpdateEnvironment"
],
"Effect": "Allow",
"Resource": [
"arn:aws:elasticbeanstalk:us-west2:123456789012:environment/My App/myenv"
],
"Condition": {
"StringEquals": {
"elasticbeanstalk:InApplication":
["arn:aws:elasticbeanstalk:us-west2:123456789012:application/My App"],
"elasticbeanstalk:FromApplication
Version": ["arn:aws:elasticbeanstalk:us-west2:123456789012:applicationversion/My App/My
Version"]
}
}
}
]
}
アクション: ValidateConfigurationSettings
API Version 2010-12-01
382
AWS Elastic Beanstalk 開発者ガイド
リソースと条件
リソース
条件
ステートメント例
template
InApplication
以下のポリシーでは、ValidateConfigurationSettings アクションが、アプリケーション My App で構成
設定を環境 myenv に対して検証できるようにします。
environment
{
"Version": "2012-10-17",
"Statement": [
{
"Action": [
"elasticbeanstalk:ValidateConfigura
tionSettings"
],
"Effect": "Allow",
"Resource": [
"arn:aws:elasticbeanstalk:us-west2:123456789012:environment/My App/myenv"
],
"Condition": {
"StringEquals": {
"elasticbeanstalk:InApplication":
["arn:aws:elasticbeanstalk:us-west2:123456789012:application/My App"]
}
}
}
]
}
Elastic Beanstalk アクションの条件キー
キーを使用すると、依存関係を表す条件を指定したり、許可を制限したり、アクションの入力パラメー
タに対する制約を指定したりできます。Elastic Beanstalk は次のキーをサポートしています。
InApplication
アクションの実行対象のリソースが含まれるアプリケーションを指定します。
次の例では、UpdateApplicationVersion アクションが、アプリケーションバージョン My
Version のプロパティを更新できるようにします。InApplication 条件は、My App を My
Version のコンテナとして指定します。
{
"Version": "2012-10-17",
"Statement": [
{
"Action": [
"elasticbeanstalk:UpdateApplicationVersion"
],
"Effect": "Allow",
"Resource": [
"arn:aws:elasticbeanstalk:us-west-2:123456789012:applicationversion/My
App/My Version"
],
API Version 2010-12-01
383
AWS Elastic Beanstalk 開発者ガイド
リソースと条件
"Condition": {
"StringEquals": {
"elasticbeanstalk:InApplication": ["arn:aws:elasticbeanstalk:uswest-2:123456789012:application/My App"]
}
}
}
]
}
FromApplicationVersion
アプリケーションバージョンを、入力パラメータで依存関係または制約として指定します。
次の例では、UpdateEnvironment アクションが、アプリケーション My App で環境 myenv を更
新できるようにします。FromApplicationVersion 条件は VersionLabel パラメータを制限し
て、アプリケーションバージョン My Version しか環境を更新できないようにします。
{
"Version": "2012-10-17",
"Statement": [
{
"Action": [
"elasticbeanstalk:UpdateEnvironment"
],
"Effect": "Allow",
"Resource": [
"arn:aws:elasticbeanstalk:us-west-2:123456789012:environment/My
App/myenv"
],
"Condition": {
"StringEquals": {
"elasticbeanstalk:InApplication": ["arn:aws:elasticbeanstalk:uswest-2:123456789012:application/My App"],
"elasticbeanstalk:FromApplicationVersion": ["arn:aws:elasticbean
stalk:us-west-2:123456789012:applicationversion/My App/My Version"]
}
}
}
]
}
FromConfigurationTemplate
設定テンプレートを、入力パラメータで依存関係または制約として指定します。
次の例では、UpdateEnvironment アクションが、アプリケーション My App で環境 myenv を更
新できるようにします。FromConfigurationTemplate 条件は TemplateName パラメータを制
限して、設定テンプレート My Template しか環境を更新できないようにします。
{
"Version": "2012-10-17",
"Statement": [
{
"Action": [
"elasticbeanstalk:UpdateEnvironment"
],
"Effect": "Allow",
API Version 2010-12-01
384
AWS Elastic Beanstalk 開発者ガイド
リソースと条件
"Resource": [
"arn:aws:elasticbeanstalk:us-west-2:123456789012:environment/My
App/myenv"
],
"Condition": {
"StringEquals": {
"elasticbeanstalk:InApplication": ["arn:aws:elasticbeanstalk:uswest-2:123456789012:application/My App"],
"elasticbeanstalk:FromConfigurationTemplate": ["arn:aws:elastic
beanstalk:us-west-2:123456789012:configurationtemplate/My App/My Template"]
}
}
}
]
}
FromEnvironment
環境を、入力パラメータで依存関係または制約として指定します。
次の例を使用すると、名前が mysrcenv および mydestenv で始まるすべての環境の My App で、
SwapEnvironmentCNAMEs アクションが CNAME を交換できます。ただし、名前が mysrcenvPROD*
と mydestenvPROD* で始まる環境は除きます。
{
"Version": "2012-10-17",
"Statement": [
{
"Action": [
"elasticbeanstalk:SwapEnvironmentCNAMEs"
],
"Effect": "Allow",
"Resource": [
"arn:aws:elasticbeanstalk:us-west-2:123456789012:environment/My
App/mysrcenv*",
"arn:aws:elasticbeanstalk:us-west-2:123456789012:environment/My
App/mydestenv*"
],
"Condition": {
"StringNotLike": {
"elasticbeanstalk:FromEnvironment": ["arn:aws:elasticbeanstalk:uswest-2:123456789012:environment/My App/mysrcenvPROD*"],
"elasticbeanstalk:FromEnvironment": ["arn:aws:elasticbeanstalk:uswest-2:123456789012:environment/My App/mydestenvPROD*"
]
}
}
}
]
}
FromSolutionStack
ソリューションスタックを、入力パラメータで依存関係または制約として指定します。
以下のポリシーでは、CreateConfigurationTemplate アクションが、アプリケーション My
App で、名前が My Template(My Template*)で始まる設定テンプレートを作成できるように
します。FromSolutionStack 条件は solutionstack パラメータを制限して、ソリューション
API Version 2010-12-01
385
AWS Elastic Beanstalk 開発者ガイド
ポリシーの例
スタック 32bit Amazon Linux running Tomcat 7 しかそのパラメータの入力値として使用で
きないようにします。
{
"Version": "2012-10-17",
"Statement": [
{
"Action": [
"elasticbeanstalk:CreateConfigurationTemplate"
],
"Effect": "Allow",
"Resource": [
"arn:aws:elasticbeanstalk:us-west-2:123456789012:configurationtem
plate/My App/My Template*"
],
"Condition": {
"StringEquals": {
"elasticbeanstalk:InApplication": ["arn:aws:elasticbeanstalk:uswest-2:123456789012:application/My App"],
"elasticbeanstalk:FromSolutionStack": ["arn:aws:elasticbeanstalk:uswest-2::solutionstack/32bit Amazon Linux running Tomcat 7"]
}
}
}
]
}
管理ポリシーに基づくポリシーの例
Abstract
AWS Elastic Beanstalk へのユーザーアクセスの制御を説明するユースケースの例を示します。
このセクションでは、AWS Elastic Beanstalk へのユーザーアクセスを制御する方法を説明し、一般的
なシナリオで必要なアクセスを提供するポリシーの例を示します。これらのポリシーは、Elastic Beanstalk
管理ポリシーから派生しています。ユーザーまたはグループに管理ポリシーをアタッチする方法につい
ては、「管理ポリシーを使用して Elastic Beanstalk へのアクセスを制御する (p. 355)」を参照してくだ
さい。
このシナリオでは、Example Corp. というソフトウェア会社の 3 つのチームが自社ウェブサイト関連の
作業に携わっています。インフラストラクチャを管理する管理者チーム、ウェブサイト向けソフトウェ
アを開発する開発者チーム、そしてウェブサイトをテストする QA チームです。Elastic Beanstalk リ
ソースに対するアクセス権限を管理しやすいように、Example Corp. では、Admins、Developers、
Testers の 3 つグループを作成し、各チームのメンバーを追加します。Example Corp. は、Admins グ
ループがすべての Elastic Beanstalk 資産の作成、トラブルシューティング、削除を行えるように、す
べてのアプリケーション、環境、およびそれらの基盤となるリソースへの完全アクセスを付与したいと
考えています。開発者(Developers グループ)には、すべての Elastic Beanstalk 資産の表示、および
アプリケーションバージョンの作成とデプロイを許可する必要があります。開発者がアプリケーション
または環境を新規作成したり、実行中の環境を終了したりできないようにします。テスターは、アプリ
ケーションのモニタリングとテストのために、すべての Elastic Beanstalk リソースを表示する必要が
あります。テスターが Elastic Beanstalk リソースに変更を加えることはできないようにします。
次のポリシーの例では、各グループに必要なアクセス権限を付与しています。
API Version 2010-12-01
386
AWS Elastic Beanstalk 開発者ガイド
ポリシーの例
Example 1: Admins グループがすべての Elastic Beanstalk と関連サービス API を使用できるよ
うにする
次のポリシーにより、Elastic Beanstalk の使用に必要なすべてのアクションについてのアクセス権限が
ユーザーに付与されます。このポリシーでは、以下のサービスについては Elastic Beanstalk がユーザー
に代わってリソースのプロビジョニングと管理を行うことを許可しています。Elastic Beanstalk は、環
境を作成するときに、これらの追加サービスに依存して基本リソースをプロビジョニングします。
• Amazon Elastic Compute Cloud
• Elastic Load Balancing
• Auto Scaling
• Amazon CloudWatch
• Amazon Simple Storage Service
• Amazon Simple Notification Service
• Amazon Relational Database Service
• AWS CloudFormation
Note
ポリシーの例を次に示します。これにより、アプリケーションと環境を管理する際に Elastic
Beanstalk が使用する AWS に、広範な許可セットが付与されます。たとえば、ec2:* と指定
すると、AWS Identity and Access Management (IAM) ユーザーが AWS アカウントの任意の
Amazon EC2 リソースに対して任意のアクションを実行できます。これらの許可は、Elastic
Beanstalk で使用するリソースに限定されません。ベストプラクティスとして、職務遂行に必
要な許可のみを個人に付与することをお勧めします。
{
"Version" : "2012-10-17",
"Statement" : [
{
"Effect" : "Allow",
"Action" : [
"elasticbeanstalk:*",
"ec2:*",
"elasticloadbalancing:*",
"autoscaling:*",
"cloudwatch:*",
"s3:*",
"sns:*",
"rds:*",
"cloudformation:*"
],
"Resource" : "*"
}
]
}
API Version 2010-12-01
387
AWS Elastic Beanstalk 開発者ガイド
ポリシーの例
Example 2. Developers グループが、アプリケーションや環境の作成などの特権オペレーショ
ンを除き、すべてのアクションを実行できるようにする
次のポリシーでは、アプリケーションと環境を作成するアクセス権限を禁止しますが、それ以外の
Elastic Beanstalk アクションをすべて許可します。
Note
ポリシーの例を次に示します。これにより、アプリケーションと環境を管理する際に Elastic
Beanstalk が使用する AWS 製品に、広範な許可セットが付与されます。たとえば、ec2:* を
使用すると、IAM ユーザーが AWS アカウントで、任意の Amazon EC2 リソースに対して任意
のアクションを実行できます。これらの許可は、Elastic Beanstalk で使用するリソースに限定
されません。ベストプラクティスとして、職務遂行に必要な許可のみを個人に付与することを
お勧めします。
{
"Version" : "2012-10-17",
"Statement" : [
{
"Action" : [
"elasticbeanstalk:CreateApplication",
"elasticbeanstalk:CreateEnvironment",
"elasticbeanstalk:DeleteApplication",
"elasticbeanstalk:RebuildEnvironment",
"elasticbeanstalk:SwapEnvironmentCNAMEs",
"elasticbeanstalk:TerminateEnvironment"],
"Effect" : "Deny",
"Resource" : "*"
},
{
"Action" : [
"elasticbeanstalk:*",
"ec2:*",
"elasticloadbalancing:*",
"autoscaling:*",
"cloudwatch:*",
"s3:*",
"sns:*",
"rds:*",
"cloudformation:*"],
"Effect" : "Allow",
"Resource" : "*"
}
]
}
API Version 2010-12-01
388
AWS Elastic Beanstalk 開発者ガイド
リソース許可に基づいたポリシーの例
Example 3: Testers グループがすべての Elastic Beanstalk 資産を表示できるようにするが、ア
クションを実行できないようにする
次のポリシーは、すべてのアプリケーション、アプリケーションバージョン、イベント、および環境に
対して読み取り専用アクセスを許可します。
{
"Version" : "2012-10-17",
"Statement" : [
{
"Effect" : "Allow",
"Action" : [
"elasticbeanstalk:Check*",
"elasticbeanstalk:Describe*",
"elasticbeanstalk:List*",
"elasticbeanstalk:RequestEnvironmentInfo",
"elasticbeanstalk:RetrieveEnvironmentInfo",
"ec2:Describe*",
"elasticloadbalancing:Describe*",
"autoscaling:Describe*",
"cloudwatch:Describe*",
"cloudwatch:List*",
"cloudwatch:Get*",
"s3:Get*",
"s3:List*",
"sns:Get*",
"sns:List*",
"rds:Describe*",
"cloudformation:Describe*",
"cloudformation:Get*",
"cloudformation:List*",
"cloudformation:Validate*",
"cloudformation:Estimate*"
],
"Resource" : "*"
}
]
}
リソース許可に基づいたポリシーの例
Abstract
特定の Elastic Beanstalk リソースにアクセスするユーザーの Elastic Beanstalk アクションのアクセス許可をコント
ロールするユースケースの例と、そのユースケースをサポートするサンプルポリシー。
このセクションでは、特定の Elastic Beanstalk にアクセスする Elastic Beanstalk アクションのユーザー
許可をコントロールするためのユースケースと、そのユースケースをサポートするサンプルポリシーに
ついて説明します。Elastic Beanstalk リソースのポリシーの詳細については、「ポリシーを作成して特
定の Elastic Beanstalk リソースへのアクセスをコントロールする (p. 356)」を参照してください。ユー
ザーおよびグループへのポリシーのアタッチについては、「Using AWS Identity and Access
Management」の「Managing IAM Policies」を参照してください。
このユースケースの Example Corp. は小規模コンサルタント会社で、2 つのカスタマー用にアプリケー
ションを開発しています。開発マネージャーであるジョンは、2 つの Elastic Beanstalk アプリケーショ
ン、app1 と app2 の開発を管理しています。ジョンは 2 つのアプリケーションを開発し、テストをい
API Version 2010-12-01
389
AWS Elastic Beanstalk 開発者ガイド
リソース許可に基づいたポリシーの例
くつか実行します。また、ジョンのみがこの 2 つのアプリケーションに対して本番環境を更新できま
す。ジョンが app1 および app2 に対して必要とする許可を次に示します。
• アプリケーション、アプリケーションバージョン、環境、および設定テンプレートを表示する
• アプリケーションバージョンを作成し、ステージング環境をデプロイする
• 本番環境を更新する
• 環境を作成および終了する
テスターであるジルには、アプリケーション、アプリケーションバージョン、環境、および設定テンプ
レートの 4 つのリソースを表示するためのアクセス許可が必要です。これにより、2 つのアプリケー
ションを監視およびテストします。ただし、Elastic Beanstalk リソースを変更できてはいけません。
app1 の開発者であるジャックには、app1 のすべてのリソースを表示するためのアクセス許可が必要で
す。また、app1 のアプリケーションバージョンを作成し、ステージング環境にデプロイする必要もあ
ります。
ジョーは、Example Corp. の AWS アカウントの管理者で、ジョン、ジル、およびジャックの IAM ユー
ザーを作成し、次のポリシーをそのユーザーにアタッチして、適切な許可を app1 および app2 アプリ
ケーションに付与します。
API Version 2010-12-01
390
AWS Elastic Beanstalk 開発者ガイド
リソース許可に基づいたポリシーの例
Example 1: app1 および app2 でのジョンの開発、テスト、およびデプロイアクションを許可
するポリシー
確認および管理しやすいようにジョンのポリシーを 3 つに分割しました。2 つのアプリケーションで
ジョンが Elastic Beanstalk アクションを実行するための許可は、このすべてのポリシーによって付与
されます。
最初のポリシーでは、Auto Scaling、Amazon S3、Amazon EC2、CloudWatch、Amazon SNS、Elastic
Load Balancing、Amazon RDS、および AWS CloudFormation(レガシーではないコンテナタイプの場
合)に対するアクションを指定します。Elastic Beanstalk は、環境を作成するときに、これらの追加
サービスに依存して基本リソースをプロビジョニングします。サポートされているレガシーではないコ
ンテナタイプのリストについては、「いくつかのコンテナタイプがレガシーとマークされている理
由 (p. 86)」を参照してください。
Note
ポリシーの例を次に示します。これにより、アプリケーションと環境を管理する際に Elastic
Beanstalk が使用する AWS 製品に、広範な許可セットが付与されます。たとえば、ec2:* を
使用すると、IAM ユーザーが AWS アカウントで、任意の Amazon EC2 リソースに対して任意
のアクションを実行できます。これらの許可は、Elastic Beanstalk で使用するリソースに限定
されません。ベストプラクティスとして、職務遂行に必要な許可のみを個人に付与することを
お勧めします。
{
"Version": "2012-10-17",
"Statement":[
{
"Effect":"Allow",
"Action":[
"ec2:*",
"elasticloadbalancing:*",
"autoscaling:*",
"cloudwatch:*",
"s3:*",
"sns:*",
"rds:*",
"cloudformation:*"
],
"Resource":"*"
}
]
}
2 番目のポリシーでは、app1 および app2 リソースでのジョンによる実行を許可する Elastic Beanstalk
アクションを指定します。AllCallsInApplications ステートメントでは、app1 および app2 内の
すべてのリソースで実行されるすべての Elastic Beanstalk アクション("elasticbeanstalk:*")を
許可します(elasticbeanstalk:CreateEnvironment など)。AllCallsOnApplications ステー
トメントでは、app1 および app2 アプリケーションリソース上のすべての Elastic Beanstalk アクショ
ン("elasticbeanstalk:*")を許可します(elasticbeanstalk:DescribeApplications、
elasticbeanstalk:UpdateApplication など)。AllCallsOnSolutionStacks ステートメント
では、ソリューションスタックリソースのすべての Elastic Beanstalk アクション
("elasticbeanstalk:*")を許可します(elasticbeanstalk:ListAvailableSolutionStacks
など)。
{
"Version": "2012-10-17",
API Version 2010-12-01
391
AWS Elastic Beanstalk 開発者ガイド
リソース許可に基づいたポリシーの例
"Statement":[
{
"Sid":"AllCallsInApplications",
"Action":[
"elasticbeanstalk:*"
],
"Effect":"Allow",
"Resource":[
"*"
],
"Condition":{
"StringEquals":{
"elasticbeanstalk:InApplication":[
"arn:aws:elasticbeanstalk:us-west-2:123456789012:applica
tion/app1",
"arn:aws:elasticbeanstalk:us-west-2:123456789012:applica
tion/app2"
]
}
}
},
{
"Sid":"AllCallsOnApplications",
"Action":[
"elasticbeanstalk:*"
],
"Effect":"Allow",
"Resource":[
"arn:aws:elasticbeanstalk:us-west-2:123456789012:application/app1",
"arn:aws:elasticbeanstalk:us-west-2:123456789012:application/app2"
]
},
{
"Sid":"AllCallsOnSolutionStacks",
"Action":[
"elasticbeanstalk:*"
],
"Effect":"Allow",
"Resource":[
"arn:aws:elasticbeanstalk:us-west-2::solutionstack/*"
]
}
]
}
3 番目のポリシーは、2 番目のポリシーが Elastic Beanstalk アクションを完了するために許可が必要な
Elastic Beanstalk アクションを指定します。AllNonResourceCalls ステートメントでは
elasticbeanstalk:CheckDNSAvailability アクションを許可します。このアクションは、
elasticbeanstalk:CreateEnvironment などのアクションを呼び出すときに必要です。また、
elasticbeanstalk:CreateStorageLocation アクションも許可します。このアクションは、
elasticbeanstalk:CreateApplication、elasticbeanstalk:CreateEnvironment などのア
クションに必要です。
API Version 2010-12-01
392
AWS Elastic Beanstalk 開発者ガイド
リソース許可に基づいたポリシーの例
{
"Version": "2012-10-17",
"Statement":[
{
"Sid":"AllNonResourceCalls",
"Action":[
"elasticbeanstalk:CheckDNSAvailability",
"elasticbeanstalk:CreateStorageLocation"
],
"Effect":"Allow",
"Resource":[
"*"
]
}
]
}
API Version 2010-12-01
393
AWS Elastic Beanstalk 開発者ガイド
リソース許可に基づいたポリシーの例
Example 2: ジルによる app1 および app2 のテストと監視を許可するポリシー
確認および管理しやすいようにジルのポリシーを 3 つに分割しました。2 つのアプリケーションでジル
が Elastic Beanstalk アクションを実行するための許可は、このすべてのポリシーによって付与されま
す。
最初のポリシーでは、Auto Scaling、Amazon S3、Amazon EC2、CloudWatch、Amazon SNS、Elastic
Load Balancing、Amazon RDS、および AWS CloudFormation(レガシーではないコンテナタイプの場
合)での Describe*、List*、および Get* アクションを指定します。これにより、Elastic Beanstalk
アクションが、app1 および app2 アプリケーションの基本リソースの関連情報を取得できます。
{
"Version": "2012-10-17",
"Statement":[
{
"Effect":"Allow",
"Action":[
"ec2:Describe*",
"elasticloadbalancing:Describe*",
"autoscaling:Describe*",
"cloudwatch:Describe*",
"cloudwatch:List*",
"cloudwatch:Get*",
"s3:Get*",
"s3:List*",
"sns:Get*",
"sns:List*",
"rds:Describe*",
"cloudformation:Describe*",
"cloudformation:Get*",
"cloudformation:List*",
"cloudformation:Validate*",
"cloudformation:Estimate*"
],
"Resource":"*"
}
]
}
2 番目のポリシーでは、app1 および app2 リソースでのジルによる実行を許可する Elastic Beanstalk
アクションを指定します。AllReadCallsInApplications ステートメントでは、ジルによる
Describe* アクションと環境情報アクションの呼び出しを許可します。AllReadCallsOnApplications
ステートメントでは、app1 および app2 アプリケーションリソースでのジルによる
DescribeApplications および DescribeEvents アクションの呼び出しを許可します。
AllReadCallsOnSolutionStacks ステートメントでは、ソリューションスタックリソースに関連す
るアクション(ListAvailableSolutionStacks、DescribeConfigurationOptions、および
ValidateConfigurationSettings)の表示を許可します。
{
"Version": "2012-10-17",
"Statement":[
{
"Sid":"AllReadCallsInApplications",
"Action":[
"elasticbeanstalk:Describe*",
"elasticbeanstalk:RequestEnvironmentInfo",
"elasticbeanstalk:RetrieveEnvironmentInfo"
API Version 2010-12-01
394
AWS Elastic Beanstalk 開発者ガイド
リソース許可に基づいたポリシーの例
],
"Effect":"Allow",
"Resource":[
"*"
],
"Condition":{
"StringEquals":{
"elasticbeanstalk:InApplication":[
"arn:aws:elasticbeanstalk:us-west-2:123456789012:applica
tion/app1",
"arn:aws:elasticbeanstalk:us-west-2:123456789012:applica
tion/app2"
]
}
}
},
{
"Sid":"AllReadCallsOnApplications",
"Action":[
"elasticbeanstalk:DescribeApplications",
"elasticbeanstalk:DescribeEvents"
],
"Effect":"Allow",
"Resource":[
"arn:aws:elasticbeanstalk:us-west-2:123456789012:application/app1",
"arn:aws:elasticbeanstalk:us-west-2:123456789012:application/app2"
]
},
{
"Sid":"AllReadCallsOnSolutionStacks",
"Action":[
"elasticbeanstalk:ListAvailableSolutionStacks",
"elasticbeanstalk:DescribeConfigurationOptions",
"elasticbeanstalk:ValidateConfigurationSettings"
],
"Effect":"Allow",
"Resource":[
"arn:aws:elasticbeanstalk:us-west-2::solutionstack/*"
]
}
]
}
3 番目のポリシーは、2 番目のポリシーが Elastic Beanstalk アクションを完了するために許可が必要な
Elastic Beanstalk アクションを指定します。AllNonResourceCalls ステートメントでは
elasticbeanstalk:CheckDNSAvailability アクションを許可します。このアクションは、一部の
表示アクションに必要です。
API Version 2010-12-01
395
AWS Elastic Beanstalk 開発者ガイド
リソース許可に基づいたポリシーの例
{
"Version": "2012-10-17",
"Statement":[
{
"Sid":"AllNonResourceCalls",
"Action":[
"elasticbeanstalk:CheckDNSAvailability"
],
"Effect":"Allow",
"Resource":[
"*"
]
}
]
}
API Version 2010-12-01
396
AWS Elastic Beanstalk 開発者ガイド
リソース許可に基づいたポリシーの例
Example 3: ジャックによる app1 へのアクセスとアプリケーションバージョンのテスト、開
始、作成、およびステージング環境へのデプロイを許可するポリシー
確認および管理しやすいようにジャックのポリシーを 3 つに分割しました。app1 リソースでジャック
が Elastic Beanstalk アクションを実行するための許可は、このすべてのポリシーによって付与されま
す。
最初のポリシーでは、Auto Scaling、Amazon S3、Amazon EC2、CloudWatch、Amazon SNS、Elastic
Load Balancing、Amazon RDS、および AWS CloudFormation(レガシーではないコンテナタイプの場
合)でのアクションを指定します。これにより、Elastic Beanstalk アクションが、app1 の基本リソー
スを表示して操作できます。サポートされているレガシーではないコンテナタイプのリストについて
は、「いくつかのコンテナタイプがレガシーとマークされている理由 (p. 86)」を参照してください。
Note
ポリシーの例を次に示します。これにより、アプリケーションと環境を管理する際に Elastic
Beanstalk が使用する AWS 製品に、広範な許可セットが付与されます。たとえば、ec2:* を
使用すると、IAM ユーザーが AWS アカウントで、任意の Amazon EC2 リソースに対して任意
のアクションを実行できます。これらの許可は、Elastic Beanstalk で使用するリソースに限定
されません。ベストプラクティスとして、職務遂行に必要な許可のみを個人に付与することを
お勧めします。
{
"Version": "2012-10-17",
"Statement":[
{
"Effect":"Allow",
"Action":[
"ec2:*",
"elasticloadbalancing:*",
"autoscaling:*",
"cloudwatch:*",
"s3:*",
"sns:*",
"rds:*",
"cloudformation:*"
],
"Resource":"*"
}
]
}
2 番目のポリシーでは、app1 リソースでのジャックによる実行を許可する Elastic Beanstalk アクショ
ンを指定します。
{
"Version": "2012-10-17",
"Statement":[
{
"Sid":"AllReadCallsAndAllVersionCallsInApplications",
"Action":[
"elasticbeanstalk:Describe*",
"elasticbeanstalk:RequestEnvironmentInfo",
"elasticbeanstalk:RetrieveEnvironmentInfo",
"elasticbeanstalk:CreateApplicationVersion",
"elasticbeanstalk:DeleteApplicationVersion",
API Version 2010-12-01
397
AWS Elastic Beanstalk 開発者ガイド
リソース許可に基づいたポリシーの例
"elasticbeanstalk:UpdateApplicationVersion"
],
"Effect":"Allow",
"Resource":[
"*"
],
"Condition":{
"StringEquals":{
"elasticbeanstalk:InApplication":[
"arn:aws:elasticbeanstalk:us-west-2:123456789012:applica
tion/app1"
]
}
}
},
{
"Sid":"AllReadCallsOnApplications",
"Action":[
"elasticbeanstalk:DescribeApplications",
"elasticbeanstalk:DescribeEvents"
],
"Effect":"Allow",
"Resource":[
"arn:aws:elasticbeanstalk:us-west-2:123456789012:application/app1"
]
},
{
"Sid":"UpdateEnvironmentInApplications",
"Action":[
"elasticbeanstalk:UpdateEnvironment"
],
"Effect":"Allow",
"Resource":[
"arn:aws:elasticbeanstalk:us-west-2:123456789012:environ
ment/app1/app1-staging*"
],
"Condition":{
"StringEquals":{
"elasticbeanstalk:InApplication":[
"arn:aws:elasticbeanstalk:us-west-2:123456789012:applica
tion/app1"
]
},
"StringLike":{
"elasticbeanstalk:FromApplicationVersion":[
"arn:aws:elasticbeanstalk:us-west-2:123456789012:application
version/app1/*"
]
}
}
},
{
"Sid":"AllReadCallsOnSolutionStacks",
"Action":[
"elasticbeanstalk:ListAvailableSolutionStacks",
"elasticbeanstalk:DescribeConfigurationOptions",
"elasticbeanstalk:ValidateConfigurationSettings"
API Version 2010-12-01
398
AWS Elastic Beanstalk 開発者ガイド
リソース許可に基づいたポリシーの例
],
"Effect":"Allow",
"Resource":[
"arn:aws:elasticbeanstalk:us-west-2::solutionstack/*"
]
}
]
}
3 番目のポリシーは、2 番目のポリシーが Elastic Beanstalk アクションを完了するために許可が必要な
Elastic Beanstalk アクションを指定します。AllNonResourceCalls ステートメントでは
elasticbeanstalk:CheckDNSAvailability アクションを許可します。このアクションは、
elasticbeanstalk:CreateEnvironment などのアクションを呼び出すときに必要です。また、
elasticbeanstalk:CreateStorageLocation アクションも許可します。このアクションは、
elasticbeanstalk:CreateEnvironment などのアクションに必要です。
{
"Version": "2012-10-17",
"Statement":[
{
"Sid":"AllNonResourceCalls",
"Action":[
"elasticbeanstalk:CheckDNSAvailability",
"elasticbeanstalk:CreateStorageLocation"
],
"Effect":"Allow",
"Resource":[
"*"
]
}
]
}
API Version 2010-12-01
399
AWS Elastic Beanstalk 開発者ガイド
プロジェクトフォルダの作成
AWS Elastic Beanstalk で使用する開
発環境の設定
Abstract
AWS Elastic Beanstalk で使用するローカル開発環境を設定します。
トピック
• プロジェクトフォルダの作成 (p. 400)
• ソースコントロールをセットアップする (p. 400)
• リモートリポジトリを設定する (p. 401)
• EB CLI をインストールする (p. 401)
• AWS CLI のインストール (p. 402)
プロジェクトフォルダの作成
プロジェクトのフォルダを作成します。フォルダは、読み取り権限と書き込み権限を持っている限り、
ローカルディスクの任意の場所に保存できます。ユーザーフォルダの作成は可能です。複数のアプリ
ケーションを使用する場合は、[workspace] や [projects] などの名前の他のフォルダ内にプロジェク
トフォルダを作成し、すべてが整理された状態を維持します。
workspace/
|-- my-first-app
`-- my-second-app
プロジェクトフォルダの内容は、アプリケーションが使用するウェブコンテナやフレームワークによっ
て異なります。
ソースコントロールをセットアップする
プロジェクトフォルダ内のファイルやコードが誤って削除しないように、さらにプロジェクトを破壊す
る変更を前の状態に戻す手段が確保されるようにソースコントロールを設定します。
API Version 2010-12-01
400
AWS Elastic Beanstalk 開発者ガイド
リモートリポジトリを設定する
ソースコントロールシステムがない場合は、無料で使いやすいオプション、Git の使用を検討します。
Git は EB コマンドラインインターフェイス(CLI)と緊密に統合します。Git ホームページにアクセス
し、Git をインストールします。
Git ウェブサイトの指示に従い、Git をインストールして設定した後、プロジェクトフォルダで git
init を実行し、ローカルレポジトリを設定します。
~/workspace/my-first-app$ git init
Initialized empty Git repository in /home/local/username/workspace/my-firstapp/.git/
プロジェクトフォルダにコンテンツを追加してコンテンツを更新する際は、変更内容を Git レポジトリ
にコミットします。
~/workspace/my-first-app$ git add default.jsp
~/workspace/my-first-app$ git commit -m "add default JSP"
コミットの度に、何らかの問題が生じた場合に後から復元できるよう、プロジェクトのスナップショッ
トを作成します。Git のコマンドとワークフローの詳細については、「Git のドキュメント」を参照して
ください。
リモートリポジトリを設定する
ハードドライブがクラッシュした場合、または別のコンピュータでプロジェクトを使用する必要がある
場合ソースコードをオンラインでバックアップし、別のコンピュータからアクセスするには、コミット
をプッシュできるリモートリポジトリを設定します。
AWS CodeCommit では、AWS クラウドにプライベートリポジトリを作成できます。また、AWS 無料
枠によって最大 5 つの AWS Identity and Access Management(IAM)ユーザーを無料でアカウントに
設定できます。料金の詳細については、「AWS CodeCommit の料金表」を参照してください。
詳細なセットアップ方法については、「AWS CodeCommit ユーザーガイド」を参照してください。
プロジェクトコードをオンラインで保存するもう 1 つの一般的なオプションに、GitHub があります。
GitHub では、パブリックオンラインリポジトリを無料で作成し、月額料金でプライベートリポジトリ
をサポートできます。github.com で、GitHub をサインアップします。
プロジェクトのリモートリポジトリの作成後、git remote add でリモートリポジトリをローカルリ
ポジトリにアタッチします。
~/workspace/my-first-app$ git remote add origin ssh://git-codecommit.us-east1.amazonaws.com/v1/repos/my-repo
EB CLI をインストールする
EB CLI (p. 403) を使用して Elastic Beanstalk 環境を管理し、コマンドラインからヘルスステータスをモ
ニタリングします。インストール手順については、「EB CLI をインストールする (p. 403)」を参照して
ください。
デフォルトでは、EB CLI はプロジェクトフォルダ内のすべてをパッケージングし、ソースバンドルと
して Elastic Beanstalk にアップロードします。Git と EB CLI を共に使用すると、ビルトクラスファイ
API Version 2010-12-01
401
AWS Elastic Beanstalk 開発者ガイド
AWS CLI のインストール
ルが .gitignore でソースにコミットされないようにし、ソースファイルが .ebignore でデプロイ
されないようにできます。
プロジェクトフォルダの内容の代わりに、ビルドアーチファクトをデプロイするように EB CLI を設定
する (p. 412)こともできます(WAR または ZIP ファイル)。
AWS CLI のインストール
AWS コマンドラインインターフェイス(AWS CLI)は、すべてのパブリック API 操作のコマンドを提
供する AWS サービス向けの統合クライアントです。これらのコマンドは EB CLI によって提供される
レベルよりも低いレベルであり、多くの場合、AWS CLI 使用の操作を実行するのにより多くのコマン
ドが必要です。一方、AWS CLI を使用すると、ローカルマシンにリポジトリを設定しなくても、アカ
ウントで実行中のアプリケーションまたは環境を使用できます。AWS CLI を使用して、操作タスクを
簡素化または自動化するスクリプトを作成します。
サポートされるサービスの詳細、および AWS コマンドラインインターフェイスのダウンロードについ
ては、「AWS コマンドラインインターフェイス」を参照してください。API ベースの CLI コマンドと
AWS CLI コマンドが相互にどのように対応しているかについては、「AWS Command Line
Interface (p. 921)」を参照してください。
API Version 2010-12-01
402
AWS Elastic Beanstalk 開発者ガイド
EB CLI のインストール
Elastic Beanstalk コマンドラインイ
ンターフェイス(EB CLI)
Abstract
EB CLI を使用して AWS Elastic Beanstalk 環境を作成および管理します。
Elastic Beanstalk コマンドラインインターフェイス(EB CLI)は Elastic Beanstalk のコマンドライン
インターフェイスであり、ローカルリポジトリからの環境の作成、更新およびモニタリングを簡素化す
るインタラクティブなコマンドを提供します。EB CLI を毎日の開発の一部として使用し、AWS マネジ
メントコンソール の代替としてテストのサイクルを使用します。
EB CLI のインストール、リポジトリの設定、環境での作業の詳細については、以下のトピックを参照
してください。
トピック
• EB コマンドラインインターフェイス(CLI)のインストール (p. 403)
• EB CLI の設定 (p. 409)
• EB CLI による Elastic Beanstalk 環境の管理 (p. 413)
• EB CLI での Git の使用 (p. 417)
• EB CLI で複数の AWS Elastic Beanstalk 環境をグループとして管理する (p. 418)
• EB CLI コマンドリファレンス (p. 420)
• EB CLI に関する問題のトラブルシューティング (p. 459)
• EB CLI 2.6(廃止) (p. 461)
• Elastic Beanstalk API コマンドラインインターフェイス(廃止) (p. 493)
EB コマンドラインインターフェイス(CLI)のイ
ンストール
Abstract
EB CLI のインストール手順を説明します。
API Version 2010-12-01
403
AWS Elastic Beanstalk 開発者ガイド
Python および pip を使用して EB CLI をインストールする
このトピックでは、EB コマンドラインインターフェイス(CLI)バージョン 3 をインストールする方
法について説明します。EB CLI は、アプリケーションの作成、Elastic Beanstalk で使用するための設
定、Elastic Beanstalk 環境へのデプロイを容易に行えるインタラクティブなコマンドラインツールで
す。EB CLI は Python で開発されており、実行するためには Python バージョン 2.7 または 3.4 が必要
です。
Note
EB CLI は Python 3.5 と互換性がありません。
Linux、Windows、OS X での EB CLI の主なディストリビューション方法は pip です。これは、Python
パッケージとその依存関係のインストール、アップグレード、削除を容易にする Python のパッケージ
マネージャです。
OS X の場合、EB CLI に対する更新は pip と Homebrew の両方のリポジトリに配布されます。いずれ
かのパッケージマネージャを使用して、awsebcli パッケージをインストールすることができます。
Python および pip を使用して EB CLI をインストー
ルする
EB CLI の最新バージョンは、常に pip リポジトリに用意されています。pip およびサポートされるバー
ジョンの Python をすでにインストールしてある場合は、次のコマンドで EB CLI をインストールでき
ます。sudo(Linux, OS X, or Unix)または管理者コマンドプロンプト(Windows)を使用して、この
コマンドを実行します。
# pip install awsebcli
Note
Amazon Linux には、Python 2.7 およびバージョン 2015.03 以降の pip が付属しています。
EB CLI は、最新の Elastic Beanstalk 機能をサポートする機能を追加するために、定期的に更新されま
す。EB CLI の最新バージョンに更新する必要がある場合は、upgrade オプションを使用します。
# pip install --upgrade awsebcli
EB CLI をアンインストールする必要がある場合は、pip uninstall を使用します。
# pip uninstall awsebcli
Python および pip がインストールされていない場合は、後述のオペレーティングシステムに応じた手
順に従ってください。
トピック
• Linux で Python、pip、EB CLI をインストールする (p. 405)
• Windows で Python、pip、EB CLI をインストールする (p. 407)
• OS X で EB CLI をインストールする (p. 408)
API Version 2010-12-01
404
AWS Elastic Beanstalk 開発者ガイド
Linux で Python、pip、EB CLI をインストールする
Linux で Python、pip、EB CLI をインストールする
Abstract
Linux で EB CLI をインストールします。
EB CLI は Python 2.7 または 3.4 バージョンを要件とします。ご使用のディストリビューションに Python
が付属していないか、付属しているバージョンが古い場合は、pip および EB CLI をインストールする
前に Python をインストールしてください。
Linux に Python 2.7 をインストールするには
1.
Python がインストール済みかどうかを確認します。
$ python --version
Note
ご使用の Linux ディストリビューションに Python が付属している場合、拡張機能のコン
パイルや EB CLI のインストールで必要となるヘッダーとライブラリを取得するために、
Python 開発者パッケージのインストールが必要になることがあります。パッケージマネー
ジャを使用して、開発者パッケージ(通常は python-dev または python-devel という名前)
をインストールします。
2.
Python 2.7 以降がインストールされていない場合は、ご使用のディストリビューションのパッケー
ジマネージャを使用してインストールします。コマンドとパッケージ名は、場合によって異なりま
す。
• Debian から派生した OS(Ubuntu など)では、APT を使用します。
$ sudo apt-get install python2.7
• Red Hat およびそれから派生した OS では、yum を使用します。
$ sudo yum install python27
• SUSE およびそれから派生した OS では、zypper を使用します。
$ sudo zypper install python
3.
コマンドプロンプトまたはシェルを開き、次のコマンドを実行して、Python が正しくインストー
ルされたことを確認します。
$ python --version
Python 2.7.9
Python Packaging Authority が提供するスクリプトを使用して pip をインストールし、その後で EB CLI
をインストールします。
API Version 2010-12-01
405
AWS Elastic Beanstalk 開発者ガイド
Linux で Python、pip、EB CLI をインストールする
pip および EB CLI をインストールするには
1.
pypa.io からインストールスクリプトをダウンロードします。
$ curl -O https://bootstrap.pypa.io/get-pip.py
このスクリプトは、最新バージョンの pip と、もう 1 つの必要なパッケージ(setuptools)をダウ
ンロードしてインストールします。
2.
Python を使用してスクリプトを実行します。
$ sudo python27 get-pip.py
Collecting pip
Downloading pip-6.1.1-py2.py3-none-any.whl (1.1MB)
Collecting setuptools
Downloading setuptools-15.0-py2.py3-none-any.whl (501kB)
Installing collected packages: pip, setuptools
Successfully installed pip-6.1.1 setuptools-15.0
python コマンドではなく python27 コマンドを使用して Python バージョン 2.7 を直接呼び出す
ことで、システムに古いシステムバージョンの Python が存在する場合でも、pip が適切な場所に
確実にインストールされます。
3.
最後に、pip を使用して EB CLI をインストールします。
$ sudo pip install awsebcli
Collecting awsebcli
Downloading awsebcli-3.2.2.tar.gz (828kB)
Collecting pyyaml>=3.11 (from awsebcli)
Downloading PyYAML-3.11.tar.gz (248kB)
Collecting cement==2.4 (from awsebcli)
Downloading cement-2.4.0.tar.gz (129kB)
Collecting python-dateutil<3.0.0,>=2.1 (from awsebcli)
Downloading python_dateutil-2.4.2-py2.py3-none-any.whl (188kB)
Collecting jmespath>=0.6.1 (from awsebcli)
Downloading jmespath-0.6.2.tar.gz
Collecting six>=1.5 (from python-dateutil<3.0.0,>=2.1->awsebcli)
Downloading six-1.9.0-py2.py3-none-any.whl
Installing collected packages: pyyaml, cement, six, python-dateutil, jmespath,
awsebcli
Running setup.py install for pyyaml
Running setup.py install for cement
Running setup.py install for jmespath
Running setup.py install for awsebcli
Successfully installed awsebcli-3.2.2 cement-2.4.0 jmespath-0.6.2 pythondateutil-2.4.2 pyyaml-3.11 six-1.9.0
Note
ご使用のディストリビューションに付属する古いバージョンと共存する形で新しいバー
ジョンの Python をインストールした場合、sudo を使用して pip を呼び出すときに、次の
ようなエラーが発生することがあります。
sudo: pip: command not found
API Version 2010-12-01
406
AWS Elastic Beanstalk 開発者ガイド
Windows で Python、pip、EB CLI をインストールする
この問題を回避するには、which pip を使用して実行可能ファイルを特定してから、EB
CLI をインストールするときに絶対パスを使用して直接呼び出します。
$ which pip
/usr/local/bin/pip
$ sudo /usr/local/bin/pip install awsebcli
4.
EB CLI のバージョンを確認し、EB CLI が正しくインストールされたことを確認します。
$ eb --version
EB CLI 3.2.2 (Python 2.7.9)
Windows で Python、pip、EB CLI をインストールす
る
Abstract
Windows で EB CLI をインストールします。
Python Software Foundation は、pip を含む Windows 用インストーラを提供しています。
Windows で Python 3.4、pip、EB CLI をインストールするには
1.
2.
Python.org のダウンロードページから Python 3.4 をダウンロードしてインストールします。
Python の home ディレクトリおよび scripts ディレクトリを Windows の Path システム変数に追
加します。
C:\WINDOWS\system32;C:\WINDOWS;C:\Python34;C:\Python34\Scripts
3.
4.
[スタート] メニューから Windows コマンドプロセッサを開きます。
次のコマンドを使用して、Python と pip の両方が正しくインストールされたことを確認します。
C:\Windows\System32> python --version
Python 3.4.3
C:\Windows\System32> pip --version
pip 6.0.8 from C:\Python34\lib\site-packages (python 3.4)
5.
pip を使用して EB CLI をインストールします。
C:\Windows\System32> pip install awsebcli
Collecting awsebcli
Downloading awsebcli-3.2.2.tar.gz (828kB)
Collecting pyyaml>=3.11 (from awsebcli)
Downloading PyYAML-3.11.tar.gz (248kB)
Collecting cement==2.4 (from awsebcli)
Downloading cement-2.4.0.tar.gz (129kB)
Collecting python-dateutil<3.0.0,>=2.1 (from awsebcli)
Downloading python_dateutil-2.4.2-py2.py3-none-any.whl (188kB)
API Version 2010-12-01
407
AWS Elastic Beanstalk 開発者ガイド
OS X で EB CLI をインストールする
Collecting jmespath>=0.6.1 (from awsebcli)
Downloading jmespath-0.6.2.tar.gz
Collecting six>=1.5 (from python-dateutil<3.0.0,>=2.1->awsebcli)
Downloading six-1.9.0-py2.py3-none-any.whl
Installing collected packages: six, jmespath, python-dateutil, cement,
pyyaml, awsebcli
Running setup.py install for jmespath
Running setup.py install for cement
Running setup.py install for pyyaml
checking if libyaml is compilable
Microsoft Visual C++ 10.0 is required (Unable to find vcvarsall.bat).
skipping build_ext
Running setup.py install for awsebcli
Installing eb-script.py script to C:\Python34\Scripts
Installing eb.exe script to C:\Python34\Scripts
Installing eb.exe.manifest script to C:\Python34\Scripts
Successfully installed awsebcli-3.2.2 cement-2.4.0 jmespath-0.6.2 pythondateutil-2.4.2 pyyaml-3.11 six-1.9.0
6.
EB CLI が正しくインストールされたことを確認します。
C:\Windows\System32> eb --version
EB CLI 3.2.2 (Python 3.4.3)
OS X で EB CLI をインストールする
Abstract
OS X で EB CLI をインストールする.
Homebrew パッケージマネージャを使用する場合は、brew コマンドを使用して EB CLI をインストー
ルする (p. 408)ことができます。Python と pip をインストールしてから、pip を使用して EB CLI をイン
ストールすることもできます。
Homebrew で EB CLI をインストールする
Homebrew を使用している場合は、それを使用して EB CLI をインストールできます。EB CLI の最新
バージョンは、通常、pip で表示されてから数日後に Homebrew で使用できるようになります。
Homebrew で EB CLI をインストールするには
1.
Run brew install awsebcli:
$ brew install awsebcli
2.
EB CLI が正しくインストールされたことを確認します。
$ eb --version
EB CLI 3.2.2 (Python 3.4.3)
API Version 2010-12-01
408
AWS Elastic Beanstalk 開発者ガイド
EB CLI の設定
OS X で Python、pip、EB CLI をインストールする
Python と pip の最新バージョンをインストールしてから、それらを使用して EB CLI をインストールで
きます。
OS X 10.6 以前で EB CLI をインストールするには
1.
2.
Python.org のダウンロードページから Python 3.4 をダウンロードしてインストールします。
Python Packaging Authority が提供するスクリプトを使用して、pip をインストールします。
$ curl -O https://bootstrap.pypa.io/get-pip.py
$ python3 get-pip.py
3.
pip を使用して EB CLI をインストールします。
$ sudo pip install awsebcli
El Capitan の distutils に入っているバージョン 6 に関するエラーが表示される場合は、
--ignore-installed オプションを使用します。
$ sudo pip install awsebcli --ignore-installed six
4.
EB CLI が正しくインストールされたことを確認します。
$ eb --version
EB CLI 3.2.2 (Python 3.4.3)
最新バージョンにアップグレードするには、--upgrade オプションを使用します。
$ sudo pip install --upgrade awsebcli
EB CLI の設定
Abstract
.ebignore および複数の認証情報ストレージオプションを使用して、EB CLI インストール環境をカスタマイズし
ます。
installing the EB CLI (p. 403) 後、eb init でプロジェクトフォルダを設定する準備が完了しました。
アプリケーションのプロジェクトディレクトリで eb init を実行して、EB CLI とプロジェクトを設定
します。
次の例は、eb という名前のプロジェクトフォルダで eb init を初めて実行するための設定手順を示し
ます。
API Version 2010-12-01
409
AWS Elastic Beanstalk 開発者ガイド
EB CLI の設定
EB CLI プロジェクトを初期化する
1.
まず、EB CLI にはリージョンの選択がプロンプトされます。 使用したいリージョンに対応する番
号を入力し、Enter を押します。
~/eb $ 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) sa-east-1 : South America (Sao Paulo)
(default is 3): 3
2.
次に、EB CLI がリソースを管理できるように、アクセスキーとシークレットキーを入力します。
アクセスキーは AWS Identity and Access Management マネジメントコンソールに作成されます。
キーがない場合には、Amazon Web Services General Reference で「How Do I Get Security
Credentials?」を参照してください。
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
3.
Elastic Beanstalk のアプリケーションは、一連のアプリケーションバージョン(ソース)、環境、
および単一ウェブアプリケーションに関連付けられる保存された設定を含むリソースです。 EB
CLI を使って Elastic Beanstalk にソースコードをデプロイするたびに、新しいアプリケーション
バージョンが作成されてリストに追加されます。
Select an application to use
1) [ Create new Application ]
(default is 1): 1
4.
デフォルトのアプリケーション名は、eb init を実行するフォルダの名前です。 プロジェクトを
示す任意の名前を入力します。
Enter Application Name
(default is "eb"): eb
Application eb has been created.
5.
ウェブアプリケーションが開発された言語またはフレームワークに一致するプラットフォームを選
択します。 アプリケーションの開発を始める以前の場合には、好みのプラットフォームを選択し
ます。 サンプルアプリケーションを起動する方法が簡略に確認でき、後でいつでもこの設定を変
更できます。
Select a platform.
1) Node.js
2) PHP
3) Python
API Version 2010-12-01
410
AWS Elastic Beanstalk 開発者ガイド
.ebignore ファイルを無視する
4) Ruby
5) Tomcat
6) IIS
7) Docker
8) Multi-container Docker
9) GlassFish
10) Go
(default is 1): 1
6.
Elastic Beanstalk 環境のインスタンスに SSH キーペアを割り当てることを選択すると、トラブル
シューティング時にこのインスタンスに直接接続することができます。
Do you want to set up SSH for your instances?
(y/n): y
7.
既存のキーペアを選択するか、新しいキーペアを作成します。 eb init を使用して新しいキーペア
を作成するには、ssh-keygen がローカルマシンにインストールされており、コマンドラインから
呼び出せる必要があります。CLI は新しいキーペアを Amazon EC2 に登録して、プライベートキー
をユーザーディレクトリの .ssh という名前のフォルダにローカルで格納します。
Select a keypair.
1) [ Create new KeyPair ]
(default is 1): 1
EB CLI のインストールは設定が完了し、使用可能となりました。 Elastic Beanstalk 環境の作成および
使用方法については、「EB CLI による Elastic Beanstalk 環境の管理 (p. 413)」を参照してください。
高度な設定
• .ebignore ファイルを無視する (p. 411)
• 名前を指定されたプロファイルを使用する (p. 412)
• プロジェクトフォルダの代わりに圧縮ファイルをデプロイする (p. 412)
• 構成設定と優先順位 (p. 412)
• インスタンスメタデータ (p. 413)
.ebignore ファイルを無視する
.ebignore ファイルを使用して、プロジェクトディレクトリの特定のファイルを無視するように EB
CLI に指示することができます。このファイルは、.gitignore と同様に動作します。プロジェクト
ディレクトリを Elastic Beanstalk にデプロイし、新しいアプリケーションバージョンを作成するとき、
EB CLI は、作成するソースバンドルに、.ebignore で指定されたファイルを含めません。
.ebignore が存在しないが .gitignore が存在する場合は、EB CLI は、.gitignore で指定された
ファイルを無視します。.ebignore ファイルがある場合は、EB CLI は .gitignore を読み取りませ
ん。
Note
Windows で .ebignore ファイルを追加すると、EB CLI がシンボリックリンクに従って、ソー
スバンドルの作成時にリンクファイルを含めます。これは既知の問題で、今後のアップデート
で修正される予定です。
API Version 2010-12-01
411
AWS Elastic Beanstalk 開発者ガイド
名前を指定されたプロファイルを使用する
名前を指定されたプロファイルを使用する
名前を指定したプロファイルとして認証情報を credentials または config ファイルに保存する場
合、--profile (p. 420) オプションを使用して明示的にプロファイルを指定できます。 たとえば、次の
コマンドでは user2 プロファイルを使用して新しいアプリケーションを作成します。
$ eb init --profile user2
AWS_EB_PROFILE 環境変数を設定して、デフォルトのプロファイルの変更をすることもできます。 こ
の変数を設定すると、EB CLI は default や eb-cli の代わりに特定のプロファイルからの認証情報
を読み込みます。
Linux, OS X, or Unix
$ export AWS_EB_PROFILE=user2
Windows
> set AWS_EB_PROFILE=user2
プロジェクトフォルダの代わりに圧縮ファイルをデ
プロイする
独立したビルドプロセスで作成した ZIP ファイルや WAR ファイルをデプロイするよう EB CLI に命令
することができます。このためには、次の行をプロジェクトマネージャーの
.elasticbeanstalk/config.yml に追加します。
deploy:
artifact: path/to/buildartifact.zip
Git リポジトリ (p. 417)で EB CLI を設定して、ソースにアーティファクトをコミットしなかった場合は、
--staged オプションを使用して最新のビルドをデプロイします。
~/eb$ eb deploy --staged
構成設定と優先順位
EB CLI では、プロバイダーチェーンを使用して、システムまたはユーザー環境変数、ローカル AWS
設定ファイルなど、さまざまな場所で AWS の認証情報が検索されます。
AWS CLI では、以下の順序で認証情報と構成設定が検索されます。
1. コマンドラインオプション - 名前付きプロファイルを --profile で指定して、デフォルトの設定を
上書きできます。
2. 環境変数 - AWS_ACCESS_KEY_ID および AWS_SECRET_ACCESS_KEY
3. AWS 認証情報ファイル - この場所は ~/.aws/credentials(Linux および OS X システム)または
C:\Users\USERNAME\.aws\credentials(Windows システム)です。このファイルには、デフォ
ルトのプロファイルに加えて、複数の名前付きプロファイルを含めることができます。
4. http://docs.aws.amazon.com/cli/latest/userguide/cli-chap-getting-started.html#cli-config-filesAWS CLI
設定ファイル - この場所は ~/.aws/config(Linux および OS X システム)または
API Version 2010-12-01
412
AWS Elastic Beanstalk 開発者ガイド
インスタンスメタデータ
C:\Users\USERNAME\.aws\config(Windows システム)です。このファイルには、デフォルト
のプロファイル、名前付きプロファイル、AWS CLI 固有の設定パラメータを含めることができます。
5. レガシ EB CLI 設定ファイル - この場所は ~/.elasticbeanstalk/config(Linux および OS X シ
ステム)または C:\Users\USERNAME\.elasticbeanstalk/config(Windows システム)です。
6. インスタンスプロファイルの認証情報 - これらの認証情報は、インスタンスロールが割り当てられた
EC2 インスタンスで使用でき、Amazon EC2 メタデータサービスを介して提供されます。インスタ
ンスプロファイル (p. 21)には Elastic Beanstalk を使用するためのアクセス権限が必要です。
認証情報ファイルに「eb-cli」という名前付きプロファイルが含まれている場合、EB CLI では、デフォ
ルトのプロファイルよりもそのプロファイルが優先されます。プロファイルが見つからないか、プロ
ファイルが見つかっても Elastic Beanstalk を使用するためのアクセス権限がない場合、EB CLI では、
キーを入力するように求められます。
インスタンスメタデータ
EC2 インスタンスから EB CLI を使用するには、必要なリソースへのアクセス権限を持つロールを作成
し、そのロールをインスタンスにその起動時に割り当てます。インスタンスを起動し、pip で EB CLI
をインストールします。
~$ sudo pip install awsebcli
pip は Amazon Linux にプリインストールされています。
EB CLI はインスタンスのメタデータから認証情報を読み取ります。詳細については、『IAM ユーザー
ガイド』の「Amazon EC2 インスタンスで実行されるアプリケーションに、AWS リソースへのアクセ
スを付与する」を参照してください。
EB CLI による Elastic Beanstalk 環境の管理
Abstract
このウォークスルーでは、EB CLI を使用してサンプルアプリケーションをデプロイする手順を説明します。
EB CLI をインストール (p. 403)し、プロジェクトディレクトリを構成 (p. 409)したら、EB CLI を使用し
た Elastic Beanstalk 環境の作成、ソースのデプロイと設定の更新、ログとイベントのプルの準備が整
います。
Note
EB CLI を使用して環境を作成するには、サービスロール (p. 20)が必要です。Elastic Beanstalk
管理コンソールで環境を作成することで、サービスロールを作成できます。サービスロールが
ない場合は、eb create を実行したときに EB CLI によって作成されます。
次の例では、サンプル Docker アプリケーションで使われる EB CLI で初期化された eb という名前の
空プロジェクトフォルダを使用します。
ベーシックコマンド
•
•
•
•
eb の作成 (p. 414)
eb ステータス (p. 414)
eb イベント (p. 415)
eb logs (p. 415)
• eb open (p. 415)
API Version 2010-12-01
413
AWS Elastic Beanstalk 開発者ガイド
eb の作成
• eb デプロイ (p. 415)
• eb config (p. 416)
• eb terminate (p. 417)
eb の作成
初期環境を作成するには、eb create (p. 427) を実行し、プロンプトに従います。プロジェクトディレク
トリにソースコードがある場合には、EB CLI はまとめて環境にデプロイします。 それ以外の場合に
は、サンプルアプリケーションが使用されます。
~/eb$ eb create
Enter Environment Name
(default is eb-dev): eb-dev
Enter DNS CNAME prefix
(default is eb-dev): eb-dev
WARNING: The current directory does not contain any source code. Elastic Bean
stalk is launching the sample application instead.
Environment details for: elasticBeanstalkExa-env
Application name: elastic-beanstalk-example
Region: us-west-2
Deployed Version: Sample Application
Environment ID: e-j3pmc8tscn
Platform: 64bit Amazon Linux 2015.03 v1.4.3 running Docker 1.6.2
Tier: WebServer-Standard
CNAME: eb-dev.elasticbeanstalk.com
Updated: 2015-06-27 01:02:24.813000+00:00
Printing Status:
INFO: createEnvironment is starting.
-- Events -- (safe to Ctrl+C) Use "eb abort" to cancel the command.
環境の準備ができるようになるまでに数分かかる場合があります。 環境の作成中にコマンドラインに
戻るには、[Ctrl+C] を押してください。
eb ステータス
現在の環境のステータスを見るには、eb status を実行してください。ステータスが ready になると、
サンプルアプリケーションは elasticbeanstalk.com で利用できるようになり、環境の更新準備が整いま
した。
~/eb$ eb status
Environment details for: elasticBeanstalkExa-env
Application name: elastic-beanstalk-example
Region: us-west-2
Deployed Version: Sample Application
Environment ID: e-gbzqc3jcra
Platform: 64bit Amazon Linux 2015.03 v1.4.3 running Docker 1.6.2
Tier: WebServer-Standard
CNAME: elasticbeanstalkexa-env.elasticbeanstalk.com
Updated: 2015-06-30 01:47:45.589000+00:00
Status: Ready
Health: Green
API Version 2010-12-01
414
AWS Elastic Beanstalk 開発者ガイド
eb イベント
eb イベント
Elastic Beanstalk から出力されるイベントのリストを見るには、eb events を使用します。
~/eb$ eb events
2015-06-29 23:21:09
INFO
createEnvironment is starting.
2015-06-29 23:21:10
INFO
Using elasticbeanstalk-us-west-2-EXAMPLE as
Amazon S3 storage bucket for environment data.
2015-06-29 23:21:23
INFO
Created load balancer named: awseb-e-g-AWSEBLoaEXAMPLE
2015-06-29 23:21:42
INFO
Created security group named: awseb-e-gbzqc3jcrastack-AWSEBSecurityGroup-EXAMPLE
2015-06-29 23:21:45
INFO
Created Auto Scaling launch configuration named:
awseb-e-gbzqc3jcra-stack-AWSEBAutoScalingLaunchConfiguration-EXAMPLE
...
eb logs
環境のインスタンスからログを取得するには、 eb logs を使用します。デフォルトでは、eb logs より
最初に処理されたインスタンスからログを取得して、標準出力で表示します。特定のインスタンスから
ログを取得するために、--instance オプションでそのインスタンスの ID を指定できます。
--all オプションは、すべてのインスタンスのログを取得し、サブディレクトリに
.elasticbeanstalk/logs の名前で保存します。
~/eb$ eb logs --all
Retrieving logs...
Logs were saved to /home/local/ANT/mwunderl/ebcli/environments/test/.elastic
beanstalk/logs/150630_201410
Updated symlink at /home/local/ANT/mwunderl/ebcli/environments/test/.elastic
beanstalk/logs/latest
eb open
ブラウザでウェブサイトのユーザー環境を開くには、eb open を使用します。
~/eb$ eb open
ウィンドウ化している環境では、デフォルトのブラウザは新しいウィンドウで開きます。 ターミナル
環境では、可能な場合でコマンドラインのブラウザ(たとえば、w3m)が使用できます。
eb デプロイ
環境が起動されて準備完了すると、eb deploy を使用してその環境の更新ができます。
このコマンドはソースコードにまとめられてデプロイされると効果が高くなるため、この例ではプロ
ジェクトディレクトリに次のコンテンツで Dockerfile を作成しました。
~/eb/Dockerfile
FROM ubuntu:12.04
API Version 2010-12-01
415
AWS Elastic Beanstalk 開発者ガイド
eb config
RUN apt-get update
RUN apt-get install -y nginx zip curl
RUN echo "daemon off;" >> /etc/nginx/nginx.conf
RUN curl -o /usr/share/nginx/www/master.zip -L https://codeload.github.com/gab
rielecirulli/2048/zip/master
RUN cd /usr/share/nginx/www/ && unzip master.zip && mv 2048-master/* . && rm rf 2048-master master.zip
EXPOSE 80
CMD ["/usr/sbin/nginx", "-c", "/etc/nginx/nginx.conf"]
この Dockerfile は、Ubuntu 12.04 のイメージをデプロイし、ゲーム 2048 をインストールします。
ユーザーの環境にアプリケーションをアップロードするためには、eb deploy を実行します。
~/eb$ eb deploy
Creating application version archive "app-150630_014338".
Uploading elastic-beanstalk-example/app-150630_014338.zip to S3. This may take
a while.
Upload Complete.
INFO: Environment update is starting.
-- Events -- (safe to Ctrl+C) Use "eb abort" to cancel the command.
eb deploy を実行すると、EB CLI はプロジェクトディレクトリのコンテンツをまとめて、ユーザーの環
境にデプロイします。
Note
プロジェクトフォルダで git リポジトリを初期化した場合、EB CLI は予定される変更がある場
合でも常に最新の更新にデプロイします。 ユーザーの環境にデプロイする eb deploy を実行す
る前に、変更の更新を行ってください。
eb config
実行する環境に利用可能な設定オプションを、eb config コマンドを使って確認してください。
~/eb$ eb config
ApplicationName: elastic-beanstalk-example
DateUpdated: 2015-06-30 02:12:03+00:00
EnvironmentName: elasticBeanstalkExa-env
SolutionStackName: 64bit Amazon Linux 2015.03 v1.4.3 running Docker 1.6.2
settings:
AWSEBAutoScalingScaleDownPolicy.aws:autoscaling:trigger:
LowerBreachScaleIncrement: '-1'
AWSEBAutoScalingScaleUpPolicy.aws:autoscaling:trigger:
UpperBreachScaleIncrement: '1'
AWSEBCloudwatchAlarmHigh.aws:autoscaling:trigger:
UpperThreshold: '6000000'
...
このコマンドは、テキストエディタで利用可能な設定オプションのリストを入力します。 表示される
多くのオプションには、null 値があります。これらは出フォルト設定ではありませんが、ユーザー環
API Version 2010-12-01
416
AWS Elastic Beanstalk 開発者ガイド
eb terminate
境のリソースに更新するために変更することができます。 これらのオプションの詳細については、「設
定オプション (p. 101)」を参照してください。
eb terminate
今時点で環境の使用が終わった場合には、eb terminate を使って終了します。
~/eb$ eb terminate
The environment "eb-dev" and all associated instances will be terminated.
To confirm, type the environment name: eb-dev
INFO: terminateEnvironment is starting.
INFO: Deleted CloudWatch alarm named: awseb-e-jc8t3pmscn-stack-AWSEBCloud
watchAlarmHigh-1XLMU7DNCBV6Y
INFO: Deleted CloudWatch alarm named: awseb-e-jc8t3pmscn-stack-AWSEBCloud
watchAlarmLow-8IVI04W2SCXS
INFO: Deleted Auto Scaling group policy named: arn:aws:autoscaling:us-west2:210774411744:scalingPolicy:1753d43e-ae87-4df6-a405-11d31f4c8f97:autoScal
ingGroupName/awseb-e-jc8t3pmscn-stack-AWSEBAutoScalingGroup-90TTS2ZL4MXV:poli
cyName/awseb-e-jc8t3pmscn-stack-AWSEBAutoScalingScaleUpPolicy-A070H1BMUQAJ
INFO: Deleted Auto Scaling group policy named: arn:aws:autoscaling:us-west2:210774411744:scalingPolicy:1fd24ea4-3d6f-4373-affc-4912012092ba:autoScal
ingGroupName/awseb-e-jc8t3pmscn-stack-AWSEBAutoScalingGroup-90TTS2ZL4MXV:poli
cyName/awseb-e-jc8t3pmscn-stack-AWSEBAutoScalingScaleDownPolicy-LSWFUMZ46H1V
INFO: Waiting for EC2 instances to terminate. This may take a few minutes.
-- Events -- (safe to Ctrl+C)
使用できる EB CLI コマンドの全リストについては、「EB CLI コマンドリファレンス (p. 420)」を参照
します。
EB CLI での Git の使用
Abstract
ローカル Git リポジトリで使用する EB CLI を設定します。
EB CLI は、Git と連携して使用することができます。このセクションでは、EB CLI で Git を使用する
方法の概要を説明します。
Git をインストールして Git リポジトリを初期化するには
1.
http://git-scm.com にアクセスして、Git の最新バージョンをダウンロードします。
2.
次のコマンドを入力して、Git リポジトリを初期化します。
~/eb$ git init
3.
これで、EB CLI は、アプリケーションが Git を使ってセットアップされることを認識します。
eb init をまだ実行していない場合は、ここで実行します。
~/eb$ eb init
さまざまな Git ブランチを使用するには
API Version 2010-12-01
417
AWS Elastic Beanstalk 開発者ガイド
環境を構成する
環境をコードのさまざまなブランチと関連付けることができます。これにより、新しいブランチで作業
するときに、デフォルトの環境でもそのブランチを使用できるようになります。たとえば、次のコマン
ドを入力して、実行中の環境を master ブランチと develop ブランチに関連付けることができます。
~/eb$
~/eb$
~/eb$
~/eb$
git checkout master
eb use prod
git checkout develop
eb use dev
デフォルトでは、EB CLI はコミット ID およびメッセージをそれぞれアプリケーションバージョンラベ
ルと説明として使用して、最新のコミットを現在のブランチでデプロイします。コミットしない環境に
デプロイする場合は、--staged を使用して、ステージング領域に追加された変更をデプロイするオプ
ションを使用できます。
変更をコミットしないでデプロイするには
1.
新しいファイルと変更されたファイルをステージング領域に追加します。
~/eb$ git add .
2.
eb deploy を使用してステージングされた変更をデプロイします。
~/eb$ eb deploy --staged
EB CLI がアーチファクトをデプロイする (p. 412)ように設定しており、アーチファクトを Git リポジト
リにコミットしていない場合は、--staged オプションを使用して最新のビルドをデプロイします。
Git タグをアプリケーションバージョンに割り当てるには
Git タグをバージョンラベルとして使用し、環境で実行されているアプリケーションバージョンを識別
できます。たとえば、次のコマンドを入力します。
~/eb$ git tag -a v1.0 -m "My version 1.0"
EB CLI で複数の AWS Elastic Beanstalk 環境をグ
ループとして管理する
Abstract
それぞれのコンポーネントが SOA アプリケーションである複数の AWS Elastic Beanstalk 環境を管理するために
EB CLI を使用します。
EB CLI を使用して環境グループを作成し、Compose Environments API でそれぞれの環境がサービ
ス対応アーキテクチャの別々のコンポーネントを実行するようにできます。
次のフォルダ構造にアプリケーションコンポーネントを整理します。
~/project-name
|-- component-a
API Version 2010-12-01
418
AWS Elastic Beanstalk 開発者ガイド
環境を構成する
|
`-- env.yaml
`-- component-b
`-- env.yaml
それぞれのサブフォルダには、独自の環境と env.yaml という環境定義ファイルを実行する 1 つのア
プリケーションの個別のコンポーネントのソースコードが含まれます。 env.yaml 形式の詳細につい
ては、「マニフェスト環境(env.yaml) (p. 188)」を参照してください。
Compose Environments API を使用するためには、まずプロジェクトフォルダから eb init を実行
し、--modules オプションでコンポーネントがあるフォルダの名前をそれぞれのコンポーネントごと
に指定します。
~/workspace/project-name$ eb init --modules component-a component-b
EB CLI は、各コンポーネントを設定する (p. 409) のプロンプトを表示し、続いて各コンポーネントフォ
ルダに .elasticbeanstalk ディレクトリを作成します。 EB CLI は親ディレクトリに設定ファイル
を作成しません。
~/project-name
|-- component-a
|
|-- .elasticbeanstalk
|
`-- env.yaml
`-- component-b
|-- .elasticbeanstalk
`-- env.yaml
続いて、各コンポーネントごとに、作成する環境のリストがある eb create コマンドを実行します:
~/workspace/project-name$ eb create --modules component-a component-b --envgroup-suffix group-name
このコマンドは、各コンポーネントの環境を作成します。 環境の名前は、env.yaml ファイルに特定
された EnvironmentName とグループ名をハイフンで区切って連結して作成されます。 ハイフンを含
めたこの 2 つのオプションの合計は、環境の名前に使用できる最大限の 23 文字を超えることはできま
せん。
環境を更新するためには、eb deploy コマンドを使用します。
~/workspace/project-name$ eb deploy --modules component-a component-b
各コンポーネントごとを個別に、あるいはグループとして更新できます。 --modules オプションを使
用して更新するコンポーネントを指定します。
EB CLI は、使用したグループ名を eb create を使って /.elasticbeanstalk/config.yml として
EB CLIの設定ファイルの branch-defaults セクションに保存します。 アプリケーションを別々のグ
ループにデプロイする場合は、eb deploy 実行時に --env-group-suffix オプションを使用しま
す。 グループが既に存在しない場合には、EB CLI は環境の新しいグループを作成します。
~/workspace/project-name$ eb deploy --modules component-a component-b --envgroup-suffix group-2-name
環境を終了するには、各モジュールのフォルダ内で eb terminate を実行します。 デフォルトでは、
実行されているその他の環境と依存関係にある環境を終了しようとする際に、EB CLI によってエラー
API Version 2010-12-01
419
AWS Elastic Beanstalk 開発者ガイド
EB CLI コマンド
が表示されます。 まず依存した環境を終了するか、あるいは --ignore-links オプションでデフォル
トの動作を変更します。
~/workspace/project-name/component-b$ eb terminate --ignore-links
EB CLI コマンドリファレンス
Abstract
アプリケーション環境のデプロイと管理を実行するには、Elastic Beanstalk コマンドラインインターフェイス(EB
CLI)のコマンドを使用します。
AWS Elastic Beanstalk コマンドラインインターフェイス(EB CLI)を使用して、Elastic Beanstalk の
アプリケーションおよび環境のデプロイと管理を行うためのさまざまなオペレーションを実行できま
す。Git によってソース管理されるアプリケーションのソースコードをデプロイする場合は、EB CLI が
Git と連動します。詳細については、Elastic Beanstalk コマンドラインインターフェイス(EB CLI) (p. 403)
および EB CLI での Git の使用 (p. 417) を参照してください。
一般的なオプション
Abstract
以下のオプションは、Elastic Beanstalk EB コマンドラインインターフェイス(CLI)のすべてのコマンドで使用し
ます。
以下のオプションは、すべての EB CLI コマンドで使用できます。
名前
説明
--debug
デバッグの情報を出力します。
-h, --help
ヘルプメッセージを示します。
型: 文字列
デフォルト: なし
--no-verify-ssl
SSL 証明書認証をスキップします。プロキシで CLI を使用するの
に問題がある場合、このオプションを使用します。
--profile
AWS 認証情報ファイルから特定のプロファイルを使用します。
--quiet
コマンドからのすべての出力を非表示にします。
--region
指定されたリージョンを使用します。
-v, --verbose
詳細な情報を表示します。
コマンド
• eb abort (p. 421)
• eb clone (p. 422)
• eb config (p. 424)
• eb console (p. 427)
• eb の作成 (p. 427)
API Version 2010-12-01
420
AWS Elastic Beanstalk 開発者ガイド
eb abort
• eb デプロイ (p. 434)
• eb イベント (p. 436)
• eb health (p. 437)
• eb init (p. 438)
• eb ラボ (p. 441)
• eb list (p. 441)
• eb ローカル (p. 442)
• eb logs (p. 445)
• eb open (p. 446)
• eb プラットフォーム (p. 447)
• eb printenv (p. 449)
• eb スケール (p. 450)
• eb setenv (p. 450)
•
•
•
•
•
•
eb ssh (p. 451)
eb ステータス (p. 454)
eb swap (p. 455)
eb terminate (p. 456)
eb upgrade (p. 458)
eb 使用 (p. 459)
eb abort
Abstract
Amazon EC2 インスタンスの置き換えを必要とする設定変更について、環境で進行中の更新をキャンセルするに
は、Elastic Beanstalk EB CLI abort コマンドを使用します。
説明
インスタンスへの環境設定の変更が進行中である場合に、アップグレードをキャンセルします。
Note
更新が進行中の環境が 3 つ以上ある場合は、変更をロールバックする環境名を選択するよう求
められます。
構文
eb abort
eb abort environment_name
オプション
名前
説明
一般的なオプション
詳細については、「一般的なオプション (p. 420)」を参照 いいえ
してください。
API Version 2010-12-01
421
必須
AWS Elastic Beanstalk 開発者ガイド
eb clone
出力
コマンドによって、現在更新中の環境の一覧が表示され、中止する更新を選択するよう求められます。
現在更新中の環境が 1 つのみの場合、環境名を指定する必要はありません。成功すると、コマンドは環
境設定の変更を戻します。ロールバックプロセスは、環境のすべてのインスタンスに以前の環境設定が
戻るか、ロールバックプロセスが失敗するまで続行されます。
例
次の例では、プラットフォームのアップグレードをキャンセルします。
$ eb abort
Aborting update to environment "tmp-dev".
<list of events>
eb clone
Abstract
Elastic Beanstalk EB CLI の clone コマンドを使用して、同じ設定を使った再現環境を作成します。
説明
環境のクローンを新しい環境として作成します。元の環境とクローンされた環境では設定が同じになり
ます。
Note
デフォルトでは、クローンを作成する環境のソリューションスタックのバージョンに関係な
く、eb clone コマンドは最新のソリューションスタックでクローン環境を作成します。コマ
ンドの実行時に --exact オプションを含めることで、これを抑制できます。
構文
eb clone
eb clone environment_name
オプション
名前
説明
必須
-n string
クローンの環境に指定する名前。
いいえ
または
--clone_name string
-c string
クローンの環境で必要となる CNAME プレフィックス。 いいえ
または
--cname string
API Version 2010-12-01
422
AWS Elastic Beanstalk 開発者ガイド
eb clone
名前
説明
必須
--envvars
「name=value」の形式を使用したカンマ区切りリスト
の環境変数。
いいえ
型: 文字列
制約:
• キーと値のペアはカンマで区切る必要があります。
• キーと値には、任意の言語のアルファベット文字、数
字、空白、表示されない区切り文字、記号(_)を使用
できます。: / + \ - @
• キーの長さは最大 128 文字です。値の長さは最大 256
文字です。
• キーと値は大文字と小文字が区別されます。
• 値と環境名を同じすることはできません。
• 値に aws: または elasticbeanstalk: を含めること
はできません。
• すべての環境変数の合計サイズが 4096 バイトを超え
ることはできません。
--exact
Elastic Beanstalk が新しいクローン環境のソリューショ
ンスタックのバージョンを使用可能な最新のバージョン
に更新することを防止します(元の環境プラットフォー
ム用)。
いいえ
--scale number
クローンの環境を起動したときにその環境で実行される
インスタンスの数。
いいえ
--tags name=value
環境の Amazon EC2 タグは、name=value の形式を使用 いいえ
し、カンマ区切りリストで指定します。
型: 文字列
制約:
• キーと値のペアはカンマで区切る必要があります。
• キーと値には、任意の言語のアルファベット文字、数
字、空白、表示されない区切り文字、記号(_)を使用
できます。: / + - @
• キーの長さは最大 128 文字です。値の長さは最大 256
文字です。
• キーと値は大文字と小文字が区別されます。
• 値と環境名を同じすることはできません。
• 値に aws: または elasticbeanstalk: を含めること
はできません。
--timeout
コマンドがタイムアウトするまでの時間(分)。
一般的なオプション
詳細については、「一般的なオプション (p. 420)」を参照 いいえ
してください。
API Version 2010-12-01
423
いいえ
AWS Elastic Beanstalk 開発者ガイド
eb config
出力
成功すると、コマンドは元の環境と同じ設定を含む環境、または eb clone のオプションで指定され
た変更が適用された環境を作成します。
例
次の例では、指定した環境のクローンが作成されます。
$ eb clone
Enter name for Environment Clone
(default is tmp-dev-clone):
Enter DNS CNAME prefix
(default is tmp-dev-clone):
Environment details for: tmp-dev-clone
Application name: tmp
Region: us-west-2
Deployed Version: app-141029_144740
Environment ID: e-vjvrqnn5pv
Platform: 64bit Amazon Linux 2014.09 v1.0.9 running PHP 5.5
Tier: WebServer-Standard-1.0
CNAME: tmp-dev-clone.elasticbeanstalk.com
Updated: 2014-10-29 22:00:23.008000+00:00
Printing Status:
INFO: createEnvironment is starting.
INFO: Using elasticbeanstalk-us-west-2-888214631909 as Amazon S3 storage bucket
for environment data.
INFO: Created load balancer named: awseb-e-v-AWSEBLoa-4X0VL5UVQ353
INFO: Created security group named: awseb-e-vjvrqnn5pv-stack-AWSEBSecurityGroup18AV9FGCH2HZM
INFO: Created Auto Scaling launch configuration named: awseb-e-vjvrqnn5pv-stackAWSEBAutoScalingLaunchConfiguration-FDUWRSZZ6L3Z
INFO: Waiting for EC2 instances to launch. This may take a few minutes.
INFO: Created Auto Scaling group named: awseb-e-vjvrqnn5pv-stack-AWSEBAutoScal
ingGroup-69DN6PO5TISM
INFO: Created Auto Scaling group policy named: arn:aws:autoscaling:us-west2:11122223333:scalingPolicy:addb18d0-7088-402f-90ae-43be7c8d40cb:autoScalingGroup
Name/awseb-e-vjvrqnn5pv-stack-AWSEBAutoScalingGroup-69DN6PO5TISM:policy
Name/awseb-e-vjvrqnn5pv-stack-AWSEBAutoScalingScaleDownPolicy-I8GFGQ8T8MOV
INFO: Created Auto Scaling group policy named: arn:aws:autoscaling:us-west2:11122223333:scalingPolicy:fdcee817-e687-4fce-adc3-376995b3fef5:autoScalingGroup
Name/awseb-e-vjvrqnn5pv-stack-AWSEBAutoScalingGroup-69DN6PO5TISM:policy
Name/awseb-e-vjvrqnn5pv-stack-AWSEBAutoScalingScaleUpPolicy-1R312293DFY24
INFO: Created CloudWatch alarm named: awseb-e-vjvrqnn5pv-stack-AWSEBCloud
watchAlarmLow-1M67HXZH1U9K3
INFO: Created CloudWatch alarm named: awseb-e-vjvrqnn5pv-stack-AWSEBCloud
watchAlarmHigh-1K5CI7RVGV8ZJ
INFO: Added EC2 instance 'i-cf30e1c5' to Auto Scaling Group 'awseb-e-vjvrqnn5pvstack-AWSEBAutoScalingGroup-69DN6PO5TISM'.
INFO: Successfully launched environment: tmp-dev-clone
eb config
Abstract
Elastic Beanstalk EB CLI の config コマンドを使用して、環境設定を変更します。
API Version 2010-12-01
424
AWS Elastic Beanstalk 開発者ガイド
eb config
説明
環境設定を変更します。このコマンドでは、環境設定に加えて、アップロード、ダウンロード、または
リストの保存済み設定が保存されます。
構文
eb config
eb config environment_name
保存した設定で eb config コマンドを使用するための構文について説明します。例については、この
トピックで後述する「例 (p. 426)」セクションを参照してください。
• eb config delete filename – 名前をつけて保存した設定を削除します。
• eb config get filename – 名前をつけて保存した設定をダウンロードします。
• eb config list – Amazon S3 内に保存した設定を一覧表示します。
• eb config put filename – Amazon S3 バケットに名前をつけて保存した設定をアップロードし
ます。filename にはファイル拡張子 .cfg.yml が必要です。パスを指定せずにファイル名を指定
するには、.elasticbeanstalk フォルダまたは .elasticbeanstalk/saved_configs/ フォル
ダにファイルを保存してからコマンドを実行します。また、「filename」にフルパスを指定できま
す。
• eb config save – 現在実行中の環境の環境設定を、ファイル名 [configuration-name].cfg.yml
で .elasticbeanstalk/saved_configs/ に保存します。デフォルトでは、EB CLI 3.1 は設定を
環境名に基いて configuration-name という名前で保存します。コマンドの実行時に --cfg オプ
ションとつけたい設定名を含めることで、異なる設定名を指定できます。
オプション
名前
説明
必須
--cfg
保存した設定に使用する名前(後で保存した設定から環 いいえ
境を作成または更新する時にこの名前を指定できます)。
--timeout
コマンドがタイムアウトするまでの時間(分)。
一般的なオプション
詳細については、「一般的なオプション (p. 420)」を参照 いいえ
してください。
いいえ
出力
パラメータを指定しないコマンドの実行に成功すると、コマンドは現在のオプション設定を、EDITOR
環境変数で指定されているテキストエディタで表示します。(EDITOR 環境変数を設定していない場
合、EB CLI はオプション設定をコンピュータのデフォルトのエディタ(YAML ファイル用エディタ)
で表示します)。変更をファイルに保存してエディタを閉じると、ファイル内のオプション設定によっ
て環境が更新されます。
get パラメータを指定したコマンドの実行に成功すると、コマンドはダウンロードしたローカルコピー
の場所を表示します。
save パラメータを指定したコマンドの実行に成功すると、コマンドは保存したファイルの場所を表示
します。
API Version 2010-12-01
425
AWS Elastic Beanstalk 開発者ガイド
eb config
例
このセクションでは、オプション設定ファイルの表示や編集に使用するテキストエディタを変更する方
法を説明します。
次の例では、エディタが vim に変更されます(Linux/UNIX の場合)。
$ export EDITOR=vim
次の例では、エディタが /usr/bin/kate にインストールされているエディタに変更されます
(Linux/UNIX の場合)。
$ export EDITOR=/usr/bin/kate
次の例では、エディタが Notepad++ に変更されます(Windows の場合)。
> set EDITOR="C:\Program Files\Notepad++\Notepad++.exe
このセクションでは、パラメータとともに eb config コマンドを実行する場合の例を示します。
以下の例は app-tmp という名前の保存済み設定を削除します。
$ eb config delete app-tmp
以下の例は Amazon S3 バケットから app-tmp という名前の保存済み設定をダウンロードします。
$ eb config get app-tmp
以下の例は Amazon S3 バケットに格納されている保存済み設定の名前を一覧表示します。
$ eb config list
以下の例は Amazon S3 バケットに app-tmp という名前の保存済み設定のローカルコピーをアップロー
ドします。
$ eb config put app-tmp
以下の例は現在実行中の環境から設定を保存します。保存した設定に使用する名前を指定しない場合、
Elastic Beanstalk は環境名に従って設定ファイルに名前をつけます。たとえば、tmp-dev という名前の
環境は tmp-dev.cfg.yml と呼ばれます。Elastic Beanstalk は /.elasticbeanstalk/saved_configs/
フォルダにファイルを保存します。
$ eb config save
以下の例は、環境 tmp-dev から v1-app-tmp.cfg.yml というファイルに設定を保存する場合の --cfg
オプションの使用方法を示します。Elastic Beanstalk は /.elasticbeanstalk/saved_configs/
フォルダにファイルを保存します。環境名を指定しない場合、Elastic Beanstalk は現在実行中の環境か
ら設定を保存します。
$ eb config save tmp-dev --cfg v1-app-tmp
API Version 2010-12-01
426
AWS Elastic Beanstalk 開発者ガイド
eb console
eb console
Abstract
Elastic Beanstalk EB CLI 3 の console コマンドを使用して、環境設定ダッシュボードを表示します。
説明
ブラウザを開き、環境設定ダッシュボードを Elastic Beanstalk マネジメントコンソールで表示します。
構文
eb console
eb console environment_name
オプション
名前
説明
必須
一般的なオプション
詳細については、「一般的なオプション (p. 420)」を参照 いいえ
してください。
eb の作成
Abstract
EB CLI 3. を使用して、現在のアプリケーションを作成しデプロイします。
説明
新しい環境を作成し、現在のアプリケーションまたはサンプルアプリケーションを環境にデプロイしま
す。
Note
.NET アプリケーションで create を使用するには、「.NET アプリケーションのソースバンドル
の作成 (p. 42)」を参照してデプロイパッケージを作成し、「プロジェクトフォルダの代わりに
圧縮ファイルをデプロイする (p. 412)」を参照してパッケージをアーティファクトとしてデプロ
イするように CLI 設定をセットアップする必要があります。
Note
EB CLI を使用して環境を作成するには、サービスロール (p. 20)が必要です。Elastic Beanstalk
管理コンソールで環境を作成することで、サービスロールを作成できます。サービスロールが
ない場合は、eb create を実行したときに EB CLI によって作成されます。
構文
eb create
eb create environment-name
API Version 2010-12-01
427
AWS Elastic Beanstalk 開発者ガイド
eb の作成
eb create environment-name-1 environment-name-2 (環境を構成する (p. 418)) を参照してくだ
さい
Note
environment-name は、アプリケーションを作成または起動する環境です。 環境名は 4~23
文字の長さにする必要があり、文字、数字、ハイフンのみを使用できます。環境名の先頭およ
び末尾にはハイフンを使用できません。コマンドラインパラメータに environment-name を
指定しない場合、EB CLI は、使用する環境名を指定するようにプロンプトが表示されます。
このパラメータをコマンドラインに含めた場合、EB CLI では CNAME を指定する必要はあり
ません。代わりに、EB CLI によって CNAME が自動生成されます。
オプション
これらのオプションはいずれも必須ではありません。オプションを使用せずに eb create を実行する
と、各設定の値を入力または選択するよう求められます。
名前
説明
必須
-d
環境をデフォルトの環境として設定します。
いいえ
または
--branch_default
--cfg
.elasticbeanstalk/saved_configs/ フォルダまた いいえ
は Amazon S3 バケットに保存された設定を新しい環境
の設定のテンプレートとして使用して環境を作成します。
-c CNAME_prefix
CNAME のプレフィックス。
または
型: 文字列
--cname CNAME_prefix
デフォルト: 環境の名前
-db
データベースを環境にアタッチします。--database オ いいえ
プションを指定して eb create を実行するときに、
--database.username オプションと --database.password オプションを指定しないと、EB CLI で
は、マスターデータベースのユーザー名とパスワードを
指定するように求められます。
または
--database
-db.engine engine
または
いいえ
データベース エンジンのタイプ。このオプションを指定 いいえ
して eb create を実行すると、--database オプショ
ンを指定してコマンドを実行しなかった場合でも、EB
CLI はデータベースをアタッチして環境を起動します。
--database.engine engine
型: 文字列
有効な値: mysql, oracle-se1, postgres, sqlserverex, sqlserver-web, sqlserver-se
API Version 2010-12-01
428
AWS Elastic Beanstalk 開発者ガイド
eb の作成
名前
説明
-db.i instance_type
データベースに使用する Amazon EC2 インスタンスのタ いいえ
イプ。このオプションを指定して eb create を実行す
ると、--database オプションを指定してコマンドを実
行しなかった場合でも、EB CLI はデータベースをアタッ
チして環境を起動します。
または
--database.instance
instance_type
必須
型: 文字列
有効な値:「オプションの値」を参照してください。
-db.pass password
または
--database.password
password
-db.size number_of_gigabytes
または
--database.size number_of_gigabytes
データベースのパスワード。このオプションを指定して いいえ
eb create を実行すると、--database オプションを
指定してコマンドを実行しなかった場合でも、EB CLI は
データベースをアタッチして環境を起動します。
データベースストレージに割り当てるサイズ(ギガバイ いいえ
ト(GB)単位の数値)。このオプションを指定して eb
create を実行すると、--database オプションを指定
してコマンドを実行しなかった場合でも、EB CLI はデー
タベースをアタッチして環境を起動します。
型: 数値
有効な値:
• MySQL - 5~1024。デフォルト: 5。
• Postgres – 5 to 1024。 デフォルト: 5。
• Oracle - 10~1024。デフォルト: 10。
• Microsoft SQL Server Express Edition - 30。
• Microsoft SQL Server Web Edition - 30。
• Microsoft SQL Server Standard Edition - 200。
-db.user username
または
--database.username
username
-db.versionversion
または
--database.versionversion
--env-group-suffix
groupname
データベースのユーザー名。このオプションを指定して いいえ
eb create を実行すると、--database オプションを
指定してコマンドを実行しなかった場合でも、EB CLI は
データベースをアタッチして環境を起動します。
--database オプションを指定して eb create を実行
するときに、--database.username オプションと
--database.password オプションを指定しないと、EB
CLI では、マスターデータベースのユーザー名とパスワー
ドを指定するように求められます。
データベースエンジンのバージョンを指定できます。こ いいえ
のフラグがある場合、環境は --database フラグがなく
ても、指定したバージョン番号のデータベースを起動し
ます。
環境の名前に連結するグループ名。 環境を構成す
る (p. 418) のみで使用します。
API Version 2010-12-01
429
いいえ
AWS Elastic Beanstalk 開発者ガイド
eb の作成
名前
説明
必須
--envvars
「name=value」の形式を使用したカンマ区切りリスト
の環境変数。
いいえ
型: 文字列
制約:
• キーと値のペアはカンマで区切る必要があります。
• キーと値には、任意の言語のアルファベット文字、数
字、空白、表示されない区切り文字、記号(_)を使用
できます。: / = + \ - @
• キーの長さは最大 128 文字です。値の長さは最大 256
文字です。
• キーと値は大文字と小文字が区別されます。
• 値と環境名を同じすることはできません。
• 値に aws: または elasticbeanstalk: を含めること
はできません。
• すべての環境変数の合計サイズが 4096 バイトを超え
ることはできません。
-ip profile_name
または
--instance_profile
profile_name
一時的なセキュリティ認証情報を持つ IAM ロールが適用 いいえ
されたインスタンスプロファイル。この認証情報は、ア
プリケーションが AWS リソースにアクセスするために
必要となります。
-i
環境で使用する Amazon EC2 インスタンスのタイプ。
または
型: 文字列
--instance_type
有効な値:「オプションの値」を参照してください。
-k key_name
Elastic Beanstalk アプリケーションを実行している
いいえ
Amazon EC2 インスタンスに安全にログインするため
に、Secure Shell (SSH) クライアントで使用される
Amazon EC2 キーペアの名前。eb create コマンドで
このオプションを使用すると、指定した値は、eb init
で指定したキー名を上書きします。
または
--keyname key_name
いいえ
型: 文字列
有効な値: Amazon EC2に登録された既存のキー名
--modules -a 作成する環境のコンポーネントリスト。 環境を構成す
る (p. 418) のみで使用します。
-b
API Version 2010-12-01
430
いいえ
AWS Elastic Beanstalk 開発者ガイド
eb の作成
名前
説明
-p (たとえば、
php、PHP、php5.5、PHP
5.5、64bit Amazon
Linux 2014.03 v1.0.7
running PHP 5.5)
デフォルトのプラットフォーム(ソリューションスタッ いいえ
クとも呼ばれます)。eb create コマンドでこのオプ
ションを使用すると、指定した値は、eb init で指定し
たプラットフォームを上書きします。バージョンを指定
しない場合、EB CLI は最新のコンテナタイプを使用しま
す。このオプションを指定せずに eb init を実行する
と、サポートされているプラットフォームのリストから
選択するように求められます。AMI が更新されると、サ
ポートされている各プラットフォームのコンテナタイプ
の名前が変更されます。
または
--platform platform
必須
型: 文字列
デフォルト: なし
有効な値:「サポートされているプラットフォーム」を参
照してください。
-r または
--region アプリケーションをデプロイする AWS リージョン。eb いいえ
create コマンドでこのオプションを使用すると、指定
した値は、eb init で指定したリージョンを上書きしま
す。
このオプションで指定できる値のリストについては、『ア
マゾン ウェブ サービス全般のリファレンス』の「リー
ジョンとエンドポイント」トピックに記載されている
「AWS Elastic Beanstalk」を参照してください。
--sample
ローカルのプロジェクトディレクトリにあるアプリケー いいえ
ションのソースコードを使用するのではなく、選択した
プラットフォーム用の Elastic Beanstalk サンプルアプリ
ケーションを起動します。
--scale scale
環境を起動するときに実行するインスタンスの数。
いいえ
--service-role servicerole
環境に適用するサービスロール。
いいえ
--single
単一インスタンス環境を起動します。指定されていない
場合、EB CLI は負荷分散型環境を起動します。
いいえ
API Version 2010-12-01
431
AWS Elastic Beanstalk 開発者ガイド
eb の作成
名前
説明
必須
--tags name=value
環境の Amazon EC2 タグは、name=value の形式を使用 いいえ
し、カンマ区切りリストで指定します。
型: 文字列
制約:
• キーと値のペアはカンマで区切る必要があります。
• キーと値には、任意の言語のアルファベット文字、数
字、空白、表示されない区切り文字、記号(_)を使用
できます。: / = + - @
• キーの長さは最大 128 文字です。値の長さは最大 256
文字です。
• キーと値は大文字と小文字が区別されます。
• 値と環境名を同じすることはできません。
• 値に aws: または elasticbeanstalk: を含めること
はできません。
-t
環境枠を指定します。環境枠を指定しない場合、EB CLI いいえ
は最新バージョンの webserver 枠を使用します。
または
型: 文字列
--tier
デフォルト: webserver
有効な値: worker または webserver
--timeout
コマンドがタイムアウトするまでの時間(分)。
--version version_la- ローカルのプロジェクトディレクトリにあるアプリケー
ションのソースコードではなく、環境にデプロイするア
bel
プリケーションバージョンを指定します。
いいえ
いいえ
型: 文字列
有効な値: 既存のアプリケーションバージョンラベル
--vpc
環境に VPC を設定します。このオプションを指定する
と、環境を起動する前に、必要なすべての設定を入力す
るよう求めるプロンプトが EB CLI によって表示されま
す。
--vpc.dbsubnets subnet1,subnet2
VPC 内のデータベースインスタンスのサブネットを指定 --vpc.id が
します。
指定されてい
る場合は必須
--vpc.ec2subnets sub- VPC 内の Amazon EC2 インスタンスのサブネットを指
定します。
net1,subnet2
--vpc.elbpublic
いいえ
--vpc.id が
指定されてい
る場合は必須
VPC 内のパブリックサブネットで Elastic Load Balancing いいえ
ロードバランサーを起動します。
--vpc.elbsubnets sub- VPC 内の Elastic Load Balancing ロードバランサーのサ
ブネットを指定します。
net1,subnet2
API Version 2010-12-01
432
いいえ
AWS Elastic Beanstalk 開発者ガイド
eb の作成
名前
説明
必須
--vpc.id ID
指定した VPC で環境を起動します。
いいえ(VPC
で環境を起動
しない場合)
--vpc.publicip
VPC 内のパブリックサブネットで Amazon EC2 インス
タンスを起動します。
いいえ
--vpc.securitygroups セキュリティグループ ID またはセキュリティグループ名 いいえ(コマ
ンドで
securitygroup1,secur- を指定します。
--vpc.id オ
itygroup2
プションを指
定していない
場合)
一般的なオプション
詳細については、「一般的なオプション (p. 420)」を参照 いいえ
してください。
出力
成功すると、コマンドによって質問がいくつか表示され、作成オペレーションのステータスが返されま
す。起動時に問題があった場合は、eb イベント (p. 436) オペレーションを使用して詳細を取得できま
す。
例
以下の例では、インタラクティブモードで環境を作成しています。
$ eb create
Enter Environment Name
(default is tmp-dev): ENTER
Enter DNS CNAME prefix
(default is tmp-dev): ENTER
Environment details for: tmp-dev
Application name: tmp
Region: us-west-2
Deployed Version: app-141029_145448
Environment ID: e-um3yfrzq22
Platform: 64bit Amazon Linux 2014.09 v1.0.9 running PHP 5.5
Tier: WebServer-Standard-1.0
CNAME: tmp-dev.elasticbeanstalk.com
Updated: 2014-10-29 21:54:51.063000+00:00
Printing Status:
...
以下のコマンドは、いずれのプロンプトも表示せずに環境を作成します。
$ eb create dev-env
Creating application version archive "app-160312_014028".
Uploading test/app-160312_014028.zip to S3. This may take a while.
Upload Complete.
Application test has been created.
Environment details for: dev-env
Application name: test
API Version 2010-12-01
433
AWS Elastic Beanstalk 開発者ガイド
eb デプロイ
Region: us-east-1
Deployed Version: app-160312_014028
Environment ID: e-6fgpkjxyyi
Platform: 64bit Amazon Linux 2015.09 v2.0.8 running PHP 5.6
Tier: WebServer-Standard
CNAME: UNKNOWN
Updated: 2016-03-12 01:40:33.614000+00:00
Printing Status:
...
以下のコマンドは、カスタム VPC に環境を作成します。
$ eb create dev-vpc --vpc.id vpc-0ce8dd99 --vpc.elbsubnets subnetb356d7c6,subnet-02f74b0c --vpc.ec2subnets subnet-0bb7f0cd,subnet-3b6697c1 -vpc.securitygroup sg-70cff265
Creating application version archive "app-160312_014309".
Uploading test/app-160312_014309.zip to S3. This may take a while.
Upload Complete.
Environment details for: dev-vpc
Application name: test
Region: us-east-1
Deployed Version: app-160312_014309
Environment ID: e-pqkcip3mns
Platform: 64bit Amazon Linux 2015.09 v2.0.8 running Java 8
Tier: WebServer-Standard
CNAME: UNKNOWN
Updated: 2016-03-12 01:43:14.057000+00:00
Printing Status:
...
eb デプロイ
Abstract
EB CLI 3 と Git(Git がインストールされている場合)を使用して、現在のプロジェクトディレクトリから実行ア
プリケーションにコードをデプロイします。
説明
初期化されたプロジェクトディレクトリから実行アプリケーションにアプリケーションソースバンドル
をデプロイします。
git がインストールされている場合、EB CLI は、最新の git commit コマンドのコンテンツから .zip
ファイルを作成する git archive コマンドを使用します。
Note
プロジェクトフォルダの ZIP ファイルを作成する代わりにビルドプロセスからの中間生成物を
デプロイするように EB CLI を設定できます。詳細については、「プロジェクトフォルダの代
わりに圧縮ファイルをデプロイする (p. 412)」を参照してください。
構文
eb deploy
API Version 2010-12-01
434
AWS Elastic Beanstalk 開発者ガイド
eb デプロイ
eb deploy environment_name
オプション
名前
説明
必須
-l version_label
または
EB CLI でデプロイするアプリケーションバージョンの いいえ
バージョンラベル。バージョンラベルにスペースが含ま
れている場合は、二重引用符で囲みます。
--label version_label
型: 文字列
--env-group-suffix
groupname
環境の名前に連結するグループ名。 環境を構成す
る (p. 418) のみで使用します。
-m "version_description"
アプリケーションバージョンの説明。二重引用符で囲み いいえ
ます。
または
型: 文字列
いいえ
--message "version_description"
--modules -a 更新するコンポーネントのリスト。 環境を構成す
る (p. 418) のみで使用します。
-b
いいえ
--staged
HEAD コミットではなく Git インデックスでステージン いいえ
グされたデプロイファイル。
--timeout コマンドがタイムアウトするまでの時間(分)。
いいえ
--version version_label
デプロイする既存のアプリケーションバージョン。
いいえ
型: 文字列
一般的なオプション
詳細については、「一般的なオプション (p. 420)」を参 いいえ
照してください。
出力
成功すると、コマンドは deploy オペレーションのステータスを返します。
例
以下の例は、現在のアプリケーションをデプロイします。
$ eb deploy
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.
API Version 2010-12-01
435
AWS Elastic Beanstalk 開発者ガイド
eb イベント
eb イベント
Abstract
EB CLI 3. を使用して、環境の最新のイベントを返します。
説明
環境の最新のイベントを返します。
構文
eb events
eb events environment_name
オプション
名前
説明
必須
-f
イベントをストリーミングします。キャンセルするには、 いいえ
Ctrl+C を押します。
または
--follow
出力
成功すると、コマンドは最新のイベントを返します。
例
以下の例は、最新の 個のイベントを返します。
$ eb events
2014-10-29 21:55:39
INFO
createEnvironment is starting.
2014-10-29 21:55:40
INFO
Using elasticbeanstalk-us-west-2-169465803350
as Amazon S3 storage bucket for environment data.
2014-10-29 21:55:57
INFO
Created load balancer named: awseb-e-r-AWSEBLoaNSKUOK5X6Z9J
2014-10-29 21:56:16
INFO
Created security group named: awseb-e-rxgrhjr9bxstack-AWSEBSecurityGroup-1UUHU5LZ20ZY7
2014-10-29 21:56:20
INFO
Created Auto Scaling launch configuration
named:awseb-e-rxgrhjr9bx-stack-AWSEBAutoScalingLaunchConfiguration-AG68JQHE9NWO
2014-10-29 21:57:18
INFO
Waiting for EC2 instances to launch. This may
take a few minutes.
2014-10-29 21:57:18
INFO
Created Auto Scaling group named: awseb-e-rx
grhjr9bx-stack-AWSEBAutoScalingGroup-1TE320ZCJ9RPD
2014-10-29 21:57:22
INFO
Created Auto Scaling group policy named:
arn:aws:autoscaling:us-west-2:11122223333:scalingPolicy:2cced9e6-859b-421a-be638ab34771155a:autoScalingGroupName/awseb-e-rxgrhjr9bx-stack-AWSEBAutoScalingGroup1TE320ZCJ9RPD:policyName/awseb-e-rxgrhjr9bx-stack-AWSEBAutoScalingScaleUpPolicy1I2ZSNVU4APRY
2014-10-29 21:57:22
INFO
Created Auto Scaling group policy named:
API Version 2010-12-01
436
AWS Elastic Beanstalk 開発者ガイド
eb health
arn:aws:autoscaling:us-west-2:11122223333:scalingPolicy:1f08b863-bf65-415a-b584b7fa3a69a0d5:autoScalingGroupName/awseb-e-rxgrhjr9bx-stack-AWSEBAutoScalingGroup1TE320ZCJ9RPD:policyName/awseb-e-rxgrhjr9bx-stack-AWSEBAutoScalingScaleDown
Policy-1E3G7PZKZPSOG
2014-10-29 21:57:25
INFO
Created CloudWatch alarm named: awseb-e-rx
grhjr9bx-stack-AWSEBCloudwatchAlarmLow-VF5EJ549FZBL
2014-10-29 21:57:25
INFO
Created CloudWatch alarm named: awseb-e-rx
grhjr9bx-stack-AWSEBCloudwatchAlarmHigh-LA9YEW3O6WJO
2014-10-29 21:58:50
INFO
Added EC2 instance 'i-c7ee492d' to Auto Scal
ingGroup 'awseb-e-rxgrhjr9bx-stack-AWSEBAutoScalingGroup-1TE320ZCJ9RPD'.
2014-10-29 21:58:53
INFO
Successfully launched environment: tmp-dev
2014-10-29 21:59:14
INFO
Environment health has been set to GREEN
2014-10-29 21:59:43
INFO
Adding instance 'i-c7ee492d' to your environment.
eb health
Abstract
インスタンスと環境のヘルスステータスに関する情報を出力します。
説明
環境の最新のヘルスステータスを返します。
構文
eb health
eb health environment_name
オプション
名前
説明
必須
-r
ヘルス情報を対話モードで表示します。レポートされる
情報は 10 秒ごとに更新されます。
いいえ
出力に色を表示しません。
いいえ
または
--refresh
--mono
出力
成功した場合、コマンドは最新のヘルスステータスを返します。
例
以下の例は、最新のヘルスステータスを返します。
$ eb health
elasticBeanstalkExa-env
2015-07-08 23:13:20
Ok
API Version 2010-12-01
437
AWS Elastic Beanstalk 開発者ガイド
eb init
WebServer
total
5
Ruby 2.1 (Puma)
ok
warning
5
0
id
Overall
i-d581497d
i-d481497c
i-136e00c0
i-126e00c1
i-8b2cf575
id
status
Ok
Ok
Ok
Ok
Ok
Ok
r/sec
p50
p10
Overall
0.0
i-d581497d
0.0
i-d481497c
0.0
i-136e00c0
0.0
i-126e00c1
0.0
i-8b2cf575
0.0
-
id
system% idle%
i-d581497d
0.0
99.7
i-d481497c
0.0
99.7
i-136e00c0
0.0
99.9
i-126e00c1
0.0
99.7
i-8b2cf575
0.1
99.6
degraded
0
severe
0
info
0
pending
0
unknown
0
p99
p90
cause
%2xx
%3xx
%4xx
%5xx
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
az
iowait%
us-east-1a
0.1
us-east-1a
0.0
us-east-1b
0.0
us-east-1b
0.1
us-east-1c
0.1
p75
running
load 1
load 5
user%
nice%
12 mins
0.0
0.03
0.2
0.0
12 mins
0.0
0.03
0.3
0.0
12 mins
0.0
0.04
0.1
0.0
12 mins
0.01
0.04
0.2
0.0
1 hour
0.0
0.01
0.2
0.0
eb init
Abstract
EB CLI 3 を初期化し、既存のプロジェクトディレクトリに .elasticbeanstalk ディレクトリを作成します。ま
た、順を追って新しい Elastic Beanstalk アプリケーションを設定します。
説明
一連の質問を表示し、それに応答することによって、EB CLI で作成された Elastic Beanstalk アプリケー
ションのデフォルト値を設定します。
API Version 2010-12-01
438
AWS Elastic Beanstalk 開発者ガイド
eb init
Note
init で設定した値は、現在のディレクトリおよびリポジトリにのみ適用されます。init コマ
ンドを実行するまで、現在実行中の環境は変更されません。init コマンドを実行するたびに、
新しい設定が config ファイルに追加されます。
構文
eb init
eb init application-name
オプション
オプションを指定せずに eb init を実行すると、EB CLI は各設定の値の入力を求めるプロンプトを表
示します。
Note
eb init を使用して新しいキーペアを作成するには、ssh-keygen がローカルマシンにイン
ストールされており、コマンドラインから呼び出せる必要があります。
名前
説明
必須
-i または --interactive すべての eb init コマンドオプションの値を指定する
ように求める指示が、EB CLI で必ず表示されます。
いいえ
Note
init コマンドを使用すると、(デフォルト)値
が設定されていない eb init コマンドオプショ
ンに値を指定するように求められます。ディレ
クトリで eb init コマンドを初めて実行したと
き、EB CLI では、コマンドオプションに値を指
定するように求められない場合があります。そ
のような場合は、すでに設定されている内容を
変更するために、--interactive オプションを
使用します。
-k keyname
または
--keyname keyname
--modules folder-1
folder-2
Elastic Beanstalk アプリケーションを実行している
Amazon EC2 インスタンスに安全にログインするため
に、Secure Shell (SSH) クライアントで使用される
Amazon EC2 キーペアの名前。
いいえ
初期化する子ディレクトリのリスト。 環境を構成す
る (p. 418) のみで使用します。
いいえ
API Version 2010-12-01
439
AWS Elastic Beanstalk 開発者ガイド
eb init
名前
説明
-p (たとえば、
php、PHP、php5.5、"PHP
5.5"、node.js、"64bit
Amazon Linux 2014.03
v1.0.7 running PHP
5.5")
デフォルトのプラットフォーム(ソリューションスタッ いいえ
クとも呼ばれます)。バージョンを指定しない場合、EB
CLI は最新のコンテナタイプを使用します。このオプショ
ンを指定せずに eb init を実行すると、サポートされ
ているプラットフォームのリストから選択するように求
められます。AMI が更新されると、サポートされている
各プラットフォームのコンテナタイプの名前が変更され
ます。
または
--platform platform
必須
Note
このオプションを使用すると、EB CLI は、他の
すべてのオプションについて値の入力を要求し
ません。ただし、各オプションのデフォルト値
の使用が前提となります。デフォルト値を使用
しない場合は、そのオプションの値を指定して
ください。
型: 文字列
デフォルト: なし
一般的なオプション
詳細については、「一般的なオプション (p. 420)」を参照 いいえ
してください。
出力
成功すると、コマンドは一連のプロンプトで新しい AWS Elastic Beanstalk アプリケーションをセット
アップする手順を示します。
例
次のリクエストの例は、EB CLI を初期化し、アプリケーションに関する情報を入力するように求めま
す。赤色のプレースホルダーテキストを独自の値に置き換えます。
$ eb init -i
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) sa-east-1 : South America (Sao Paulo)
(default is 3): 3
Select an application to use
1) HelloWorldApp
2) NewApp
3) [ Create new Application ]
(default is 3): 3
API Version 2010-12-01
440
AWS Elastic Beanstalk 開発者ガイド
eb ラボ
Enter Application Name
(default is "tmp"):
Application tmp has been created.
It appears you are using PHP. Is this correct?
(y/n): y
Select a platform version.
1) PHP 5.5
2) PHP 5.4
3) PHP 5.3
(default is 1): 1
Do you want to set up SSH for your instances?
(y/n): y
Select a keypair.
1) aws-eb
2) [ Create new KeyPair ]
(default is 2): 1
eb ラボ
Abstract
実験コマンドを使用します。
説明
eb labs サポート作業の進行状況または実験機能のサブコマンド。これらのコマンドは、EB CLI の今
後のバージョンで削除されるか改変される場合があり、将来の互換性は保証されません。
使用できるサブコマンドのリストと説明については、eb labs --help を実行してください。
eb list
Abstract
EB CLI 3 の list コマンドを使用して、アプリケーション環境を一覧表示します。
説明
現在のアプリケーションのすべての環境を一覧表示します。--all オプションを指定した場合は、す
べてのアプリケーションのすべての環境を一覧表示します。
構文
eb list
API Version 2010-12-01
441
AWS Elastic Beanstalk 開発者ガイド
eb ローカル
オプション
名前
説明
必須
-a
すべてのアプリケーションのすべての環境を一覧表示し
ます。
いいえ
インスタンスを含む、すべての環境に関するより詳細な
情報を表示します。
いいえ
または
--all
-v
または
--verbose
一般的なオプション
詳細については、「一般的なオプション (p. 420)」を参照 いいえ
してください。
出力
成功すると、コマンドは環境名のリストを返します。現在の環境にはアスタリスク(*)が付いていま
す。
例1
次の例では、環境名を一覧表示しており、tmp-dev がデフォルトの環境であることを示しています。
$ eb list
* tmp-dev
例2
次の例では、詳細情報を付加して環境を一覧表示しています。
$ eb list --verbose
Region: us-west-2
Application: tmp
Environments: 1
* tmp-dev : ['i-c7ee492d']
eb ローカル
Abstract
Docker 環境をローカルで実行し、モニタリングします。
説明
eb local run を使用すると、アプリケーションのコンテナが Docker 内のローカルで実行されます。
eb local status を使用すると、アプリケーションのコンテナのステータスを確認できます。eb
local open を使用すると、アプリケーションがウェブブラウザで開きます。eb local logs を使用
すると、アプリケーションのログの場所を取得できます。
API Version 2010-12-01
442
AWS Elastic Beanstalk 開発者ガイド
eb ローカル
eb local setenv および eb local printenv を使用すると、eb local run を使用してローカル
で実行した Docker コンテナに渡される環境変数を設定、表示できます。
すべての eb local コマンドは、eb init を使用して EB CLI リポジトリとして初期化された Docker
アプリケーションのプロジェクトディレクトリで実行する必要があります。
構文
eb local run
eb local status
eb local open
eb local logs
eb local setenv
eb local printenv
オプション
eb local run
名前
説明
必須
--envvars
EB CLI がローカルの Docker コンテナに渡す環境変数を いいえ
key1=value1,key2=value2 設定します。複数コンテナ環境では、すべての変数がす
べてのコンテナに渡されます。
--port hostport
ホストのポートをコンテナの公開ポートにマッピングし いいえ
ます。このオプションを指定しない場合、EB CLI は、ホ
ストとコンテナの両方で同じポートを使用します。
このオプションは、単一コンテナのアプリケーションで
のみ機能します。
一般的なオプション
詳細については、「一般的なオプション (p. 420)」を参照 いいえ
してください。
eb local status
名前
説明
必須
一般的なオプション
詳細については、「一般的なオプション (p. 420)」を参照 いいえ
してください。
eb local open
名前
説明
一般的なオプション
詳細については、「一般的なオプション (p. 420)」を参照 いいえ
してください。
eb local logs
API Version 2010-12-01
443
必須
AWS Elastic Beanstalk 開発者ガイド
eb ローカル
名前
説明
必須
一般的なオプション
詳細については、「一般的なオプション (p. 420)」を参照 いいえ
してください。
eb local setenv
名前
説明
必須
一般的なオプション
詳細については、「一般的なオプション (p. 420)」を参照 いいえ
してください。
eb local printenv
名前
説明
必須
一般的なオプション
詳細については、「一般的なオプション (p. 420)」を参照 いいえ
してください。
出力
eb local run
Docker からのステータスメッセージ。アプリケーションが実行されている間は、アクティブなままで
す。アプリケーションを停止するには、Ctrl+C を押します。
eb local status
アプリケーションで使用される各コンテナのステータス(実行中かどうか)。
eb local open
アプリケーションをウェブブラウザで開き、終了します。
eb local logs
eb local run を使用してローカルで実行されたアプリケーションによって、プロジェクトディレク
トリに生成されるログの場所。
eb local setenv
なし
eb local printenv
eb local setenv を使用して設定された環境変数の名前と値。
例
eb local run
~/project$ eb local run
Creating elasticbeanstalk_phpapp_1...
Creating elasticbeanstalk_nginxproxy_1...
API Version 2010-12-01
444
AWS Elastic Beanstalk 開発者ガイド
eb logs
Attaching to elasticbeanstalk_phpapp_1, elasticbeanstalk_nginxproxy_1
phpapp_1
| [23-Apr-2015 23:24:25] NOTICE: fpm is running, pid 1
phpapp_1
| [23-Apr-2015 23:24:25] NOTICE: ready to handle connections
eb local status
ローカルのコンテナのステータスを表示します。
~/project$ eb local status
Platform: 64bit Amazon Linux 2014.09 v1.2.1 running Multi-container Docker 1.3.3
(Generic)
Container name: elasticbeanstalk_nginxproxy_1
Container ip: 127.0.0.1
Container running: True
Exposed host port(s): 80
Full local URL(s): 127.0.0.1:80
Container name: elasticbeanstalk_phpapp_1
Container ip: 127.0.0.1
Container running: True
Exposed host port(s): None
Full local URL(s): None
eb local logs
現在のプロジェクトのログのパスを表示します。
~/project$ eb local logs
Elastic Beanstalk will write logs locally to /home/user/project/.elasticbean
stalk/logs/local.
Logs were most recently created 3 minutes ago and written to /home/user/pro
ject/.elasticbeanstalk/logs/local/150420_234011665784.
eb local setenv
eb local run とともに使用する環境変数を設定します。
~/project$ eb local setenv PARAM1=value
eb local setenv を使用して設定する環境変数を出力します。
~/project$ eb local printenv
Environment Variables:
PARAM1=value
eb logs
Abstract
EB CLI 3. を使用して環境のログを返します。
API Version 2010-12-01
445
AWS Elastic Beanstalk 開発者ガイド
eb open
説明
指定した環境またはデフォルトの環境のログを返します。関連するログは、コンテナタイプに応じて異
なります。
構文
eb logs
eb logs environment_name
オプション
名前
説明
必須
-a
すべてのログを取得し、それらのログを .elasticbean- いいえ
stalk/logs ディレクトリに保存します。
または
--all
--instance instanceid
指定したインスタンスのみのログを取得します。
いいえ
--zip
すべてのログを取得し、それらのログを .zip ファイル
に圧縮して、その圧縮ファイルを .elasticbeanstalk/logs ディレクトリに保存します。
いいえ
一般的なオプション
詳細については、「一般的なオプション (p. 420)」を参照 いいえ
してください。
出力
デフォルトで、ログをターミナルに直接表示します(閉じるには q を押します)。--all オプション
および --zip オプションを指定すると、ログをローカルに保存し、ファイルの場所を出力します。
例
$ eb logs --zip
Retrieving logs...
Logs were saved to /home/workspace/environment/.elasticbean
stalk/logs/150622_173444.zip
eb open
Abstract
Elastic Beanstalk EB コマンドラインインターフェイス (EB CLI) の open コマンドを使用し、デフォルトのブラウ
ザを使って、環境の CNAME でアプリケーションを開きます。
説明
デフォルトのブラウザを使って、環境の CNAME でアプリケーションを開きます。
API Version 2010-12-01
446
AWS Elastic Beanstalk 開発者ガイド
eb プラットフォーム
構文
eb open
eb open environment_name
オプション
名前
説明
必須
一般的なオプション
詳細については、「一般的なオプション (p. 420)」を参照 いいえ
してください。
出力
コマンド eb open では、何も出力されません。代わりに、ブラウザウィンドウでアプリケーションを
開きます。
eb プラットフォーム
Abstract
サポートされるプラットフォームに関する情報を表示し、デフォルトのプラットフォームを変更するには、EB CLI
3 の platform コマンドを使用します。
説明
サポートされるプラットフォームを示し、環境を起動するときに使用するデフォルトのプラットフォー
ムとプラットフォームバージョンを設定できるようにします。サポートされるすべてのプラットフォー
ムを一覧表示するには、eb platform list を使用します。プロジェクトのプラットフォームを変更
するには、eb platform select を使用します。プロジェクトで選択されたプラットフォームを表示
するには、eb platform show を使用します。
構文
eb platform list
eb platform select
eb platform show
オプション
名前
説明
必須
一般的なオプション
詳細については、「一般的なオプション (p. 420)」を参照 いいえ
してください。
例1
次の例では、Elastic Beanstalk が現在サポートするすべてのプラットフォームのコンテナの正式名称を
示します。
API Version 2010-12-01
447
AWS Elastic Beanstalk 開発者ガイド
eb プラットフォーム
$ eb platform list
docker-1.5.0
glassfish-4.0-java-7-(preconfigured-docker)
glassfish-4.1-java-8-(preconfigured-docker)
go-1.3-(preconfigured-docker)
go-1.4-(preconfigured-docker)
iis-7.5
iis-8
iis-8.5
multi-container-docker-1.3.3-(generic)
node.js
php-5.3
php-5.4
php-5.5
python
python-2.7
python-3.4
python-3.4-(preconfigured-docker)
ruby-1.9.3
ruby-2.0-(passenger-standalone)
ruby-2.0-(puma)
ruby-2.1-(passenger-standalone)
ruby-2.1-(puma)
ruby-2.2-(passenger-standalone)
ruby-2.2-(puma)
tomcat-6
tomcat-7
tomcat-7-java-6
tomcat-7-java-7
tomcat-8-java-8
例2
次の例では、指定したプラットフォームにデプロイするプラットフォームとバージョンの一覧から選択
するよう求めます。
$ eb platform select
Select a platform.
1) PHP
2) Node.js
3) IIS
4) Tomcat
5) Python
6) Ruby
7) Docker
8) Multi-container Docker
9) GlassFish
10) Go
(default is 1): 5
Select a platform version.
1) Python 2.7
2) Python
3) Python 3.4 (Preconfigured - Docker)
API Version 2010-12-01
448
AWS Elastic Beanstalk 開発者ガイド
eb printenv
例3
次の例では、現在のデフォルトプラットフォームと、後で作成する環境で Elastic Beanstalk がデフォ
ルトで起動するデフォルトプラットフォームを示します。
$ eb platform show
Current default platform: Python 2.7
New environments will be running: 64bit Amazon Linux 2014.09 v1.2.0 running
Python 2.7
Platform info for environment "tmp-dev":
Current: 64bit Amazon Linux 2014.09 v1.2.0 running Python
Latest: 64bit Amazon Linux 2014.09 v1.2.0 running Python
eb printenv
Abstract
Elastic Beanstalk EB コマンドラインインターフェイス (EB CLI) の printenv コマンドについて説明します。
説明
コマンドウィンドウにすべての環境変数を出力します。
構文
eb printenv
eb printenv environment_name
オプション
名前
説明
一般的なオプション
詳細については、「一般的なオプション (p. 420)」を参照 いいえ
してください。
出力
成功すると、コマンドは printenv オペレーションのステータスを返します。
例
次の例では、特定の環境の環境変数を出力します。
$ eb printenv
Environment Variables:
PARAM1 = None
PARAM4 = None
PARAM2 = None
PARAM5 = None
AWS_ACCESS_KEY_ID = None
API Version 2010-12-01
449
必須
AWS Elastic Beanstalk 開発者ガイド
eb スケール
ExampleVar = ExampleValue
AWS_SECRET_KEY = None
PARAM3 = None
eb スケール
Abstract
Elastic Beanstalk EB コマンドラインの scale コマンドについて説明します。
説明
インスタンスの最小数と最大数を指定の数に設定し、特定の数のインスタンスで常に動作するように環
境をスケーリングします。
構文
eb scale scale
eb scale scale environment_name
オプション
名前
説明
必須
--timeout
コマンドがタイムアウトするまでの時間(分)。
いいえ
一般的なオプション
詳細については、「一般的なオプション (p. 420)」を参照 いいえ
してください。
出力
成功すると、コマンドは実行するインスタンスの最小数および最大数を、指定された数に更新します。
例
次の例では、インスタンスの数を 2 に設定します。
$ eb scale 2
INFO: Environment update is starting.
INFO: Updating environment tmp-dev's configuration settings.
INFO: Added EC2 instance 'i-5fce3d53' to Auto Scaling Group 'awseb-e-2cpfjbra9astack-AWSEBAutoScalingGroup-7AXY7U13ZQ6E'.
INFO: Successfully deployed new configuration to environment.
INFO: Environment update completed successfully.
eb setenv
Abstract
EB CLI 3 コマンドラインツールの setenv コマンドについて説明します。
API Version 2010-12-01
450
AWS Elastic Beanstalk 開発者ガイド
eb ssh
説明
デフォルトの環境の環境変数を設定します。
このコマンドは、aws:elasticbeanstalk:application:environment 名前空間 (p. 128)の環境プ
ロパティを設定します。eb setenv で設定された環境プロパティは、短い更新プロセスの後、アプリ
ケーションで利用できます。
構文
eb setenv key=value
変数は必要な数だけ含めることができますが、すべて変数の合計サイズが 4096 バイトを超えることは
できません。値を空白にすると、変数を削除できます。
オプション
名前
説明
必須
--timeout
コマンドがタイムアウトするまでの時間(分)。
いいえ
一般的なオプション
詳細については、「一般的なオプション (p. 420)」を参照 いいえ
してください。
出力
成功すると、コマンドは環境が正常に更新されたことを表示します。
例
次の例では、環境変数 ExampleVar を設定します。
$ eb setenv ExampleVar=ExampleValue
INFO: Environment update is starting.
INFO: Updating environment tmp-dev's configuration settings.
INFO: Successfully deployed new configuration to environment.
INFO: Environment update completed successfully.
次のコマンドでは、複数の環境変数を設定します。foo という名前の環境変数を追加し、その値を bar
に設定します。また、JDBC_CONNECTION_STRING 変数の値を変更し、PARAM4 変数と PARAM5 変数を
削除します。
eb setenv foo=bar JDBC_CONNECTION_STRING=hello PARAM4= PARAM5=
eb ssh
Abstract
環境内の Linux Amazon EC2 インスタンスに Secure Shell (SSH) を使用して接続するには、Elastic Beanstalk EB
コマンドラインの ssh コマンドを使用します。
API Version 2010-12-01
451
AWS Elastic Beanstalk 開発者ガイド
eb ssh
説明
Note
このコマンドは、Windows Server インスタンスを実行する環境では機能しません。
Secure Shell (SSH) を使用して、環境内の Linux Amazon EC2 インスタンスに接続します。環境で複数
のインスタンスが実行されている場合、EB CLI では接続するインスタンスを指定するように求められ
ます。このコマンドを使用するには、SSH がローカルマシンにインストールされており、コマンドラ
インから呼び出せる必要があります。プライベートキーファイルは、ユーザーディレクトリの下の
[.ssh] というフォルダに配置される必要があり、環境の EC2 インスタンスはパブリック IP アドレス
を持つ必要があります。
SSH キー
過去に SSH を設定したことがない場合は、EB CLI を使用して、eb init を実行するときに
キーを作成できます。すでに eb init を実行している場合は、--interactive オプション
を指定して実行し直し、SSH を設定するプロンプトが表示されたら [Yes] および [Create New
Keypair] を選択します。このプロセスで作成されたキーは、EB CLI によって適切なフォルダに
保存されます。
環境のセキュリティグループでポート 22 に関するルールが指定されていない場合、このコマンドは、
0.0.0.0/0(すべての IP アドレス)からの受信トラフィックについてポート 22 を自動的に開きます。セ
キュリティを高めるために、制限された CIDR 範囲に対してのみポート 22 を開くよう環境のセキュリ
ティグループを設定してある場合は、EB CLI はその設定を尊重し、セキュリティグループに対するあ
らゆる変更を破棄します。この動作をオーバーライドし、EB CLI ですべての受信トラフィックに対し
て強制的にポート 22 を開くには、--force オプションを使用します。
環境のセキュリティグループの設定については、「セキュリティグループ (p. 200)」を参照してくださ
い。
構文
eb ssh
eb ssh environment_name
オプション
名前
説明
必須
-n
SSH を使用して接続するインスタンスを指定します(す いいえ
べてのインスタンスのリストから選択)。
または
--number
-i
接続するインスタンスのインスタンス ID を指定します。 いいえ
このオプションを使用することをお勧めします。
または
--instance
API Version 2010-12-01
452
AWS Elastic Beanstalk 開発者ガイド
eb ssh
名前
説明
必須
-o
SSH セッションの終了後に、EB CLI はポート 22 を閉じ いいえ
ません。
または
--keep_open
--setup
指定した環境が SSH を使用するようにセットアップしま いいえ
す(このオプションは、eb init コマンドで今後すべて
の環境に対して SSH を使うようにセットアップするため
の方法の代わりに利用することもできます)。
Note
Amazon EC2 キーは変更できないため、このコ
マンドを実行すると、環境はすべての新しいイ
ンスタンスを使用して再起動されます。このコ
マンドの実行中、環境は使用できなくなります。
--force
環境のセキュリティグループ SSH に関する設定がすでに いいえ
行われている場合でも、0.0.0.0/0 からの受信トラフィッ
クに対してポート 22 を開きます。
接続しようとしている IP アドレスが含まれない、制限さ
れた CIDR 範囲に対してポート 22 を開くように環境の
セキュリティグループが設定されている場合に、このオ
プションを使用します。
一般的なオプション
詳細については、「一般的なオプション (p. 420)」を参照 いいえ
してください。
出力
成功すると、コマンドはインスタンスへの SSH 接続を開きます。
例
次の例では、指定した環境に接続します。
$ eb ssh
Select an instance to ssh into
1) i-96133799
2) i-5931e053
(default is 1): 1
INFO: Attempting to open port 22.
INFO: SSH port 22 open.
The authenticity of host '54.191.45.125 (54.191.45.125)' can't be established.
RSA key fingerprint is ee:69:62:df:90:f7:63:af:52:7c:80:60:1b:3b:51:a9.
Are you sure you want to continue connecting (yes/no)? yes
Warning: Permanently added '54.191.45.125' (RSA) to the list of known hosts.
__| __|_ )
_| (
/
___|\___|___|
Amazon Linux AMI
API Version 2010-12-01
453
AWS Elastic Beanstalk 開発者ガイド
eb ステータス
https://aws.amazon.com/amazon-linux-ami/2014.09-release-notes/
No packages needed for security; 1 packages available
Run "sudo yum update" to apply all updates.
[ec2-user@ip-172-31-8-185 ~]$ ls
[ec2-user@ip-172-31-8-185 ~]$ exit
logout
Connection to 54.191.45.125 closed.
INFO: Closed port 22 on ec2 instance security group
eb ステータス
Abstract
EB CLI 3 コマンドラインツールの status コマンドを使用して、環境に関するステータス情報を取得します。
説明
環境のステータスに関する情報が提供されます。
構文
eb status
eb status environment_name
オプション
名前
説明
-v
個々のインスタンスについてより詳細な情報(Elastic
いいえ
Load Balancing ロードバランサーに関するインスタンス
のステータスなど)を提供します。
または
必須
--verbose
一般的なオプション
詳細については、「一般的なオプション (p. 420)」を参照 いいえ
してください。
出力
成功すると、コマンドは環境に関する次の情報を返します。
• 環境名
• アプリケーション名
• デプロイされたアプリケーションバージョン
• 環境 ID
• プラットフォーム
• 環境枠
• CNAME
• 環境が最後に更新された日時
• ステータス
API Version 2010-12-01
454
AWS Elastic Beanstalk 開発者ガイド
eb swap
• 正常性
詳細モードを使用すると、EB CLI は、実行中の Amazon EC2 インスタンスの数も表示します。
例
次の例では、環境 tmp-dev のステータスを示しています。
$ eb status
Environment details for: tmp-dev
Application name: tmp
Region: us-west-2
Deployed Version: None
Environment ID: e-2cpfjbra9a
Platform: 64bit Amazon Linux 2014.09 v1.0.9 running PHP 5.5
Tier: WebServer-Standard-1.0
CNAME: tmp-dev.elasticbeanstalk.com
Updated: 2014-10-29 21:37:19.050000+00:00
Status: Launching
Health: Grey
eb swap
Abstract
EB CLI . の swap コマンドについて説明します。
説明
環境の CNAME を別の環境の CNAME と交換します(たとえば、アプリケーションのバージョンを更
新する際にダウンタイムを回避するため)。
Note
2 つ以上の環境がある場合、希望する CNAME を現在使用している環境名を環境リストから選
択するよう求められます。これを制限するには、コマンドを実行する際に -n オプションで使
用する環境の名前を指定します。
構文
eb swap
eb swap environment_name
Note
environment_name は、異なる CNAME を使用する環境です。eb swap を実行する際にコマ
ンドラインパラメータに environment_name を指定しないと、EB CLI はデフォルトの環境の
CNAME を更新します。
API Version 2010-12-01
455
AWS Elastic Beanstalk 開発者ガイド
eb terminate
オプション
名前
説明
-n
CNAME を交換したい環境の名前を指定します。このオ いいえ
プションを指定しないで eb swap を実行すると、EB CLI
は環境のリストから選択するよう求められます。
または
必須
--destination_name
一般的なオプション
詳細については、「一般的なオプション (p. 420)」を参照 いいえ
してください。
出力
成功すると、コマンドは swap オペレーションのステータスを返します。
例
以下の例は環境 tmp-dev を live-env と交換します。
$ eb swap
Select an environment to swap with.
1) staging-dev
2) live-env
(default is 1): 2
INFO: swapEnvironmentCNAMEs is starting.
INFO: Swapping CNAMEs for environments 'tmp-dev' and 'live-env'.
INFO: 'tmp-dev.elasticbeanstalk.com' now points to 'awseb-e-j-AWSEBLoaM7U21VXNLWHN-487871449.us-west-2.elb.amazonaws.com'.
INFO: Completed swapping CNAMEs for environments 'tmp-dev' and 'live-env'.
以下の例は環境 tmp-dev を環境 live-env と交換しますが、設定に値の入力または選択を求めません。
$ eb swap tmp-dev --destination_name live-env
INFO: swapEnvironmentCNAMEs is starting.
INFO: Swapping CNAMEs for environments 'tmp-dev' and 'live-env'.
INFO: 'tmp-dev.elasticbeanstalk.com' now points to 'awseb-e-j-AWSEBLoaM7U21VXNLWHN-487871449.us-west-2.elb.amazonaws.com'.
INFO: Completed swapping CNAMEs for environments 'tmp-dev' and 'live-env'.
eb terminate
Abstract
EB CLI 3 の terminate コマンドを使用して、実行中の環境を終了します。
説明
未使用の AWS リソースに対する料金が発生しないように実行中の環境を終了します。.
API Version 2010-12-01
456
AWS Elastic Beanstalk 開発者ガイド
eb terminate
Note
いつでも、また同じバージョンを使用して新しい環境を起動できます。保存する必要のある環
境のデータがある場合、環境を終了する前に現在のデータベースインスタンスのスナップショッ
トを作成します。これは後で環境を作成する際、新しい DB インスタンスの基礎として使用す
ることができます。詳細については、『Amazon Relational Database Service ユーザーガイド』
の「DB スナップショットの作成」を参照してください。
構文
eb terminate
eb terminate environment_name
オプション
名前
説明
必須
--all
環境、アプリケーション、およびすべてのリソースを終
了します。
いいえ
--force
確認のプロンプトを表示しないで環境を終了します。
いいえ
--ignore-links
リンクされた依存する環境がある場合でも、環境を終了 いいえ
します。 環境を構成する (p. 418) を参照してください。
--timeout
コマンドがタイムアウトするまでの時間(分)。
いいえ
出力
成功すると、コマンドは terminate オペレーションのステータスを返します。
例
次のサンプルリクエストでは、環境 tmp-dev を終了します。
$ eb terminate
The environment "tmp-dev" and all associated instances will be terminated.
To confirm, type the environment name: tmp-dev
INFO: terminateEnvironment is starting.
INFO: Deleted CloudWatch alarm named: awseb-e-2cpfjbra9a-stack-AWSEBCloud
watchAlarmHigh-16V08YOF2KQ7U
INFO: Deleted CloudWatch alarm named: awseb-e-2cpfjbra9a-stack-AWSEBCloud
watchAlarmLow-6ZAWH9F20P7C
INFO: Deleted Auto Scaling group policy named: arn:aws:autoscaling:us-west2:11122223333:scalingPolicy:5d7d3e6b-d59b-47c5-b102-3e11fe3047be:autoScalingGroup
Name/awseb-e-2cpfjbra9a-stack-AWSEBAutoScalingGroup-7AXY7U13ZQ6E:policy
Name/awseb-e-2cpfjbra9a-stack-AWSEBAutoSca
lingScaleUpPolicy-1876U27JEC34J
INFO: Deleted Auto Scaling group policy named: arn:aws:autoscaling:us-west2:11122223333:scalingPolicy:29c6e7c7-7ac8-46fc-91f5-cfabb65b985b:autoScalingGroup
Name/awseb-e-2cpfjbra9a-stack-AWSEBAutoScalingGroup-7AXY7U13ZQ6E:policy
Name/awseb-e-2cpfjbra9a-stack-AWSEBAutoSca
lingScaleDownPolicy-SL4LHODMOMU
API Version 2010-12-01
457
AWS Elastic Beanstalk 開発者ガイド
eb upgrade
INFO: Waiting for EC2 instances to terminate. This may take a few minutes.
INFO: Deleted Auto Scaling group named: awseb-e-2cpfjbra9a-stack-AWSEBAutoScal
ingGroup-7AXY7U13ZQ6E
INFO: Deleted Auto Scaling launch configuration named: awseb-e-2cpfjbra9a-stackAWSEBAutoScalingLaunchConfiguration-19UFHYGYWORZ
INFO: Deleted security group named: awseb-e-2cpfjbra9a-stack-AWSEBSecurityGroupXT4YYGFL7I99
INFO: Deleted load balancer named: awseb-e-2-AWSEBLoa-AK6RRYFQVV3S
INFO: Deleting SNS topic for environment tmp-dev.
INFO: terminateEnvironment completed successfully.
eb upgrade
Abstract
使用可能な最新のプラットフォーム(定義済みの設定とも呼ばれます)を使用するように環境を更新するには、EB
CLI 3 の upgrade コマンドを使用します。
説明
現在実行しているソリューションスタックの最新バージョンに環境のプラットフォームをアップグレー
ドします。
構文
eb upgrade
eb upgrade environment_name
オプション
名前
説明
必須
--force
アップグレード処理を開始する前に環境名の確認を必要
とすることなく、アップグレードを実行します。
いいえ
--noroll
アップグレード中に実行中の一部のインスタンスを維持
するため、ローリング更新を使用せずにすべてのインス
タンスを更新します。
いいえ
一般的なオプション
詳細については、「一般的なオプション (p. 420)」を参照 いいえ
してください。
出力
このコマンドは変更の概要を示し、環境名を入力することにより、アップグレードの確認を求めます。
成功すると、環境はアップグレードされてから、プラットフォームの最新バージョンで起動されます。
例
次の例では、指定した環境の現在プラットフォームバージョンを使用可能な最新のプラットフォーム
バージョンにアップグレードします。
API Version 2010-12-01
458
AWS Elastic Beanstalk 開発者ガイド
eb 使用
$ eb upgrade
Current platform: 64bit Amazon Linux 2014.09 v1.0.9 running Python 2.7
Latest platform: 64bit Amazon Linux 2014.09 v1.2.0 running Python 2.7
WARNING: This operation replaces your instances with minimal or zero downtime.
You may cancel the upgrade after it has started by typing "eb abort".
You can also change your platform version by typing "eb clone" and then "eb
swap".
To continue, type the environment name:
eb 使用
Abstract
EB CLI 3. の use コマンドについて説明します。
説明
指定した環境をデフォルトの環境として設定します。
Git を使用するときに、eb use は現在のブランチのデフォルト環境を設定します。Elastic Beanstalk
にデプロイする各ブランチで、このコマンドを 1 回実行します。
構文
eb use environment_name
オプション
名前
説明
必須
一般的なオプション
詳細については、「一般的なオプション (p. 420)」を参照 いいえ
してください。
EB CLI に関する問題のトラブルシューティング
Abstract
EB CLI の使用時に発生する問題のトラブルシューティングを行います。
このトピックでは、EB CLI の使用時に表示される一般的なエラーメッセージと考えられる解決策を示
しています。ここに示していないエラーメッセージが表示される場合は、[Feedback] リンクを使用し
てお知らせください。
ERROR: An error occurred while handling git command. Error code: 128 Error: fatal: Not a valid object
name HEAD
原因: Git リポジトリを初期化したが、まだコミットしていないと、このエラーメッセージが表示されま
す。プロジェクトフォルダーに Git リポジトリが含まれていると、EB CLI は HEAD リビジョンを検索
します。
解決策: ステージングエリアにプロジェクトフォルダー内のファイルを追加してコミットします。
API Version 2010-12-01
459
AWS Elastic Beanstalk 開発者ガイド
デプロイのトラブルシューティング
~/my-app$ git add .
~/my-app$ git commit -m "First commit"
ERROR: This branch does not have a default environment. You must either specify an environment by
typing "eb status my-env-name" or set a default environment by typing "eb use my-env-name".
原因: Git で新しいブランチを作成すると、デフォルトでは Elastic Beanstalk 環境にアタッチされませ
ん。
解決策: eb list を実行して、利用可能な環境のリストを表示します。その後、eb use env-name を
実行して、利用可能な環境のいずれかを使用します。
ERROR: 2.0+ Platforms require a service role. You can provide one with --service-role option
原因: eb create で環境名(eb create my-env など)を指定した場合、EB CLI はサービスロール
の自動作成を試みません。デフォルトのサービスロールがない場合、上記のエラーが表示されます。
解決策: 環境名を指定しないで eb create を実行し、プロンプトに従ってデフォルトのサービスロー
ルを作成します。
デプロイのトラブルシューティング
Elastic Beanstalk のデプロイが予定どおりにスムーズに完了しなかった場合、ウェブサイトが表示され
る代わりに、404(アプリケーションの起動に失敗した場合)または 500(アプリケーションの実行中
に障害が発生した場合)の応答が表示されることがあります。多くの一般的な問題のトラブルシュー
ティングを行うには、EB CLI を使用してデプロイのステータスを確認する、ログを表示する、SSH を
使用して EC2 インスタンスにアクセスする、アプリケーション環境の AWS マネジメントコンソール
のページを開くのいずれかの方法を実行できます。
EB CLI を使用してデプロイのトラブルシューティングを行うには
1.
eb status を実行して、現在のデプロイのステータスおよび EC2 ホストの状態を確認します。以
下に例を示します。
$ eb status --verbose
Environment details for: python_eb_app
Application name: python_eb_app
Region: us-west-2
Deployed Version: app-150206_035343
Environment ID: e-wa8u6rrmqy
Platform: 64bit Amazon Linux 2014.09 v1.1.0 running Python 2.7
Tier: WebServer-StandardCNAME: python_eb_app.elasticbeanstalk.com
Updated: 2015-02-06 12:00:08.557000+00:00
Status: Ready
Health: Green
Running instances: 1
i-8000528c: InService
Note
--verbose スイッチを使用すると、実行中のインスタンスのステータスに関する情報が
表示されます。このスイッチを指定しない場合、eb status では、環境に関する全般的
な情報のみが表示されます。
API Version 2010-12-01
460
AWS Elastic Beanstalk 開発者ガイド
EB CLI 2.6(廃止)
2.
eb logs を実行して、アプリケーションのデプロイに関連付けられたログをダウンロードして表
示します。
$ eb logs
3.
eb ssh を実行して、アプリケーションを実行している EC2 インスタンスに接続し、直接調査し
ます。インスタンスでは、デプロイされたアプリケーションは /opt/python/current/app ディ
レクトリに、Python 環境は /opt/python/run/venv/ にあります。
4.
eb console を実行して、AWS マネジメントコンソールでアプリケーション環境を表示します。
ウェブインターフェイスを使用して、アプリケーションの設定、ステータス、イベント、ログな
ど、デプロイのさまざまな側面を簡単に調査できます。また、サーバーにデプロイした現在または
過去のアプリケーションバージョンをダウンロードすることもできます。
EB CLI 2.6(廃止)
Abstract
eb 2.6 のセットアップ、ウォークスルー、コマンドリファレンス。
Important
EB CLI およびそのドキュメントのこのバージョンは、バージョン 3 に置き換えられました。
バージョン 3 には異なるコマンドがあり、バージョン 2 と後方互換性がありません。新しい
バージョンの詳細については、「Elastic Beanstalk コマンドラインインターフェイス(EB
CLI) (p. 403)」を参照してください。
このセクションでは、eb 2.6 をセットアップする方法と、eb を使用してサンプルアプリケーションを
作成する方法を説明します。このセクションには、eb 2.6. のコマンドリファレンスも含まれています。
トピック
• EB CLI のバージョン 3 との違い (p. 461)
• eb 入門 (p. 462)
• Git ブランチを特定の環境にデプロイする (p. 468)
• eb の一般的なオプション (p. 471)
• EB CLI 2 コマンド (p. 471)
EB CLI のバージョン 3 との違い
EB および eb は Elastic Beanstalk 用のコマンドラインインターフェイス (CLI) ツールで、アプリケー
ションを迅速かつより簡単にデプロイすることができます。Elastic Beanstalk がサポートする最新の
ツールは EB CLI 3 です。Elastic Beanstalk は、eb 2.6 を以前にインストールしており使用を継続して
いるお客様については、eb 2.6 もサポートします。eb 2.6 またはそれ以前のバージョンの eb を使用し
て起動した環境を、EB CLI 3 を使用して管理できます。EB CLI では、eb を使用して作成された環境か
ら自動的に設定を取得します(その環境が実行中の場合)。eb とは異なり、EB CLI はオプション設定
をローカルに保存しません。
EB CLI では、eb create、eb deploy、eb open、eb console、eb scale、eb setenv、eb
config、eb terminate、eb clone、eb list、eb use、eb printenv、eb ssh の各コマンドが
導入されました。EB CLI 3.1 以降では、eb swap コマンドも使用できます。EB CLI 3.2 でのみ、eb
API Version 2010-12-01
461
AWS Elastic Beanstalk 開発者ガイド
eb 入門
abort、eb platform、および eb upgrade コマンドを使用できます。これらの新しいコマンドに加
えて、EB CLI 3 のコマンドは、eb 2.6 とはいくつか異なる点があります。
• eb init - eb init を使用して、既存のプロジェクトディレクトリに .elasticbeanstalk ディレ
クトリを作成し、そのプロジェクト用に新しい Elastic Beanstalk アプリケーションを作成します。
eb とは異なり、EB CLI で eb init を実行した場合、環境の作成は要求されません。
• eb start - EB CLI には、eb start コマンドは含まれていません。代わりに eb createを使用し
て、環境を作成します。
• eb stop - EB CLI には、eb stop コマンドは含まれていません。代わりに eb terminate を使用
して、環境を完全に終了し、クリーンアップします。
• eb push および git aws.push - EB CLI には、eb push と git aws.push コマンドは含まれてい
ません。これらコマンドは、eb deploy コマンドに置き換えられました。
• eb update - EB CLI には、eb update コマンドは含まれていません。eb config コマンドを使用
して、環境を更新します。
• eb branch - EB CLI には、eb branch コマンドは含まれていません。
EB CLI 3 のコマンドを使用してアプリケーションの作成と管理を行う方法の詳細については、「EB
CLI コマンドリファレンス (p. 420)」を参照してください。eb 2.6 のコマンドリファレンスについては、
「EB CLI 2 コマンド (p. 471)」を参照してください。EB CLI 3 を使用してサンプルアプリケーションを
デプロイする方法のウォークスルーについては、「EB CLI による Elastic Beanstalk 環境の管理 (p. 413)」
を参照してください。eb 2.6 を使用してサンプルアプリケーションをデプロイするウォークスルーにつ
いては、「eb 入門 (p. 462)」を参照してください。eb 2.6 を使用して特定の環境に Git ブランチをマッ
ピングする方法のウォークスルーについては、「Git ブランチを特定の環境にデプロイする (p. 468)」を
参照してください。
eb 入門
Abstract
eb は、アプリケーションを素早く簡単にデプロイするための Elastic Beanstalk コマンドラインインターフェイス
です。このチュートリアルでは、eb を使用してアプリケーションの起動、表示、更新、削除を行います。
Important
EB CLI およびそのドキュメントのこのバージョンは、バージョン 3 に置き換えられました。
バージョン 3 には異なるコマンドがあり、バージョン 2 と後方互換性がありません。新しい
バージョンの詳細については、「Elastic Beanstalk コマンドラインインターフェイス(EB
CLI) (p. 403)」を参照してください。
eb はコマンドラインインターフェイス (CLI) ツールであり、一連の質問を表示し、それに対する回答
を使用して、Elastic Beanstalk アプリケーションのデプロイと管理を行います。ここでは、eb を使用
したサンプルアプリケーションの起動、表示、更新、削除という一通りのチュートリアルについて説明
します。
このチュートリアルを完了するには、AWS サンプルコードとライブラリウェブサイトでコマンドライ
ンツールをダウンロードする必要があります。より高度なシナリオの CLI の詳細なリファレンスについ
ては、「運用 (p. 497)」を参照してください。設定方法については、「準備作業 (p. 493)」を参照してく
ださい。
API Version 2010-12-01
462
AWS Elastic Beanstalk 開発者ガイド
eb 入門
ステップ 1: Git リポジトリの初期化
eb は Git で使用できるコマンドラインインターフェイス(CLI)で、アプリケーションを迅速に、より
簡単にデプロイすることができます。eb は、Elastic Beanstalk コマンドラインツールパッケージの一
部として使用できます。以下の手順で、eb をインストールして、Git リポジトリを初期化します。
eb と前提条件のソフトウェアをインストールして Git リポジトリを初期化するには
1.
次に示すソフトウェアをローカルコンピュータにインストールします。
a.
Linux/Unix/Mac
• AWS サンプルコードとライブラリウェブサイトで、Elastic Beanstalk コマンドラインツー
ルパッケージをダウンロードして解凍します。
• Git 1.6.6 以降Git をダウンロードするには、http://git-scm.com/ にアクセスしてください。
• Python 2.7 または 3.0。
b.
Windows
• AWS サンプルコードとライブラリウェブサイトで、Elastic Beanstalk コマンドラインツー
ルパッケージをダウンロードして解凍します。
• Git 1.6.6 以降Git をダウンロードするには、http://git-scm.com/ にアクセスしてください。
• PowerShell 2.0.
Note
Windows 7 および Windows Server 2008 R2 には PowerShell 2.0 が付属していま
す。それより前のバージョンの Windows を使用している場合は、PowerShell 2.0
をダウンロードしてください。詳細については、
http://technet.microsoft.com/ja-jp/scriptcenter/dd742419.aspx を参照してください。
2.
Git リポジトリを初期化します。
git init .
ステップ 2: Elastic Beanstalk の設定
アプリケーションをデプロイするには、Elastic Beanstalk に次の情報が必要です。
• AWS アクセスキー ID
• AWS シークレットキー
• サービスリージョン
• アプリケーション名
• 環境名
• ソリューションスタック
API Version 2010-12-01
463
AWS Elastic Beanstalk 開発者ガイド
eb 入門
init コマンドを使用するとき、Elastic Beanstalk から上記の情報の入力が求められます。利用可能な
デフォルト値や現在の設定をそのまま使用する場合は、Enter を押します。
eb を使用する前に、PATH を eb の場所に設定します。次の表は、Linux/UNIX と Windows の例を示し
ます。
Linux および UNIX の場合
Windows の場合
$ export PATH=$PATH:<path to unzipped
eb CLI package>/eb/linux/python2.7/
C:\> set PATH=%PATH%;<path to unzipped
eb CLI package>\eb\windows\
Python 3.0 を使用している場合、パスには python2.7 ではなく python3 が含められます。
Elastic Beanstalk を設定するには
Note
EB CLI により、認証情報が credentials というファイル名で、ユーザーディレクトリの .aws
フォルダに保存されます。
1.
ローカルリポジトリを作成したディレクトリから、次のコマンドを入力します。
eb init
2.
アクセスキー ID の入力を求められたら、アクセスキー ID を入力します。アクセスキー ID の取得
方法については、「How Do I Get Security Credentials?」(AWS General Reference)を参照して
ください。
Enter your AWS Access Key ID (current value is "AKIAIOSFODNN7EXAMPLE"):
3.
シークレットアクセスキーの入力を求められたら、シークレットアクセスキーを入力します。シー
クレットアクセスキーの取得方法については、「How Do I Get Security Credentials?」(AWS
General Reference)を参照してください。
Enter your AWS Secret Access Key (current value is "wJalrXUtnFEMI/K7MDENG/bPxR
fiCYEXAMPLEKEY"):
4.
5.
Elastic Beanstalk リージョンを要求されたら、リージョンの番号を入力します。この製品のリー
ジョンについては、『Amazon Web Services General Reference』のリージョンとエンドポイント
のページを参照してください。この例では、[US West (Oregon)] を使用します。
Elastic Beanstalk アプリケーション名の入力を求められたら、アプリケーション名を入力します。
アプリケーション名がまだ設定されていない場合、Elastic Beanstalk により現在のディレクトリ名
に基づいてアプリケーション名が生成されます。 この例で、HelloWorld を使用します。
Enter an AWS Elastic Beanstalk application name (auto-generated value is
"windows"): HelloWorld
Note
アプリケーション名にスペースが含まれる場合でも、引用符は使用しないでください。
API Version 2010-12-01
464
AWS Elastic Beanstalk 開発者ガイド
eb 入門
6.
Elastic Beanstalk の環境名の入力を求められたら、環境の名前を入力してください。Elastic Beanstalk
は、アプリケーション名に基づいて環境名を自動的に作成します。デフォルトを使用する場合は、
Enter キーを押します。
Enter an AWS Elastic Beanstalk environment name (current value is "HelloWorldenv"):
Note
アプリケーション名にスペースが含まれる場合でも、環境名ではスペースを使用しないで
ください。
7.
選択を求められたら、環境枠を選択します。環境枠の詳細については、「アーキテクチャの概
要 (p. 16)」を参照してください。この例では、1 を使用します。
Available environment tiers are:
1) WebServer::Standard::1.0
2) Worker::SQS/HTTP::1.0
8.
9.
ソリューションスタックを要求された場合は、使用するソリューションスタックの番号を入力しま
す。ソリューションスタックの詳細については、「サポートされているプラットフォーム (p. 25)」
を参照してください。この例では、64bit Amazon Linux running PHP 5.4 を使用します。
選択を求められたら、環境タイプを選択します。この例では、2 を使用します。
Available environment types are:
1) LoadBalanced
2) SingleInstance
10. Amazon RDS DB インスタンスの作成を求められたら、「y」または「n」を入力します。Amazon
RDS の使用の詳細については、「Amazon RDS で Elastic Beanstalk を使用する (p. 308)」を参照し
てください。この例では、y と入力します。
Create an Amazon RDS DB Instance? [y/n]:
11. 最初から、またはスナップショットからデータベースを作成するよう求められたら、いずれかのタ
イプを選択します。この例では、[No snapshot] を選択します。
12. RDS ユーザーマスターパスワードの入力を求められたら、8~16 文字の印刷可能な ASCII 文字(/、
\、@ は除く)を含むパスワードを入力します。
Enter an Amazon RDS DB master password:
Retype password to confirm:
13. Amazon RDS DB インスタンスを削除した場合、スナップショットの作成を求められたら、「y」
または「n」と入力します。この例では、n と入力します。n と入力すると、RDS DB インスタン
スは削除され、環境を終了するとデータが失われます。
デフォルトで、eb は Amazon RDS に以下のデフォルト値を設定します。
• Database engine – MySQL
API Version 2010-12-01
465
AWS Elastic Beanstalk 開発者ガイド
eb 入門
• Default version: – 5.5
• Database name: – ebdb
• Allocated storage – 5GB
• Instance class – db.t1.micro
• Deletion policy – delete
• Master username – ebroot
14. インスタンスプロファイル名の入力を求められたら、デフォルトのインスタンスプロファイルを作
成するか、既存のインスタンスプロファイルを使用できます。インスタンスプロファイルによっ
て、IAM ユーザーと AWS サービスは、一時的なセキュリティ認証情報にアクセスして AWS API
を呼び出すことができるようになります。インスタンスプロファイルを使用すると、EC2 インス
タンスに長期的なセキュリティ認証情報を保存する必要がなくなります。インスタンスプロファイ
ルの詳細については、「サービスロール、インスタンスプロファイル、ユーザーポリシー (p. 19)」
を参照してください。この例では、[Create a default instance profile] を使用します。
AWS 認証情報ファイルが正常に更新されたことを示す確認が表示されます。
Elastic Beanstalk を設定すると、サンプルアプリケーションをデプロイできるようになります。
Elastic Beanstalk の設定を更新する場合は、もう一度 init コマンドを使用します。プロンプトが表示
されたら、設定オプションを更新できます。前の設定を維持する場合は、Enter キーを押します。Amazon
RDS DB 設定を更新する場合、.elasticbeanstalk ディレクトリの optionsettings ファイルを更
新してから、eb update コマンドを使用して Elastic Beanstalk 環境を更新します。
Note
複数のディレクトリを eb で使用できるようにセットアップできます(各ディレクトリは独自
の Elastic Beanstalk 設定を持ちます)。そのためには、上記の 2 つのステップをディレクトリ
ごとに繰り返します。最初に Git リポジトリを初期化し、次に init を使用して eb を設定しま
す。
ステップ 3: アプリケーションの作成
次に、サンプルアプリケーションを作成してデプロイする必要があります。この手順では、用意されて
いるサンプルアプリケーションを使用します。Elastic Beanstalk は、前のステップで指定した設定情報
を使って以下を実行します。
• 指定したアプリケーション名を使用してアプリケーションを作成します。
• 指定した環境名を使用して、アプリケーションをホストする AWS リソースをプロビジョニングする
環境を起動します。
• 新しく作成した環境にアプリケーションをデプロイします。
start コマンドを使用して、サンプルアプリケーションを作成してデプロイします。
アプリケーションを作成するには
•
ローカルリポジトリを作成したディレクトリから、次のコマンドを入力します。
eb start
API Version 2010-12-01
466
AWS Elastic Beanstalk 開発者ガイド
eb 入門
このプロセスが完了するには数分間かかる場合があります。処理中、Elastic Beanstalk によりステータ
スが更新されます。ステータス更新のポーリングは、Ctrl+C キーを押すことでいつでも停止できます。
環境のステータスが緑になると、Elastic Beanstalk はアプリケーションの URL を出力します。
ステップ 4: アプリケーションの表示
前のステップでは、アプリケーションを作成し、それを Elastic Beanstalk にデプロイしました。環境
の準備ができてステータスが緑色で表示されている場合、Elastic Beanstalk はアプリケーションを表示
するための URL を提供します。このステップでは、環境のステータスを調べて緑色に設定されている
ことを確認した後、URL をコピーして貼り付けてアプリケーションを表示します。
status コマンドを使用して環境のステータスを確認した後、URL を使用してアプリケーションを表示
します。
アプリケーションを表示するには
1.
ローカルリポジトリを作成したディレクトリから、次のコマンドを入力します。
eb status --verbose
2.
Elastic Beanstalk に環境のステータスが表示されます。環境が緑色に設定されている場合、Elastic
Beanstalk はアプリケーションの URL を表示します。Amazon RDS DB インスタンスを環境に関
連付けている場合、Amazon RDS DB の情報が表示されます。
URL をコピーしてウェブブラウザに貼り付け、アプリケーションを表示します。
ステップ 5: アプリケーションの更新
サンプルアプリケーションをデプロイしたら、作成したアプリケーションでサンプルアプリケーション
を更新できます。このステップでは、簡単な HelloWorld アプリケーションでサンプル PHP アプリケー
ションを更新します。
サンプルアプリケーションを更新するには
1.
"Hello World" と表示するシンプルな PHP ファイルを作成し、そのファイルに index.php という
名前を付けます。
<html>
<head>
<title>PHP Test</title>
</head>
<body>
<?php echo '<p>Hello World</p>'; ?>
</body>
</html>
次に、新しいプログラムをローカル Git リポジトリに追加し、変更をコミットします。
git add index.php
git commit -m "initial check-in"
Note
Git コマンドの詳細については、「Git – Fast Version Control System」を参照してくださ
い。
API Version 2010-12-01
467
AWS Elastic Beanstalk 開発者ガイド
Git ブランチを 1 つの環境にデプロイする
2.
Elastic Beanstalk にデプロイします。
eb push
3.
更新されたアプリケーションを表示します。「ステップ 4: アプリケーションの表示 (p. 467)」と同
様に、同じ URL をコピーしてウェブブラウザに貼り付けます。
ステップ 6: クリーンアップ
アプリケーションを実行したくない場合は、環境を終了し、アプリケーションを削除してクリーンアッ
プできます。
環境を終了するには stop コマンドを、アプリケーションを削除するには delete コマンドを使用しま
す。
環境を終了するには、アプリケーションを削除できます。
1.
ローカルリポジトリを作成したディレクトリから、次のコマンドを入力します。
eb stop
このプロセスには数分かかることがあります。環境が正常に終了すると、Elastic Beanstalk にメッ
セージが表示されます。
Note
環境に Amazon RDS DB インスタンスをアタッチした場合は、Amazon RDS DB も削除さ
れ、データは失われます。データを保存するには、アプリケーションを削除する前にス
ナップショットを作成してください。スナップショットの作成手順については、Amazon
Relational Database Service User Guide の「Creating a DB Snapshot」を参照してくださ
い。
2.
コマンドラインインターフェイスをインストールしたディレクトリで、次のコマンドを入力しま
す。
eb delete
アプリケーションが正常に削除されると、Elastic Beanstalk にメッセージが表示されます。
Git ブランチを特定の環境にデプロイする
Abstract
特定の Elastic Beanstalk 環境に現在の Git ブランチをデプロイするために、eb コマンドラインインターフェイス
と AWS DevTools を使用できます。
API Version 2010-12-01
468
AWS Elastic Beanstalk 開発者ガイド
Git ブランチを 1 つの環境にデプロイする
Important
EB CLI およびそのドキュメントのこのバージョンは、バージョン 3 に置き換えられました。
バージョン 3 には異なるコマンドがあり、バージョン 2 と後方互換性がありません。新しい
バージョンの詳細については、「Elastic Beanstalk コマンドラインインターフェイス(EB
CLI) (p. 403)」を参照してください。
多くの場合、開発者はプロジェクトでブランチを使用し、さまざまな対象の環境に合わせてコードを管
理しています。たとえば、コンポーネントや統合のテストを行う test ブランチと、使用中または本番
環境用のコードを管理する prod ブランチがあるとします。バージョン 2.3 以降の eb コマンドライン
インインターフェイスと AWS DevTools では、eb init コマンドを使用して、eb push コマンドから
現在の Git ブランチを特定の Elastic Beanstalk 環境にプッシュするように設定することができます。
特定の環境にデプロイするように Git ブランチをセットアップするには
1.
バージョン 2.3 の Elastic Beanstalk コマンドラインツールがインストールされていることを確認し
ます。
インストールされているバージョンを確認するには、次のコマンドを使用します。
eb --version
コマンドラインツールをダウンロードするには、「Elastic Beanstalk コマンドラインツール」ペー
ジを参照し、.zip ファイル内の README.txt ファイルに記載されている指示に従ってください。
2.
3.
コマンドプロンプトで、デプロイするコードを含むローカルリポジトリの場所にディレクトリを変
更します。
Git リポジトリをまだセットアップしていない場合は、作成してから続行する必要があります。Git
の使用方法については、Git のドキュメントを参照してください。
ローカルリポジトリの現在のブランチが、Elastic Beanstalk 環境にマップするブランチであること
を確認します。
ブランチを切り替えるには、git checkout コマンドを使用します。例えば、prod ブランチに切
り替えるには、次のコマンドを使用します。
git checkout prod
4.
5.
Git のブランチの作成と管理については、Git のドキュメントを参照してください。
認証情報、アプリケーション、領域、環境、ソリューションスタックについて、特定の設定で
Elastic Beanstalk を使用するように eb を設定していない場合は、eb init コマンドを使用して設
定します。eb init で設定した値は、ブランチ用に作成する環境のデフォルトとして使用されま
す。詳細な手順については、「ステップ 2: Elastic Beanstalk の設定 (p. 463)」を参照してください。
eb branch コマンドを使用して、現在のブランチを特定の環境にマップします。
1. 次のコマンドを入力します。
eb branch
2. 環境名の入力を求められたら、現在のブランチにマップする環境名を入力します。
提案される括弧で囲まれた名前を Enter キーを押してそのまま使用するか、任意の名前を入力し
ます。
API Version 2010-12-01
469
AWS Elastic Beanstalk 開発者ガイド
Git ブランチを 1 つの環境にデプロイする
The current branch is "myotherbranch".
Enter an Elastic Beanstalk environment name (auto-generated value is
"test-myotherbranch-en"):
eb に Git リポジトリの現在のブランチが表示されるので、操作対象のブランチがわかります。
既存または新しい環境を指定できます。新しい環境を指定する場合、eb start コマンドで作
成する必要があります。
3. このブランチの環境について、デフォルト環境の optionsettings ファイルの使用を明示的に指定
しない場合、デフォルト環境の設定を使用するかどうかを確認するプロンプトが表示されたら、
y と入力します。
Do you want to copy the settings from the default environment "main-env"
for the new branch? [y/n]: y
6.
7.
ブランチの新しい環境を指定する場合、eb start コマンドを使用して環境を作成して起動しま
す。
このコマンドが完了したら、次のステップに進むことができます。
eb push コマンドを使用して、現在のブランチの変更を、ブランチにマップした環境にマップし
ます。
API Version 2010-12-01
470
AWS Elastic Beanstalk 開発者ガイド
eb の一般的なオプション
eb の一般的なオプション
Abstract
eb コマンドラインインターフェイスのすべてのオペレーションで、これらの一般的なオプションを使用します。
Important
EB CLI およびそのドキュメントのこのバージョンは、バージョン 3 に置き換えられました。
バージョン 3 には異なるコマンドがあり、バージョン 2 と後方互換性がありません。新しい
バージョンの詳細については、「Elastic Beanstalk コマンドラインインターフェイス(EB
CLI) (p. 403)」を参照してください。
このセクションでは、すべての eb オペレーションに共通のオプションについて説明します。
名前
説明
-f、--force
確認画面をスキップします。
- h, --help
ヘルプメッセージを示します。
型: 文字列
デフォルト: なし
--verbose
詳細な情報を表示します。
--version
プログラムのバージョン番号を表示し、終了します。
EB CLI 2 コマンド
Abstract
eb コマンドラインインターフェイスで利用可能なオペレーションのリスト。
Important
EB CLI およびそのドキュメントのこのバージョンは、バージョン 3 に置き換えられました。
バージョン 3 には異なるコマンドがあり、バージョン 2 と後方互換性がありません。新しい
バージョンの詳細については、「Elastic Beanstalk コマンドラインインターフェイス(EB
CLI) (p. 403)」を参照してください。
EB コマンドラインインターフェイスを使用して、幅広いオペレーションを実行できます。
トピック
• branch (p. 473)
• delete (p. 475)
• イベント (p. 477)
• init (p. 479)
API Version 2010-12-01
471
AWS Elastic Beanstalk 開発者ガイド
EB CLI 2 コマンド
• ログ (p. 483)
• push (p. 484)
• start (p. 486)
• status (p. 488)
• stop (p. 490)
• の更新 (p. 492)
eb はリポジトリの .elasticbeanstalk/optionsettings ファイルに環境設定を保存します。ロー
カルファイルからのみ読み取るように設計されています。eb start または eb update を実行する
と、Elastic Beanstalk は .elasticbeanstalk/optionsettings ファイルを読み取り、そのコンテ
ンツをパラメータとして CreateEnvironment API アクションまたは UpdateEnvironment API アク
ションに渡します。
.ebextensions/*.conf ディレクトリの設定ファイルを使用し
て、.elasticbeanstalk/optionsettings ファイルに指定されているものと同じ設定のいくつかを
設定できます。ただし、.elasticbeanstalk/optionsettings の設定値は、.ebextensions/*.conf
の設定値よりも優先されます(これらの両方で該当する設定が指定されている場合)。また、API を使
用して指定したオプション設定(eb を介して指定したオプション設定も含む)は、後で .ebextensions
設定ファイルを使用して、環境内で変更することはできません。
eb branch を実行すると、Elastic Beanstalk は .elasticbeanstalk/optionsettings 内の値にセ
クションを追加したり、新しい環境用のセクションを作成したりします。コマンドは、実行中の環境に
は影響を与えません。
現在の設定を表示するには、eb status --verbose を実行します。また、eb を Elastic Beanstalk コ
ンソールと組み合わせて使用することによって、アプリケーションと環境の詳細を把握することもでき
ます。
API Version 2010-12-01
472
AWS Elastic Beanstalk 開発者ガイド
EB CLI 2 コマンド
branch
Abstract
Git ブランチを作成するか、または eb コマンドラインインターフェイスを使用する環境のブランチを変更します。
Important
EB CLI およびそのドキュメントのこのバージョンは、バージョン 3 に置き換えられました。
バージョン 3 には異なるコマンドがあり、バージョン 2 と後方互換性がありません。新しい
バージョンの詳細については、「Elastic Beanstalk コマンドラインインターフェイス(EB
CLI) (p. 403)」を参照してください。
説明
Git ブランチを新しいまたは既存の Elastic Beanstalk 環境にマッピングし、一連のプロンプトで、マッ
ピングされた環境を設定します。最初に、Git ブランチを作成する必要があります。Git リポジトリにブ
ランチがない場合、eb によって branch コマンドを実行するよう求めるメッセージが表示されます。
次に、eb は、optionsettings ファイルのデフォルト設定で指定されているアプリケーションを開始しよ
うとします。
Git ブランチをマッピングするには、最初にマッピングする Git ブランチを指定して git checkout
<branch> を実行します。次に、eb branch を実行します。ブランチが Elastic Beanstalk 環境にマッ
ピングされていない場合、新しい環境に最新の環境設定をコピーするオプションがあります。
branch の使用に関する以下の追加情報を考慮してください。
• 既存のリポジトリに対して eb init を実行し、アプリケーション名、リージョン、またはソリュー
ションスタックを変更した場合、このコマンドによって既存のブランチのマッピングがすべてリセッ
トされます。環境に各ブランチをマッピングするには、もう一度 branch を実行します。
• 同じ Elastic Beanstalk 環境に異なる Git ブランチをマッピングすることはできますが、ほとんどの場
合、ブランチと環境との間には 1 対 1 の関係を維持します。
eb を使用して Git ブランチを Elastic Beanstalk にデプロイする方法を説明するチュートリアルについ
ては、「Git ブランチを特定の環境にデプロイする (p. 468)」を参照してください。
構文
eb branch
オプション
名前
説明
必須
現在の Git ブランチをマッピングする環 いいえ
境。このオプションを使用しない場合、
または
自動生成される環境名を受け入れるか、
または新しい環境名を入力するよう求め
--environment name ENVIRONMENT_NAME られます。
-e
タイプ: 文字列
デフォルト: <Git >-env
API Version 2010-12-01
473
AWS Elastic Beanstalk 開発者ガイド
EB CLI 2 コマンド
名前
説明
必須
一般的なオプション
詳細については、「eb の一般的なオプ いいえ
ション (p. 471)」を参照してください。
出力
None
例
以下の例は、以前に作成した Myapp-env という環境と同じ設定を使用して、MyApp-env-test という新
しい環境に Git ブランチ master をマッピングします。赤色のプレースホルダーテキストを独自の値に
置き換えます。
PROMPT> eb branch
The current branch is "master".
Enter an AWS Elastic Beanstalk environment name (auto-generated value is "MyAppmaster-env"): MyApp-env-test
Do you want to copy the settings from environment "MyApp-env" for the new branch?
[y/n]: y
PROMPT> eb status
Environment "MyApp-env-test" is not running.
API Version 2010-12-01
474
AWS Elastic Beanstalk 開発者ガイド
EB CLI 2 コマンド
delete
Abstract
eb コマンドラインインターフェイスを使用して、関連するバージョンや設定と共に、現在のアプリケーションを
削除します。
Important
EB CLI およびそのドキュメントのこのバージョンは、バージョン 3 に置き換えられました。
バージョン 3 には異なるコマンドがあり、バージョン 2 と後方互換性がありません。新しい
バージョンの詳細については、「Elastic Beanstalk コマンドラインインターフェイス(EB
CLI) (p. 403)」を参照してください。
説明
現在のアプリケーションまたは指定したアプリケーションを、関連するすべての環境、バージョン、お
よび設定と共に削除します。eb delete を使用してアプリケーションを削除する方法の説明を含む
チュートリアルについては、「eb 入門 (p. 462)」を参照してください。
Note
delete オペレーションは、アプリケーションとそのすべての環境に適用されます。アプリケー
ション全体ではなく、1 つの環境のみを停止するには、eb stop (p. 490) を使用します。
構文
eb delete
オプション
名前
説明
必須
削除するアプリケーション。このオプション いいえ
を使用しない場合、eb は現在 .elasticまたは
beanstalk/optionsettings で指定され
ているアプリケーションを削除します。現在
--application-name APPLIC- の設定を確認するには、eb init(現在の値
ATION_NAME
が表示されます。各確認メッセージで Enter
キーを押すと現在の値が保持されます)。
-a
型: 文字列
デフォルト: 一般的なオプション
詳細については、「eb の一般的なオプショ
ン (p. 471)」を参照してください。
出力
成功すると、コマンドはアプリケーションが削除されたという確認を返します。
API Version 2010-12-01
475
いいえ
AWS Elastic Beanstalk 開発者ガイド
EB CLI 2 コマンド
例
次のリクエストの例は、指定したアプリケーションとそのすべての環境を削除します。赤色のプレース
ホルダーテキストを独自の値に置き換えます。
PROMPT> delete -a MyApp
Delete application? [y/n]: y
Deleted application "MyApp".
API Version 2010-12-01
476
AWS Elastic Beanstalk 開発者ガイド
EB CLI 2 コマンド
イベント
Abstract
eb コマンドラインインターフェイスを使用して環境の最新のイベントを返します。
Important
EB CLI およびそのドキュメントのこのバージョンは、バージョン 3 に置き換えられました。
バージョン 3 には異なるコマンドがあり、バージョン 2 と後方互換性がありません。新しい
バージョンの詳細については、「Elastic Beanstalk コマンドラインインターフェイス(EB
CLI) (p. 403)」を参照してください。
説明
環境の最新のイベントを返します。
構文
eb events
オプション
名前
説明
必須
[number] NUMBER
返されるイベントの数。有効な値の範囲は 1 ~ 1000 で
す。
はい
タイプ: 整数
デフォルト: 10
出力
成功すると、コマンドは指定された数の最近のイベントを返します。
例
以下の例は、最新の 15 個のイベントを返します。
PROMPT> eb events 15
2014-05-19 08:44:51
INFO
terminateEnvironment completed successfully.
2014-05-19 08:44:50
INFO
Deleting SNS topic for environment MyApp-testenv.
2014-05-19 08:44:38
INFO
Deleted security group named: awseb-efEXAMPLEre-stack-AWSEBSecurityGroup-1DEXAMPLEKI
2014-05-19 08:44:32
INFO
Deleted RDS database named: aa1k8EXAMPLEdxl
2014-05-19 08:38:33
INFO
Deleted EIP: xx.xx.xxx.xx
2014-05-19 08:37:04
INFO
Waiting for EC2 instances to terminate. This
may take a few minutes.
2014-05-19 08:36:45
INFO
terminateEnvironment is starting.
API Version 2010-12-01
477
AWS Elastic Beanstalk 開発者ガイド
EB CLI 2 コマンド
2014-05-19 08:27:54
INFO
Adding instance 'i-fEXAMPLE7' to your environ
ment.
2014-05-19 08:27:50
INFO
Successfully launched environment: MyApp-testenv
2014-05-19 08:27:50
INFO
Application available at MyApp-test-en
vmEXAMPLEst.elasticbeanstalk.com.
2014-05-19 08:24:04
INFO
Waiting for EC2 instances to launch. This may
take a few minutes.
2014-05-19 08:23:21
INFO
Created RDS database named: aa1k8EXAMPLEdxl
2014-05-19 08:17:07
INFO
Creating RDS database named: aa1k8EXAMPLEdxl.
This may take a few minutes.
2014-05-19 08:16:58
INFO
Created security group named: awseb-efEXAMPLEre-stack-AWSEBSecurityGroup-1D6HEXAMPLEKI
2014-05-19 08:16:54
INFO
Created EIP: 50.18.181.66
API Version 2010-12-01
478
AWS Elastic Beanstalk 開発者ガイド
EB CLI 2 コマンド
init
Abstract
eb コマンドラインインターフェイスを初期化し、新しい AWS Elastic Beanstalk アプリケーションをセットアップ
する手順を示します。
Important
EB CLI およびそのドキュメントのこのバージョンは、バージョン 3 に置き換えられました。
バージョン 3 には異なるコマンドがあり、バージョン 2 と後方互換性がありません。新しい
バージョンの詳細については、「Elastic Beanstalk コマンドラインインターフェイス(EB
CLI) (p. 403)」を参照してください。
説明
AWS の認証情報やリージョンなど、eb で作成した AWS Elastic Beanstalk 環境のさまざまなデフォル
ト値を設定します。init で設定した値は、現在のディレクトリおよびリポジトリにのみ適用されます。
一部のデフォルト値はオペレーションオプションで上書きできます(たとえば、-e または
--environment-name を使用して、branch (p. 473) のターゲットを特定の環境に設定します)。
Note
init コマンドを実行するまで、現在実行中の環境は変更されません。init コマンドを実行す
るたびに、新しい設定が config ファイルに追加されます。
eb init を使用してサンプルアプリケーションをデプロイする方法を示すチュートリアルについては、
「eb 入門 (p. 462)」を参照してください。
構文
eb init
オプション
これらのオプションはいずれも必須ではありません。オプションを使用せずに eb init を実行する
と、各設定の値を入力または選択するよう求められます。
名前
説明
必須
-a
現在のリポジトリによって管理されるアプリケーション。 いいえ
or
型: 文字列
--application-name
APPLICATION_NAME
デフォルト: なし
--aws-credential-file AWS の認証情報が保存されているファイルの場所(環境 いいえ
変数 AWS_CREDENTIAL_FILE を使用してファイルの場
FILE_PATH_NAME
所を設定できます)。
型: 文字列
デフォルト: なし
API Version 2010-12-01
479
AWS Elastic Beanstalk 開発者ガイド
EB CLI 2 コマンド
名前
説明
必須
-e
オペレーションを実行する対象の環境。
いいえ
または
型: 文字列
--environment-name
ENVIRONMENT_NAME
デフォルト: <application-name>-env
-I
使用する AWS アクセスキー ID。
または
型: 文字列
--access-key-id ACCESS_KEY_ID
デフォルト: なし
-S
お客様の AWS シークレットアクセスキー。
または
型: 文字列
--secret-key
SECRET_ACCESS_KEY
デフォルト: なし
-s
アプリケーションコンテナタイプとして使用されるソ
いいえ
リューションスタック。このオプションを使用せずに eb
init を実行すると、サポートされるソリューションス
タックのリストから選択するよう求められます。ソリュー
ションスタック名は、AMI が更新されるときに変更され
ます。
または
--solution-stack
SOLUTION_STACK_LABEL
いいえ
いいえ
型: 文字列
デフォルト: なし
一般的なオプション
詳細については、「eb の一般的なオプション (p. 471)」 いいえ
を参照してください。
出力
成功すると、コマンドは一連のプロンプトで新しい AWS Elastic Beanstalk アプリケーションをセット
アップする手順を示します。
例
次のリクエストの例は、eb を初期化し、アプリケーションに関する情報を入力するよう求めます。赤
色のプレースホルダーテキストを独自の値に置き換えます。
PROMPT> eb init
C:\>eb init
For information about your AWS access key ID and secret access key,
go to http://docs.aws.amazon.com/general/latest/gr/getting-aws-sec-creds.html.
Enter your AWS Access Key ID (current value is "AKIAI*****5ZB7Q"):
Enter your AWS Secret Access Key (current value is "DHSAi*****xKPo6"):
Select an AWS Elastic Beanstalk service region (current value is "US East (N.
Virginia)".
Available service regions are:
1) US East (Virginia)
API Version 2010-12-01
480
AWS Elastic Beanstalk 開発者ガイド
EB CLI 2 コマンド
2) US West (Oregon)
3) US West (North California)
4) EU West (Ireland)
5) Asia Pacific (Singapore)
6) Asia Pacific (Tokyo)
7) Asia Pacific (Sydney)
8) South America (Sao Paulo)
Select (1 to 8): 2
Enter an AWS Elastic Beanstalk application name (current value is "MyApp"):
MyApp
Enter an AWS Elastic Beanstalk environment name (current value is "MyApp-env"):
MyApp-env
Select a solution stack (current value is "64bit Amazon Linux running Python").
Available solution stacks are:
1) 32bit Amazon Linux running PHP 5.4
2) 64bit Amazon Linux running PHP 5.4
3) 32bit Amazon Linux running PHP 5.3
4) 64bit Amazon Linux running PHP 5.3
5) 32bit Amazon Linux running Node.js
6) 64bit Amazon Linux running Node.js
7) 64bit Windows Server 2008 R2 running IIS 7.5
8) 64bit Windows Server 2012 running IIS 8
9) 32bit Amazon Linux running Tomcat 7
10) 64bit Amazon Linux running Tomcat 7
11) 32bit Amazon Linux running Tomcat 6
12) 64bit Amazon Linux running Tomcat 6
13) 32bit Amazon Linux running Python
14) 64bit Amazon Linux running Python
15) 32bit Amazon Linux running Ruby 1.8.7
16) 64bit Amazon Linux running Ruby 1.8.7
17) 32bit Amazon Linux running Ruby 1.9.3
18) 64bit Amazon Linux running Ruby 1.9.3
[...]
Select (1 to 70): 60
Select an environment type (current value is "LoadBalanced").
Available environment types are:
1) LoadBalanced
2) SingleInstance
Select (1 to 2): 1
Create an RDS DB Instance? [y/n] (current value is "Yes"): y
Create an RDS BD Instance from (current value is "[No snapshot]"):
1) [No snapshot]
2) [Other snapshot]
Select (1 to 2): 1
Enter an RDS DB master password (current value is "******"):
Retype password to confirm:
If you terminate your environment, your RDS DB Instance will be deleted and you
will lose your data.
Create snapshot? [y/n] (current value is "Yes"): y
Attach an instance profile (current value is "aws-elasticbeanstalk-ec2-role"):
1) [Create a default instance profile]
2) AppServer-AppServerInstanceProfile-TK2exampleHP
3) AppServer-AppServerInstanceProfile-1G2exampleK8
4) aws-opsworks-ec2-role
5) aws-elasticbeanstalk-ec2-role
6) [Other instance profile]
Select (1 to 6): 5
API Version 2010-12-01
481
AWS Elastic Beanstalk 開発者ガイド
EB CLI 2 コマンド
Updated AWS Credential file at "C:\Users\YourName\.elasticbeanstalk\aws_creden
tial_file".
API Version 2010-12-01
482
AWS Elastic Beanstalk 開発者ガイド
EB CLI 2 コマンド
ログ
Abstract
eb コマンドラインインターフェイスを使用して環境のログを返します。
Important
EB CLI およびそのドキュメントのこのバージョンは、バージョン 3 に置き換えられました。
バージョン 3 には異なるコマンドがあり、バージョン 2 と後方互換性がありません。新しい
バージョンの詳細については、「Elastic Beanstalk コマンドラインインターフェイス(EB
CLI) (p. 403)」を参照してください。
説明
環境のログを返します。関連するログは、コンテナタイプに応じて異なります。
構文
eb logs
オプション
名前
説明
一般的なオプション
詳細については、「eb の一般的なオプション (p. 471)」 いいえ
を参照してください。
出力
成功すると、コマンドは環境ログを返します。
API Version 2010-12-01
483
必須
AWS Elastic Beanstalk 開発者ガイド
EB CLI 2 コマンド
push
Abstract
eb コマンドラインインターフェイスを使用して Git リポジトリから現在のアプリケーションをデプロイします。
Important
EB CLI およびそのドキュメントのこのバージョンは、バージョン 3 に置き換えられました。
バージョン 3 には異なるコマンドがあり、バージョン 2 と後方互換性がありません。新しい
バージョンの詳細については、「Elastic Beanstalk コマンドラインインターフェイス(EB
CLI) (p. 403)」を参照してください。
説明
Git リポジトリから AWS Elastic Beanstalk 環境に現在のアプリケーションをデプロイします。
Note
• eb push オペレーションは、リモートリポジトリ(ある場合)にプッシュしません。リモー
トリポジトリを更新するには、標準の git push または同様のコマンドを使用します。
• -e または --environment-name オプションは、eb push に対して有効ではありません。
(eb init のデフォルトの設定または現在チェックアウトされている Git ブランチに基づい
て)現在の環境から他の環境にプッシュするには、eb push を実行する前に eb branch を
実行します。
構文
eb push
オプション
名前
説明
一般的なオプション
詳細については、「eb の一般的なオプション (p. 471)」 いいえ
を参照してください。
出力
成功すると、コマンドは push オペレーションのステータスを返します。
例
以下の例は、現在のアプリケーションをデプロイします。
PROMPT> eb push
Pushing to environment: MyApp-env
remote:
To https://AKI
API Version 2010-12-01
484
必須
AWS Elastic Beanstalk 開発者ガイド
EB CLI 2 コマンド
AXXXXXXXX5ZB7Q:2013092XXXXXXXXXXXXf502a780888b0a49899798aa6cbeaef690c0b
525d0f090c7338cbead589bf14f@git.elasticbeanstalk.us-west-2.amazonaws.com/v1/re
pos/417
0705XXXXXXXX23632303133/commitid/336264353663396262306463326563663763393EX
AMPLExxxxx5
3165643137343939EXAMPLExx036/environment/417070536570743236323031332d6d6173EX
AMPLEx65
2013-09-26 17:35:37
INFO
Adding instance 'i-5EXAMPLE' to your environment.
2013-09-26 17:36:12
INFO
Deploying new version to instance(s).
2013-09-26 17:36:20
INFO
New application version was deployed to running
EC2 instances.
2013-09-26 17:36:20
INFO
Environment update completed successfully.
Update of environment "MyApp-env" has completed.
API Version 2010-12-01
485
AWS Elastic Beanstalk 開発者ガイド
EB CLI 2 コマンド
start
Abstract
eb コマンドラインインターフェイスを使用して、現在のアプリケーションを作成し、デプロイします。
Important
EB CLI およびそのドキュメントのこのバージョンは、バージョン 3 に置き換えられました。
バージョン 3 には異なるコマンドがあり、バージョン 2 と後方互換性がありません。新しい
バージョンの詳細については、「Elastic Beanstalk コマンドラインインターフェイス(EB
CLI) (p. 403)」を参照してください。
説明
現在のアプリケーションを作成し、指定した環境にデプロイします。eb start を使用してサンプルア
プリケーションをデプロイする方法の説明を含むチュートリアルについては、「eb 入門 (p. 462)」を参
照してください。
構文
eb start
オプション
名前
説明
必須
-e
現在のアプリケーションを作成または開始する環境。
いいえ
または
型: 文字列
--environment-name
ENVIRONMENT_NAME
デフォルト: 現在の設定
一般的なオプション
詳細については、「eb の一般的なオプション (p. 471)」 いいえ
を参照してください。
出力
成功すると、コマンドは start オペレーションのステータスを返します。起動時に問題があった場合は、
イベント (p. 477) オペレーションを使用して詳細を取得できます。
例1
以下の例は環境を開始します。
PROMPT> start
Starting application "MyApp".
Waiting for environment "MyApp-env" to launch.
2014-05-13 07:25:33 INFO createEnvironment is starting.
2014-05-13 07:25:39 INFO Using elasticbeanstalk-us-west-2-8EXAMPLE3 as Amazon
S3 storage bucket for environment data.
API Version 2010-12-01
486
AWS Elastic Beanstalk 開発者ガイド
EB CLI 2 コマンド
2014-05-13 07:26:07 INFO Created EIP: xx.xx.xxx.xx
2014-05-13 07:26:09 INFO Created security group named: awseb-e-vEXAMPLErp-stackAWSEBSecurityGroup-1GCEXAMPLEG0
2014-05-13 07:26:17 INFO Creating RDS database named: aavcEXAMPLE5y. This may
take a few minutes.
2014-05-13 07:32:36 INFO Created RDS database named: aavcEXAMPLE5y
2014-05-13 07:34:08 INFO Waiting for EC2 instances to launch. This may take a
few minutes.
2014-05-13 07:36:24 INFO Application available at MyApp-env-z4vsuuxh36.elastic
beanstalk.com.
2014-05-13 07:36:24 INFO Successfully launched environment: MyApp-env
Application is available at "MyApp-env-z4EXAMPLE6.elasticbeanstalk.com"
例2
以下の例は MyApp-test-env という環境で現在のアプリケーションを開始します。
PROMPT> start -e MyApp-test-env
Starting application "MyApp".
Waiting for environment "MyApp-test-env" to launch.
2014-05-13 07:25:33 INFO createEnvironment is starting.
2014-05-13 07:25:39 INFO Using elasticbeanstalk-us-west-2-8EXAMPLE3 as Amazon
S3 storage bucket for environment data.
2014-05-13 07:26:07 INFO Created EIP: xx.xx.xxx.xx
2014-05-13 07:26:09 INFO Created security group named: awseb-e-vEXAMPLErp-stackAWSEBSecurityGroup-1GCEXAMPLEG0
2014-05-13 07:26:17 INFO Creating RDS database named: aavcEXAMPLE5y. This may
take a few minutes.
2014-05-13 07:32:36 INFO Created RDS database named: aavcEXAMPLE5y
2014-05-13 07:34:08 INFO Waiting for EC2 instances to launch. This may take a
few minutes.
2014-05-13 07:36:24 INFO Application available at MyApp-test-envz4vsuuxh36.
elasticbeanstalk.com.
2014-05-13 07:36:24 INFO Successfully launched environment: MyApp-test-env
Application is available at "MyApp-test-env-z4EXAMPLE6.elasticbeanstalk.com"
API Version 2010-12-01
487
AWS Elastic Beanstalk 開発者ガイド
EB CLI 2 コマンド
status
Abstract
eb コマンドラインインターフェイスを使用して、現在のアプリケーションのステータスを表示します。
Important
EB CLI およびそのドキュメントのこのバージョンは、バージョン 3 に置き換えられました。
バージョン 3 には異なるコマンドがあり、バージョン 2 と後方互換性がありません。新しい
バージョンの詳細については、「Elastic Beanstalk コマンドラインインターフェイス(EB
CLI) (p. 403)」を参照してください。
説明
指定した環境のステータスを表示します。eb status を使用して環境のステータスを表示する方法の
説明を含むチュートリアルについては、「eb 入門 (p. 462)」を参照してください。
構文
eb status
オプション
status では --verbose オプションを使用できます。
名前
説明
必須
-e
ステータスを表示する対象の環境。
いいえ
または
型: 文字列
--environment-name
ENVIRONMENT_NAME
デフォルト: 現在の設定
一般的なオプション
詳細については、「eb の一般的なオプション (p. 471)」 いいえ
を参照してください。
出力
成功すると、コマンドは環境のステータスを返します。
例1
次のリクエストの例は、環境のステータスを返します。
PROMPT> eb status --verbose
Retrieving status of environment "MyNodeApp-env".
URL
: MyNodeApp-env-tnEXAMPLEcf.elasticbeanstalk.com
Status : Ready
Health : Green
Environment Name: MyNodeApp-env
Environment ID : e-vmEXAMPLEp
API Version 2010-12-01
488
AWS Elastic Beanstalk 開発者ガイド
EB CLI 2 コマンド
Environment Tier: WebServer::Standard::1.0
Solution Stack : 64bit Amazon Linux 2014.02 running Node.js
Version Label : Sample Application
Date Created : 2014-05-14 07:25:35
Date Updated : 2014-05-14 07:36:24
Description :
RDS Database: AWSEBRDSDatabase | aavcEXAMPLEd5y.clak1.us-west-2.rds.amazon
aws.com:3306
Database Engine: mysql 5.5.33
Allocated Storage: 5
Instance Class: db.t1.micro
Multi AZ: False
Master Username: ebroot
Creation Time: 2014-05-15 07:29:39
DB Instance Status: available
例2
次のリクエストの例は、MyNodeApp-test-env という環境の MyNodeApp という名前のアプリケーショ
ンのステータスを返します。
PROMPT> eb status -e MyNodeApp-test-env -a MyNodeApp
Retrieving status of environment "MyNodeApp-test-env".
URL : MyNodeApp-test-env-tnEXAMPLEcf.elasticbeanstalk.com
Status : Ready
Health : Green
RDS Database: AWSEBRDSDatabase | aavcEXAMPLEd5y.clak1.us-west-2.rds.amazon
aws.com:3306
API Version 2010-12-01
489
AWS Elastic Beanstalk 開発者ガイド
EB CLI 2 コマンド
stop
Abstract
eb コマンドラインインターフェイスを使用して環境を終了します。
Important
EB CLI およびそのドキュメントのこのバージョンは、バージョン 3 に置き換えられました。
バージョン 3 には異なるコマンドがあり、バージョン 2 と後方互換性がありません。新しい
バージョンの詳細については、「Elastic Beanstalk コマンドラインインターフェイス(EB
CLI) (p. 403)」を参照してください。
説明
環境を終了します。eb stop を使用して環境を終了する方法の説明を含むチュートリアルについては、
「eb 入門 (p. 462)」を参照してください。
Note
stop オペレーションは、アプリケーションではなく、環境に適用されます。アプリケーショ
ンをその環境と共に削除するには、eb delete を使用します。
構文
eb stop
オプション
名前
説明
必須
-e
終了する環境。この環境には、現在のアプリケーション
が含まれている必要があります。現在作業しているリポ
ジトリにあるアプリケーション以外のアプリケーション
を指定することはできません。
いいえ
または
--environment-name
ENVIRONMENT_NAME
型: 文字列
デフォルト: 現在の設定
一般的なオプション
詳細については、「eb の一般的なオプション (p. 471)」 いいえ
を参照してください。
出力
成功すると、コマンドは stop オペレーションのステータスを返します。
例1
次のリクエストの例は環境を終了します。
API Version 2010-12-01
490
AWS Elastic Beanstalk 開発者ガイド
EB CLI 2 コマンド
PROMPT> eb stop
If you terminate your environment, your RDS DB Instance will be deleted and you
will lose your data.
Terminate environment? [y/n]: y
Stopping environment "MyApp-env". This may take a few minutes.
2014-05-13 07:18:10 INFO terminateEnvironment is starting.
2014-05-13 07:18:17 INFO Waiting for EC2 instances to terminate. This may take
a few minutes.
2014-05-13 07:19:43 INFO Deleted EIP: xxx.xxx.xxx.xx
2014-05-13 07:19:43 INFO Deleted security group named: awseb-e-zEXAMPLEng-stackAWSEBSecurityGroup-MEEXAMPLENHQ
2014-05-13 07:19:51 INFO Deleting SNS topic for environment MyApp-env.
2014-05-13 07:19:52 INFO terminateEnvironment completed successfully.
Stop of environment "MyApp-env" has completed.
例2
次のリクエストの例は MyApp-test-env という名前の環境を終了します。
PROMPT> eb stop -e MyApp-test-env
If you terminate your environment, your RDS DB Instance will be deleted and you
will lose your data.
Terminate environment? [y/n]: y
Stopping environment "MyApp-test-env". This may take a few minutes.
2014-05-15 17:27:09 INFO terminateEnvironment is starting.
2014-05-15 17:27:16 INFO Waiting for EC2 instances to terminate. This
may take a few minutes.
2014-05-15 17:27:42 INFO Deleted EIP: xxx.xxx.xxx.xx
2014-05-15 17:27:42 INFO Deleted security group named: awseb-e-zEXAMPLEngstackAWSEBSecurityGroup-MEEXAMPLENHQ
2014-05-15 17:34:50 INFO Deleting SNS topic for environment MyApp-testenv.
2014-05-15 17:34:51 INFO terminateEnvironment completed successfully.
2013-05-15 17:29:55
INFO
Deleted Auto Scaling group named: awseb-emqmp6mmcpk-stack-AWSEBAutoScalingGroup-QALO012HZJVJ
2013-05-15 17:29:56
INFO
Deleted Auto Scaling launch configuration named:
awseb-e-mqmp6mmcpk-stack-AWSEBAutoScalingLaunchConfiguration-1DBGPQ99YFX08
2013-05-15 17:34:11
INFO
Deleted RDS database named: aauel5gap2gqb4
2013-05-15 17:34:16
INFO
Deleted security group named: awseb-e-mqmp6mmcpkstack-AWSEBSecurityGroup-1LDYFT0256P0B
2013-05-15 17:34:17
INFO
Deleted load balancer named: awseb-e-m-AWSEBLoaCT74SPXN541T
2013-05-15 17:34:29
INFO
Deleting SNS topic for environment MyOtherAppenv.
2013-05-15 17:34:30
INFO
terminateEnvironment completed successfully.
Stop of environment "MyApp-test-env" has completed.
API Version 2010-12-01
491
AWS Elastic Beanstalk 開発者ガイド
EB CLI 2 コマンド
の更新
Abstract
eb コマンドラインインターフェイスを使用して環境を更新します。
Important
EB CLI およびそのドキュメントのこのバージョンは、バージョン 3 に置き換えられました。
バージョン 3 には異なるコマンドがあり、バージョン 2 と後方互換性がありません。新しい
バージョンの詳細については、「Elastic Beanstalk コマンドラインインターフェイス(EB
CLI) (p. 403)」を参照してください。
説明
.elasticbeanstalk/optionsettings を読み取って、指定した環境を更新します
(.elasticbeanstalk/optionsettings の設定値は、.ebextensions/*.conf で指定されている
同じ設定に対する値よりも優先されます(これらの両方で該当する設定が指定されている場合))。こ
のオペレーションは、(init や branch などで)設定を変更した後で使用します。
構文
eb update
オプション
名前
説明
必須
-e
更新する対象の環境。
いいえ
または
型: 文字列
--environment-name
ENVIRONMENT_NAME
デフォルト: 現在の設定
一般的なオプション
詳細については、「eb の一般的なオプション (p. 471)」 いいえ
を参照してください。
出力
成功すると、コマンドは update オペレーションのステータスを返します。
例
次のリクエストの例は環境を更新します。
PROMPT> eb update
Update environment? [y/n]: y
Updating environment "MyApp-env". This may take a few minutes.
2014-05-15 17:10:34 INFO Updating environment MyApp-env's configuration
settings.
2014-05-15 17:11:12 INFO Successfully deployed new configuration to en
API Version 2010-12-01
492
AWS Elastic Beanstalk 開発者ガイド
EB API CLI(廃止)
vironment.
2014-05-15 17:11:12 INFO Environment update completed successfully.
Update of environment "MyApp-env" has completed.
Elastic Beanstalk API コマンドラインインターフェ
イス(廃止)
Abstract
API コマンドラインを使用して、Elastic Beanstalk にアプリケーションを作成し、デプロイすることができます。
API コマンドラインインターフェイスの詳細なリファレンスを次に示します。
Important
このツール、Elastic Beanstalk API CLI、およびそのドキュメントは、AWS CLI で置き換え
られました。Elastic Beanstalk での AWS CLI の使用の詳細については、「Elastic Beanstalk
コマンドラインインターフェイス(EB CLI) (p. 403)」を参照してください。
トピック
• 準備作業 (p. 493)
• 一般的なオプション (p. 496)
• 運用 (p. 497)
コマンドラインインを使用して、アプリケーションを作成し、Elastic Beanstalk にデプロイすることが
できます。このセクションには、API コマンドラインインインターフェイスの詳細なリファレンスが含
まれます。eb または EB を使用すると、使用するコマンドラインインのオペレーションを理解してい
なくても、アプリケーションを簡単にデプロイできます。eb および EB は Elastic Beanstalk の対話型
のコマンドラインインターフェイスツールであり、アプリケーションのデプロイに必要な質問を表示し
ます。詳細については、「EB CLI による Elastic Beanstalk 環境の管理 (p. 413)」を参照してください。
ここでは、API コマンドラインインインターフェイスと一般的なオプションのセットアップ方法につい
て説明します。詳細なリファレンス一覧については、「運用 (p. 497)」を参照してください。
準備作業
Abstract
AWS マネジメントコンソールまたは API を使用しないで、コマンドラインインターフェイス(CLI)ツールを実行
して Elastic Beanstalk の機能にアクセスするための前提条件。
Important
このツール、Elastic Beanstalk API CLI、およびそのドキュメントは、AWS CLI で置き換え
られました。Elastic Beanstalk での AWS CLI の使用の詳細については、「Elastic Beanstalk
コマンドラインインターフェイス(EB CLI) (p. 403)」を参照してください。
API Version 2010-12-01
493
AWS Elastic Beanstalk 開発者ガイド
準備作業
Elastic Beanstalk には、AWS マネジメントコンソールも API も使用せずに Elastic Beanstalk の機能に
アクセスできるコマンドラインインターフェイス(CLI)が用意されています。このセクションでは、
CLI ツール(またはコマンドラインツール)を実行するための前提条件、ツールを入手できる場所、
ツールの設定方法と環境について説明します。また、このセクションにはツール使用の一般的な例も含
まれています。
前提条件
この文書では、Linux/UNIX または Windows 環境での作業が可能であることを想定しています。Elastic
Beanstalk コマンドラインインターフェイスは、Linux と UNIX のコマンド環境に似た Mac OS X でも
正しく機能します。ただし、このガイドには、Mac OS X 固有の指示は含まれていません。
慣例として、すべてのコマンドラインテキストには、一般的な PROMPT> コマンドラインプロンプト
が前に付けられています。マシンの実際のコマンドラインプロンプトは、異なっている可能性がありま
す。また、Linux/UNIX 固有のコマンドを示すには、$ 、Windows 固有のコマンドを示すには、C:\>
を使用します。コマンドからの出力例は、その直後にプレフィックスなしで表示されています。
このガイドで使用されているコマンドラインツールを実行するには、Ruby(バージョン 1.8.7+ または
Ruby バージョン 1.9.2+)および Python バージョン 2.7 が必要です。Linux/UNIX と Windows を含め
各種プラットフォーム用の Ruby クライアントは、http://www.ruby-lang.org/en/ から表示してダウン
ロードすることができます。Python は python.org で入手できます。
Note
システムバージョンが 2.7 以前の Linux で Linux を使用している場合、ディストリビューショ
ンのパッケージマネージャを使用して Python 2.7 をインストールし、eb/linux/python2.7/eb
の eb スクリプトを変更して、Python 2.7 実行ファイルを参照します。
#!/usr/bin/env python2.7
さらに、pip とともに boto モジュールをインストールする必要があります。
$ sudo /usr/bin/easy_install-2.7 pip
$ sudo pip install boto
コマンドラインツールを入手する
コマンドラインツールは、AWS Sample Code & Libraries ウェブサイトで、.zip ファイルとして入手で
きます。これらのツールは、Ruby で記述され、Windows 2000、Windows XP、Windows Vista、Windows
7、Linux/UNIX、Mac OS X のシェルスクリプトが含まれています。.zip ファイルは自己完結方式でイ
ンストールの必要はありません。.zip ファイルをダウンロードして、ローカルマシンのディレクトリに
解凍してください。これらのツールは api ディレクトリにあります。
コマンドラインインターフェイスの認証情報を提供する
コマンドラインインターフェイスでは、アクセスキー ID とシークレットアクセスキーが必要です。ア
クセスキー(アクセスキー ID とシークレットアクセスキー)を取得するには、「セキュリティ認証情
報の取得方法は?」(AWS General Reference)を参照してください。
アクセスキー ID とシークレットアクセスキーが含まれたファイルを作成する必要があります。ファイ
ルの内容は以下のようになります。
API Version 2010-12-01
494
AWS Elastic Beanstalk 開発者ガイド
準備作業
AWSAccessKeyId=Write your AWS access ID
AWSSecretKey=Write your AWS secret key
Important
UNIX では、アクセス許可を認証情報ファイルの所有者に制限します。
$ chmod 600 <the file created above>
認証情報ファイルを設定したら、Elastic Beanstalk CLI ツールで情報が検索されるように
AWS_CREDENTIAL_FILE 環境変数を作成する必要があります。
AWS_CREDENTIAL_FILE 環境変数の設定方法
•
次のコマンドを使用して、環境変数を設定します。
Linux および UNIX の場合
Windows の場合
$ export AWS_CREDENTIAL_FILE=<the
file created above>
C:\> set AWS_CREDENTIAL_FILE=<the
file created above>
サービスエンドポイント URL の設定
AWS Elastic Beanstalk では、デフォルトで US East (N. Virginia) リージョン(us-east-1)が使用され、
サービスエンドポイント URL は elasticbeanstalk.us-east-1.amazonaws.com です。このセクションで
は、サービスエンドポイント URL を設定することで、別のリージョンを指定する方法を説明します。
この製品のリージョンについては、『Amazon Web Services General Reference』のリージョンとエン
ドポイントのページを参照してください。
サービスエンドポイント URL を設定するには
•
次のコマンドを使用して、環境変数を設定します。
Linux および UNIX の場合
Windows の場合
$ export ELASTICBEANSTALK_URL=<service_endpoint>
C:\> set ELASTICBEANSTALK_URL=<service_endpoint>
たとえば、Linux でエンドポイントを us-west-2 に設定するには次のように入力します。
export ELASTICBEANSTALK_URL="https://elasticbeanstalk.us-west-2.amazonaws.com"
たとえば、Windows でエンドポイントを us-west-2 に設定するには次のように入力します。
set ELASTICBEANSTALK_URL=https://elasticbeanstalk.us-west-2.amazonaws.com
API Version 2010-12-01
495
AWS Elastic Beanstalk 開発者ガイド
一般的なオプション
一般的なオプション
Abstract
API コマンドラインオペレーションは、オプションパラメータの次のセットを受け付けます。
Important
このツール、Elastic Beanstalk API CLI、およびそのドキュメントは、AWS CLI で置き換え
られました。Elastic Beanstalk での AWS CLI の使用の詳細については、「Elastic Beanstalk
コマンドラインインターフェイス(EB CLI) (p. 403)」を参照してください。
コマンドラインインオペレーションでは、次の表に記載されているオプションのパラメータを使用でき
ます。
オプション
説明
--help
-h
コマンドのヘルプテキストを表示します。help commandname を使用
することもできます。このオプションは eb と元のコマンドラインイン
インターフェイスに適用されます。
デフォルト: オフ
--show-json
-j
未加工の JSON 応答を表示します。このオプションは元のコマンドラ
インインインターフェイスにのみ適用されます。
デフォルト: オフ
API Version 2010-12-01
496
AWS Elastic Beanstalk 開発者ガイド
運用
運用
Abstract
Elastic Beanstalk の API コマンドラインインターフェイスは、AWS マネジメントコンソールまたは API を使用せ
ずに AWS Elastic Beanstalk の機能にアクセスするための複数のオペレーションを提供します。.
Important
このツール、Elastic Beanstalk API CLI、およびそのドキュメントは、AWS CLI で置き換え
られました。Elastic Beanstalk での AWS CLI の使用の詳細については、「Elastic Beanstalk
コマンドラインインターフェイス(EB CLI) (p. 403)」を参照してください。
トピック
• elastic-beanstalk-check-dns-availability (p. 498)
• elastic-beanstalk-create-application (p. 499)
• elastic-beanstalk-create-application-version (p. 501)
• elastic-beanstalk-create-configuration-template (p. 503)
• elastic-beanstalk-create-environment (p. 506)
• elastic-beanstalk-create-storage-location (p. 510)
• elastic-beanstalk-delete-application (p. 511)
• elastic-beanstalk-delete-application-version (p. 512)
• elastic-beanstalk-delete-configuration-template (p. 514)
• elastic-beanstalk-delete-environment-configuration (p. 515)
• elastic-beanstalk-describe-application-versions (p. 516)
• elastic-beanstalk-describe-applications (p. 518)
• elastic-beanstalk-describe-configuration-options (p. 519)
• elastic-beanstalk-describe-configuration-settings (p. 521)
• elastic-beanstalk-describe-environment-resources (p. 523)
• elastic-beanstalk-describe-environments (p. 524)
• elastic-beanstalk-describe-events (p. 526)
• elastic-beanstalk-list-available-solution-stacks (p. 528)
• elastic-beanstalk-rebuild-environment (p. 529)
• elastic-beanstalk-request-environment-info (p. 530)
• elastic-beanstalk-restart-app-server (p. 531)
• elastic-beanstalk-retrieve-environment-info (p. 532)
• elastic-beanstalk-swap-environment-cnames (p. 534)
• elastic-beanstalk-terminate-environment (p. 535)
• elastic-beanstalk-update-application (p. 537)
• elastic-beanstalk-update-application-version (p. 539)
• elastic-beanstalk-update-configuration-template (p. 541)
• elastic-beanstalk-update-environment (p. 544)
• elastic-beanstalk-validate-configuration-settings (p. 547)
API Version 2010-12-01
497
AWS Elastic Beanstalk 開発者ガイド
運用
elastic-beanstalk-check-dns-availability
Abstract
elastic-beanstalk-check-dns-availability コマンドラインオペレーションは、指定した CNAME が使用可能かどうか
を確認します。
説明
指定した CNAME を使用できるかどうかを確認します。
構文
elastic-beanstalk-check-dns-availability -c [CNAMEPrefix]
オプション
名前
説明
必須
-c
--cname-prefix CNAMEPrefix
確認する CNAME の名前。
型: String
デフォルト: なし
はい
出力
次の情報を含むテーブルが返されます。
• Available – CNAME を使用できる場合はtrue、使用できない場合は false が表示されます。
• FullyQualifiedCNAME – CNAME を使用できる場合は完全修飾名の CNAME、使用できない場合は N/A
が表示されます。
例
CNAME を使用できるかどうかを確認する
この例は、CNAME プレフィックスの「myapp23」を使用できるかどうかを確認する方法を示します。
PROMPT> elastic-beanstalk-check-dns-availability -c myapp23
API Version 2010-12-01
498
AWS Elastic Beanstalk 開発者ガイド
運用
elastic-beanstalk-create-application
Abstract
elastic-beanstalk-create-application コマンドラインオペレーションは、default という名前の 1 つの設定テンプ
レートがあり、アプリケーションバージョンのないアプリケーションを作成します。
説明
default という 1 つの設定テンプレートがあり、アプリケーションバージョンがないアプリケーショ
ンを作成します。
Note
この default 設定テンプレートは、Tomcat 6 アプリケーションコンテナを実行している 32
ビットバージョンの Amazon Linux オペレーティングシステム用です。
構文
elastic-beanstalk-create-application -a [name] -d [desc]
オプション
名前
説明
必須
-a
--application-name name
アプリケーションの名前。
制限: この名前はアカウント内で一意にする必要
があります。指定した名前がすでに存在する場
合、InvalidParameterValue エラーが返され
ます。
型: String
デフォルト: なし
はい
-d
--description desc
アプリケーションの説明。
型: String
デフォルト: なし
いいえ
出力
次の情報を含むテーブルが返されます。
• ApplicationName – アプリケーションの名前。この名前のアプリケーションが見つからず、
AutoCreateApplication が false の場合、InvalidParameterValue エラーが返されます。
• ConfigurationTemplates – アプリケーションの作成に使用された設定テンプレートの一覧。
• DateCreated – アプリケーションが作成された日付。
• DateUpdated – アプリケーションが更新された日付。
• Description – アプリケーションの説明。
• Versions – アプリケーションのバージョン。
API Version 2010-12-01
499
AWS Elastic Beanstalk 開発者ガイド
運用
例
アプリケーションを作成する
この例は、アプリケーションを作成する方法を示します。
PROMPT> elastic-beanstalk-create-application -a MySampleApp -d "My description"
API Version 2010-12-01
500
AWS Elastic Beanstalk 開発者ガイド
運用
elastic-beanstalk-create-application-version
Abstract
elastic-beanstalk-create-application-version コマンドラインオペレーションは、指定したアプリケーションのアプ
リケーションバージョンを作成します。
説明
指定したアプリケーションのアプリケーションバージョンを作成します。
Note
指定した Amazon S3 バケットとキーの場所を使用してアプリケーションバージョンを作成し
た後は、その Amazon S3 の場所を変更できません。Amazon S3 の場所を変更した場合、その
アプリケーションバージョンから環境を起動しようとすると、例外を受け取ります。
構文
elastic-beanstalk-create-application-version -a [name] -l [label] -c -d [desc]
-s [location]
オプション
名前
説明
必須
-a
--application-name name
アプリケーションの名前。この名前のアプリケー はい
ションが見つからず、AutoCreateApplication
が false の場合、InvalidParameterValue エ
ラーが返されます。
型: String
デフォルト: なし
長さの制限: 最小値は 1 です。最大値は 100 です。
-c
--auto-create
このバージョンの指定したアプリケーションが存 いいえ
在しない場合のシステムの動作を指定します。
• true: このリリースの指定したアプリケーショ
ンが存在しない場合は、自動的に作成します。
• false: このリリースの指定したアプリケーショ
ンが存在しない場合は、InvalidParameterValue をスローします。
型: Boolean
有効な値:true | false
デフォルト: false
-d
--description desc
バージョンの説明。
いいえ
型: String
デフォルト: なし
長さの制限: 最小値は 0 です。最大値は 200 です。
API Version 2010-12-01
501
AWS Elastic Beanstalk 開発者ガイド
運用
名前
説明
必須
-l
--version-label label
このバージョンを識別するラベル。
はい
型: String
デフォルト: なし
制限: アプリケーションごとに一意にする必要が
あります。指定したアプリケーションに、このラ
ベルのアプリケーションバージョンがすでに存在
する場合、InvalidParameterValue エラーが
返されます。
長さの制限: 最小値は 1 です。最大値は 100 です。
-s
--source-location location
このバージョンのソースバンドルの場所を識別す いいえ
る Amazon S3 バケットの名前とキー。bucketname/key という形式です。
Amazon S3 の場所に見つかったデータが、ソー
スバンドルに許可されている最大サイズを超えて
いる場合、InvalidParameterCombination エ
ラーが返されます。
型: String
デフォルト: 指定しない場合、サンプルアプリケー
ションが使用されます。一部が指定されている場
合(例えば、バケットを指定してキーは指定しな
いなど)、または指定した Amazon S3 の場所に
データが見つからなかった場合、InvalidParameterCombination エラーが返されます。
出力
次の情報を含むテーブルが返されます。
•
•
•
•
•
•
ApplicationName – アプリケーションの名前。
DateCreated – アプリケーションが作成された日付。
DateUpdated – アプリケーションが更新された日付。
Description – アプリケーションの説明。
SourceBundle – このバージョンのソースバンドルが見つかった場所。
VersionLabel – 関連付けられたアプリケーションのバージョンを一意に識別するラベル。
例
ソースの場所からバージョンを作成する
この例は、ソースの場所からバージョンを作成する方法を示します。
PROMPT> elastic-beanstalk-create-application-version -a MySampleApp -d "My
version" -l "TestVersion 1" -s amazonaws.com/sample.war
API Version 2010-12-01
502
AWS Elastic Beanstalk 開発者ガイド
運用
elastic-beanstalk-create-configuration-template
Abstract
elastic-beanstalk-create-configuration-template コマンドラインオペレーションは、設定テンプレートを作成しま
す。
説明
設定テンプレートを作成します。テンプレートは特定のアプリケーションと関連付けられ、異なるバー
ジョンのアプリケーションを同じ設定でデプロイするために使用されます。
構文
elastic-beanstalk-create-configuration-template -a [name] -t [name] -E [id] -d
[desc] -s [stack] -f [filename] -A [name] -T [name]
オプション
名前
説明
-a
--application-name name
この設定テンプレートに関連付けるアプリケー
はい
ションの名前。この名前のアプリケーションが見
つからない場合、InvalidParameterValue エ
ラーが返されます。
型: String
デフォルト: なし
-t
--template-name name
設定テンプレートの名前。この名前の設定テンプ はい
レートが存在しない場合、InvalidParameterValue エラーが返されます。
型: String
デフォルト: なし
制限: このアプリケーションで一意にする必要が
あります。
長さの制限: 最小値は 1 です。最大値は 100 です。
-E
--environment-id id
設定テンプレートの環境 ID。
型: String
デフォルト: なし
いいえ
-d
--description desc
設定の説明。
型: String
デフォルト: なし
いいえ
API Version 2010-12-01
503
必須
AWS Elastic Beanstalk 開発者ガイド
運用
名前
説明
必須
-s
--solution-stack stack
この設定で使用されるソリューションスタックの いいえ
名前。ソリューションスタックでは、設定テンプ
レートのオペレーティングシステム、アーキテク
チャ、アプリケーションサーバーを指定します。
ソリューションスタックによって、設定オプショ
ン、使用できる値、デフォルト値が決まります。
elastic-beanstalk-list-available-solution-stacks を使用して、使用できるソリュー
ションスタックの一覧を取得します。
ソリューションスタック名またはソース設定パラ
メータを指定する必要があります。指定しない場
合、InvalidParameterValue エラーが返され
ます。
ソリューションスタック名が指定されておらず、
ソース設定パラメータが指定されている場合、
ソース設定テンプレートと同じソリューションス
タックが使用されます。
型: String
長さの制限: 最小値は 0 です。最大値は 100 です。
-f
--options-file filename
設定テンプレートの設定オプションを定義した一 いいえ
連のキーと値のペアを含む JSON ファイルの名
前。ソリューションスタックまたはソース設定テ
ンプレートから取得した値は、新しい値で上書き
されます。
タイプ: 文字列
-A
--source-application-name
name
この設定テンプレートのソースとして使用するア いいえ
プリケーションの名前。
型: String
デフォルト: なし
-T
--source-template-name name
この設定テンプレートのソースとして使用するテ いいえ
ンプレートの名前。
型: String
デフォルト: なし
出力
次の情報を含むテーブルが返されます。
• ApplicationName – 設定セットと関連付けられているアプリケーションの名前。
• DateCreated – この設定セットが作成された日付(UTC 時間)。
• DateUpdated – この設定セットが最後に変更された日付(UTC 時間)。
• DeploymentStatus – この設定セットが環境に関連付けられている場合、デプロイステータスパラメー
タは、この設定セットのデプロイステータスを示します。
• null: この設定は実行中の環境と関連付けられています。
• pending: これは、関連付けられた環境にデプロイされておらず、デプロイの処理中であるドラフ
ト設定です。
• deployed: これは、関連付けられた実行中の環境に現在デプロイされている設定です。
API Version 2010-12-01
504
AWS Elastic Beanstalk 開発者ガイド
運用
• failed: これは、正常にデプロイされなかったドラフト設定です。
• Description – 設定セットの説明。
• EnvironmentName – null ではない場合、この設定セットの環境の名前。
• OptionSettings – この設定セットの設定オプションと値の一覧。
• SolutionStackName – この設定セットが使用するソリューションスタックの名前。
• TemplateNamel – null ではない場合、この設定セットの設定テンプレートの名前。
例
基本的な設定テンプレートを作成する
この例は、基本的な設定テンプレートを作成する方法を示します。設定の一覧については、「設定オプ
ション (p. 101)」を参照してください。
PROMPT> elastic-beanstalk-create-configuration-template -a MySampleApp -t mycon
figtemplate -E e-eup272zdrw
関連オペレーション
• elastic-beanstalk-describe-configuration-options (p. 519)
• elastic-beanstalk-describe-configuration-settings (p. 521)
• elastic-beanstalk-list-available-solution-stacks (p. 528)
API Version 2010-12-01
505
AWS Elastic Beanstalk 開発者ガイド
運用
elastic-beanstalk-create-environment
Abstract
elastic-beanstalk-create-environment コマンドラインオペレーションは、指定の設定を使用して、指定したアプリ
ケーションの環境を起動します。
説明
指定した設定を使用して、指定したアプリケーションの環境を起動します。
構文
elastic-beanstalk-create-environment -a [name] -l [label] -e [name] [-t [name]
| -s [stack]] -c [prefix] -d [desc] -f[filename] -F [filename]
オプション
名前
説明
-a
--application-name name
デプロイするバージョンを含むアプリケーション はい
の名前。この名前のアプリケーションが見つから
ない場合、InvalidParameterValue エラーが
返されます。
型: String
デフォルト: なし
長さの制限: 最小値は 1 です。最大値は 100 です。
-l
--version-label label
デプロイするアプリケーションバージョンの名
いいえ
前。
指定したアプリケーションにアプリケーション
バージョンが関連付けられていない場合、Elastic
Beanstalk UpdateEnvironment から InvalidParameterValue エラーが返されます。
デフォルト: 指定されていない場合、Elastic
Beanstalk はコンテナ内のサンプルアプリケーショ
ンを起動します。
型: String
デフォルト: なし
長さの制限: 最小値は 1 です。最大値は 100 です。
API Version 2010-12-01
506
必須
AWS Elastic Beanstalk 開発者ガイド
運用
名前
説明
-e
--environment-name name
デプロイ環境の一意の名前。アプリケーション
はい
URL で使用されます。
制限: 4~23 文字の長さにする必要があります。
名前には、英字、数字、ハイフンのみを使用でき
ます。ハイフンを先頭または末尾に付けることは
できません。この名前はアカウント内で一意にす
る必要があります。指定した名前がすでに存在す
る場合、InvalidParameterValue が返されま
す。
型: String
デフォルト: CNAME パラメータが指定されてい
ない場合、環境名が CNAME の一部に使用され、
表示されるアプリケーションの URL の一部にも
なります。
-t
--template-name name
デプロイで使用する設定テンプレートの名前。こ 条件付き
の名前の設定テンプレートが見つからない場合、
InvalidParameterValue エラーが返されます。
条件: このパラメータとソリューションスタック
名の両方ではなく、いずれかを指定する必要があ
ります。両方を指定すると、InvalidParameterValue エラーが返されます。いずれも指定しない
場合、MissingRequiredParameter が返されま
す。
型: String
デフォルト: なし
制限: このアプリケーションで一意にする必要が
あります。
-s
--solution-stack stack
設定名を指定する代わりのパラメータです。指定 条件付き
した場合、その設定値は、指定したソリューショ
ンスタックに関連付けられたデフォルト値に設定
されます。
条件: このパラメータと TemplateName の両方で
はなく、いずれかを指定する必要があります。両
方を指定すると、InvalidParameterCombination エラーが返されます。いずれも指定しない
場合、MissingRequiredParameter エラーが返
されます。
型: String
デフォルト: なし
-c
--cname-prefix prefix
指定した場合、環境は CNAME のプレフィックス いいえ
としてこの値の使用を試みます。指定しない場
合、環境は環境名を使用します。
型: String
デフォルト: なし
長さの制限: 最小値は 4 です。最大値は 23 です。
-d
--description desc
環境の説明。
型: String
デフォルト: なし
API Version 2010-12-01
507
必須
いいえ
AWS Elastic Beanstalk 開発者ガイド
運用
名前
説明
必須
-f
--options-file filename
この新しい環境の設定オプションを定義した一連 いいえ
のキーと値のペアを含む JSON ファイルの名前。
ソリューションスタックまたはソース設定テンプ
レートから取得した値は、この値で上書きされま
す。
タイプ: 文字列
-F
--options-to-remove-file
value
この新しい環境の設定から削除する設定オプショ いいえ
ンを含む JSON ファイルの名前。
型: String
デフォルト: なし
出力
次の情報を含むテーブルが返されます。
•
•
•
•
•
•
•
•
•
ApplicationName – この環境に関連付けられたアプリケーションの名前。
CNAME – この環境の CNAME の URL。
DateCreated – 環境が作成された日付。
DateUpdated – 環境が最後に更新された日付。
Description – 環境の説明。
EndpointURL – この環境の LoadBalancer の URL。
EnvironmentID – この環境の ID。
EnvironmentName – この環境の名前。
Health – 環境のヘルスステータスの説明。Elastic Beanstalk は実行中の環境のエラーレベルを示しま
す。
• Red: 環境が応答しないことを示します。1 つの環境について、3 個以上の連続するエラーが発生し
たときに表示されます。
• Yellow: 何らかの問題が発生していることを示します。1 つの環境について、2 個以上の連続する
エラーが発生したときに表示されます。
• Green: 環境が正常な状態で、完全に機能していることを示します。
• Gray: 新しい環境のデフォルトのヘルス。環境は完全に起動していないため、ヘルスチェックがか
開始されていないか、UpdateEnvironment または RestartEnvironment リクエスト中でヘル
スチェックが一時停止されています。
• Resources – この環境で使用されている AWS リソースの一覧。
• SolutionStackName – この環境にデプロイされているソリューションスタックの名前。
• Status – 環境の現在のオペレーションステータス。
• Launching: 環境は、初期デプロイのプロセス中です。
• Updating: 環境は、設定またはアプリケーションバージョンを更新するプロセス中です。
• Ready: 環境は、更新や終了などのアクションを実行できる状態です。
• Terminating: 環境はシャットダウンプロセス中です。
• Terminated: 環境は実行中ではありません。
• TemplateName – この環境の起動に元々使用されていた設定テンプレートの名前。
• VersionLabel – この環境にデプロイされているアプリケーションバージョン。
API Version 2010-12-01
508
AWS Elastic Beanstalk 開発者ガイド
運用
例
基本的な設定テンプレートを使用して環境を作成する
この例は、基本的な設定テンプレートを使用して環境を作成し、設定を編集する 1 つのファイルと、設
定を削除する 1 つのファイルという形式で渡します。設定の一覧については、「設定オプション (p. 101)」
を参照してください。
$ elastic-beanstalk-create-environment -a MySampleApp -t myconfigtemplate -e
MySampleAppEnv -f options.txt -F options_remove.txt
options.txt
[
{
"Namespace": "aws:autoscaling:asg",
"OptionName": "MinSize",
"Value": "2"
},
{
"Namespace": "aws:autoscaling:asg",
"OptionName": "MaxSize",
"Value": "3"
}
]
options_remove.txt
[
{
"Namespace": "aws:elasticbeanstalk:sns:topics",
"OptionName": "PARAM4"
}
]
API Version 2010-12-01
509
AWS Elastic Beanstalk 開発者ガイド
運用
elastic-beanstalk-create-storage-location
Abstract
elastic-beanstalk-create-storage-location コマンドラインオペレーションは、アカウントに Amazon S3 ストレージ
の場所を作成します。
説明
このアカウント用に Amazon S3 ストレージの場所を作成します。この場所は、ユーザーログファイル
の保存に使用されます。また、AWS マネジメントコンソールがアプリケーションバージョンをアップ
ロードするときに使用されます。Elastic Beanstalk を操作するためにこのバケットを作成する必要はあ
りません。
構文
elastic-beanstalk-create-storage-location
例
ストレージの場所を作成する
この例は、ストレージの場所を作成する方法を示します。
PROMPT> elastic-beanstalk-create-storage-location
このコマンドを使用すると、作成された Amazon S3 バケットの名前が出力されます。
API Version 2010-12-01
510
AWS Elastic Beanstalk 開発者ガイド
運用
elastic-beanstalk-delete-application
Abstract
elastic-beanstalk-delete-application コマンドラインオペレーションでは、指定したアプリケーションと、関連する
すべてのバージョンと設定を削除します。
説明
指定したアプリケーションと、すべての関連するバージョンと設定を削除します。
Note
実行中の環境があるアプリケーションは削除できません。
構文
elastic-beanstalk-delete-application -a [name] -f
オプション
名前
説明
-a
--application-name name
削除するアプリケーションの名前。
はい
型: String
デフォルト: なし
長さの制限: 最小値は 1 です。最大値は 100 です。
-f
--force-terminate-env
アプリケーションを削除する前に、実行中の環境 いいえ
がすべて削除されているかどうかを判断します。
型: Boolean
有効な値: true | false
デフォルト: false
出力
このコマンドを使用すると、Application deleted という文字列が返されます。
例
アプリケーションを削除する
この例は、アプリケーションを削除する方法を示します。
PROMPT> elastic-beanstalk-delete-application -a MySampleApp
API Version 2010-12-01
511
必須
AWS Elastic Beanstalk 開発者ガイド
運用
elastic-beanstalk-delete-application-version
Abstract
elastic-beanstalk-delete-application-version コマンドラインオペレーションは、指定したアプリケーションから指
定したバージョンを削除します。
説明
指定したアプリケーションから、指定したアプリケーションを削除します。
Note
実行中の環境に関連付けられているアプリケーションは削除できません。
構文
elastic-beanstalk-delete-application-version -a [name] -l [label] -d
オプション
名前
説明
必須
-a
--application-name name
リリースを削除するアプリケーションの名前。
型: String
デフォルト: なし
はい
-l
--version-label
削除するバージョンのラベル。
はい
型: String
デフォルト: なし
長さの制限: 最小値は 1 です。最大値は 100 です。
-d
--delete-source-bundle
関連付けられたソースバンドルを Amazon S3 か いいえ
ら削除するかどうかを指定します。
true: 作成の時点で指定されていた、関連付けら
れた Amazon S3 ソースバンドルを削除しようと
しました。
false: 作成の時点で指定されていた Amazon S3
ソースバンドルに対して、実行されているアク
ションがありません。
型: Boolean
有効な値:true | false
デフォルト: false
出力
このコマンドを使用すると、Application version deleted という文字列が返されます。
例
アプリケーションバージョンを削除する
この例は、アプリケーションバージョンを削除する方法を示します。
API Version 2010-12-01
512
AWS Elastic Beanstalk 開発者ガイド
運用
PROMPT> elastic-beanstalk-delete-application-version -a MySampleApp -l MyAppVer
sion
アプリケーションバージョンと Amazon S3 ソースバンドルを削除する
この例は、アプリケーションバージョンを削除する方法を示します。
PROMPT> elastic-beanstalk-delete-application-version -a MySampleApp -l MyAppVer
sion -d
API Version 2010-12-01
513
AWS Elastic Beanstalk 開発者ガイド
運用
elastic-beanstalk-delete-configuration-template
Abstract
elastic-beanstalk-delete-configuration-template コマンドラインオペレーションは、指定した設定テンプレートを削
除します。
説明
指定した設定テンプレートを削除します。
Note
設定テンプレートを使用して環境を起動すると、そのテンプレートのコピーが環境用に作成さ
れます。環境用のテンプレートのコピーは、実行中の環境に影響を与えることなく、削除また
は変更することができます。
構文
elastic-beanstalk-delete-configuration-template -a [name] -t [name]
オプション
名前
説明
必須
-a
--application-name name
設定テンプレートを削除するアプリケーションの はい
名前。
型: String
デフォルト: なし
長さの制限: 最小値は 1 です。最大値は 100 です。
-t
--template-name
削除する設定テンプレートの名前。
はい
型: String
デフォルト: なし
長さの制限: 最小値は 1 です。最大値は 100 です。
出力
このコマンドを使用すると、Configuration template deleted という文字列が返されます。
例
設定テンプレートを削除する
この例は、設定テンプレートを削除する方法を示します。
PROMPT> elastic-beanstalk-delete-configuration-template -a MySampleApp -t MyCon
figTemplate
API Version 2010-12-01
514
AWS Elastic Beanstalk 開発者ガイド
運用
elastic-beanstalk-delete-environment-configuration
Abstract
elastic-beanstalk-delete-environment-configuration コマンドラインオペレーションは、実行中の環境に関連付けら
れているドラフト設定を削除します。
説明
実行中に関連付けられているドラフト設定を削除します。
Note
設定の変更によって実行中の環境を更新すると、ドラフト設定セットが作成されます。更新が
進行中の場合、または更新が失敗した場合に、
elastic-beanstalk-describe-configuration-settings を使用してドラフト設定を取
得することができます。ドラフト設定のデプロイステータスは、デプロイが進行中か失敗した
かを示します。ドラフトの設定は、このアクションで削除するまで残ります。
構文
elastic-beanstalk-delete-environment-configuration -a [name] -e [name]
オプション
名前
説明
必須
-a
--application-name name
この環境が関連付けられたアプリケーションの名 はい
前。
型: String
デフォルト: なし
長さの制限: 最小値は 1 です。最大値は 100 です。
-e
--environment-name name
ドラフト設定を削除する環境の名前。
はい
型: String
デフォルト: なし
長さの制限: 最小値は 4 です。最大値は 23 です。
出力
このコマンドを使用すると、Environment configuration deleted という文字列が返されます。
例
設定テンプレートを削除する
この例は、設定テンプレートを削除する方法を示します。
PROMPT> elastic-beanstalk-delete-environment-configuration -a MySampleApp -e
MyEnvConfig
API Version 2010-12-01
515
AWS Elastic Beanstalk 開発者ガイド
運用
elastic-beanstalk-describe-application-versions
Abstract
elastic-beanstalk-describe-application-versions コマンドラインオペレーションは、既存のアプリケーションバー
ジョンに関する情報を返します。
説明
既存のアプリケーションバージョンに関する情報を返します。
構文
elastic-beanstalk-describe-application-versions -a [name] -l [labels [,label..]]
オプション
名前
説明
必須
-a
--application-name value
アプリケーションの名前。指定した場合、返され いいえ
る説明には、指定したアプリケーションに関連付
けられている説明のみを含むように制限されま
す。
型: String
デフォルト: なし
長さの制限: 最小値は 1 です。最大値は 100 です。
-l
--version-label labels
バージョンラベルのコンマ区切りの一覧。指定し いいえ
た場合、返される説明には、指定したバージョン
ラベルのアプリケーションの説明のみを含むよう
に制限されます。
型: String[]
デフォルト: なし
出力
次の情報を含むテーブルが返されます。
• ApplicationName – このリリースに関連付けられたアプリケーションの名前。
• DateCreated – アプリケーションが作成された日付。
• DateUpdated – アプリケーションバージョンが最後に更新された日付。
• Description – アプリケーションバージョンの説明。
• SourceBundle – このバージョンのソースバンドルが見つかった場所。
• VersionLabel – 関連付けられたアプリケーションのバージョンを一意に識別するラベル。
例
アプリケーションバージョンについて説明する
この例は、このアカウントのすべてのアプリケーションバージョンについて説明する方法を示します。
API Version 2010-12-01
516
AWS Elastic Beanstalk 開発者ガイド
運用
PROMPT> elastic-beanstalk-describe-application-versions
指定したアプリケーションのアプリケーションバージョンについて説明する
この例は、指定したアプリケーションのアプリケーションバージョンについて説明する方法を示しま
す。
PROMPT> elastic-beanstalk-describe-application-versions -a MyApplication
複数のアプリケーションバージョンについて説明する
この例は、指定した複数のアプリケーションバージョンについて説明する方法を示します。
PROMPT> elastic-beanstalk-describe-application-versions -l MyAppVersion1,
MyAppVersion2
API Version 2010-12-01
517
AWS Elastic Beanstalk 開発者ガイド
運用
elastic-beanstalk-describe-applications
Abstract
elastic-beanstalk-describe-applications コマンドラインオペレーションは、既存のアプリケーションに関する説明
を返します。
説明
説明と既存のアプリケーションを返します。
構文
elastic-beanstalk-describe-applications -a [names [,name..]]
オプション
名前
説明
必須
-a
--application-names name
1 つまたは複数のアプリケーションの名前。複数 いいえ
の場合はコンマで区切ります。指定した場合、返
される説明には、指定した名前のアプリケーショ
ンの説明のみを含むように制限されます。
型: String[]
デフォルト: なし
出力
次の情報を含むテーブルが返されます。
•
•
•
•
•
•
ApplicationName – アプリケーションの名前。
ConfigurationTemplates – アプリケーションの作成に使用された設定テンプレートの一覧。
DateCreated – アプリケーションが作成された日付。
DateUpdated – アプリケーションが更新された日付。
Description – アプリケーションの説明。
Versions – このアプリケーションのバージョンの名前。
例
アプリケーションについて説明する
この例は、このアカウントのすべてのアプリケーションについて説明する方法を示します。
PROMPT> elastic-beanstalk-describe-applications
特定のアプリケーションについて説明する
この例は、特定のアプリケーションについて説明する方法を示します。
PROMPT> elastic-beanstalk-describe-applications -a MyApplication
API Version 2010-12-01
518
AWS Elastic Beanstalk 開発者ガイド
運用
elastic-beanstalk-describe-configuration-options
Abstract
elastic-beanstalk-describe-configuration-options コマンドラインオペレーションは、特定の設定テンプレートまた
は環境で使用されている設定オプション、または指定したソリューションスタックを定義している設定オプション
について説明します。
説明
特定の設定テンプレートまたは環境で使用されている設定オプション、または指定したソリューション
スタックに定義されている設定オプションについて説明します。説明には、値、オプション、オプショ
ンのデフォルト値、オプションの値が変更された場合に実行中の環境で実行する必要があるアクション
が含まれます。
構文
elastic-beanstalk-describe-configuration-options -a [name] -t [name] -e [name]
-s [stack] -f [filename]
オプション
名前
説明
-a
--application-name name
設定テンプレートまたは環境に関連付けられてい いいえ
るアプリケーションの名前。設定テンプレートま
たは環境に関連付けられている設定オプションに
ついて説明する場合にのみ、必要です。
型: String
デフォルト: なし
長さの制限: 最小値は 1 です。最大値は 100 です。
-t
--template-name name
説明する設定オプションがある設定テンプレート いいえ
の名前。
型: String
デフォルト: なし
長さの制限: 最小値は 1 です。最大値は 100 です。
-e
--environment-name name
説明する設定オプションがある環境の名前。
いいえ
型: String
長さの制限: 最小値は 4 です。最大値は 23 です。
-s
--solution-stack stack
説明する設定オプションがあるソリューションス いいえ
タックの名前。
型: String
デフォルト: なし
長さの制限: 最小値は 0 です。最大値は 100 です。
-f
--options-file filename
説明するオプションを含む JSON ファイルの名
前。
タイプ: 文字列
API Version 2010-12-01
519
必須
いいえ
AWS Elastic Beanstalk 開発者ガイド
運用
出力
次の情報を含むテーブルが返されます。
• Options – 設定オプションの一覧。
• SolutionStackName – これらの設定オプションが属する SolutionStack の名前。
例
環境の設定オプションについて説明する
この例は、環境の設定オプションについて説明する方法を示します。
PROMPT> elastic-beanstalk-describe-configuration-options -a MySampleApp -t my
configtemplate -e MySampleAppEnv
API Version 2010-12-01
520
AWS Elastic Beanstalk 開発者ガイド
運用
elastic-beanstalk-describe-configuration-settings
Abstract
elastic-beanstalk-describe-configuration-settings コマンドラインオペレーションは、実行中の環境に関連した設定
テンプレートまたは指定した設定セットに関する設定の説明を返します。
説明
指定した設定セット(実行中の環境に関連付けられている設定テンプレートまたは設定セット)の設定
の説明を返します。
実行中の環境に関連付けられた設定セットの設定について説明しているときは、設定している説明を 2
組受け取る可能性があります。1 つはデプロイ済みの設定セットで、もう 1 つは、デプロイプロセス中
またはデプロイに失敗した環境のドラフト設定です。
構文
elastic-beanstalk-describe-configuration-settings -a [name] [-t [name] | -e
[name]]
オプション
名前
説明
-a
--application-name name
環境または設定テンプレートのアプリケーション はい
の名前。
型: String
デフォルト: なし
長さの制限: 最小値は 1 です。最大値は 100 です。
-t
--template-name name
説明する設定テンプレートの名前。この名前の設 条件付き
定テンプレートが見つからない場合、InvalidParameterValue エラーが返されます。
条件: このパラメータと環境名の両方ではなく、
いずれかを指定する必要があります。両方を指定
すると、InvalidParameterValue エラーが返
されます。いずれも指定しない場合、MissingRequiredParameter エラーが返されます。
型: String
デフォルト: なし
長さの制限: 最小値は 1 です。最大値は 100 です。
-e
--environment-name name
説明する環境の名前。
条件付き
型: String
デフォルト: なし
長さの制限: 最小値は 4 です。最大値は 23 です。
出力
次の情報を含むテーブルが返されます。
• ConfigurationSettings – 設定の一覧。
API Version 2010-12-01
521
必須
AWS Elastic Beanstalk 開発者ガイド
運用
例
環境の設定について説明する
この例は、環境の設定オプションについて説明する方法を示します。
PROMPT> elastic-beanstalk-describe-configuration-settings -a MySampleApp -e
MySampleAppEnv
関連オペレーション
• elastic-beanstalk-delete-environment-configuration (p. 515)
API Version 2010-12-01
522
AWS Elastic Beanstalk 開発者ガイド
運用
elastic-beanstalk-describe-environment-resources
Abstract
elastic-beanstalk-describe-environment-resource コマンドラインオペレーションは、この環境の AWS リソースを
返します。
説明
この環境の AWS リソースを返します。
構文
elastic-beanstalk-describe-environment-resources [-e [name] | -E [id]]
オプション
名前
説明
必須
-e
--environment-name name
AWS リソース使用状況データを取得する環境の 条件付き
名前。
型: String
デフォルト: なし
長さの制限: 最小値は 4 です。最大値は 23 です。
-E
--environment-id id
AWS リソース使用状況データを取得する環境の
ID。
型: String
デフォルト: なし
条件付き
出力
次の情報を含むテーブルが返されます。
• AutoScalingGroups – この環境で使用されている AutoScalingGroups の一覧。
• EnvironmentName – 環境の名前。
• Instances – この環境で使用されている Amazon EC2 インスタンス。
• LaunchConfigurations – この環境で使用されている Auto Scaling の起動設定。
• LoadBalancers – この環境で使用されている LoadBalancers。
• Triggers – この環境で使用されている AutoScaling トリガ。
例
環境の環境リソースについて説明する
この例は、環境の環境リソースについて説明する方法を示します。
PROMPT> elastic-beanstalk-describe-environment-resources -e MySampleAppEnv
API Version 2010-12-01
523
AWS Elastic Beanstalk 開発者ガイド
運用
elastic-beanstalk-describe-environments
Abstract
elastic-beanstalk-describe-environments コマンドラインオペレーションは、既存の環境に関する説明を返します。
説明
既存の環境に関する説明を返します。
構文
elastic-beanstalk-describe-environments -e [names [,name...]] -E [ids [,id...]]
-a [name] -l [label] -d -D [timestamp]
オプション
名前
説明
必須
-e
--environment-names names
環境名の一覧。
型: String[]
デフォルト: なし
いいえ
-E
--environment-ids ids
環境 ID の一覧。
型: String[]
デフォルト: なし
いいえ
-a
--application-name name
アプリケーションに関連付けられている説明の一 いいえ
覧。
型: String
デフォルト: なし
長さの制限: 最小値は 1 です。最大値は 100 です。
-l
--version-label label
アプリケーションバージョンに関連付けられてい いいえ
る説明の一覧。
型: String
デフォルト: なし
長さの制限: 最小値は 1 です。最大値は 100 です。
-d
--include-deleted
削除された環境を含めるかどうかを指定します。 いいえ
true: --include-deleted-back-to の後に削
除された環境が表示されます。
false: 削除された環境を含めません。
型: Boolean
デフォルト: true
-D
--include-deleted-back-to
timestamp
--include-deleted が true に設定されている場合、 いいえ
この日付の後に削除された環境の一覧が表示され
ます。
型: Date Time
デフォルト: なし
API Version 2010-12-01
524
AWS Elastic Beanstalk 開発者ガイド
運用
出力
次の情報を含むテーブルが返されます。
• ApplicationName – この環境に関連付けられたアプリケーションの名前。
• CNAME – この環境の CNAME の URL。
• DateCreated – 環境が作成された日付。
• DateUpdated – 環境が最後に更新された日付。
• Description – 環境の説明。
• EndpointURL – この環境の LoadBalancer の URL。
• EnvironmentID – この環境の ID。
• EnvironmentName – この環境の名前。
• Health – 環境のヘルスステータスの説明。Elastic Beanstalk は実行中の環境のエラーレベルを示しま
す。
• Red: 環境が応答しないことを示します。1 つの環境について、3 個以上の連続するエラーが発生し
たときに表示されます。
• Yellow: 何らかの問題が発生していることを示します。1 つの環境について、2 個以上の連続する
エラーが発生したときに表示されます。
• Green: 環境が正常な状態で、完全に機能していることを示します。
• Gray: 新しい環境のデフォルトのヘルス。環境は完全に起動していないため、ヘルスチェックがか
開始されていないか、UpdateEnvironment または RestartEnvironment リクエスト中でヘル
スチェックが一時停止されています。
• Resources – この環境で使用されている AWS リソースの一覧。
• SolutionStackName – この環境でデプロイされている SolutionStack の名前。
• Status – 環境の現在のオペレーションステータス。
• Launching: 環境は、初期デプロイのプロセス中です。
• Updating: 環境は、設定またはアプリケーションバージョンを更新するプロセス中です。
• Ready: 環境は、更新や終了などのアクションを実行できる状態です。
• Terminating: 環境はシャットダウンプロセス中です。
• Terminated: 環境は実行中ではありません。
• TemplateName – この環境の起動に元々使用されていた設定テンプレートの名前。
• VersionLabel – この環境にデプロイされているアプリケーションバージョン。
例
環境について説明する
この例は、既存の環境について説明する方法を示します。
PROMPT> elastic-beanstalk-describe-environments
API Version 2010-12-01
525
AWS Elastic Beanstalk 開発者ガイド
運用
elastic-beanstalk-describe-events
Abstract
elastic-beanstalk-describe-events コマンドラインオペレーションは、最高過去 6 週間の範囲で、条件に一致したイ
ベントの説明の一覧を返します。
説明
最長で過去 6 週間について、条件と一致するイベントの説明の一覧を返します。
Note
このアクションは、指定した NextToken から過去 1,000 件のイベントを返します。
構文
elastic-beanstalk-describe-events -a [name] -e [name] -E [id] -l [label] -L
[timestamp] -m [count] -n [token] -r [id] -s [level] -S [timestamp] -t [name]
オプション
名前
説明
-a
--application-name name
アプリケーションの名前。
いいえ
型: String
デフォルト: なし
長さの制限: 最小値は 1 です。最大値は 100 です。
-e
--environment-name name
環境の名前。
いいえ
型: String
デフォルト: なし
長さの制限: 最小値は 4 です。最大値は 23 です。
-E
--environment-id id
環境の ID。
型: String
デフォルト: なし
-l
--version-label label
アプリケーションバージョン。
いいえ
型: String
デフォルト: なし
長さの制限: 最小値は 1 です。最大値は 100 です。
-L
--end-time timestamp
指定した場合、指定した時間よりも前に発生した いいえ
イベントの一覧が返されます。
型: Date Time
デフォルト: なし
-m
--max-records count
最大で過去何件のイベントを返すことができるか いいえ
を指定します。
型: Integer
デフォルト: なし
API Version 2010-12-01
526
必須
いいえ
AWS Elastic Beanstalk 開発者ガイド
運用
名前
説明
必須
-n
--next-token token
ページ分割トークン。結果の次のバッチを返すた いいえ
めに使用されます。
型: String
デフォルト: なし
-r
--request-id id
リクエスト ID。
型: String
デフォルト: なし
-s
--severity level
指定した場合、指定した重大度以上のイベント一 いいえ
覧が返されます。
型: String
有効な値: TRACE | DEBUG | INFO | WARN | ERROR |
FATAL
デフォルト: なし
-S
--start-time timestamp
指定した場合、指定した時間の後に発生したイベ いいえ
ントの一覧が返されます。
型: Date Time
デフォルト: なし
-t
--template-name name
設定テンプレートの名前。
いいえ
型: String
デフォルト: なし
長さの制限: 最小値は 1 です。最大値は 100 です。
いいえ
出力
次の情報を含むテーブルが返されます。
•
•
•
•
ApplicationName – イベントに関連付けられたアプリケーションの名前。
EnvironmentName – イベントに関連付けられた環境の名前。
EventDate – イベントの日付。
Message – イベントのメッセージ。
• RequestID – このイベントのアクティビティのウェブサービスリクエスト ID。
• Severity – イベントの重大度。
• TemplateName – このイベントに関連付けられている設定の名前。
• VersionLabel – このイベントに関連付けられているアプリケーションのリリースラベル。
例
環境のイベントとセキュリティレベルについて説明する
この例は、環境の重大度が WARN 以上のイベントについて説明する方法について説明します。
PROMPT> elastic-beanstalk-describe-events -e MySampleAppEnv -s WARN
API Version 2010-12-01
527
AWS Elastic Beanstalk 開発者ガイド
運用
elastic-beanstalk-list-available-solution-stacks
Abstract
elastic-beanstalk-list-available-solution-stacks コマンドラインオペレーションは、使用可能なソリューションスタッ
クの名前の一覧を返します。これらは、コンテナ名とも呼ばれます。
説明
使用できるソリューションスタック名の一覧を返します
構文
elastic-beanstalk-list-available-solution-stacks
出力
使用できるソリューションスタック名の一覧を返します。
例
使用できるソリューションスタックの一覧を表示する
この例は、使用できるソリューションスタックの一覧を取得する方法を示します。
PROMPT> elastic-beanstalk-list-available-solution-stacks
API Version 2010-12-01
528
AWS Elastic Beanstalk 開発者ガイド
運用
elastic-beanstalk-rebuild-environment
Abstract
elastic-beanstalk-rebuild-environment コマンドラインオペレーションは、指定した環境の AWS リソースすべてを
削除および再作成し、強制的に再起動します。
説明
指定した環境について、すべての AWS リソース(例えば、Auto Scaling グループ、LoadBalancer な
ど)を削除して再作成し、強制的に再起動します。
構文
elastic-beanstalk-rebuild-environment [-e [name] | -E [id]]
オプション
名前
説明
-e
--environment-name name
再構築する環境の名前。
条件付き
型: String
デフォルト: なし
長さの制限: 最小値は 4 です。最大値は 23 です。
-E
--environment-id id
再構築する環境の ID。
型: String
デフォルト: なし
出力
Rebuilding environment が出力されます。
例
環境を再構築する
この例は、環境を再構築する方法を示します。
PROMPT> elastic-beanstalk-rebuild-environment -e MySampleAppEnv
API Version 2010-12-01
529
必須
条件付き
AWS Elastic Beanstalk 開発者ガイド
運用
elastic-beanstalk-request-environment-info
Abstract
elastic-beanstalk-request-environment-info コマンドラインオペレーションは、デプロイされた環境の指定した種類
の情報をコンパイルするリクエストを開始します。
説明
デプロイ済み環境の指定した種類の情報をコンパイルするリクエストを開始します。
InfoType を tail に設定すると、環境に含まれる各 Amazon EC2 インスタンスのアプリケーションサー
バーログファイルから、最新の行がコンパイルされます。コンパイルされた情報にアクセスするには、
RetrieveEnvironmentInfo を使用します。
構文
elastic-beanstalk-request-environment-info [-e [name] | -E [id]] -i [type]
オプション
名前
説明
必須
-e
--environment-name name
リクエストしたデータの環境の名前。
条件付き
型: String
デフォルト: なし
長さの制限: 最小値は 4 です。最大値は 23 です。
-E
--environment-id id
リクエストしたデータの環境の ID。
型: String
デフォルト: なし
条件付き
-i
--info-type type
リクエストする情報の種類。
型: String
有効な値: tail
デフォルト: なし
はい
例
環境情報をリクエストする
この例は、環境情報をリクエストする方法を示します。
PROMPT> elastic-beanstalk-request-environment-info -e MySampleAppEnv -i tail
関連オペレーション
• elastic-beanstalk-retrieve-environment-info (p. 532)
API Version 2010-12-01
530
AWS Elastic Beanstalk 開発者ガイド
運用
elastic-beanstalk-restart-app-server
Abstract
elastic-beanstalk-restart-app-server コマンドラインオペレーションは、各 Amazon EC2 インスタンスで実行され
ているアプリケーションコンテナサーバーを再起動する結果を、環境にもたらします。
説明
各 Amazon EC2 インスタンスで実行されている環境のアプリケーションコンテナサーバーを再起動し
ます。
構文
elastic-beanstalk-restart-app-server [-e [name] | -E [id]]
オプション
名前
説明
-e
--environment-name name
サーバーを再起動する環境の名前。
条件付き
型: String
デフォルト: なし
長さの制限: 最小値は 4 です。最大値は 23 です。
-E
--environment-id id
サーバーを再起動する環境の ID。
型: String
デフォルト: なし
例
アプリケーションサーバーを再起動する
この例は、アプリケーションサーバーを再起動する方法を示します。
PROMPT> elastic-beanstalk-restart-app-server -e MySampleAppEnv
API Version 2010-12-01
531
必須
条件付き
AWS Elastic Beanstalk 開発者ガイド
運用
elastic-beanstalk-retrieve-environment-info
Abstract
elastic-beanstalk-retrieve-environment-info コマンドラインオペレーションは、RequestEnvironmentInfo リクエス
トからのコンパイルされた情報を取得します。
説明
RequestEnvironmentInfo リクエストから、コンパイル済み情報を取得します。
構文
elastic-beanstalk-retrieve-environment-info [-e [name] | -E [id]] -i [type]
オプション
名前
説明
-e
--environment-name name
データの環境の名前。環境が見つからない場合、 条件付き
InvalidParameterValue エラーが返されます。
型: String
デフォルト: なし
長さの制限: 最小値は 4 です。最大値は 23 です。
-E
--environment-id id
データの環境の ID。
条件付き
データの環境の名前。環境が見つからない場合、
InvalidParameterValue エラーが返されます。
型: String
デフォルト: なし
-i
--info-type type
取得する情報の種類。
型: String
有効な値: tail
デフォルト: なし
出力
次の情報を含むテーブルが返されます。
•
•
•
•
EC2InstanceId – この情報に関する Amazon EC2 インスタンス ID。
InfoType – 取得した情報の種類。
Message – 取得した情報。
SampleTimestamp – この情報を取得した時刻のタイムスタンプ。
例
環境情報を取得する
この例は、環境情報を取得する方法を示します。
API Version 2010-12-01
532
必須
はい
AWS Elastic Beanstalk 開発者ガイド
運用
PROMPT> elastic-beanstalk-retrieve-environment-info -e MySampleAppEnv -i tail
関連オペレーション
• elastic-beanstalk-request-environment-info (p. 530)
API Version 2010-12-01
533
AWS Elastic Beanstalk 開発者ガイド
運用
elastic-beanstalk-swap-environment-cnames
Abstract
elastic-beanstalk-swap-environment-cnames コマンドラインオペレーションは、2 つの環境の CNAME をスワップ
します。このため、ダウン時間不要でアプリケーションバージョンを即時に更新できます。
説明
2 つの環境の CNAME を交換します。
構文
elastic-beanstalk-swap-environment-cnames [-s [name] | -S [desc]] [-d [desc] |
-D [desc]]
オプション
名前
説明
必須
-s
--source-environment-name
name
ソース環境の名前。
型: String
デフォルト: なし
条件付き
-S
--source-environment-id id
ソース環境の ID。
型: String
デフォルト: なし
条件付き
-d
--destination-environmentname name
対象環境の名前。
型: String
デフォルト: なし
条件付き
-D
対象環境の ID。
--destination-environment-id 型: String
id
デフォルト: なし
条件付き
例
環境の CNAME を交換する
この例は、2 つの環境の CNAME を交換する方法を示します。
PROMPT> elastic-beanstalk-swap-environment-cnames -s MySampleAppEnv -d
MySampleAppEnv2
API Version 2010-12-01
534
AWS Elastic Beanstalk 開発者ガイド
運用
elastic-beanstalk-terminate-environment
Abstract
elastic-beanstalk-terminate-environment コマンドラインオペレーションは、指定した環境を終了します。
説明
指定した環境を終了します。
構文
elastic-beanstalk-terminate-environment [-e [name] | -E [id]] -t
オプション
名前
説明
必須
-e
--environment-name name
終了する環境の名前。
条件付き
型: String
デフォルト: なし
長さの制限: 最小値は 4 です。最大値は 23 です。
-E
--environment-id id
終了する環境の ID。
型: String
デフォルト: なし
-t
--terminate-resources
環境の終了時に、関連付けられた AWS リソース いいえ
もシャットダウンするかどうかを指定します。
• true: 指定した環境と、関連付けられた AWS
リソース(Auto Scaling グループや LoadBalance など)の両方が終了されます。
• false: Elastic Beanstalk のリソース管理は環境
から削除されますが、AWS リソースは引き続
き機能します。
型: Boolean
有効な値: true | false
デフォルト: true
Note
環境を終了すると、既存の環境だけがリ
ソースを実行することができるため、こ
のパラメータ(-t)は、既存の環境に
限って指定することができます。
API Version 2010-12-01
535
条件付き
AWS Elastic Beanstalk 開発者ガイド
運用
出力
次の情報を含むテーブルが返されます。
• ApplicationName – この環境に関連付けられたアプリケーションの名前。
• CNAME – この環境の CNAME の URL。
• DateCreated – 環境が作成された日付。
• DateUpdated – 環境が最後に更新された日付。
• Description – 環境の説明。
• EndpointURL – この環境の LoadBalancer の URL。
• EnvironmentID – この環境の ID。
• EnvironmentName – この環境の名前。
• Health – 環境のヘルスステータスの説明。Elastic Beanstalk は実行中の環境のエラーレベルを示しま
す。
• Red: 環境が応答しないことを示します。1 つの環境について、3 個以上の連続するエラーが発生し
たときに表示されます。
• Yellow: 何らかの問題が発生していることを示します。1 つの環境について、2 個以上の連続する
エラーが発生したときに表示されます。
• Green: 環境が正常な状態で、完全に機能していることを示します。
• Gray: 新しい環境のデフォルトのヘルス。環境は完全に起動していないため、ヘルスチェックがか
開始されていないか、UpdateEnvironment または RestartEnvironment リクエスト中でヘル
スチェックが一時停止されています。
• Resources – この環境で使用されている AWS リソースの一覧。
• SolutionStackName – この環境でデプロイされている SolutionStack の名前。
• Status – 環境の現在のオペレーションステータス。
• Launching: 環境は、初期デプロイのプロセス中です。
• Updating: 環境は、設定またはアプリケーションバージョンを更新するプロセス中です。
• Ready: 環境は、更新や終了などのアクションを実行できる状態です。
• Terminating: 環境はシャットダウンプロセス中です。
• Terminated: 環境は実行中ではありません。
• TemplateName – この環境の起動に元々使用されていた設定テンプレートの名前。
• VersionLabel – この環境にデプロイされているアプリケーションバージョン。
例
環境を終了するには
この例は、環境を終了する方法を示します。
PROMPT> elastic-beanstalk-terminate-environment -e MySampleAppEnv
API Version 2010-12-01
536
AWS Elastic Beanstalk 開発者ガイド
運用
elastic-beanstalk-update-application
Abstract
elastic-beanstalk-update-application コマンドラインオペレーションは、指定したアプリケーションが指定したプロ
パティを持つように更新します。
説明
指定したアプリケーションを指定したプロパティに更新します。
Note
プロパティ(description など)が指定されていない場合、値は変わりません。これらのプ
ロパティを消去するには、空の文字列を指定します。
構文
elastic-beanstalk-update-application -a [name] -d [desc]
オプション
名前
説明
必須
-a
--application-name name
更新するアプリケーションの名前。指定したアプ はい
リケーションが見つからない場合、InvalidParameterValue エラーが返されます。
型: String
デフォルト: なし
長さの制限: 最小値は 1 です。最大値は 100 です。
-d
--description desc
アプリケーションの新しい説明。
いいえ
型: String
デフォルト: 指定しない場合、説明は更新されま
せん。
長さの制限: 最小値は 0 です。最大値は 200 です。
出力
次の情報を含むテーブルが返されます。
• ApplicationName – アプリケーションの名前。
• ConfigurationTemplate – このアプリケーションに関連付けられた設定テンプレートの名前。
• DateCreated – 環境が作成された日付。
• DateUpdated – 環境が最後に更新された日付。
• Description – 環境の説明。
• Versions – このアプリケーションのバージョンの名前。
API Version 2010-12-01
537
AWS Elastic Beanstalk 開発者ガイド
運用
例
アプリケーションを更新する
この例は、アプリケーションを更新する方法を示します。
PROMPT> elastic-beanstalk-update-application -a MySampleApp -d "My new descrip
tion"
API Version 2010-12-01
538
AWS Elastic Beanstalk 開発者ガイド
運用
elastic-beanstalk-update-application-version
Abstract
elastic-beanstalk-update-application-version コマンドラインオペレーションは、指定したアプリケーションバージョ
ンが指定したプロパティを持つように更新します。
説明
指定したアプリケーションバージョンを指定したプロパティに更新します。
Note
プロパティ(description など)が指定されていない場合、値は変わりません。これらのプ
ロパティを消去するには、空の文字列を指定します。
構文
elastic-beanstalk-update-application-version -a [name] -l [label] -d [desc]
オプション
名前
説明
-a
--application-name name
このバージョンに関連付けられているアプリケー はい
ションの名前。指定したアプリケーションが見つ
からない場合、InvalidParameterValue エラー
が返されます。
型: String
デフォルト: なし
長さの制限: 最小値は 1 です。最大値は 100 です。
-l
--version-label
更新するアプリケーションの名前。
はい
このラベルのアプリケーションバージョンが見つ
からない場合、InvalidParaemterValue エラー
が返されます。
型: String
長さの制限: 最小値は 1 です。最大値は 100 です。
-d
--description
リリースの新しい説明。
いいえ
型: String
デフォルト: 指定しない場合、説明は更新されま
せん。
長さの制限: 最小値は 0 です。最大値は 200 です。
出力
次の情報を含むテーブルが返されます。
• ApplicationName – このリリースに関連付けられたアプリケーションの名前。
• DateCreated – アプリケーションバージョンの作成日。
• DateUpdated – アプリケーションバージョンの最終更新日。
API Version 2010-12-01
539
必須
AWS Elastic Beanstalk 開発者ガイド
運用
• Description – このアプリケーションバージョンの説明。
• SourceBundle – このバージョンのソースバンドルが見つかった場所。
• VersionLabel – 関連付けられたアプリケーションのバージョンを識別するラベル。
例
アプリケーションバージョンを更新する
この例は、アプリケーションバージョンを更新する方法を示します。
PROMPT> elastic-beanstalk-update-application-version -a MySampleApp -d "My new
version" -l "TestVersion 1"
API Version 2010-12-01
540
AWS Elastic Beanstalk 開発者ガイド
運用
elastic-beanstalk-update-configuration-template
Abstract
elastic-beanstalk-update-configuration-template コマンドラインオペレーションは、指定した設定テンプレートが指
定したプロパティまたは設定オプション値を持つように更新します。
説明
指定した設定テンプレートを、指定したプロパティまたは設定オプション値に更新します。
Note
プロパティ(ApplicationName など)が指定されていない場合、値は変わりません。これら
のプロパティを消去するには、空の文字列を指定します。
構文
elastic-beanstalk-update-configuration-template -a [name] -t [name] -d [desc]
-f [filename] -F [filename]
オプション
名前
説明
-a
--application-name name
更新する設定テンプレートに関連付けられている はい
アプリケーションの名前。この名前のアプリケー
ションが見つからない場合、InvalidParameterValue エラーが返されます。
型: String
デフォルト: なし
長さの制限: 最小値は 1 です。最大値は 100 です。
-t
--template-name name
更新する設定テンプレートの名前。この名前の設 はい
定テンプレートが見つからない場合、UpdateConfigurationTemplate から InvalidParameterValue エラーが返されます。
型: String
デフォルト: なし
長さの制限: 最小値は 1 です。最大値は 100 です。
-d
--description desc
設定の新しい説明。
いいえ
型: String
デフォルト: なし
長さの制限: 最小値は 0 です。最大値は 200 です。
-f
--options-file filename
新しく指定したオプション値で更新するオプショ いいえ
ン設定を含む JSON ファイルの名前。
タイプ: 文字列
API Version 2010-12-01
541
必須
AWS Elastic Beanstalk 開発者ガイド
運用
名前
説明
必須
-F
--options-to-remove-file
value
削除する設定オプションを含む JSON ファイルの いいえ
名前。
型: String
デフォルト: なし
出力
次の情報を含むテーブルが返されます。
• ApplicationName – この設定セットと関連付けられているアプリケーションの名前。
• DateCreated – この設定セットが作成された日付(UTC 時間)。
• DateUpdated – この設定セットが最後に変更された日付(UTC 時間)。
• DeploymentStatus – この設定セットが環境と関連付けられている場合、DeploymentStatus パラメー
タは、この設定セットの展開ステータスを示します。
• null: この設定は実行中の環境と関連付けられています。
• pending: これは、関連付けられた環境にデプロイされておらず、デプロイの処理中であるドラフ
ト設定です。
• deployed: これは、関連付けられた実行中の環境に現在デプロイされている設定です。
• failed: これは、正常にデプロイされなかったドラフト設定です。
•
•
•
•
•
Description – 設定セットの説明。
EnvironmentName – null ではない場合、この設定セットの環境の名前。
OptionSettings – この設定セットの設定オプションと値の一覧。
SolutionStackName – この設定セットが使用するソリューションスタックの名前。
TemplateName – null ではない場合、この設定セットの設定テンプレートの名前。
例
設定テンプレートを更新する
この例は、設定テンプレートを更新する方法を示します。設定の一覧については、「設定オプショ
ン (p. 101)」を参照してください。
PROMPT> elastic-beanstalk-update-configuration-template -a MySampleApp -t mycon
figtemplate -d "My updated configuration template" -f "options.txt"
options.txt
[
{
"Namespace": "aws:elasticbeanstalk:application:environment",
"OptionName": "my_custom_param_1",
"Value": "firstvalue"
},
{
"Namespace": "aws:elasticbeanstalk:application:environment",
"OptionName": "my_custom_param_2",
"Value": "secondvalue"
API Version 2010-12-01
542
AWS Elastic Beanstalk 開発者ガイド
運用
}
]
関連オペレーション
• elastic-beanstalk-describe-configuration-options (p. 519)
API Version 2010-12-01
543
AWS Elastic Beanstalk 開発者ガイド
運用
elastic-beanstalk-update-environment
Abstract
elastic-beanstalk-update-environment コマンドラインオペレーションは、環境の説明の更新、新しいアプリケー
ションバージョンのデプロイ、設定を全く新しい設定テンプレートに更新、実行中の環境の特定の設定オプション
値を更新、これらのいずれかの操作を行います。
説明
環境の説明を更新する、新しいアプリケーションバージョンをデプロイする、設定を新規の設定テンプ
レートに更新する、または実行中の環境で設定オプション値を更新する操作を行います。
リリースと設定の両方を更新する操作は許可されておらず、InvalidParameterCombination エラー
が返されます。
設定を新しいテンプレートに更新するか、個々の設定を更新すると、ドラフトの設定が作成され、この
環境の DescribeConfigurationSettings によって、DeploymentStatus 値が異なる 2 つの設定
の説明が返されます。
構文
elastic-beanstalk-update-environment [-e [name] | -E [id]] -l [label] -t [name]
-d [desc] -f [filename] -F [filename]
オプション
名前
説明
-e
--environment-name name
更新する環境の名前。この名前の環境が見つから 条件付き
ない場合、InvalidParameterValue エラーが
返されます。
型: String
デフォルト: なし
長さの制限: 最小値は 4 です。最大値は 23 です。
-E
--environment-id id
更新する環境の ID。この ID の環境が存在しない 条件付き
場合、InvalidParameterValue エラーが返さ
れます。
型: String
デフォルト: なし
-l
--version-label label
このパラメータを指定しない場合、指定したアプ いいえ
リケーションバージョンが環境にデプロイされま
す。指定したアプリケーションバージョンが見つ
からない場合、InvalidParameterValue エラー
が返されます。
型: String
デフォルト: なし
長さの制限: 最小値は 1 です。最大値は 100 です。
API Version 2010-12-01
544
必須
AWS Elastic Beanstalk 開発者ガイド
運用
名前
説明
必須
-t
--template-name name
このパラメータを指定しない場合、この設定テン いいえ
プレートが環境にデプロイされます。指定した設
定テンプレートが見つからない場合、InvalidParameterValue エラーが返されます。
型: String
デフォルト: なし
長さの制限: 最小値は 1 です。最大値は 100 です。
-d
--description desc
このパラメータを指定した場合、この環境の説明 いいえ
が更新されます。
型: String
デフォルト: なし
長さの制限: 最小値は 0 です。最大値は 200 です。
-f
--options-file filename
更新するオプション設定を含むファイル。指定し いいえ
た場合、実行中の環境に関連付けられた設定セッ
トが更新され、指定した設定オプションがリクエ
ストした値に設定されます。
型: String
デフォルト: なし
-F
削除するオプション設定を含むファイル。指定し いいえ
--options-to-remove-file fi- た場合、実行中の環境に関連付けられた設定セッ
トからオプション設定が削除されます。
lename
型: String
デフォルト: なし
出力
次の情報を含むテーブルが返されます。
• ApplicationName – この環境に関連付けられたアプリケーションの名前。
• CNAME – この環境の CNAME の URL。
• DateCreated – 環境が作成された日付。
• DateUpdated – 環境が最後に更新された日付。
• Description – 環境の説明。
• EndpointURL – この環境の LoadBalancer の URL。
• EnvironmentID – この環境の ID。
• EnvironmentName – この環境の名前。
• Health – 環境のヘルスステータスの説明。Elastic Beanstalk は実行中の環境のエラーレベルを示しま
す。
• Red: 環境が応答しないことを示します。1 つの環境について、3 個以上の連続するエラーが発生し
たときに表示されます。
• Yellow: 何らかの問題が発生していることを示します。1 つの環境について、2 個以上の連続する
エラーが発生したときに表示されます。
• Green: 環境が正常な状態で、完全に機能していることを示します。
• Gray: 新しい環境のデフォルトのヘルス。環境は完全に起動していないため、ヘルスチェックがか
開始されていないか、UpdateEnvironment または RestartEnvironment リクエスト中でヘル
スチェックが一時停止されています。
API Version 2010-12-01
545
AWS Elastic Beanstalk 開発者ガイド
運用
• Resources – この環境で使用されている AWS リソースの一覧。
• SolutionStackName – この環境でデプロイされている SolutionStack の名前。
• Status – 環境の現在のオペレーションステータス。
• Launching: 環境は、初期デプロイのプロセス中です。
• Updating: 環境は、設定またはアプリケーションバージョンを更新するプロセス中です。
• Ready: 環境は、更新や終了などのアクションを実行できる状態です。
• Terminating: 環境はシャットダウンプロセス中です。
• Terminated: 環境は実行中ではありません。
• TemplateName – この環境の起動に元々使用されていた設定テンプレートの名前。
• VersionLabel – この環境にデプロイされているアプリケーションバージョン。
例
既存の環境を更新する
この例は、既存の環境を更新する方法を示します。これは、インスタンスのサイズを t1.micro に更新
し、2 つの環境変数を設定する options.txt というファイルを渡します。使用できる設定の一覧について
は、「設定オプション (p. 101)」を参照してください。
PROMPT> elastic-beanstalk-update-environment -e MySampleAppEnv -f "options.txt"
options.txt
[
{
"Namespace": "aws:autoscaling:launchconfiguration",
"OptionName": "InstanceType",
"Value": "t1.micro"
},
{
"Namespace": "aws:elasticbeanstalk:application:environment",
"OptionName": "my_custom_param_1",
"Value": "firstvalue"
},
{
"Namespace": "aws:elasticbeanstalk:application:environment",
"OptionName": "my_custom_param_2",
"Value": "secondvalue"
}
]
API Version 2010-12-01
546
AWS Elastic Beanstalk 開発者ガイド
運用
elastic-beanstalk-validate-configuration-settings
Abstract
elastic-beanstalk-validate-configuration-settings コマンドラインオペレーションは、設定セットと設定テンプレート
または環境を使用して、値が有効かどうかを判断します。
説明
設定セットと、設定テンプレートまたは環境を使用して、値が有効かどうかを判断します。
このアクションで、オプション値の選択に関連付けられたエラーまたは警告を示すメッセージの一覧が
返されます。
構文
elastic-beanstalk-validate-configuration-settings -a [name] -t [name] -e [name]
-f [filename]
オプション
名前
説明
-a
--application-name name
設定テンプレートまたは環境が属するアプリケー はい
ションの名前。
型: String
デフォルト: なし
長さの制限: 最小値は 1 です。最大値は 100 です。
-t
--template-name name
設定を検証する設定テンプレートの名前。
いいえ
条件: このパラメータと環境名の両方を指定する
ことはできません。
型: String
デフォルト: なし
長さの制限: 最小値は 1 です。最大値は 100 です。
-e
--environment-name name
設定を検証する環境の名前。
いいえ
型: String
デフォルト: なし
長さの制限: 最小値は 4 です。最大値は 23 です。
-f
--options-file filename
評価対象のオプションと望ましい値の一覧を含む はい
JSON ファイルの名前。
タイプ: 文字列
出力
次の情報を含むテーブルが返されます。
• Message – エラーまたは警告について説明するメッセージ。
• 名前空間
• OptionName
• Severity – このメッセージの重大度。
API Version 2010-12-01
547
必須
AWS Elastic Beanstalk 開発者ガイド
運用
• error: このメッセージは、これがオプションの有効な設定ではないことを示します。
• warning: このメッセージは、考慮する必要がある情報を示します。
例
環境の設定を検証する
この例は、環境の設定を検証する方法を示します。
PROMPT> elastic-beanstalk-validate-configuration-settings -a MySampleApp -e
MySampleAppEnv -f MyOptionSettingsFile.json
API Version 2010-12-01
548
AWS Elastic Beanstalk 開発者ガイド
Docker プラットフォームの設定
Docker コンテナからの Elastic
Beanstalk アプリケーションのデプロ
イ
Abstract
eb(更新されたコマンドラインインターフェイス)と Git を使用してウェブアプリケーションを Elastic Beanstalk
にデプロイし、その管理およびスケーリングを行います。
Elastic Beanstalk では、ウェブアプリケーションを Docker コンテナからデプロイできます。Docker コ
ンテナを使用すると、独自のランタイム環境を定義できます。他のプラットフォームでサポートされて
いない、独自のプラットフォーム、プログラミング言語、およびアプリケーションの従属関係(パッ
ケージマネージャやツールなど)を選択できます。 Docker コンテナは自己完結型で、これにはすべて
の設定情報と、ウェブアプリケーションが実行する必要のあるソフトウェアが含まれています。
Elastic Beanstalk で Docker を使用することにより、容量のプロビジョニング、負荷の分散、スケーリ
ング、およびアプリケーションの状態の監視の詳細を自動的に処理するインフラストラクチャが提供さ
れます。VPC、RDS、IAM などの Elastic Beanstalk と統合できるさまざまなサービスをサポートする
環境でウェブアプリケーションを管理できます。Docker の詳細については、Docker: the Linux container
engine を参照してください。Docker のインストール方法、Docker が必要とするソフトウェア、Docker
イメージを使用した Docker コンテナの起動方法などを確認できます。
Note
Elastic Beanstalk 環境で実行されている Docker コンテナが何らかの理由でクラッシュするか
強制終了された場合、Elastic Beanstalk は自動的にそのコンテナを再起動します。
Docker プラットフォームの設定
Elastic Beanstalk 対応の Docker プラットフォームには、2 つの一般的な設定(単一のコンテナとマル
チコンテナ)と複数の設定済みコンテナがあります。
各設定で現在サポートされているバージョンの詳細については、「Supported Platforms (p. 26)」ペー
ジをご覧ください。
API Version 2010-12-01
549
AWS Elastic Beanstalk 開発者ガイド
単一コンテナの Docker
単一コンテナの Docker
単一コンテナの設定は、Docker イメージ(Dockerfile あるいは Dockerrun.aws.json の定義に示される)
とソースコードを Elastic Beanstalk 環境で実行される EC2 インスタンスにデプロイするために使用で
きます。 単一コンテナ設定は、インスタンスごとに 1 つのコンテナを実行する必要がある場合にのみ
使用します。
単一コンテナの Docker 環境を使い始めるためのサンプルとヘルプは、「Single Container Docker (p. 553)」
をご覧ください。 コンテナ定義形式および使用の詳細については、「単一コンテナの Docker の設
定 (p. 553)」を参照してください。
マルチコンテナの Docker
もう 1 つの基本的な設定であるマルチコンテナ Docker は、Amazon EC2 Container Service を使用し
て、Elastic Beanstalk 環境における複数の Docker コンテナの Amazon ECS クラスターへのデプロイ
を調整します。 環境におけるインスタンスはそれぞれ、Dockerrun.aws.json ファイルに定義される
同じセットのコンテナで実行されます。 各インスタンスに複数の Docker コンテナをデプロイする必要
がある場合、マルチコンテナ設定を使用します。
マルチコンテナ Docker の設定と使用についての詳細は、「複数コンテナの Docker 環境 (p. 559)」を参
照してください。 「複数コンテナの Docker 設定 (p. 559)」のトピックには Dockerrun.aws.json 形式の
バージョン 2 が詳細説明されていますが、これは単一コンテナ設定に使用されるバージョンとは類似し
ているが互換性のない形式です。 近くにある別のコンテナで実行される nginx プロキシを使って、PHP
ウェブサイトを実行するマルチコンテナの環境のデプロイを初めから作成する手順を説明する「チュー
トリアル (p. 563)」も利用できます。
事前設定済み Docker コンテナ
2 つの一般的な Docker 設定に加えて、事前設定された Docker プラットフォーム設定がいくつも存在
し、Glassfish の Java または uWSGI を使用する Python などの人気ソフトウェアスタックでアプリケー
ションを実行するために使用できます。 事前設定のコンテナは、アプリケーションが使用するソフト
ウェアと一致する場合に使用してください。
詳細については、「事前設定済み Docker コンテナ (p. 574)」を参照してください。
Docker イメージ
Elastic Beanstalk の単一コンテナとマルチコンテナ Docker の設定は、オンラインイメージのパブリッ
クやプライベートリポジトリに格納した Docker イメージの使用をサポートします。
Dockerrun.aws.json で名前によってイメージを指定します。次の規則があります。
• Docker ハブの公式リポジトリのイメージでは、1 つの名前(例: ubuntu、mongo)を使用します。
• Docker ハブの他のリポジトリのイメージは、組織名で修飾されます(例:
amazon/amazon-ecs-agent)。
• 他のオンラインリポジトリのイメージは、さらにドメイン名で修飾されます(例:
quay.io/assemblyline/ubuntu または
account-id.dkr.ecr.us-east-1.amazonaws.com/ubuntu:trusty)。
単一コンテナ環境においてのみ、Dockerfile で環境を作成する際に独自のイメージを構築できます。 詳
細については、「Dockerfile を使用したカスタムイメージの構築 (p. 556)」を参照してください。
API Version 2010-12-01
550
AWS Elastic Beanstalk 開発者ガイド
Amazon ECR リポジトリからのイメージを使用する
Amazon ECR リポジトリからのイメージを使用する
Amazon EC2 コンテナレジストリ(Amazon ECR)を使用して、AWS にカスタム Docker のイメージ
を保存できます。Amazon ECR に Docker のイメージを保存すると、Elastic Beanstalk は環境のインス
タンスプロファイル (p. 21)を使用して自動的に Amazon ECR レジストリを認証し、認証ファイルの生
成 (p. 552)と Amazon Simple Storage Service(Amazon S3)へのアップロードの必要性を排除します。
ただし、環境のインスタンスプロファイルにアクセス権限を付与することによって、Amazon ECR リ
ポジトリのイメージにアクセスする権限をインスタンスに付与する必要があります。
AmazonEC2ContainerRegistryReadOnly 管理ポリシーをインスタンスプロファイルにアタッチして、
アカウントのすべての Amazon ECR リポジトリに対する読み取り専用アクセス権限を付与するか、作
成している以下のテンプレートを使用して、単一のリポジトリに対するアクセス権限を付与し、カスタ
ムポリシーを作成できます。
{
"Version": "2008-10-17",
"Statement": [
{
"Sid": "AllowEbAuth",
"Effect": "Allow",
"Action": [
"ecr:GetAuthorizationToken"
],
"Resource": [
"*"
]
},
{
"Sid": "AllowPull",
"Effect": "Allow",
"Resource": [
"arn:aws:ecr:us-east-1:account-id:repository/repository-name"
],
"Action": [
"ecr:GetAuthorizationToken",
"ecr:BatchCheckLayerAvailability",
"ecr:GetDownloadUrlForLayer",
"ecr:GetRepositoryPolicy",
"ecr:DescribeRepositories",
"ecr:ListImages",
"ecr:BatchGetImage"
]
}
]
}
上記のポリシーの Amazon リソースネーム(ARN)をリポジトリの ARN に置き換えます。
Dockerrun.aws.json ファイルで、その URL でイメージを参照します。単一コンテナ設定 (p. 553)に
ついては、URL が Image に入ります。
"Image": {
"Name": "account-id.dkr.ecr.us-east-1.amazonaws.com/repository-name:latest",
"Update": "true"
},
API Version 2010-12-01
551
AWS Elastic Beanstalk 開発者ガイド
プライベートリポジトリからイメージを使用する
マルチコンテナ設定 (p. 559)については、image コンテナ定義オブジェクトのキーを使用します。
"containerDefinitions": [
{
"name": "my-image",
"image": "account-id.dkr.ecr.us-east-1.amazonaws.com/repositoryname:latest",
プライベートリポジトリからイメージを使用する
オンラインレジストリによってホストされているプライベートリポジトリの Docker イメージを使用す
るには、レジストリでの認証に必要な情報が含まれている認証ファイルを提供する必要があります。
docker login コマンドを使用して認証ファイルを生成します。Docker Hub のリポジトリでは、docker
login を実行します。
$ docker login
他のレジストリでは、レジストリサーバーの URL を入力します。
$ docker login registry-server-url
Important
Docker のバージョン 1.7 から、docker login コマンドによって作成される認証ファイルの名前
と形式が変更されました。Docker のバージョン 1.7 以降では、docker login コマンドによって
~/.docker/config.json に以下の形式で認証ファイルが作成されます。
{
"auths" :
{
"server" :
{
"auth" : "auth_token",
"email" : "email"
}
}
}
Docker のバージョン 1.6.2 以前では、docker login コマンドによって ~/.dockercfg に以下
の形式で認証ファイルが作成されます。
{
"server" :
{
"auth" : "auth_token",
"email" : "email"
}
}
現時点では、Elastic Beanstalk は古い ~/.dockercfg 形式の設定ファイルを必要とします。
config.json ファイルを変換するには、外側の auths キーを削除し、古い形式と一致するよ
うに JSON ドキュメントを平坦化します。
API Version 2010-12-01
552
AWS Elastic Beanstalk 開発者ガイド
単一コンテナの Docker
セキュアな Amazon S3 バケットに認証ファイルをアップロードします。Amazon S3 バケットは、バ
ケットを使用している環境と同じリージョンでホストする必要があります。Elastic Beanstalk は、他の
リージョンでホストされている Amazon S3 バケットからファイルをダウンロードすることはできませ
ん。インスタンスプロファイル内の IAM ロールに s3:GetObject オペレーションを許可します。ポリ
シーの例については、「Elastic Beanstalk で IAM ロールを使用する (p. 345)」を参照してください。
Amazon S3 バケット情報を、[Dockerrun.aws.json] ファイルの Authentication(v1)または
authentication(v2)に含めます。
単一コンテナ環境における Dockerrun.aws.json 形式にの詳細については、「単一コンテナの Docker
の設定 (p. 553)」を参照してください。マルチコンテナ環境については、「複数コンテナの Docker 設
定 (p. 559)」を参照してください。
認証ファイルの詳細については、Docker ウェブサイトの「Docker ハブにおける画像の保存」および
「docker ログイン」を参照してください
トピック
• 単一コンテナの Docker 環境 (p. 553)
• 複数コンテナの Docker 環境 (p. 559)
• 事前設定済み Docker コンテナ (p. 574)
• Docker 環境の設定 (p. 578)
• EB CLI を使用して Docker 環境をローカルで実行する (p. 578)
単一コンテナの Docker 環境
Abstract
AWS マネジメントコンソール または EB CLI を使用してサンプル Docker アプリケーションをデプロイします。
単一コンテナの Docker の設定
Abstract
Elastic Beanstalk で使用する単一コンテナの Docker アプリケーションを設定します。
このセクションでは、Elastic Beanstalk を更新するために Docker イメージとコンテナを準備する方法
について説明します。単一コンテナの Docker コンテナで Elastic Beanstalk にデプロイするウェブアプ
リケーションには、カスタムイメージを定義する Dockerfile、使用する既存のイメージと環境設定を
指定する Dockerrun.aws.json ファイル、またはその両方を含める必要があります。以下のいずれか
の操作を行うことによって Docker コンテナから Elastic Beanstalk にウェブアプリケーションをデプロ
イできます。
• イメージをカスタマイズするため、および Docker コンテナを Elastic Beanstalk にデプロイするため
に、Dockerfile を作成します。
• Dockerrun.aws.json ファイルを作成して Docker コンテナを既存の Docker イメージから Elastic
Beanstalk にデプロイします。
• アプリケーションファイル、アプリケーションファイルの従属関係、Dockerfile、および
Dockerrun.aws.json ファイルが含まれる .zip ファイルを作成します。
Dockerfile のみ、または Dockerrun.aws.json ファイルのみを使用してアプリケーションをデ
プロイする場合、.zip 形式でファイルを圧縮する必要はありません。
セクション
API Version 2010-12-01
553
AWS Elastic Beanstalk 開発者ガイド
単一コンテナの Docker の設定
• Dockerrun.aws.json v1 (p. 554)
• プライベートリポジトリからのイメージの使用 (p. 555)
• Dockerfile を使用したカスタムイメージの構築 (p. 556)
Dockerrun.aws.json v1
Dockerrun.aws.json ファイルは、Docker コンテナを Elastic Beanstalk アプリケーションとしてデ
プロイする方法を記述するものです。この JSON ファイルは Elastic Beanstalk に固有です。ホストさ
れたレポジトリで使用できるイメージでアプリケーションが実行される場合、Dockerrun.aws.json
ファイルでイメージを指定し、Dockerfile を省略できます。
Dockerrun.aws.json ファイルの有効なキーと値は以下のとおりです。
AWSEBDockerrunVersion
(必須)単一コンテナの Docker 環境にバージョン番号を値「1」として指定します。
認証
(プライベートリポジトリの場合にのみ必須).dockercfg ファイルを保存する Amazon S3 オブ
ジェクトを指定します。
「プライベートリポジトリからのイメージの使用 (p. 555)」を参照してください。
イメージ
Docker コンテナを作成するときにベースとなる既存の Docker リポジトリの Docker ベースイメー
ジを指定します。Name キーの値を、Docker Hub のイメージの場合は < >/< > 形式、その
他のサイトの場合は < >/< >/< > 形式で指定します。
Dockerrun.aws.json ファイルでイメージを指定すると、Elastic Beanstalk 環境の各インスタン
スはそのイメージで docker pull を実行し、それを実行します。必要に応じて Update キーを含
めます。デフォルト値は "true" で、これはリポジトリをチェックし、イメージに対する更新を検出
して、キャッシュされているイメージを上書きするように Elastic Beanstalk に指示します。
Dockerfile を使用するときは、Dockerrun.aws.json ファイルで Image キーを指定しないで
ください。Elastic Beanstalk は、存在する場合は Dockerfile に示されているイメージを常に構
築して使用します。
ポート
(Image キーを指定する場合は必須)Docker コンテナで公開するポートをリストアップします。
Elastic Beanstalk は、ContainerPort の値を使用して、ホストで実行されているリバースプロキシ
に Docker コンテナを接続します。
複数のコンテナポートを指定できますが、Elastic Beanstalk は最初に指定したコンテナポートのみ
を使用してホストのリバースプロキシにコンテナを接続し、公衆インターネットからのリクエスト
をルーティングします。
ボリューム
EC2 インスタンスのボリュームを Docker コンテナにマッピングします。1 つ以上のボリューム配
列をマッピング対象として指定します。
ログ記録
アプリケーションがログを書き込むディレクトリを指定します。ログ末尾やバンドルログをリクエ
ストすると、Elastic Beanstalk によって Amazon S3 にこのディレクトリ内のログがすべてアップ
ロードされます。このディレクトリ内の rotated という名前のフォルダーに対してログをローテー
ションさせる場合は、ローテーションさせたログを保管用に Amazon S3 にアップロードするよう
に、Elastic Beanstalk を設定することもできます。詳細については、「インスタンスログ (p. 296)」
を参照してください。
以下のスニペットは、1 つのコンテナの Dockerrun.aws.json ファイルの構文を示す例です。
API Version 2010-12-01
554
AWS Elastic Beanstalk 開発者ガイド
単一コンテナの Docker の設定
{
"AWSEBDockerrunVersion": "1",
"Image": {
"Name": "janedoe/image",
"Update": "true"
},
"Ports": [
{
"ContainerPort": "1234"
}
],
"Volumes": [
{
"HostDirectory": "/var/app/mydb",
"ContainerDirectory": "/etc/mysql"
}
],
"Logging": "/var/log/nginx"
}
Elastic Beanstalk には Dockerrun.aws.json ファイルのみを提供するか、このファイルと Dockerfile
を 1 つの .zip ファイルに圧縮して提供することができます。両方のファイルを提供する場合、
Dockerfile は Docker イメージを作成し、Dockerrun.aws.json ファイルはデプロイに必要な追加
の情報を提供します。これについては後ほど説明します。Dockerfile と Dockerrun.aws.json ファ
イルの両方を提供する場合は、Dockerrun.aws.json ファイルにイメージを指定しないでください。
Elastic Beanstalk は Dockerfile で指定されているイメージを使用し、Dockerrun.aws.json ファイ
ルのイメージは無視します。
プライベートリポジトリからのイメージの使用
認証ファイルを [Dockerrun.aws.json] ファイルの [Authentication] パラメータ内に含む Amazon
S3 バケットに関する情報を追加します。Authentication パラメータに有効な Amazon S3 バケット
とキーが含まれていることを確認します。Amazon S3 バケットは、バケットを使用している環境と同
じリージョンでホストする必要があります。Elastic Beanstalk は、他のリージョンでホストされている
Amazon S3 バケットからファイルをダウンロードしません。
認証ファイルの作成とアップロードについては、「プライベートリポジトリからイメージを使用す
る (p. 552)」を参照してください。
次の例は、サードパーティレジストリでプライベートイメージを使用するように、my-bucket という
バケットに mydockercfg という認証ファイルを使用する方法を示しています。
{
"AWSEBDockerrunVersion": "1",
"Authentication": {
"Bucket": "my-bucket",
"Key": "mydockercfg"
},
"Image": {
"Name": "quay.io/johndoe/private-image",
"Update": "true"
},
"Ports": [
{
"ContainerPort": "1234"
}
API Version 2010-12-01
555
AWS Elastic Beanstalk 開発者ガイド
単一コンテナの Docker の設定
],
"Volumes": [
{
"HostDirectory": "/var/app/mydb",
"ContainerDirectory": "/etc/mysql"
}
],
"Logging": "/var/log/nginx"
}
Dockerfile を使用したカスタムイメージの構築
Docker は、Dockerfile を使用して、ソースバンドルが含まれる Docker イメージを作成します。
Docker イメージとは、Docker コンテナを作成するときにベースとなるテンプレートのことです。
Dockerfile は、Elastic Beanstalk が Elastic Beanstalk 環境の Amazon EC2 インスタンスごとにカス
タマイズされた Docker イメージを作成するときに使用する指示を含んでいるプレーンテキストファイ
ルです。 既存のイメージがリポジトリでホストされていない場合に Dockerfile を作成します。
Dockerfile には以下の指示を含めます。
FROM
ファイルの最初の指示として必須)Docker コンテナを作成するベースとなり、Elastic Beanstalk
が後続の Dockerfile 指示を実行する対象となるベースイメージを指定します。
このイメージは、パブリックリポジトリ、サードパーティレジストリによってホストされているプ
ライベートリポジトリ、または EC2 で実行しているリポジトリでホストできます。
EXPOSE
(必須)Docker コンテナで公開するポートをリストアップします。Elastic Beanstalk は、ポート
の値を使用して、ホストで実行されているリバースプロキシに Docker コンテナを接続します。
複数のコンテナポートを指定できますが、Elastic Beanstalk は最初に指定したコンテナポートのみ
を使用してホストのリバースプロキシにコンテナを接続し、公衆インターネットからのリクエスト
をルーティングします。
CMD
起動時にコンテナが実行するコマンドに統合される、実行ファイルおよびデフォルトパラメータを
指定します。次の形式を使用します。
CMD ["executable","param1","param2"]
CMD は、実行ファイルの引数を省略して、ENTRYPOINT コマンドのデフォルトのパラメータを指定
するためにも使用できます。実行ファイルは CMD または ENTRYPOINT で指定する必要があります
が、両方で指定する必要はありません。基本的なシナリオでは CMD を使用し、ENTRYPOINT は省
略します。
ENTRYPOINT
CMD と同じ JSON 形式を使用し、CMD のように、コンテナの起動時に実行するコマンドを指定し
ます。また、docker run を使用して、コンテナが実行ファイルとして実行できるようにします。
ENTRYPOINT を定義する場合、CMD も同様に使用して、docker run の -d オプションでオーバー
ライドできるデフォルトパラメータを指定できます。ENTRYPOINT によって定義されるコマンド
(任意のパラメータを含む)は、コンテナの実行時に CMD または docker run からのパラメータ
と統合されます。
RUN
イメージ内でパッケージをインストールし、ウェブアプリケーションを設定する 1 つ以上のコマン
ドを指定します。
API Version 2010-12-01
556
AWS Elastic Beanstalk 開発者ガイド
PHP サンプルアプリケーション
Dockerfile に RUN 指示を含める場合は、RUN 指示によって使用される Dockerfile 内のファ
イルとコンテキストを .zip ファイルに圧縮します。ディレクトリの最上位でファイルを圧縮しま
す。
以下のスニペットは Dockerfile の例です。単一コンテナの Docker 環境 (p. 553) の手順に従う場合
は、この手順の Dockerfile をそのままアップロードできます。この Dockerfile を使用する場合、
Elastic Beanstalk はゲーム 2048 を実行します。
FROM ubuntu:12.04
RUN apt-get update
RUN apt-get install -y nginx zip curl
RUN echo "daemon off;" >> /etc/nginx/nginx.conf
RUN curl -o /usr/share/nginx/www/master.zip -L https://codeload.github.com/gab
rielecirulli/2048/zip/master
RUN cd /usr/share/nginx/www/ && unzip master.zip && mv 2048-master/* . && rm rf 2048-master master.zip
EXPOSE 80
CMD ["/usr/sbin/nginx", "-c", "/etc/nginx/nginx.conf"]
Dockerfile に含めることができる指示の詳細については、Docker ウェブサイトの Dockerfile Reference
を参照してください。
単一コンテナの Docker 環境は、作成するイメージを示す Dockerfile、使用するイメージと追加の Elastic
Beanstalk 設定オプションを指定する Dockerrun.aws.json ファイル、またはその両方から起動できま
す。これらの設定ファイルは、ソースコードにバンドルして Zip ファイルでデプロイできます。
次のアプリケーション例のいずれかを開始するか、または、単一コンテナ環境の Docker 設定ファイル
のオーサリングの詳細について単一コンテナの Docker の設定 (p. 553)を参照してください。
AWS マネジメントコンソール を使用してサンプルアプリケーションを実行するには
1.
2.
画面の右側にある [Download ZIP] をクリックして、リンクされている GitHub ページからソースバ
ンドルをダウンロードします。
サンプルアプリケーションで環境を起動する (p. 54)の手順に従います。
EB CLI を使用してサンプルアプリケーションを実行するには
1.
2.
3.
GitHub リポジトリをクローンするか、またはローカルプロジェクトフォルダに Dockerfile を保存
します。
プロジェクトフォルダ内の eb init を実行して、EB CLI と共に使用するリポジトリを設定しま
す。
eb create を実行し、環境を作成してサンプルをデプロイします。
EB CLI を設定し、使用する詳しい手順については、EB CLI の設定 (p. 409)およびEB CLI による Elastic
Beanstalk 環境の管理 (p. 413)を参照してください。
PHP サンプルアプリケーション
GitHub リンク: awslabs/eb-demo-php-simple-app
API Version 2010-12-01
557
AWS Elastic Beanstalk 開発者ガイド
Python サンプルアプリケーション
このサンプルは、Dockerfile で定義されるカスタム Ubuntu イメージで実行する PHP アプリケーション
です。
PHP サンプルアプリケーションは Amazon RDS を使用します。これらのサービスの使用に対して料金
を請求される場合があります。新規のお客様の場合は、AWS 無料利用枠をご利用いただけます。ポリ
シーの詳細については、以下を参照してください。
• Amazon Relational Database Service (RDS) Pricing
Python サンプルアプリケーション
GitHub リンク: awslabs/eb-py-flask-signup
このサンプルは、Dockerfile で定義されるカスタム Ubuntu イメージで実行する Python アプリケー
ションです。このアプリケーションには、コンテナ上のストレージボリュームをホストインスタンス上
の対応するパスにマッピングする Dockerrun.aws.json ファイルも含まれます。
Python サンプルアプリケーションは、Amazon DynamoDB、Amazon SQS、および Amazon SNS を使
用します。これらのサービスの使用に対して料金を請求される場合があります。新規のお客様の場合
は、AWS 無料利用枠をご利用いただけます。ポリシーの詳細については、以下を参照してください。
• Amazon DynamoDB 料金表
• Amazon SQS 料金表
• Amazon SNS 料金表
Dockerfile サンプルアプリケーション
このサンプルは、GitHub からゲーム 2048 をダウンロードして nginx 上で実行するように設定された
Dockerfile です。
サンプルを Dockerfile という名前のファイルにコピーして貼り付け、環境作成時にソースバンドルの代
わりにアップロードします。
FROM ubuntu:12.04
RUN apt-get update
RUN apt-get install -y nginx zip curl
RUN echo "daemon off;" >> /etc/nginx/nginx.conf
RUN curl -o /usr/share/nginx/www/master.zip -L https://codeload.github.com/gab
rielecirulli/2048/zip/master
RUN cd /usr/share/nginx/www/ && unzip master.zip && mv 2048-master/* . && rm rf 2048-master master.zip
EXPOSE 80
CMD ["/usr/sbin/nginx", "-c", "/etc/nginx/nginx.conf"]
API Version 2010-12-01
558
AWS Elastic Beanstalk 開発者ガイド
複数コンテナの Docker
複数コンテナの Docker 環境
Abstract
複数の Docker コンテナを持つ Beanstalk を作成し、同じ EC2 インスタンスで複数のアプリケーションを並行して
実行します。
Elastic Beanstalk 用の複数コンテナの Docker プラットフォームで、インスタンスごとに複数のコンテ
ナをサポートする Docker 環境を作成できます。
Elastic Beanstalk は、Amazon EC2 Container Service を使用して、コンテナのデプロイを複数コンテ
ナの Docker 環境に調整します。Amazon ECS は、Docker コンテナを実行するインスタンスのクラス
ターを管理するためのツールを提供します。Elastic Beanstalk は、クラスター作成、タスクの定義と実
行のような Amazon ECS のタスクを処理します。
複数コンテナの Docker 設定
Abstract
Dockerrun.aws.json ファイルを使用して、Elastic Beanstalk 複数コンテナの Docker 環境でアプリケーション
を設定します。
Dockerrun.aws.json ファイルは、Docker コンテナのセットを Elastic Beanstalk アプリケーション
としてデプロイする方法を記述する、Elastic Beanstalk 固有の JSON ファイルです。
Dockerrun.aws.json ファイルを複数コンテナの Docker 環境で使用できます。
Dockerrun.aws.json は、環境の各コンテナインスタンスにデプロイするコンテナを示すとともに、
マウントするコンテナのホストインスタンスで作成するデータボリュームを示します。
Dockerrun.aws.json ファイルは単独で使用するか、1 つのアーカイブに追加のソースコードととも
に圧縮できます。Dockerrun.aws.json でアーカイブされるソースコードはコンテナインスタンスに
デプロイされ、/var/app/current/ ディレクトリでアクセスできます。設定の volumes セクション
を使用して、インスタンスで実行されるコンテナのマウントポイントを提供し、埋め込みコンテナ定義
の mountPoints セクションを使用して、コンテナからそれらをマウントします。
トピック
• Dockerrun.aws.json v2 (p. 559)
• プライベートリポジトリからのイメージの使用 (p. 561)
• コンテナ定義形式 (p. 562)
Dockerrun.aws.json v2
[Dockerrun.aws.json] ファイルには 3 つのセクションが含まれます。
AWSEBDockerrunVersion
複数コンテナの Docker 環境にはバージョン番号として値「2」を指定します。
containerDefinitions
以下に詳しく説明するコンテナ定義の配列です。
ボリューム
コンテナが使用できるコンテナインスタンスのマウントポイントを作成します。コンテナのアプリ
ケーションが読み取れるように、ソースバンドルのフォルダのボリューム(コンテナインスタンス
の /var/app/current にデプロイされる)を設定します。
API Version 2010-12-01
559
AWS Elastic Beanstalk 開発者ガイド
複数コンテナの Docker 設定
Note
Elastic Beanstalk は、コンテナごとにログ用の追加のボリュームを設定します。これらの
ボリュームは、ホストインスタンスにログを書き込むために、コンテナによってマウント
される必要があります。詳細については、「コンテナ定義形式 (p. 562)」を参照してくださ
い。
ボリュームは次の形式で指定します:
"volumes": [
{
"name": "volumename",
"host": {
"sourcePath": "/path/on/host/instance"
}
}
],
認証
(オプション)プライベートリポジトリの認証データが含まれる [.dockercfg] ファイルの Amazon
S3 内の場所です。以下の形式が使用されます。
"authentication": {
"bucket": "my-bucket",
"key": "mydockercfg"
},
詳細については、「プライベートリポジトリからのイメージの使用 (p. 561)」を参照してください。
以下のスニペットは、2 つのコンテナを持つインスタンスの Dockerrun.aws.json ファイルの構文を
示す例です。
{
"AWSEBDockerrunVersion": 2,
"volumes": [
{
"name": "php-app",
"host": {
"sourcePath": "/var/app/current/php-app"
}
},
{
"name": "nginx-proxy-conf",
"host": {
"sourcePath": "/var/app/current/proxy/conf.d"
}
}
],
"containerDefinitions": [
{
"name": "php-app",
"image": "php:fpm",
"environment": [
{
API Version 2010-12-01
560
AWS Elastic Beanstalk 開発者ガイド
複数コンテナの Docker 設定
"name": "Container",
"value": "PHP"
}
],
"essential": true,
"memory": 128,
"mountPoints": [
{
"sourceVolume": "php-app",
"containerPath": "/var/www/html",
"readOnly": true
}
]
},
{
"name": "nginx-proxy",
"image": "nginx",
"essential": true,
"memory": 128,
"portMappings": [
{
"hostPort": 80,
"containerPort": 80
}
],
"links": [
"php-app"
],
"mountPoints": [
{
"sourceVolume": "php-app",
"containerPath": "/var/www/html",
"readOnly": true
},
{
"sourceVolume": "nginx-proxy-conf",
"containerPath": "/etc/nginx/conf.d",
"readOnly": true
},
{
"sourceVolume": "awseb-logs-nginx-proxy",
"containerPath": "/var/log/nginx"
}
]
}
]
}
プライベートリポジトリからのイメージの使用
認証ファイルを [Dockerrun.aws.json] ファイルの [authentication] パラメータ内に含む Amazon
S3 バケットに関する情報を追加します。authentication パラメータに有効な Amazon S3 バケット
とキーが含まれていることを確認します。Amazon S3 バケットは、バケットを使用している環境と同
じリージョンでホストする必要があります。Elastic Beanstalk は、他のリージョンでホストされている
Amazon S3 バケットからファイルをダウンロードしません。
API Version 2010-12-01
561
AWS Elastic Beanstalk 開発者ガイド
複数コンテナの Docker 設定
認証ファイルの作成とアップロードについては、「プライベートリポジトリからイメージを使用す
る (p. 552)」を参照してください。
コンテナ定義形式
Dockerrun.aws.json ファイルには、次のフィールドとともに 1 つ以上のコンテナ定義オブジェクト
の配列が含まれます。
name
コンテナの名前。
イメージ
Docker コンテナの構築元となるオンライン Docker リポジトリの Docker イメージの名前。次の規
則があります。
• Docker ハブの公式リポジトリのイメージでは、1 つの名前(例: ubuntu、mongo)を使用しま
す。
• Docker ハブの他のリポジトリのイメージは、組織名で修飾されます(例:
amazon/amazon-ecs-agent)。
• 他のオンラインリポジトリのイメージは、さらにドメイン名で修飾されます(例:
quay.io/assemblyline/ubuntu)。
環境
コンテナに渡す環境変数の配列。
たとえば、次のエントリでは、Container という名前と PHP という値を使用して、環境変数を定
義しています。
"environment": [
{
"name": "Container",
"value": "PHP"
}
],
essential
コンテナが失敗した場合にタスクを停止する場合は True。重要でないコンテナは、インスタンス
で他のコンテナに影響を与えることなく、終了またはクラッシュできます。
メモリ
コンテナ用に予約するコンテナインスタンスのメモリの量。
mountPoints
マウントするコンテナインスタンスのボリュームと、それらをマウントするコンテナファイルシス
テム上の場所。アプリケーションコンテンツを含むボリュームをマウントし、ソースバンドルで
アップロードするデータや、Elastic Beanstalk が収集できる場所にログデータを書き込むためのロ
グボリュームをコンテナが読み取れるようにします。
Elastic Beanstalk は、/var/log/containers/containername に、コンテナごとに 1 つのログ
ボリュームをコンテナインスタンスに作成します。これらのボリュームの名前は
awseb-logs-containername で、ログが書き込まれるコンテナファイル構造内の場所にマウン
トします。
たとえば、次のマウントポイントは、コンテナの nginx ログの場所を、nginx-proxy コンテナ用
に Elastic Beanstalk が生成したボリュームにマッピングします。
{
"sourceVolume": "awseb-logs-nginx-proxy",
API Version 2010-12-01
562
AWS Elastic Beanstalk 開発者ガイド
チュートリアル - 複数コンテナの Docker
"containerPath": "/var/log/nginx"
}
portMappings
コンテナのネットワークポートをホストのポートにマッピングします。
links
リンク先のコンテナのリスト。リンクされたコンテナはお互いを検出し、安全に通信できます。
Note
Dockerrun.aws.json のコンテナ定義セクションとボリュームセクションは、Amazon ECS
タスク定義ファイルの対応するセクションと同じ形式を使用します。
前述の例では、一般的に使用されるパラメータのサブセットを示しています。そのほかのオプ
ションパラメータも使用可能です。タスク定義の形式およびタスク定義パラメータの完全な一
覧については、Amazon ECS 開発者ガイドの「Amazon ECS タスク定義」を参照してくださ
い。
AWS マネジメントコンソール を使用した複数コンテ
ナの Docker 環境
Abstract
IAM ロールを作成し、コンテナを設定して、2 つのコンテナを使用する Docker 環境用のソースコードを準備する
には、このチュートリアルの手順に従います。
AWS マネジメントコンソール を使用して、1 つのインスタンスまたはオートスケーリングの Elastic
Beanstalk 環境で複数コンテナインスタンスのクラスターを起動できます。このチュートリアルでは、
2 つのコンテナを使用する環境用の IAM ロールの作成、コンテナの設定、およびソースコードの作成
について説明します。
コンテナ、PHP アプリケーション、および nginx プロキシは、Amazon EC2 環境の各 Elastic Beanstalk
インスタンスで並列に実行されます。環境を作成し、アプリケーションが実行中であることを確認した
ら、コンテナインスタンスに接続して、それらの状態を確認できます。
セクション
• Docker コンテナの定義 (p. 563)
• コンテンツの追加 (p. 566)
• Elastic Beanstalk へのデプロイ (p. 566)
• コンテナインスタンスへの接続 (p. 568)
• Amazon ECS コンテナエージェントの確認 (p. 569)
Docker コンテナの定義
新しい Docker 環境作成の最初のステップは、アプリケーションデータ用のディレクトリの作成です。
このフォルダはローカルマシンの任意の場所に配置でき、任意の名前を付けることができます。コンテ
ナ設定ファイルに加えて、このフォルダには、Elastic Beanstalk にアップロードして環境にデプロイす
るコンテンツが含まれます。
API Version 2010-12-01
563
AWS Elastic Beanstalk 開発者ガイド
チュートリアル - 複数コンテナの Docker
Note
このチュートリアルのすべてのコードは、GitHub (https://github.com/awslabs/
eb-docker-nginx-proxy) の awslabs レポジトリで入手できます。
EC2 インスタンスのコンテナの設定に Elastic Beanstalk が使用するファイルは、Dockerrun.aws.json
という名前の JSON 形式のテキストファイルです。アプリケーションのルートでこの名前のテキスト
ファイルを作成し、次のテキストを追加します。
{
"AWSEBDockerrunVersion": 2,
"volumes": [
{
"name": "php-app",
"host": {
"sourcePath": "/var/app/current/php-app"
}
},
{
"name": "nginx-proxy-conf",
"host": {
"sourcePath": "/var/app/current/proxy/conf.d"
}
}
],
"containerDefinitions": [
{
"name": "php-app",
"image": "php:fpm",
"essential": true,
"memory": 128,
"mountPoints": [
{
"sourceVolume": "php-app",
"containerPath": "/var/www/html",
"readOnly": true
}
]
},
{
"name": "nginx-proxy",
"image": "nginx",
"essential": true,
"memory": 128,
"portMappings": [
{
"hostPort": 80,
"containerPort": 80
}
],
"links": [
"php-app"
],
"mountPoints": [
{
"sourceVolume": "php-app",
"containerPath": "/var/www/html",
API Version 2010-12-01
564
AWS Elastic Beanstalk 開発者ガイド
チュートリアル - 複数コンテナの Docker
"readOnly": true
},
{
"sourceVolume": "nginx-proxy-conf",
"containerPath": "/etc/nginx/conf.d",
"readOnly": true
},
{
"sourceVolume": "awseb-logs-nginx-proxy",
"containerPath": "/var/log/nginx"
}
]
}
]
}
この例の設定では、2 つのコンテナ、PHP ウェブサイトとその前面の nginx プロキシを定義します。こ
れらの 2 つコンテナは Elastic Beanstalk 環境の各インスタンスの Docker コンテナで並列に実行され、
このファイルで定義されるホストインスタンスのボリュームの共有コンテンツ(ウェブサイトのコンテ
ンツ)にアクセスします。コンテナそのものは、Docker ハブの公式リポジトリでホストされているイ
メージから作成されます。作成される環境は次のようになります。
設定で定義されるボリュームは、アプリケーションソースバンドルの一部として次に作成し、アップ
ロードするコンテンツに対応します。コンテナは、コンテナ定義の mountPoints セクションでボリュー
ムをマウントすることで、ホストのコンテンツにアクセスします。
Dockerrun.aws.config の形式とそのパラメータの詳細については、「コンテナ定義形式 (p. 562)」
を参照してください。
API Version 2010-12-01
565
AWS Elastic Beanstalk 開発者ガイド
チュートリアル - 複数コンテナの Docker
コンテンツの追加
次に、PHP サイトで閲覧者に表示するコンテンツと、nginx プロキシ用の設定ファイルを追加します。
php-app\index.php
<h1>Hello World!!!</h1>
<h3>PHP Version <pre><?= phpversion()?></pre></h3>
php-app\static.html
<h1>Hello World!</h1>
<h3>This is a static HTML page.</h3>
proxy\conf.d\default.conf
server {
listen 80;
server_name localhost;
root /var/www/html;
index index.php;
location ~ [^/]\.php(/|$) {
fastcgi_split_path_info ^(.+?\.php)(/.*)$;
if (!-f $document_root$fastcgi_script_name) {
return 404;
}
include fastcgi_params;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
fastcgi_param PATH_INFO $fastcgi_path_info;
fastcgi_param PATH_TRANSLATED $document_root$fastcgi_path_info;
fastcgi_pass php-app:9000;
fastcgi_index index.php;
}
}
Elastic Beanstalk へのデプロイ
アプリケーションフォルダには以下のファイルが含まれます。
php-app\index.php
php-app\static.html
proxy\conf.d\default.conf
Dockerrun.aws.json
これは、Elastic Beanstalk 環境を作成するのに必要なすべてです。上記のファイルとフォルダの .zip
アーカイブを作成します(最上位プロジェクトフォルダを含みません)。Windows エクスプローラー
でアーカイブを作成するには、プロジェクトフォルダの内容を選択し、右クリックして [Send To] を選
択します。次に、[Compressed (zipped) Folder] をクリックします。
API Version 2010-12-01
566
AWS Elastic Beanstalk 開発者ガイド
チュートリアル - 複数コンテナの Docker
Note
必要なファイル構造の詳細、および他の環境でアーカイブを作成する手順については、「アプ
リケーションソースバンドルを作成する (p. 42)」を参照してください。
次に、ソースバンドルを Elastic Beanstalk にアップロードして環境を作成します。プラットフォーム
の選択を求められたら、[Multi-container Docker] を選択します。
環境を起動するには(コンソール)
1.
Elastic Beanstalk コンソールを開きます。
2.
3.
アプリケーションを選択するか、新しいアプリケーションを作成 (p. 39)します。
右上隅で、[Create a New Environment] を選択します。
Note
環境の作成ウィザードで次の画面が表示された場合は、AWS Quick Start Guide: Web App
Deployment を参照してください。
4.
5.
[Create web server] を選択します。
[Predefined configuration] ドロップダウンメニューから、アプリケーションで使用されるプラット
フォームに一致するプラットフォームを選択します。
Note
Elastic Beanstalk は、リストされたほとんどのプラットフォームで複数の設定 (p. 25)をサ
ポートします。アプリケーションで使用される言語、フレームワーク、ウェブコンテナの
バージョンがデフォルト設定と一致しない場合、[Change Platform Version] を選択して別
の設定を選択します。
6.
7.
8.
9.
[Next] を選択します。
[Application Version] で、[Upload your own] を選択し、アプリケーションソースバンドルをアップ
ロードします。[Next] を選択します。
お客様の環境の [Environment name] と URL プレフィックスを入力し、[Next] を選択します。
[Next(次へ)] を選択して、追加リソースの作成を省略します。
10. [Configuration Details(構成の詳細)] については、[Instance type(インスタンスタイプ)] を
t2.micro に設定して、[EC2 key pair](オプション)を選択して [Next(次へ)] を選択します。
キーペアを割り当てることで、デバッグ環境のインスタンスに接続することができます。
Note
以前にキーペアを使用したことがない場合は、『Linux インスタンス用 Amazon EC2 ユー
ザーガイド』の「Amazon EC2 キーペア」を参照してください。
11. [Next(次へ)] を選択して、タグの作成を省略します。
12. [Permissions] ページで、[Next] を選択します。デフォルトのインスタンスプロファイルとサービ
スロール (p. 19)がない場合は、Elastic Beanstalk によって自動的に作成されます。
13. [Launch] を選択します。
AWS マネジメントコンソール により、新しい環境の管理ダッシュボードにリダイレクトされます。こ
の画面には、環境の状態ステータスと、Elastic Beanstalk サービスによって出力されたイベントが表示
API Version 2010-12-01
567
AWS Elastic Beanstalk 開発者ガイド
チュートリアル - 複数コンテナの Docker
されます。状態が緑色になったら、環境名の横の URL をクリックして新しいウェブサイトを表示しま
す。
コンテナインスタンスへの接続
これはどのような仕組みなのでしょうか。次に、Elastic Beanstalk 環境で EC2 インスタンスに接続し、
いくつかの可動部分を動かしてみます。
最初に、インスタンスを特定し、パブリック IP アドレスをメモします。IP アドレスは Amazon EC2
コンソール (https://console.aws.amazon.com/ec2/) で入手できます。複数のインスタンスを実行中で、
環境に属しているインスタンスの特定に問題がある場合は、環境ダッシュボードのイベントでインスタ
ンス ID を見つけます。この ID は、Elastic Beanstalk が EC2 インスタンスを起動したときに、イベン
トのリストに表示されます。Amazon EC2 コンソールでインスタンス ID を探し、その詳細を確認して
パブリック IP アドレスを見つけます。
次に、SSH クライアントとプライベートキーファイルを使用してインスタンスに接続します。以下の
設定を使用します。
SSH の設定
• [Address] – EC2 インスタンスのパブリック IP アドレスまたは DNS 名。
• [Port] – 22。このポートは、環境設定中に Amazon EC2 キーペアを選択すると、Elastic Beanstalk
Beanstalk によって進入用に開かれます。
• [User Name] – ec2-user。これは、Amazon Linux を実行中の EC2 インスタンスのデフォルトのユー
ザー名です。
• [Private Key] – プライベートキーファイル。
SSH を使用した EC2 インスタンスへの接続の詳細な手順については、『Linux インスタンス用 Amazon
EC2 ユーザーガイド』の「SSH を使用した Linux インスタンスへの接続」を参照してください。
これで、Docker コンテナをホストする EC2 インスタンスに接続したので、設定を確認できま
す。/var/app/current で ls を実行します:
[ec2-user@ip-10-0-0-117 ~]$ ls /var/app/current
Dockerrun.aws.json php-app proxy
このディレクトリには、環境の作成中に Elastic Beanstalk にアップロードしたソースバンドルからの
ファイルが含まれます。
[ec2-user@ip-10-0-0-117 ~]$ ls /var/log/containers
nginx
nginx-proxy-ffffd873ada5-stdouterr.log
nginx-66a4fd37eb63-stdouterr.log php-app
nginx-proxy
php-app-b894601a1364-stdouterr.log
rotated
ここでは、コンテナインスタンスにログが作成され、Elastic Beanstalk によって収集されます。Elastic
Beanstalk は、各コンテナ用にこのディレクトリでボリュームを作成します。このボリュームは、ログ
が書き込まれるコンテナの場所にマウントします。
Docker を確認し、docker ps で実行中のコンテナを表示することもできます。
[ec2-user@ip-10-0-0-117 ~]$ sudo docker ps
CONTAINER ID
IMAGE
CREATED
STATUS
PORTS
ffffd873ada5
nginx:1.7
API Version 2010-12-01
568
COMMAND
NAMES
"nginx -g 'daemon of
AWS Elastic Beanstalk 開発者ガイド
チュートリアル - 複数コンテナの Docker
About an hour ago
Up About an hour
443/tcp, 0.0.0.0:80->80/tcp
dv-example-env-ycmk5geqrm-2-nginx-proxy-90fce996cc8cbecb2800
b894601a1364
php:5-fpm
"php-fpm"
About an hour ago
Up About an hour
9000/tcp
dv-example-env-ycmk5geqrm-2-php-app-cec0918ed1a3a49a8001
09fb19828e38
amazon/amazon-ecs-agent:latest
"/agent"
About an hour ago
Up About an hour
127.0.0.1:51678->51678/tcp
ecs-eb-
ecs-eb-
ecs-agent
デプロイした 2 つの実行中のコンテナと、デプロイを調整した Amazon ECS コンテナエージェントが
表示されます。
Amazon ECS コンテナエージェントの確認
Elastic Beanstalk の複数コンテナの Docker 環境の EC2 インスタンスは、Docker コンテナでエージェ
ントプロセスを実行します。このエージェントは、コンテナのデプロイを調整するために、Amazon
ECS サービスに接続します。これらのデプロイは Amazon ECS でタスクとして実行され、タスク定義
ファイルで設定されます。Elastic Beanstalk は、ソースバンドルでアップロードする
Dockerrun.aws.json に基づいて、これらのタスク定義ファイルを作成します。
http://localhost:51678/v1/metadata への HTTP GET リクエストで、コンテナエージェントの
状態を確認します。
[ec2-user@ip-10-0-0-117 ~]$ curl http://localhost:51678/v1/metadata
{
"Cluster":"eb-dv-example-env-qpoxiguye24",
"ContainerInstanceArn":"arn:aws:ecs:us-east-1:123456789012:container-in
stance/6a72af64-2838-400d-be09-3ab2d836ebcd"
}
この構造は、Amazon ECS クラスター名、およびクラスターインスタンス(接続先の EC2 インスタン
ス)の ARN(Amazon リソースネーム)を示します。
詳細については、HTTP GET リクエストを行ってください。その方法については、
http://localhost:51678/v1/tasks を参照してください。
[ec2-user@ip-10-0-0-117 ~]$ curl http://localhost:51678/v1/tasks
{
"Tasks":[
{
"Arn":"arn:aws:ecs:us-east-1:123456789012:task/3ff2bf0f-790d-4f6d-affb5b127b3b6e4a",
"DesiredStatus":"RUNNING",
"KnownStatus":"RUNNING",
"Family":"eb-dv-example-env-qpoxiguye24",
"Version":"2",
"Containers":[
{
"Dock
erId":"b894601a1364a438156a239813c77cdef17040785bc4d5e49349470dc1556b15",
"DockerName":"ecs-eb-dv-example-env-qpoxiguye24-2-php-appcec0918ed1a3a49a8001",
"Name":"php-app"
},
{
"Dock
API Version 2010-12-01
569
AWS Elastic Beanstalk 開発者ガイド
複数コンテナの Docker プラットフォーム
erId":"ffffd873ada5f537c88862cce4e1de7ec3edf962645982fb236961c833a5d0fe",
"DockerName":"ecs-eb-dv-example-env-qpoxiguye24-2-nginx-proxy90fce996cc8cbecb2800",
"Name":"nginx-proxy"
}
]
}
]
}
この構造は、このチュートリアルのサンプルプロジェクトから 2 つの Docker コンテナをデプロイする
ために実行されるタスクについて示しています。以下の情報が表示されます。
• [KnownStatus] – RUNNING ステータスは、コンテナがまだアクティブであることを示します。
• [Family] – Dockerrun.aws.json から Elastic Beanstalk によって作成されたタスク定義の名前。
• [Version] – タスク定義のバージョン。これは、タスク定義ファイルを更新するたびに増えていきま
す。
• [Containers] – インスタンスで実行されるコンテナに関する情報。
さらに多くの情報が、Amazon ECS サービス自体から使用できます。このサービスは AWS Command
Line Interface を使用して呼び出すことができます。AWS CLI と Amazon ECS の使用方法、および
Amazon ECS の全般的な情報については、『Amazon ECS ユーザーガイド』を参照してください。
トピック
• 複数コンテナの Docker プラットフォーム (p. 570)
• Dockerrun.aws.json ファイル (p. 571)
• Docker イメージ (p. 571)
• コンテナインスタンスロール (p. 572)
• Elastic Beanstalk によって作成された Amazon ECS リソース (p. 572)
• 複数の Elastic Load Balancing リスナーの使用 (p. 573)
• 失敗したコンテナのデプロイ (p. 574)
複数コンテナの Docker プラットフォーム
Elastic Beanstalk の標準的な汎用の事前設定済み Docker プラットフォームは、Elastic Beanstalk 環境
ごとに 1 つの Docker コンテナのみをサポートします。Docker を最大限に活用するため、Elastic
Beanstalk では、インスタンスが複数の Docker コンテナを並行して実行できる環境を作成することが
できます。
次の図は、Auto Scaling グループの各 EC2 インスタンスで実行される 3 つの Docker コンテナで設定
された Elastic Beanstalk 環境の例を示しています。
API Version 2010-12-01
570
AWS Elastic Beanstalk 開発者ガイド
Dockerrun.aws.json ファイル
Dockerrun.aws.json ファイル
Elastic Beanstalk 上の複数コンテナの Docker インスタンスでは、Dockerrun.aws.json という名前
の設定ファイルが必要です。このファイルは Elastic Beanstalk に固有であり、単独で、またはソース
バンドル (p. 42)でソースコードやコンテンツと組み合わせて使用して、Docker プラットフォーム上に
環境を作成することができます。
Note
バージョン 1 の Dockerrun.aws.json 形式は、Elastic Beanstalk 環境で 1 つの Docker コン
テナを起動するために使用されます。バージョン 2 ではインスタンスごとに複数のコンテナの
サポートが追加され、複数コンテナの Docker プラットフォームとの組み合わせでのみ使用で
きます。この形式は、以前のバージョンとは大きく異なります。以前のバージョンの詳細につ
いては、「単一コンテナの Docker の設定 (p. 553)」を参照してください。
更新された形式とサンプルファイルについては、「Dockerrun.aws.json v2 (p. 559)」を参照してくださ
い。
Docker イメージ
Elastic Beanstalk の複数コンテナの Docker プラットフォームでは、イメージを事前に作成し、パブリッ
クまたはプライベートのオンラインイメージリポジトリに保存する必要があります。
Note
デプロイ中に Dockerfile を使用したカスタムイメージの構築は、Elastic Beanstalk の複数コ
ンテナの Docker プラットフォームではサポートされません。イメージを構築して、Elastic
Beanstalk 環境を作成する前にオンラインレポジトリにデプロイします。
Dockerrun.aws.json で名前によってイメージを指定します。次の規則があります。
API Version 2010-12-01
571
AWS Elastic Beanstalk 開発者ガイド
コンテナインスタンスロール
• Docker ハブの公式リポジトリのイメージでは、1 つの名前(例: ubuntu、mongo)を使用します。
• Docker ハブの他のリポジトリのイメージは、組織名で修飾されます(例:
amazon/amazon-ecs-agent)。
• 他のオンラインレジストリのイメージは、ドメイン名でさらに修飾されます(例:
quay.io/assemblyline/ubuntu)。
プライベートレポジトリを認証するように Elastic Beanstalk を設定するには、Dockerrun.aws.json
ファイルに authentication パラメータを含めます。
コンテナインスタンスロール
Elastic Beanstalk は、Docker コンテナで実行される Amazon ECS コンテナエージェントで、Amazon
ECS 最適化 AMI を使用します。エージェントは、Amazon ECS と通信してコンテナのデプロイを調整
します。Amazon ECS と通信するためには、各インスタンスには IAM に対応するアクセス権限が必要
です。これらのアクセス許可は、管理コンソールで Elastic Beanstalk 環境を作成すると、デフォルト
のインスタンスプロファイル (p. 19)にアタッチされます。
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Action": [
"ecs:StartTask",
"ecs:StopTask",
"ecs:RegisterContainerInstance",
"ecs:DeregisterContainerInstance",
"ecs:DescribeContainerInstances",
"ecs:DiscoverPollEndpoint",
"ecs:Submit*",
"ecs:Poll"
],
"Resource": ["*"]
}
]
}
独自のインスタンスプロファイルを作成する場合は、AWSElasticBeanstalkMulticontainerDocker
管理ポリシーをアタッチして、アクセス許可が最新であることを確認することができます。IAM でのポ
リシーとロールの作成手順については、『IAM ユーザーガイド』の「IAM ロールの作成」を参照してく
ださい。
Elastic Beanstalk によって作成された Amazon ECS
リソース
複数コンテナの Docker プラットフォームを使用して環境を作成する場合、各 EC2 インスタンスで必
要なコンテナを作成するため、環境の構築中に Elastic Beanstalk によって自動的に複数の Amazon EC2
Container Service リソースが作成、設定されます。
• Amazon ECS クラスター – Amazon ECS のコンテナインスタンスはクラスターに整理されます。
Elastic Beanstalk とともに使用すると、1 つのクラスターは常に各複数コンテナの Docker 環境用に
作成されます。
API Version 2010-12-01
572
AWS Elastic Beanstalk 開発者ガイド
複数の Elastic Load Balancing リスナーの使用
• Amazon ECS タスク定義 – Elastic Beanstalk はプロジェクトで Dockerrun.aws.json ファイルを
使用して、環境でコンテナインスタンスを設定するために使用される Amazon ECS タスク定義を生
成します。
• Amazon ECS タスク – Elastic Beanstalk は Amazon ECS と通信して、環境の各インスタンスでタス
クを実行し、コンテナのデプロイを調整します。オートスケーリング環境では、Elastic Beanstalk は
インスタンスがクラスターに追加されるたびに新しいタスクを開始します。
• Amazon ECS コンテナエージェント – エージェントは環境のインスタンスの Docker コンテナで実行
されます。エージェントは Amazon ECS サービスをポーリングし、タスクの実行を待ちます。
• Amazon ECS データボリューム – Elastic Beanstalk はログ収集を容易にするため、
(Dockerrun.aws.json に定義するボリュームに加えて)ボリューム定義をタスク定義に挿入しま
す。
Elastic Beanstalk は、/var/log/containers/containername に、コンテナごとに 1 つのログボ
リュームをコンテナインスタンスに作成します。これらのボリュームの名前は
awseb-logs-containername で、マウントするコンテナごとに指定されます。このマウント方法
については、「コンテナ定義形式 (p. 562)」を参照してください。
複数の Elastic Load Balancing リスナーの使用
デフォルトの HTTP ポートで実行されないプロキシまたは他のサービス用の受信トラフィックをサポー
トするため、複数コンテナの Docker 環境で、複数の Elastic Load Balancing リスナーを設定できます。
ソースバンドルで .ebextensions フォルダを作成し、ファイル拡張子が .config のファイルを追加
します。次の例では、ポート 8080 で Elastic Load Balancing リスナーを作成する設定ファイルを示し
ます。
.ebextensions/elb-listener.config
option_settings:
aws:elb:listener:8080:
ListenerProtocol: HTTP
InstanceProtocol: HTTP
InstancePort: 8080
お使いの環境で作成したカスタム VPC を実行されている場合、Elastic Beanstalk が残りを引き受けま
す。デフォルトの VPC では、インスタンスのセキュリティグループを設定して、ロードバランサーか
らの着信を許可する必要があります。進入ルールを追加する第 2 の設定ファイルをセキュリティグルー
プに追加します。
.ebextensions/elb-ingress.config
Resources:
port8080SecurityGroupIngress:
Type: AWS::EC2::SecurityGroupIngress
Properties:
GroupId: {"Fn::GetAtt" : ["AWSEBSecurityGroup", "GroupId"]}
IpProtocol: tcp
ToPort: 8080
FromPort: 8080
SourceSecurityGroupName: { "Fn::GetAtt": ["AWSEBLoadBalancer",
"SourceSecurityGroup.GroupName"] }
設定ファイルの形式の詳細については、「Elastic Beanstalk 環境リソースの追加とカスタマイズ (p. 167)」
および「オプション設定 (p. 148)」を参照してください。
API Version 2010-12-01
573
AWS Elastic Beanstalk 開発者ガイド
失敗したコンテナのデプロイ
Elastic Load Balancing 設定にリスナーを追加し、セキュリティグループでポートを開くことに加えて、
Dockerrun.aws.json ファイルの containerDefinitions セクションで、Docker コンテナのポー
トにホストインスタンスのポートをマッピングする必要があります。例を以下に示します。
"portMappings": [
{
"hostPort": 8080,
"containerPort": 8080
}
]
Dockerrun.aws.json ファイル形式の詳細については、「Dockerrun.aws.json v2 (p. 559)」を参照し
てください。
失敗したコンテナのデプロイ
Amazon ECS タスクが失敗した場合、Elastic Beanstalk 環境の 1 つ以上のコンテナが開始されません。
Elastic Beanstalk は、Amazon ECS タスクが失敗したことで複数コンテナ環境をロールバックするこ
とはありません。環境でコンテナの開始が失敗した場合は、AWS マネジメントコンソール から現在の
バージョンまたは以前の機能するバージョンを再デプロイします。
既存のバージョンをデプロイするには
1.
2.
3.
ご使用の環境のリージョンで Elastic Beanstalk コンソールを開きます。
アプリケーション名の横の [Actions] をクリックし、[View Application Versions] をクリックしま
す。
アプリケーションのバージョンを選択し、[Deploy] をクリックします。
事前設定済み Docker コンテナ
Abstract
事前設定された Docker コンテナタイプを使用して、さまざまな言語で開発されたアプリケーションを Elastic
Beanstalk にデプロイします。
トピック
• 事前設定された Docker コンテナの使用を開始する (p. 575)
• 例: Dockerfile を使用して、事前設定された Docker プラットフォームをカスタマイズおよび設定す
る (p. 576)
Elastic Beanstalk では、Docker オフィシャルリポジトリで提供されている言語スタックに基づく Docker
コンテナをサポートしています。事前設定された Docker コンテナを使用し、アプリケーションをロー
カルで開発およびテストしてから、ローカル環境と同じに設定されている Elastic Beanstalk 環境でア
プリケーションをデプロイできます。
事前設定された Docker コンテナを使用してアプリケーションを Elastic Beanstalk にデプロイする方法
の完全なウォークスルーについては、「事前設定された Docker コンテナの使用を開始する (p. 575)」を
参照してください。
事前設定された Docker コンテナに対してサポートされているプラットフォームの詳細については、
「事前設定済み Docker (p. 26)」を参照してください。
API Version 2010-12-01
574
AWS Elastic Beanstalk 開発者ガイド
事前設定された Docker コンテナの使用を開始する
事前設定された Docker コンテナの使用を開始する
Abstract
言語固有の事前設定済み Docker コンテナを使用して、ウェブアプリケーションの開発やテスト、および Elastic
Beanstalk へのデプロイを行います。
このセクションでは、事前設定された Docker コンテナを使用して、サンプルアプリケーションをロー
カルで開発し、そのアプリケーションを Elastic Beanstalk にデプロイする方法について説明します。
ローカルの開発環境のセットアップ
このウォークスルーでは、Python Flask の "Hello World" アプリケーションを使用します。
開発環境をセットアップするには
1.
サンプルアプリケーション用の新しいフォルダを作成します。
$ mkdir eb-flask-sample
$ cd eb-flask-sample
2.
アプリケーションのルートフォルダに、application.py ファイルを作成します。ファイルには、
次のように入力してください。
from flask import Flask
app = Flask(__name__)
@app.route('/')
def hello_world():
return 'Hello World!'
if __name__ == '__main__':
app.run()
3.
アプリケーションのルートフォルダに、requirements.txt ファイルを作成します。ファイルに
は、次のように入力してください。
flask
ローカル環境での開発とテスト
サンプルの Python Flask アプリケーションを開発するには
1.
Dockerfile をアプリケーションのルートフォルダに追加します。ファイルには、事前設定された
ローカルの Docker コンテナを実行するために使用される AWS Elastic Beanstalk Docker ベースイ
メージを指定します。また、このイメージに基づいて、Elastic Beanstalk では Dockerfile に関
する後続の手順を実行します。次のように入力してください。
# For Python 3.4
FROM amazon/aws-eb-python:3.4.2-onbuild-3.5.1
API Version 2010-12-01
575
AWS Elastic Beanstalk 開発者ガイド
例: 事前設定された Docker プラットフォームをカスタマイ
ズおよび設定する
AWS Elastic Beanstalk では、Glassfish 4.1 Java 8 および Glassfish 4.0 Java 7 用の Docker イメー
ジもサポートしています。Docker イメージの名前については、「サポートされているプラット
フォーム (p. 25)」を参照してください。Dockerfile の使用方法の詳細については、「単一コン
テナの Docker の設定 (p. 553)」を参照してください。
2.
Docker イメージを作成します。
$ docker build –t my-app-image .
3.
イメージから Docker コンテナを実行します。
Note
コンテナのポート 8080 をローカルホストのポート 3000 にマッピングする -p フラグを指
定する必要があります。Elastic Beanstalk Docker コンテナでは、常にコンテナのポート
8080 でアプリケーションを公開します。-it フラグは、イメージをインタラクティブプ
ロセスとして実行します。-rm フラグは、コンテナが存在する場合にコンテナファイルシ
ステムをクリーンアップします。オプションで、イメージをデーモンとして実行するため
の -d フラグも指定できます。
$ docker run –it --rm -p 3000:8080 my-app-image
4.
サンプルアプリケーションを表示するには、次の URL をウェブブラウザに入力します。
http://localhost:3000
Elastic Beanstalk へのデプロイ
アプリケーションをテストすると、Elastic Beanstalk にデプロイする準備が完了します。
アプリケーションを Elastic Beanstalk にデプロイするには
1.
2.
3.
アプリケーションのルートフォルダで、Dockerfile という名前を Dockerfile.local に変更し
ます。このステップは、Elastic Beanstalk に対する正しい指示を含んだ Dockerfile を Elastic
Beanstalk で使用し、カスタマイズされた Docker イメージを Elastic Beanstalk 環境の各 Amazon
EC2 インスタンスに作成するために必要なステップです。
アプリケーションソースバンドルを作成します。詳細については、「アプリケーションソースバン
ドルを作成する (p. 42)」を参照してください。
新しい Elastic Beanstalk アプリケーションを作成して、アプリケーションをデプロイできるよう
にするには、「アプリケーションを作成します。 (p. 39)」を参照してください。該当するステッ
プで、[Environment Type] ページの [Predefined configuration] リストにある、[Preconfigured Docker] の下の [Python] をクリックします。
例: Dockerfile を使用して、事前設定された Docker
プラットフォームをカスタマイズおよび設定する
Abstract
Dockerfile を使用して、事前設定された Docker ベースイメージを設定します。
API Version 2010-12-01
576
AWS Elastic Beanstalk 開発者ガイド
例: 事前設定された Docker プラットフォームをカスタマイ
ズおよび設定する
事前設定された Docker プラットフォームでは、設定ファイルを使用して、アプリケーションが依存す
るソフトウェアをカスタマイズしたり、設定したりすることはできません。その代わりに、事前設定済
みの Docker プラットフォームをカスタマイズして、アプリケーションに必要な追加のソフトウェア
パッケージをインストールする場合は、Dockerfile をアプリケーションのルートフォルダに追加しま
す。
Dockerfile には以下の指示を含めることができます。
• FROM –(ファイルの最初の指示として必須)Docker コンテナを作成するベースとなり、Elastic
Beanstalk が後続の Dockerfile 指示を実行する対象となるベースイメージを指定します。
このイメージは、パブリックリポジトリ、サードパーティレジストリによってホストされているプラ
イベートリポジトリ、または EC2 で実行しているリポジトリでホストできます。
• EXPOSE –(必須)Docker コンテナで公開するポートをリストアップします。Elastic Beanstalk は、
ポートの値を使用して、ホストで実行されているリバースプロキシに Docker コンテナを接続しま
す。
複数のコンテナポートを指定できますが、Elastic Beanstalk は最初に指定したコンテナポートのみを
使用してホストのリバースプロキシにコンテナを接続し、公衆インターネットからのリクエストを
ルーティングします。
• CMD – 起動時にコンテナが実行するコマンドに統合される、実行ファイルおよびデフォルトパラメー
タを指定します。次の形式を使用します。
CMD ["executable","param1","param2"]
CMD は、実行ファイルの引数を省略して、ENTRYPOINT コマンドのデフォルトのパラメータを指定
するためにも使用できます。実行ファイルは CMD または ENTRYPOINT で指定する必要があります
が、両方で指定する必要はありません。基本的なシナリオでは CMD を使用し、ENTRYPOINT は省略
します。
• ENTRYPOINT – CMD と同じ JSON 形式を使用し、CMD のように、コンテナの起動時に実行するコマ
ンドを指定します。また、docker run を使用して、コンテナが実行ファイルとして実行できるよう
にします。
ENTRYPOINT を定義する場合、CMD も同様に使用して、docker run の -d オプションでオーバー
ライドできるデフォルトパラメータを指定できます。ENTRYPOINT によって定義されるコマンド(任
意のパラメータを含む)は、コンテナの実行時に CMD または docker run からのパラメータと統合
されます。
• RUN – イメージ内でパッケージをインストールし、ウェブアプリケーションを設定する 1 つ以上の
コマンドを指定します。
Dockerfile に RUN 指示を含める場合は、RUN 指示によって使用される Dockerfile 内のファイ
ルとコンテキストを .zip ファイルに圧縮します。ディレクトリの最上位でファイルを圧縮します。
Dockerfile に含めることができる指示の詳細については、Docker ウェブサイトの Dockerfile Reference
を参照してください。
以下のスニペットは、Dockerfile の例です。Dockerfile に含まれる指示によって Python 3.4 プラッ
トフォームがカスタマイズされ、PostgreSQL の依存関係が追加され、ポート 8080 が公開されます。
Note
Glassfish および Python 用の Elastic Beanstalk 事前設定済み Docker プラットフォームでは、
ポート 8080 を公開する必要があります。Go 用の Elastic Beanstalk 事前設定済み Docker プ
ラットフォームでは、ポート 3000 を公開する必要があります。
API Version 2010-12-01
577
AWS Elastic Beanstalk 開発者ガイド
環境設定
# Use the AWS Elastic Beanstalk Python 3.4 image
FROM amazon/aws-eb-python:3.4.2-onbuild-3.5.1
# Exposes port 8080
EXPOSE 8080
# Install PostgreSQL dependencies
RUN apt-get update && \
apt-get install -y postgresql libpq-dev && \
rm -rf /var/lib/apt/lists/*
追加の AWS リソース(Amazon DynamoDB や Amazon Simple Notification Service など)を使用する
場合は、お客様の Elastic Beanstalk 環境で、プロキシサーバーを変更するか、オペレーティングシス
テムの設定を変更します。設定ファイルの使用方法の詳細については、「AWS Elastic Beanstalk 環境
設定 (p. 100)」を参照してください。
Docker 環境の設定
Abstract
Elastic Beanstalk アプリケーション用にソフトウェア設定を定義します。
Elastic Beanstalk 環境のソフトウェア設定にアクセスするには
1.
2.
3.
4.
Elastic Beanstalk コンソールを開きます。
環境については「management console (p. 50)」をご覧ください。
[Configuration] を選択します。
[Software Configuration] セクションで、
を選択します。
[Log Options] セクションには、2 つの設定があります。
• Instance profile – アプリケーションに関連付けられた Amazon S3 バケットへのアクセス許可が付与
されているインスタンスプロファイルを指定します。
• Enable log file Amazon EC2 instances – Amazon EC2 インスタンスのログファイルを、アプリケー
ションに関連付けられている Amazon S3 バケットにコピーします。
Elastic Beanstalk は、アプリケーションの Amazon EC2 インスタンスのログファイルを、アプリケー
ションに関連付けられている Amazon S3 バケットに 1 時間ごとにコピーできます。この機能を有効に
するには、[Enable log file rotation to Amazon S3] を選択します。
[Environment Properties] セクションで、アプリケーションコードから読み取ることができる環境変数
を指定できます。
EB CLI を使用して Docker 環境をローカルで実行
する
Abstract
EB CLI を使用して、AWS Elastic Beanstalk Docker アプリケーションをローカルで実行します。
API Version 2010-12-01
578
AWS Elastic Beanstalk 開発者ガイド
Docker アプリケーションをローカルで実行するための前提
条件
EB コマンドラインインターフェイス(EB CLI)を使用して、AWS Elastic Beanstalk アプリケーショ
ンでローカルに設定された Docker コンテナを実行できます。EB CLI は、プロジェクトディレクトリ
にある Docker 設定ファイル(Dockerfile または Dockerrun.aws.json)とソースコードを使用して、
Docker 内のローカルでアプリケーションを実行します。
EB CLI は、単一コンテナ、複数コンテナ、および事前設定済みコンテナのアプリケーションをローカ
ルでサポートします。
トピック
• Docker アプリケーションをローカルで実行するための前提条件 (p. 579)
• EB CLI で使用するために Docker アプリケーションを準備する (p. 580)
• Docker アプリケーションをローカルで実行する (p. 580)
• Docker アプリケーションのローカルでの実行後にクリーンアップする (p. 582)
Docker アプリケーションをローカルで実行するため
の前提条件
• Linux OS または Mac OS X
• EB CLI バージョン 3.3 以降 (p. 403)
EB CLI リポジトリを初期化するために、プロジェクトディレクトリで eb init を実行します。EB
CLI を初めて使用する場合は、「EB CLI による Elastic Beanstalk 環境の管理 (p. 413)」を参照してく
ださい。
• Docker バージョン 1.6 以降
自分自身を docker グループに追加し、一度ログアウトしてからログインし直して、sudo を使用せ
ずに Docker コマンドを実行できることを確認します。
$ sudo usermod -a -G docker $USER
Docker デーモンが実行されていることを確認するために、docker ps を実行します。
$ docker ps
CONTAINER ID
STATUS
IMAGE
PORTS
COMMAND
NAMES
CREATED
• Docker アプリケーション
ご使用のローカルマシンのプロジェクトフォルダに Docker アプリケーションが存在しない場合は、
「Docker コンテナからの Elastic Beanstalk アプリケーションのデプロイ (p. 549)」を参照して、AWS
Elastic Beanstalk での Docker の使用の概要を確認してください。
• Docker プロファイル(オプション)
アプリケーションで、非公開リポジトリにある Docker イメージを使用する場合は、docker login
を実行し、プロンプトに従って認証プロファイルを作成します。
• w3m(オプション)
w3m は、コマンドラインターミナルで eb local run を使用して、実行中のウェブアプリケーショ
ンを表示するときに使用できるウェブブラウザです。デスクトップ環境でコマンドラインを使用する
場合は、w3m は必要ありません。
API Version 2010-12-01
579
AWS Elastic Beanstalk 開発者ガイド
EB CLI で使用するために Docker アプリケーションを準備
する
セキュリティグループや、データ層またはワーカー枠を含め、アプリケーションを Elastic Beanstalk
にデプロイするときは、Docker コンテナは、プロビジョニングされた AWS リソースをエミュレート
せずに実行されます。
envvars オプションを使用して必要な接続文字列またはその他の変数を渡すことにより、データベー
スに接続するようローカルコンテナを設定できますが、割り当てられたセキュリティグループで適切な
ポートを開くか、デフォルトのゲートウェイまたは Elastic IP アドレスをアタッチすることにより、
AWS のどのリソースにもローカルマシンからアクセスできるようにする必要があります。
EB CLI で使用するために Docker アプリケーション
を準備する
Elastic Beanstalk にデプロイする場合と同様に、Docker 設定ファイルとソースデータを準備します。
このトピックでは、このガイドの「チュートリアル - 複数コンテナの Docker (p. 563)」で例として挙げ
た PHP および nginx のプロキシの例を使用しますが、単一コンテナ、複数コンテナ、事前設定済みの
いずれの Docker アプリケーションでも同じコマンドを使用できます。
Docker アプリケーションをローカルで実行する
プロジェクトディレクトリで eb local run コマンドを使用して、Docker アプリケーションをローカ
ルで実行します。
~/project$ eb local run
Creating elasticbeanstalk_phpapp_1...
Creating elasticbeanstalk_nginxproxy_1...
Attaching to elasticbeanstalk_phpapp_1, elasticbeanstalk_nginxproxy_1
phpapp_1
| [23-Apr-2015 23:24:25] NOTICE: fpm is running, pid 1
phpapp_1
| [23-Apr-2015 23:24:25] NOTICE: ready to handle connections
EB CLI は、Docker 設定を読み込み、アプリケーションの実行に必要な Docker コマンドを実行します。
プロジェクトを初めてローカルで実行するときは、Docker は、リモートリポジトリからイメージをダ
ウンロードし、ローカルマシンに保存します。この処理には数分かかることもあります。
Note
eb local run コマンドには、port とenvvars の 2 つのオプションパラメータがあります。
単一コンテナのアプリケーションのデフォルトのポートをオーバーライドするには、port オ
プションを使用します。
$ eb local run --port 8080
このコマンドは、ホストのポート 8080 を使用し、コンテナの公開ポートにマッピングするよ
うに EB CLI に指定します。ポートを指定しない場合は、EB CLI はホスト用にコンテナのポー
トを使用します。このオプションは、単一コンテナのアプリケーションでのみ機能します。
環境変数をアプリケーションコンテナに渡すには、envvars オプションを使用します。
$ eb local run --envvars
RDS_HOST=$RDS_HOST,RDS_DB=$RDS_DB,RDS_USER=$RDS_USER,RDS_PASS=$RDS_PASS
環境変数は、データベース接続を設定するため、デバッグオプションを設定するため、または
アプリケーションに安全にシークレットを渡すために使用します。eb local サブコマンドで
サポートされるオプションの詳細については、「eb ローカル (p. 442)」を参照してください。
API Version 2010-12-01
580
AWS Elastic Beanstalk 開発者ガイド
Docker アプリケーションをローカルで実行する
コンテナが Docker で実行中になると、クライアントからのリクエストを処理できる状態になります。
コンテナが実行中である間、eb local プロセスは開いたままです。プロセスとコンテナを停止する必
要がある場合は、Ctrl+C を押します。
eb local プロセスの実行中に追加のコマンドを実行するには、別のターミナルを開きます。アプリ
ケーションのステータスを表示するには、eb local status を使用します。
~/project$ eb local status
Platform: 64bit Amazon Linux 2014.09 v1.2.1 running Multi-container Docker 1.3.3
(Generic)
Container name: elasticbeanstalk_nginxproxy_1
Container ip: 127.0.0.1
Container running: True
Exposed host port(s): 80
Full local URL(s): 127.0.0.1:80
Container name: elasticbeanstalk_phpapp_1
Container ip: 127.0.0.1
Container running: True
Exposed host port(s): None
Full local URL(s): None
docker ps を使用すると、Docker の視点からコンテナのステータスを表示できます。
~/project$ docker ps
CONTAINER ID
IMAGE
COMMAND
CREATED
STATUS
PORTS
NAMES
6a8e71274fed
nginx:latest
"nginx -g 'daemon of
9 minutes ago
Up 9 minutes
0.0.0.0:80->80/tcp, 443/tcp
elasticbean
stalk_nginxproxy_1
82cbf620bdc1
php:fpm
"php-fpm"
9 minutes ago
Up 9 minutes
9000/tcp
elasticbeanstalk_phpapp_1
次に、eb local open を使用して、動作中のアプリケーションを表示します。
~/project$ eb local open
このコマンドは、デフォルトのウェブブラウザでアプリケーションを開きます。デスクトップ環境で
ターミナルを実行している場合は、Firefox、Safari、Google Chrome のいずれかである可能性がありま
す。ヘッドレス環境または SSH 接続経由でターミナルを実行している場合は、w3m などのコマンドラ
インブラウザが利用可能であれば、そのブラウザが使用されます。
アプリケーションプロセスを実行中のターミナルに一時的に切り替えて、追加の出力を確認しましょ
う。
phpapp_1
| 172.17.0.36 -
21/Apr/2015:23:46:17 +0000 "GET /index.php" 200
これは、Docker コンテナ内のウェブアプリケーションが index.php に対する HTTP GET リクエストを
受け取り、ステータス 200(エラーなし)で正常に返されたことを示します。
eb local logs を実行して、EB CLI がログを書き込む場所を確認します。
~/project$ eb local logs
Elastic Beanstalk will write logs locally to /home/user/project/.elasticbean
API Version 2010-12-01
581
AWS Elastic Beanstalk 開発者ガイド
Docker アプリケーションのローカルでの実行後にクリーン
アップする
stalk/logs/local.
Logs were most recently created 3 minutes ago and written to /home/user/pro
ject/.elasticbeanstalk/logs/local/150420_234011665784.
Docker アプリケーションのローカルでの実行後にク
リーンアップする
ローカルでのアプリケーションのテストが完了したら、アプリケーションを停止し、eb local run
を実行したときに Docker がダウンロードしたイメージを削除することができます。イメージを削除す
るかどうかはオプションです。将来使用するために保持することもできます。
eb local プロセスを実行しているターミナルに戻り、Ctrl+C を押してアプリケーションを停止しま
す。
^CGracefully stopping... (press Ctrl+C again to force)
Stopping elasticbeanstalk_nginxproxy_1...
Stopping elasticbeanstalk_phpapp_1...
Aborting.
[1]+ Exit 5
eb local run
EB CLI は、Docker コマンドを使用して、実行中のコンテナを適切に停止するよう試みます。すぐにプ
ロセスを停止する必要がある場合は、もう一度 Ctrl+C を押します。
アプリケーションが停止したあとに、Docker コンテナも停止されるはずです。docker ps を使用して
確認します。
$ docker ps --all
CONTAINER ID
IMAGE
STATUS
PORTS
73d515d99d2a
nginx:latest
Exited (0) 11 minutes ago
stalk_nginxproxy_1
7061c76220de
php:fpm
Exited (0) 11 minutes ago
COMMAND
CREATED
NAMES
"nginx -g 'daemon of
21 minutes ago
elasticbean
"php-fpm"
21 minutes ago
elasticbeanstalk_phpapp_1
all オプションを使用すると、停止されたコンテナが表示されます(このオプションを省略すると出力
は空になります)。前述の例では、Docker では、両方のコンテナがステータス 0(エラーなし)で終
了したことが示されています。
Docker および EB CLI のローカルコマンドを使用し終えたら、領域を節約するためにローカルマシン
から Docker イメージを削除することができます。
Docker イメージをローカルマシンから削除するには
1.
docker images を使用して、ダウンロードしたイメージを表示します。
$ docker images
REPOSITORY
VIRTUAL SIZE
php
414.1 MB
TAG
IMAGE ID
CREATED
fpm
68bc5150cffc
1 hour ago
API Version 2010-12-01
582
AWS Elastic Beanstalk 開発者ガイド
Docker アプリケーションのローカルでの実行後にクリーン
アップする
nginx
latest
637d3b2f5fb5
1 hour ago
93.44 MB
2.
docker rm を使用して、2 の Docker コンテナを削除します。
$ docker rm 73d515d99d2a 7061c76220de
73d515d99d2a
7061c76220de
3.
docker rmi を使用して、イメージを削除します。
$ docker rmi 68bc5150cffc 637d3b2f5fb5
Untagged: php:fpm
Deleted: 68bc5150cffc0526c66b92265c3ed8f2ea50f3c71d266aa655b7a4d20c3587b0
Untagged: nginx:latest
Deleted: 637d3b2f5fb5c4f70895b77a9e76751a6e7670f4ef27a159dad49235f4fe61e0
API Version 2010-12-01
583
AWS Elastic Beanstalk 開発者ガイド
Go プラットフォーム
Go アプリケーションを Elastic
Beanstalk アプリケーションにデプロ
イする
Abstract
Go プログラミング言語(Golang とも呼ばれます)で開発されたアプリケーションを Elastic Beanstalk にデプロイ
するには、事前設定された Docker コンテナタイプを使用します。
AWS Elastic Beanstalk は Go プログラミング言語(Golang とも呼ばれます)を使用して開発されたア
プリケーションをサポートします。Elastic Beanstalk は、ネイティブの Go 環境と、Docker オフィシャ
ルリポジトリで提供されている言語スタックに基づく Docker コンテナの両方をサポートしています。
これらのいずれかの Elastic Beanstalk 環境を使用し、Go アプリケーションをローカルで開発してテス
トしてから、ローカル環境と同じに設定されている Elastic Beanstalk 環境でアプリケーションをデプ
ロイできます。
事前設定された Docker コンテナ(Go アプリケーション向けコンテナを含む)に対応するプラット
フォームについては、「事前設定済み Docker (p. 26)」を参照してください。
トピック
• アプリケーションを Go プラットフォームでデプロイする (p. 584)
• Go の事前設定済み Docker コンテナ (p. 588)
アプリケーションを Go プラットフォームでデプ
ロイする
Abstract
Go(Golang)言語固有の環境を使用して、ウェブアプリケーションの開発、テスト、および Elastic Beanstalk へ
のデプロイを行います。
AWS Elastic Beanstalk を使用して、Go ベースのアプリケーションを実行、構築、設定することができ
ます。
API Version 2010-12-01
584
AWS Elastic Beanstalk 開発者ガイド
シンプルな Go アプリケーションをデプロイする
トピック
• シンプルな Go アプリケーションをデプロイする (p. 585)
• 複雑な Go アプリケーションをデプロイする (p. 585)
• 実行順序 (p. 587)
• 設定オプションの設定 (p. 587)
• リバースプロキシを設定する (p. 587)
シンプルな Go アプリケーションをデプロイする
シンプルな Go アプリケーションは、2 つの方法でデプロイすることができます。
• アプリケーションのメインパッケージを含む application.go という名前のルートのソースファイ
ルにソースバンドルを提供します。Elastic Beanstalk が次のコマンドを使用してバイナリを構築しま
す。
go build -o bin/application application.go
アプリケーションの構築後、Elastic Beanstalk がポート 5000 でアプリケーションを開始します。
• [application] という名前のバイナリファイルにソースバンドルを提供します。バイナリファイル
は、ソースバンドルのルートまたはソースバンドルの bin/ ディレクトリにあります。[application]
バイナリファイルを両方の場所に配置すると、Elastic Beanstalk は bin/ ディレクトリのファイルを
使用します。
Elastic Beanstalk は、ポート 5000 でこのアプリケーションを起動します。
より複雑なアプリケーションの場合は、Procfile (p. 586) を使用するか、Procfile と Buildfile (p. 585) を組
み合わせて使用する必要があります。
複雑な Go アプリケーションをデプロイする
より複雑な Go アプリケーションは、2 つの方法でデプロイすることができます。
• アプリケーションのソースファイルを含むソースバンドルを、Buildfile (p. 585) および Procfile (p. 586)
とともに設定します。Buildfile (p. 585) にはアプリケーションを構築するためのコマンドが含まれ、
Procfile (p. 586) にはアプリケーションを実行するための指示が含まれます。
• アプリケーションのバイナリファイルを含むソースバンドルを、Procfile (p. 586) とともに設定しま
す。Procfile (p. 586) には、アプリケーションを実行するための指示が含まれます。
ビルド設定ファイル(Buildfile)を作成する
Go アプリケーションのカスタムビルドと設定コマンドを指定するには、[Buildfile] という名前の
ファイルをソースバンドルのルートに含めます。ファイル名では、大文字と小文字が区別されます。
Buildfile には次の形式を使用します。
<process_name>: <command>
Buildfile 内のコマンドは、正規表現 ^[A-Za-z0-9_]+:\s*.+$ に一致する必要があります。
API Version 2010-12-01
585
AWS Elastic Beanstalk 開発者ガイド
複雑な Go アプリケーションをデプロイする
Note
Buildfile からはコマンドを 1 つだけ実行できます。アプリケーションの構築および設定の
ために複数のコマンドを実行する必要がある場合は、必要なコマンドを実行するバッチスクリ
プトを作成し、Buildfile でバッチスクリプトを実行します。
Elastic Beanstalk は、Buildfile で実行されるアプリケーションをモニタリングしません。Buildfile
は短期間実行されるアプリケーションに使用し、タスクの完了後に終了します。長期間実行され、管理
が必要なアプリケーションには、代わりに Procfile (p. 586) を使用します。
次の Buildfile の例では、build.sh がシェルスクリプトとして、ソースバンドルのルートに配置さ
れています。
make: ./build.sh
Buildfile 内のすべてのパスは、ソースバンドルのルートと関連します。前もってインスタンス上の
ファイルの場所がわかっている場合は、Buildfile に絶対パスを含めることができます。
アプリケーションプロセス設定ファイル(Procfile)を作成する
Go アプリケーションを開始するカスタムコマンドを指定するには、[Procfile] という名前のファイル
をソースバンドルのルートに含めます。ファイル名では、大文字と小文字が区別されます。Procfile
には次の形式を使用します。
<process_name>: <command>
Procfile 内の各行は、正規表現 ^[A-Za-z0-9_]+:\s*.+$ に従う必要があります。
Elastic Beanstalk は、アプリケーションを Procfile から継続的に実行されるものとみなします。Elastic
Beanstalk はこれらのアプリケーションをモニタリングし、終了するアプリケーションをすべて再開し
ます。実行時間の短いアプリケーションには、Buildfile (p. 585) を使用する必要があります。
Go アプリケーションには、前述の正規表現に従う範囲内で、自由に名前を付けることができます。メ
インアプリケーションの web を呼び出す必要があります。
web: bin/server
queue_process: bin/queue_processor
foo: bin/fooapp
Elastic Beanstalk は、メインの web アプリケーション環境のルート URL(例:
http://my-go-env.elasticbeanstalk.com)で公開します。
Elastic Beanstalk は nginx プロキシを設定し、アプリケーション用の PORT 環境変数で指定されたポー
ト番号のアプリケーションにリクエストを転送します。アプリケーションは、このポートを常にリッス
ンする必要があります。アプリケーション内のこの変数にアクセスするには、os.Getenv("PORT")
メソッドを呼び出します。
Elastic Beanstalk は、Procfile 内の最初のアプリケーションのポートの PORT オプション設定で指定
されたポート番号を使用します。Procfile 内の以降のアプリケーションでは、ポート番号は 100 ず
つ増えていきます。PORT オプションが設定されていない場合、Elastic Beanstalk は最初のポートに
5000 を使用します。
前述の例では、PORT 環境変数は web アプリケーションで 5000、queue_process アプリケーション
で 5100、foo アプリケーションで 5200 となります。
API Version 2010-12-01
586
AWS Elastic Beanstalk 開発者ガイド
実行順序
次のように、PORT オプションを [aws:elasticbeanstalk:application:environment (p. 128)] 名前領域で設定
すると、最初のポートを指定できます。
option_settings:
- namespace: aws:elasticbeanstalk:application:environment
option_name: PORT
value: <first_port_number>
使用しているアプリケーションの環境変数の設定の詳細については、「オプション設定 (p. 148)」を参
照してください。
Elastic Beanstalk は、名前に web_ プレフィックスがないアプリケーションも実行しますが、これらの
アプリケーションはインスタンス外から使用できません。
Procfile で開始されたプロセスからの標準出力ストリームと標準エラーストリームは、プロセスに関
連する名前のログファイルにキャプチャされ、/var/log に格納されます。たとえば、前述の例では
web プロセスが stdout および stderr についてそれぞれ web-1.log および web-1.error.log と
いう名前のログを生成します。
Procfile 内のすべてのパスは、ソースバンドルのルートと関連します。前もってインスタンス上の
ファイルの場所がわかっている場合は、Procfile に絶対パスを含めることができます。
実行順序
Go アプリケーションでは、コマンドや設定は次の順番で実行されます。
1.
ソースバンドルの [.ebextensions] ディレクトリ内の commands。
2.
Buildfile コマンド。Elastic Beanstalk はすべてのコマンドを同時に実行します。
3.
ソースバンドルの [.ebextensions] ディレクトリ内の container_commands。
4.
Procfile コマンド。Elastic Beanstalk はすべてのコマンドを同時に実行します。
設定オプションの設定
すべてのプラットフォームでサポートされる オプションに加えて (p. 117)、Go は
aws:elasticbeanstalk:container:golang:staticfiles (p. 138) 名前空間 をサポートします。この名前空間で
は、仮想ディレクトリをサーバー上の物理ディレクトリにマッピングすることができます。
たとえば、この option_settings (p. 148) スニペットは、2 つの仮想ディレクトリ、public および images
を定義します。
option_settings:
- namespace: aws:elasticbeanstalk:container:go:staticfiles
option_name: /public
value: /var/www/mypublic
- namespace: aws:elasticbeanstalk:container:go:staticfiles
option_name: /images
value: /var/www/myimages
リバースプロキシを設定する
Elastic Beanstalk はリバースプロキシとして nginx を使用し、ポート 80 のロードバランサーにアプリ
ケーションをマッピングします。独自の nginx 設定を実行する場合は、ソースバンドルに
[.ebextensions/nginx/nginx.conf ] ファイルを含めることで、Elastic Beanstalk によるデフォル
API Version 2010-12-01
587
AWS Elastic Beanstalk 開発者ガイド
Go の事前設定済み Docker コンテナ
ト設定を上書きすることができます。このファイルが存在する場合、Elastic Beanstalk は nginx 設定
ファイルの代わりにこのファイルを使用します。
nginx.conf http ブロック内のディレクティブに加えて他のディレクティブを含める場合は、ソース
バンドルの .ebextensions/nginx/conf.d/ ディレクトリに設定を追加することもできます。この
ディレクトリ内のすべてのファイルには、.conf 拡張子が必要です。
拡張ヘルスレポートとモニタリング (p. 263)、自動アプリケーションマッピング、静的ファイルなどの
Elastic Beanstalk の機能を活用するには、nginix 設定ファイルの server ブロックに次の行を含める必
要があります。
include conf.d/elasticbeanstalk/*.conf;
Go の事前設定済み Docker コンテナ
Abstract
Go(Golang)言語固有の事前設定済み Docker コンテナを使用して、ウェブアプリケーションの開発やテスト、お
よび Elastic Beanstalk へのデプロイを行います。
以下の手順では、Go 向けに事前設定された Docker コンテナを使用して Go アプリケーションを Elastic
Beanstalk にデプロイするプロセスについて、順を追って説明します。
ローカルの開発環境のセットアップ
このチュートリアルでは、Go の「Hello World」アプリケーションを使用します。
開発環境をセットアップするには
1.
サンプルアプリケーション用の新しいフォルダを作成します。
$ mkdir eb-go-sample
$ cd eb-go-sample
2.
アプリケーションのルートフォルダに、server.go という名前のファイルを作成します。ファイ
ルには、次のように入力してください。
package main
import "github.com/go-martini/martini"
func main() {
m := martini.Classic()
m.Get("/", func() string {
return "Hello world!"
})
m.Run()
}
Note
• アプリケーションソースバンドルに、main という名前のパッケージを含める必要があ
ります。このパッケージの中に、実行するコンテナの main 関数を含めてください。
API Version 2010-12-01
588
AWS Elastic Beanstalk 開発者ガイド
Docker を使用してローカルで開発しテストする
• インポートする必要がある依存関係(たとえば、Martini パッケージであれば
go-martini)はデプロイ中にコンテナにダウンロードされ、インストールされます。
そのため、Elastic Beanstalk にアップロードしたアプリケーションソースバンドルに依
存関係を含める必要はありません。
• Elastic Beanstalk によって、コンテナの GOPATH 環境変数が /go に設定されます。
Docker を使用してローカルで開発しテストする
セットアップした環境を使用して、Go アプリケーションを作成してテストできます。
サンプルの Go アプリケーションを開発するには
1.
Dockerfile をアプリケーションのルートフォルダに追加します。ファイルには、事前設定された
ローカルの Docker コンテナを実行するために使用する Elastic Beanstalk Docker ベースイメージ
を指定します。Elastic Beanstalk では、このイメージを使用して、Dockerfile に関する後続の手
順を実行します。
Note
ご使用中のプラットフォームバージョンの Docker イメージ名を使用した命令のみを含め
てください。事前設定済みの Docker イメージの名前については、「サポートされている
プラットフォーム (p. 25)」を参照してください。Dockerfile の使用方法の詳細について
は、「単一コンテナの Docker の設定 (p. 553)」を参照してください。事前設定された Docker
プラットフォーム向けの Dockerfile の例については、「例: Dockerfile を使用して、事
前設定された Docker プラットフォームをカスタマイズおよび設定する (p. 576)」を参照し
てください。
次の例を使用できます。
# For Go 1.3
FROM golang:1.3.3-onbuild
# For Go 1.4
FROM golang:1.4.1-onbuild
2.
Docker イメージを作成します。
$ docker build –t my-app-image .
3.
イメージから Docker コンテナを実行します。
Note
コンテナのポート 3000 をローカルホストのポート 8080 にマッピングする -p フラグを指
定する必要があります。Go アプリケーション向けに事前設定された Elastic Beanstalk の
Docker コンテナでは、常にコンテナのポート 3000 でアプリケーションが公開されます。
-it フラグは、イメージをインタラクティブプロセスとして実行します。-rm フラグは、
コンテナが存在する場合にコンテナファイルシステムをクリーンアップします。オプショ
ンで、イメージをデーモンとして実行するための -d フラグも指定できます。
API Version 2010-12-01
589
AWS Elastic Beanstalk 開発者ガイド
Elastic Beanstalk へのデプロイ
$ docker run –it --rm -p 8080:3000 my-app-image
4.
サンプルアプリケーションを表示するには、次の URL をウェブブラウザに入力します。
http://localhost:8080
Elastic Beanstalk へのデプロイ
アプリケーションをテストすると、Elastic Beanstalk にデプロイする準備が完了します。
アプリケーションを Elastic Beanstalk にデプロイするには
1.
アプリケーションのルートフォルダで、Dockerfile という名前を Dockerfile.local に変更し
ます。このステップは、Elastic Beanstalk に対する正しい指示を含んだ Dockerfile を Elastic
Beanstalk で使用し、カスタマイズされた Docker イメージを Elastic Beanstalk 環境の各 Amazon
EC2 インスタンスに作成するために必要なステップです。
Note
ベースの Go Docker イメージを変更する命令が Dockerfile に含まれている場合、この
ステップを行う必要はありません。Dockerfile に、コンテナの構築に使用するベースイ
メージを指定する FROM 行のみが含まれている場合、Dockerfile を使用する必要はあり
ません。この場合、その Dockerfile は重複しています。
2.
3.
アプリケーションソースバンドルを作成します。詳細については、「アプリケーションソースバン
ドルを作成する (p. 42)」を参照してください。
アプリケーションをデプロイするための Elastic Beanstalk 環境を作成します。手順については、
「アプリケーションを作成します。 (p. 39)」を参照してください。該当するステップで、
[Environment Type] ページの [Predefined configuration] リストにある、[Preconfigured - Docker] の
下の [Go] を選択します。
API Version 2010-12-01
590
AWS Elastic Beanstalk 開発者ガイド
AWS Elastic Beanstalk で Java アプ
リケーションを作成してデプロイす
る
Abstract
AWS マネジメントコンソール、EB CLI、または Eclipse Toolkit for AWS を使用して、Java でアプリケーションを
開発し、AWS Elastic Beanstalk にデプロイします。
AWS Elastic Beanstalk は、Java アプリケーション用の複数のプラットフォーム設定 (p. 25)(Java と
Tomcat を使用するアプリケーションサーバーの複数のバージョンや、Tomcat を使用しないアプリケー
ション用の Java のみの設定など)をサポートします。
Apache Tomcat (p. 612) は、Java サーブレットや JavaServer Pages(JSP)を使用して HTTP リクエ
ストを提供するアプリケーション用のオープンソースのウェブコンテナです。Tomcat は、マルチスレッ
ド、宣言セキュリティの設定、および広範なカスタマイズを提供することにより、ウェブアプリケー
ション開発を容易にします。プラットフォーム設定は、Tomcat の現在の主要バージョンで使用できま
す。
Java SE プラットフォーム設定 (p. 617)(Tomcat なし)は、ウェブコンテナを使用しない、または Jetty
や GlassFish などの Tomcat 以外のものを使用するアプリケーション向けにも提供されます。Elastic
Beanstalk にデプロイするソースバンドルのアプリケーションで使用されるライブラリ Java Archives
(JAR)を含めることができます。
AWS は、Java と Elastic Beanstalk で機能する複数のツールを提供します。選択するプラットフォーム
設定にかかわらず、AWS SDK for Java (p. 611) を使用し、Java アプリケーションから他の AWS サー
ビスを使用することができます。AWS SDK for Java は、raw HTTP コールをゼロから書き込むことな
しに、アプリケーションコードから AWS API を使用できるようにするライブラリのセットです。
Eclipse 統合開発環境(IDE)を使用して Java アプリケーションを開発する場合、AWS Toolkit for
Eclipse (p. 628) も取得できます。AWS Toolkit for Eclipse は、Elastic Beanstalk のアプリケーションや
環境などの AWS リソースを Eclipse IDE で管理できるようにするオープンソースのプラグインです。
コマンドラインの方が使い易い場合は、Elastic Beanstalk コマンドラインインターフェイス (p. 403)(EB
CLI)をインストールして使用し、コマンドラインから Elastic Beanstalk 環境の作成、モニタリング、
管理を行います。アプリケーションの複数の環境を実行すると、EB CLI が Git と統合され、各環境と
様々な Git ブランチを関連付けられるようになります。
API Version 2010-12-01
591
AWS Elastic Beanstalk 開発者ガイド
はじめに
トピック
• Elastic Beanstalk での Java 入門ガイド (p. 592)
• Java 開発環境をセットアップする (p. 610)
• AWS Elastic Beanstalk Tomcat プラットフォームを使用する (p. 612)
• AWS Elastic Beanstalk Java SE プラットフォームを使用する (p. 617)
• AWS Elastic Beanstalk Java 環境を設定する (p. 621)
• Amazon RDS データベースを Elastic Beanstalk 環境に追加する (p. 622)
• AWS Toolkit for Eclipse を使用する (p. 628)
• リソース (p. 643)
Elastic Beanstalk での Java 入門ガイド
Abstract
サンプル Java アプリケーションを AWS Elastic Beanstalk にデプロイする
AWS Elastic Beanstalk()で Java アプリケーションを開始するには、最初のアプリケーションバー
ジョンとしてアップロードして環境にデプロイするためのアプリケーション (p. 42)ソースバンドルが
必要です。環境を作成する際、Elastic Beanstalk は、高度にスケーラブルなウェブアプリケーションを
実行するのに必要なすべての AWS リソースを割り当てます。
サンプル Java アプリケーションで環境を起動する
Elastic Beanstalk には、各プラットフォーム用の単一ページのサンプルアプリケーションが用意されて
いるほか、追加の AWS リソース(Amazon RDS、言語、プラットフォーム固有の機能と API など)の
使用方法を示す複雑なサンプルアプリケーションも用意されています。
単一ページのサンプルは、環境を作成するときに取得する同じコードであり、独自のソースコードを提
供する必要はありません。複雑なサンプルアプリケーションは GitHub でホストされ、Elastic Beanstalk
環境にデプロイする前にコンパイルやビルドが必要になる場合があります。
API Version 2010-12-01
592
AWS Elastic Beanstalk 開発者ガイド
サンプル Java アプリケーションで環境を起動する
サンプル
名前
サポートされる設定
環境タイプ
Tomcat のデ
フォルト
Tomcat 8 と Java 8
ウェブサーバー elasticbeanstalk-sampleapp.war
ワーカー
Tomcat 7 と Java 7
Tomcat 7 と Java 6
API Version 2010-12-01
593
送信元
説
明
AWS Elastic Beanstalk 開発者ガイド
サンプル Java アプリケーションで環境を起動する
名前
サポートされる設定
環境タイプ
送信元
説
明
1
ー ペ
ジ
-n(
i
)
psj.xed
が
ェ ウ
ブ
サ
イ
ト
の
ー ル
ト
に
表
示
さ
れ
る
よ
う
に
設
定
さ
れ
た
-moT
t ac
ェ ウ
ブ
ア
プ
リ
ー ケ
ョ シ
ン
で
。 す
ー
ワ
ー
カ
環
)2
9.p境
(
で
、 は
こ
の
サ
ン
プ
ル
に
API Version 2010-12-01
594
AWS Elastic Beanstalk 開発者ガイド
サンプル Java アプリケーションで環境を起動する
名前
サポートされる設定
環境タイプ
送信元
説
明
、 は
1
分
に
1
回
d
e
h
c
s[
]psj.delu
を
呼
び
出
す
ス
ケ
ーュジ
ル
済
み
タ
ス
ク
設
定
す
る
]l
m
a
y
.
n
o
r
c[
ァ フ
イ
ル
が
含
ま
れ
ま
。 す
呼
び
出
さ
れ
た
d
e
h
c
s[
]psj.delu
、 は
e
l
p
m
a
s
/
p
m
t
/[
]gol.ppa
で
ロ
グ
ァ フ
イ
ル
へ
API Version 2010-12-01
595
AWS Elastic Beanstalk 開発者ガイド
サンプル Java アプリケーションで環境を起動する
名前
サポートされる設定
環境タイプ
送信元
説
明
の
書
き
込
み
を
行
い
ま
。 す
最
後
、 に
設
定
ァ フ
イ
ル
が
x
e
b
e
.[
-net
]snois
に
含
ま
れ
ま
。 す
こ
の
設
定
ァ フ
イ
ル
、 は
]/pmt/[
の
ロ
グ
、 を
環
境
ロ
グ
が
リ
ク
エ
ス
ト
さ
れ
た
API Version 2010-12-01
596
AWS Elastic Beanstalk 開発者ガイド
サンプル Java アプリケーションで環境を起動する
名前
サポートされる設定
環境タイプ
送信元
説
明
と
き
に
- tsalE
c i
-naeB
klats
が
読
み
取
る
場
所
に
コ
ー ピ
し
ま
。 す
API Version 2010-12-01
597
AWS Elastic Beanstalk 開発者ガイド
サンプル Java アプリケーションで環境を起動する
名前
サポートされる設定
環境タイプ
Java SE のデ
フォルト
Java 8
ウェブサーバー java-se-jetty-maven-v1.zip
Java 7
API Version 2010-12-01
598
送信元
説
明
AWS Elastic Beanstalk 開発者ガイド
サンプル Java アプリケーションで環境を起動する
名前
サポートされる設定
環境タイプ
送信元
説
明
-dliuB
elif
設
定
ァ フ
イ
ル
お
よ
び
-corP
elif
設
定
ァ フ
イ
ル
を
使
用
す
る
yt teJ
E S
ア
プ
リ
ー ケ
ョ シ
ン
で
。 す
こ
の
サ
ン
プ
ル
の
-dliuB
elif
、 は
nevaM
コ
マ
ン
ド
を
実
行
、 し
オ
ン
イ
API Version 2010-12-01
599
AWS Elastic Beanstalk 開発者ガイド
サンプル Java アプリケーションで環境を起動する
名前
サポートされる設定
環境タイプ
送信元
説
明
ー
ョ
ー
。
API Version 2010-12-01
600
ン
ス
タ
ン
ス
で
ア
プ
リ
ケ
シ
ン
ソ
ス
を
構
築
し
ま
す
AWS Elastic Beanstalk 開発者ガイド
サンプル Java アプリケーションで環境を起動する
名前
サポートされる設定
環境タイプ
Does it Have
Snakes?
Tomcat 8 と Java 8
ウェブサーバー Clone the repo at GitHub.com
API Version 2010-12-01
601
送信元
説
明
AWS Elastic Beanstalk 開発者ガイド
サンプル Java アプリケーションで環境を起動する
名前
サポートされる設定
環境タイプ
送信元
説
明
seoD
ti
evaH
?sekan
S
、 は
- tsalE
c i
-naeB
klats
設
定
ァ フ
イ
、 ル
nozam
A
、SDR
- DJ
、C B
- tsoP
- rg
、LQSe
ー サ
ブ
ッ レ
、 ト
、PS J
簡
易
タ
グ
の
サ
ー ポ
、 ト
タ
グ
ァ フ
イ
、 ル
J4goL
、
ー ブ
ト
ス
ト
ッ ラ
、 プ
-kcaJ
no s
の
使
用
方
法
API Version 2010-12-01
602
AWS Elastic Beanstalk 開発者ガイド
サンプル Java アプリケーションで環境を起動する
名前
サポートされる設定
環境タイプ
送信元
説
明
を
示
、 す
複
数
ー ペ
ジ
の
-moT
t ac
ェ ウ
ブ
ア
プ
リ
ー ケ
ョ シ
ン
で
。 す
API Version 2010-12-01
603
AWS Elastic Beanstalk 開発者ガイド
サンプル Java アプリケーションで環境を起動する
名前
サポートされる設定
環境タイプ
送信元
説
明
こ
の
プ
ロ
ェ ジ
ク
ト
の
ー ソ
ス
ー コ
ド
に
、 は
ク
ラ
ス
ァ フ
イ
ル
に
ー サ
ブ
ッ レ
ト
と
モ
デ
ル
を
コ
ン
パ
イ
ル
、 し
- tsalE
c i
-naeB
klats
環
境
に
デ
プ
ロ
イ
で
き
る
ェ ウ
ブ
ー ア
カ
API Version 2010-12-01
604
AWS Elastic Beanstalk 開発者ガイド
サンプル Java アプリケーションで環境を起動する
名前
サポートされる設定
環境タイプ
送信元
説
明
ァ
ッ
ー
、
。
、
ェ
API Version 2010-12-01
605
イ
ブ
に
必
要
フ
イ
ル
を
パ
ケ
ジ
す
る
最
小
限
の
ビ
ル
ド
ス
ク
リ
プ
ト
が
含
ま
れ
て
い
ま
す
完
全
な
手
順
に
つ
い
て
は
プ
ロ
ジ
ク
ト
の
リ
ポ
ジ
ト
AWS Elastic Beanstalk 開発者ガイド
サンプル Java アプリケーションで環境を起動する
名前
サポートされる設定
環境タイプ
送信元
説
明
リ
内
の
e
m
daer
ァ フ
イ
ル
を
参
照
し
て
く
だ
さ
。 い
API Version 2010-12-01
606
AWS Elastic Beanstalk 開発者ガイド
サンプル Java アプリケーションで環境を起動する
名前
サポートされる設定
環境タイプ
Locust Load
Generator
Java 8
ウェブサーバー Clone the repo at GitHub.com
API Version 2010-12-01
607
送信元
説
明
AWS Elastic Beanstalk 開発者ガイド
サンプル Java アプリケーションで環境を起動する
名前
サポートされる設定
環境タイプ
送信元
説
明
別
の
- tsalE
c i
-naeB
klats
環
境
で
実
行
し
て
い
る
別
の
ェ ウ
ブ
ア
プ
リ
ー ケ
ョ シ
ン
の
負
荷
テ
ス
ト
に
使
用
で
き
る
ェ ウ
ブ
ア
プ
リ
ー ケ
ョ シ
ン
で
。 す
-dliuB
elif
ァ フ
イ
、 ル
-corP
elif
API Version 2010-12-01
608
AWS Elastic Beanstalk 開発者ガイド
サンプル Java アプリケーションで環境を起動する
名前
サポートされる設定
環境タイプ
送信元
説
明
ァ フ
イ
、 ル
- yD
、
BDoman
-oL
tsuc
、
ー オ
プ
ン
ー ソ
ス
の
負
荷
テ
ス
ト
ー ツ
ル
の
使
用
方
法
を
示
し
て
い
ま
。 す
任意のサンプルアプリケーションをダウンロードし、次の手順に従って Elastic Beanstalk にデプロイ
します。
サンプルアプリケーションを使用して環境を起動するには(コンソール)
1.
2.
Elastic Beanstalk コンソールを開きます。
アプリケーションを選択するか、新しいアプリケーションを作成 (p. 39)します。
3.
右上隅で、[Create a New Environment] を選択します。
Note
環境の作成ウィザードで次の画面が表示された場合は、AWS Quick Start Guide: Web App
Deployment を参照してください。
4.
5.
[Create web server] を選択します。
[Predefined configuration] ドロップダウンメニューから、アプリケーションで使用されるプラット
フォームに一致するプラットフォームを選択します。
API Version 2010-12-01
609
AWS Elastic Beanstalk 開発者ガイド
次のステップ
Note
Elastic Beanstalk は、リストされたほとんどのプラットフォームで複数の設定 (p. 25)をサ
ポートします。アプリケーションで使用される言語、フレームワーク、ウェブコンテナの
バージョンがデフォルト設定と一致しない場合、[Change Platform Version] を選択して別
の設定を選択します。
6.
7.
[Next] を選択します。
[Application Version] では、[Existing application version] の下の [Sample Application] を選択する
か、[Upload your own] を選択して、アプリケーションソースバンドルをアップロードします。[Next]
を選択します。
8.
9.
環境の [Environment name] と URL プレフィックスを入力し、[Next] を選択します。
アプリケーションがデータベースを必要としている場合、[Create an RDS DB Instance] を選択し
ます。
10. [Next] を選択します。
11. [Configuration Details(構成の詳細)] については、[Instance type(インスタンスタイプ)] を
t2.micro に設定して、[EC2 key pair](オプション)を選択して [Next(次へ)] を選択します。
キーペアを割り当てることで、デバッグ環境のインスタンスに接続することができます。
Note
以前にキーペアを使用したことがない場合は、『Linux インスタンス用 Amazon EC2 ユー
ザーガイド』の「Amazon EC2 キーペア」を参照してください。
12. [Next(次へ)] を選択して、タグの作成を省略します。
13. [Permissions] ページで、[Next] を選択します。デフォルトのインスタンスプロファイルとサービ
スロール (p. 19)がない場合は、Elastic Beanstalk によって自動的に作成されます。
14. 環境にデータベースを追加した場合は、ユーザー名とパスワードを入力した後、[Next] を選択しま
す。
15. [Launch] を選択します。
次のステップ
環境でアプリケーションを実行すると、アプリケーションの新しいバージョン (p. 76)や、まったく異
なるアプリケーションをいつでもデプロイできるようになります。新しいアプリケーションバージョン
のデプロイは、プロビジョニングや EC2 インスタンスの再開が必要ないため、非常に素早く行えます。
サンプルアプリケーションを 1 つか 2 つデプロイし、Java アプリケーションをローカルで開発および
実行する準備が整ったら、次のセクション (p. 610)を参照して、必要なすべてのツールやライブラリと
ともに Java 開発環境を設定します。
Java 開発環境をセットアップする
Abstract
ツールをインストールし、Java アプリケーション開発用のコンピュータを設定します。
Java 開発環境を設定し、アプリケーションを AWS Elastic Beanstalk にデプロイする前にローカルでテ
ストします。このトピックでは、開発環境の設定手順と便利なツールのインストールページへのリンク
を概説します。
API Version 2010-12-01
610
AWS Elastic Beanstalk 開発者ガイド
Java 開発キットをインストールする
すべての言語に適用される一般的な設定手順やツールについては、AWS Elastic Beanstalk で使用する
開発環境の設定 (p. 400)を参照してください。
トピック
• Java 開発キットをインストールする (p. 611)
• ウェブ コンテナをインストールする (p. 611)
• ライブラリをダウンロードする (p. 611)
• AWS SDK for Java をインストールする (p. 611)
• IDE またはテキストエディタをインストールする (p. 612)
• AWS Toolkit for Eclipse をインストールする (p. 612)
Java 開発キットをインストールする
Java 開発キット(JDK)をインストールする指定しない場合は、最新バージョンを取得します。
oracle.com で JDK をダウンロードします。
JDK には、ソースファイルを Elastic Beanstalk ウェブサーバーで実行可能なクラスファイルに組み込
む目的で使用できる Java コンパイラが含まれます。
ウェブ コンテナをインストールする
まだ別のウェブコンテナやフレームワークがない場合は、Tomcat の適切なバージョンをインストール
します。
• Tomcat 8 をダウンロードする(Java 7 以降が必要です)
• Tomcat 7 をダウンロードする(Java 6 以降が必要です)
ライブラリをダウンロードする
Elastic Beanstalk プラットフォーム設定には、デフォルトでいくつかのライブラリが含まれます。アプ
リケーションが使用するライブラリをダウンロードしてプロジェクトフォルダに保存し、アプリケー
ションソースバンドルにデプロイします。
Tomcat をローカルでインストールしている場合、インストール フォルダからサーブレット API および
JavaServer Pages(JSP)API ライブラリをコピーできます。Tomcat プラットフォーム設定をデプロ
イする場合は、これらのファイルをソースバンドルに含める必要はありませんが、classpath に組み
込んでこれらを使用するすべてのクラスをコンパイルする必要があります。
JUnit、Google Guava、Apache Commons は、複数の便利なライブラリを提供します。詳細について
はそれぞれのホームページにアクセスしてください。
• JUnit をダウンロードする
• Google Guava をダウンロードする
• Apache Commons をダウンロードする
AWS SDK for Java をインストールする
アプリケーション内の AWS リソースを管理する必要がある場合は、AWS SDK for Javaをインストー
ルします。たとえば AWS SDK for Java では、Amazon DynamoDB(DynamoDB) を使用し、Apache
Tomcat アプリケーションのセッションステータスを複数のウェブサーバーで共有できます。詳細につ
API Version 2010-12-01
611
AWS Elastic Beanstalk 開発者ガイド
IDE またはテキストエディタをインストールする
いては、AWS SDK for Java のドキュメントの「Manage Tomcat Session State with Amazon DynamoDB」
を参照してください。
詳細とインストール方法については、AWS SDK for Java のホームページにアクセスしてください。
IDE またはテキストエディタをインストールする
統合された開発環境(IDE)は、アプリケーション開発を用意にする幅広い機能を提供します。Java 開
発用の IDE を使用していない場合は、Eclipse と IntelliJ を試してどちらが使いやすいかを確認してくだ
さい。
• Eclipse IDE for Java EE Developers をインストールする
• IntelliJ をインストールする
Note
IDE では、ソースコントロールにコミットする必要がないファイルがプロジェクトフォルダに
追加される場合があります。ソースコントロールにこれらのファイルがコミットされないよう
にするには、.gitignore または同等のソースコントロールツールを使用します。
IDE の機能のすべては必要なく、単純にコーディングを開始する場合は、Sublime Text のインストール
を検討します。
AWS Toolkit for Eclipse をインストールする
AWS Toolkit for Eclipse (p. 628) は、AWS を使用して開発者が Java アプリケーションを容易に開発、
デバッグ、およびデプロイできるようにする Eclipse for Java IDE のオープンソースプラグインです。
インストール手順については、AWS Toolkit for Eclipse ホームページにアクセスしてください。
AWS Elastic Beanstalk Tomcat プラットフォーム
を使用する
Abstract
AWS Elastic Beanstalk の Tomcat プラットフォームについて説明します。
AWS Elastic Beanstalk Tomcat プラットフォームは、Tomcat ウェブコンテナで実行できる Java ウェ
ブアプリケーションの環境設定のセットです。各設定は、Tomcat の主要バージョン(Java 8 with Tomcat
8、Java 7 with Tomcat 7 など)に対応しています。
新しい Elastic Beanstalk 機能をサポートし、パフォーマンスを向上させるため、プラットフォーム設
定は定期的に更新されています。Tomcat プラットフォームの各設定の最新バージョンの情報について
は、「サポートされているプラットフォーム (p. 28)」のトピックを参照してください。
Note
環境は、同じ設定の新しいバージョンにアップグレードできますが、別の設定にアップグレー
ドすることはできません。
Tomcat プラットフォームは、アプリケーションを実行する Java 仮想マシン(JVM)を設定するため
のプラットフォーム固有の設定オプション (p. 614)と名前領域をいくつかサポートしています。kこれら
は、すべてのプラットフォームでサポートされるオプション (p. 614)に追加して提供されます。
API Version 2010-12-01
612
AWS Elastic Beanstalk 開発者ガイド
WAR ファイルのバンドル
Elastic Beanstalk Tomcat プラットフォーム設定は、リバースプロキシとして機能する Apache ウェブ
サーバーを含み、キャッシュ型静的コンテンツを提供し、アプリケーションにリクエストをパスしま
す。
ウェブアプリケーションアーカイブ(WAR)ファイルの Java アプリケーションは固有の構造でパッ
ケージングする必要があります。必要な構造と、その構造をプロジェクトディレクトリの構造に関連付
ける方法については、「プロジェクト フォルダを構築する (p. 615)」を参照してください。
同じウェブサーバーで複数のアプリケーションサーバーを実行するため、単一のソースバンドルに複数
の WAR ファイルをバンドル (p. 613)することができます。複数の WAR ソースバンドルの各アプリケー
ションは、ルートパス(myapp.elasticbeanstalk.com/ で実行される [ROOT.war])またはその下
のパスディレクトリ(myapp.elasticbeanstalk.com/app2/ で実行される [app2.war])のいずれ
かで実行されます(どちらかは WAR の名前によって決まります)。単一の WAR ソースバンドルで
は、アプリケーションは常にルートパスで実行されます。
Tomcat 環境用に複数の WAR ファイルをバンドルす
る
Abstract
複数の WAR ファイルを含む圧縮ソースバンドルを作成します。
Tomcat 環境の各インスタンスに複数のウェブアプリケーションをデプロイするには、複数のウェブア
プリケーションアーカイブ(WAR)ファイルを 1 つのソースバンドル (p. 42)にバンドルします。各ア
プリケーション用に個別の環境を実行する代わりに、1 つの環境で複数のアプリケーションを実行する
ことで、デプロイが簡素化され、運用コストが削減されます。この戦略は、多くのリソースを必要とし
ない軽量のアプリケーションで効果的です。
複数の WAR ファイルを含むアプリケーションソースバンドルを作成するには、次の構造を使用して
WAR ファイルを整理します。
MyApplication.zip
.ebextensions
foo.war
bar.war
ROOT.war
複数の WAR ファイルを含むソースバンドルを AWS Elastic Beanstalk 環境にデプロイするときは、ルー
トドメイン名とは別のパスから各アプリケーションにアクセスできます。前述の例には、foo、bar、
ROOT の 3 つのアプリケーションが含まれます。ROOT.war は、ルートドメインでアプリケーションを
実行するように Elastic Beanstalk に指示する特殊なファイル名であり、この 3 つのアプリケーション
は、http://MyApplication.elasticbeanstalk.com/foo、
http://MyApplication.elasticbeanstalk.com/bar、
http://MyApplication.elasticbeanstalk.com で使用できます。
このソースバンドルには、オプションの [.ebextensions] フォルダと WAR ファイルのみを含めるこ
とができます。[.ebextensions] フォルダは、環境にデプロイされるリソースをカスタマイズする設
定ファイルを格納することができます。設定ファイルの使用の詳細については、「AWS Elastic Beanstalk
環境設定 (p. 100)」を参照してください。
ソースバンドルの作成の詳細については、「アプリケーションソースバンドルを作成する (p. 42)」を
参照してください。
複数の WAR ファイルを含むアプリケーションのソースバンドルをアップロードするには
1.
AWS Elastic Beanstalk を AWS マネジメントコンソール で起動します。
API Version 2010-12-01
613
AWS Elastic Beanstalk 開発者ガイド
Tomcat ソフトウェア設定オプションを使用する
2.
3.
4.
[Create New Application] を選択します。
[Application name] を入力し、[Next] を選択します。
[Create web server] を選択します。
5.
適切なアクセス権限を持つ IAM インスタンスプロファイルの入力を求めるプロンプトが表示され
たら、デフォルトのインスタンスプロファイル(aws-elasticbeanstalk-ec2-role)を選択す
るか、プロンプトで求められた場合はインスタンスプロファイルを作成します。[Next] を選択しま
す。
6.
7.
[Environment Type] ページの [Predefined configuration] で、[Tomcat] を選択します。
[Predefined configuration] エリアで、[Change platform version] を選択します。
8.
使用している Java のバージョンに適した Tomcat ソリューションスタックを選択し、[Next] を選
択します。
9.
[Application Version] ページで、[Source] で [Upload your own] を選択してから、[Browse] を選択
します。
10. アプリケーションのソースバンドルを選択し、[Open] を選択します。
11. [Review] ページが表示されるまで、デフォルト設定のままで [Next] を選択します。
12. [Launch] を選択します。
トピック
• Tomcat ソフトウェア設定オプションを使用する (p. 614)
• プロジェクト フォルダを構築する (p. 615)
• .gitignore を使用する (p. 617)
Tomcat ソフトウェア設定オプションを使用する
Elastic Beanstalk の Tomcat プラットフォーム設定では、Elastic Beanstalk は、すべての環境で提供す
る標準オプションに加えて、プラットフォーム固有のオプションをいくつか提供します。これらのオプ
ションにより、環境のウェブサーバーで実行される Java仮想マシン(JVM)を設定し、アプリケーショ
ンに情報設定文字列を提供するシステムプロパティを定義できます。
AWS マネジメントコンソール により、コマンドライン、設定ファイル、API コールで設定オプション
を変更できます。手順については、「AWS Elastic Beanstalk 環境設定 (p. 100)」を参照してください。
JVM コンテナオプション
名前空間 – aws:elasticbeanstalk:container:tomcat:jvmoptions (p. 139)
Java 仮想マシン(JVM)のヒープサイズは、ガベージコレクション(アプリケーションのメモリ管理
プロセス)が発生する前にアプリケーションで作成できるオブジェクトの数を決定します。初期ヒープ
サイズと最大ヒープサイズを指定できます。初期ヒープサイズを大きく設定すると、ガベージコレク
ションの発生前により多くのオブジェクトを作成できますが、ガベージコレクタがヒープを圧縮する時
間が長くなります。最大ヒープサイズは、多量の作業を実行中にヒープを拡張する場合に JVM が割り
当てることのできる最大メモリ容量を指定します。
JVM の初期ヒープサイズと最大ヒープサイズを、それぞれ [Initial JVM Heap Size (-Xms argument)] と
[Maximum JVM Heap Size (-Xmx argument)] フィールドで設定します。使用可能なメモリは、EC2 イ
ンスタンスタイプによって異なります。Elastic Beanstalk 環境で使用可能な EC2 インスタンスタイプ
の詳細については、『Amazon Elastic Compute Cloud User Guide for Linux』の「Instance Types」を
参照してください。
JVM ヒープの永続世代は、クラス定義と関連メタデータを保存するセクションです。永続世代のサイ
ズを変更するには、[Maximum JVM PermGen Size (-XX:MaxPermSize argument)] フィールドに新しい
サイズを入力します。
API Version 2010-12-01
614
AWS Elastic Beanstalk 開発者ガイド
プロジェクト フォルダを構築する
JVM ガベージコレクションの詳細については、「VM ガベージコレクションの基本」を参照してくださ
い。
Java システムプロパティ
名前空間 – aws:elasticbeanstalk:application:environment (p. 139)
Elastic Beanstalk は、必要に応じて外部データベースに接続文字列をパスするため、Tomcat 環境のプ
レースホルダプロパティを定義します。このプロパティは、JDBC_CONNECTION_STRING という名
前です。
RDS DB インスタンスを環境にアタッチする場合は、Elastic Beanstalk によって提供される RDS 環境
プロパティから JDBC 接続文字列を動的に構築します。JDBC_CONNECTION_STRING は、Elastic
Beanstalk でプロビジョニングされないデータベースインスタンスにのみ使用します。
Java で Amazon Relational Database Service(Amazon RDS)を使用する方法の詳細については、
「Amazon RDS データベースを Elastic Beanstalk 環境に追加する (p. 622)」を参照してください。
プロジェクト フォルダを構築する
Abstract
Elastic Beanstalk で使用する Tomcat ソースコードを編成します。
Tomcat サーバーにデプロイされた場合に機能するように、コンパイルされた Java プラットフォーム
Enterprise Edition(Java EE)ウェブアプリケーションアーカイブ(WAR ファイル)は、特定のガイ
ドラインに従って構築される必要があります。プロジェクトのディレクトリが同じ基準を満たす必要は
ありませんが、同じ方法でプロジェクトのディレクトリを構築し、コンパイルやパッケージングを簡素
化することが推奨されます。WAR ファイルコンテンツなどのプロジェクトフォルダを構築すると、ファ
イルがどのように関連付けられていて、ウェブサーバーでどのように動作するかを理解するのにも役立
ちます。
次の推奨階層では、ウェブアプリケーションのソースコードは、[src] ディレクトリに配置され、構築
スクリプトや構築スクリプトが生成する WAR ファイルから隔離されます。
~/workspace/my-app/
|-- build.sh
|-- README.MD
|-- ROOT.war
`-- src
|-- WEB-INF
|
|-- classes
|
|-- lib
|
|-- tags
|
|-- tlds
|
`-- web.xml
|-- com
|-- css
|-- images
|-- js
`-- default.jsp
- Build script that compiles classes and creates a WAR
- Readme file with information about your project, notes
- Source bundle artifact created by build.sh
- Source code folder
- Folder for private supporting files
- Compiled classes
- JAR libraries
- Tag files
- Tag Library Descriptor files
- Deployment Descriptor
- Uncompiled classes
- Stylesheets
- Image files
- JavaScript files
- JSP (JavaServer Pages) web page
[src] フォルダの内容は、サーバーにパッケージングしてデプロイする内容と一致します([com] フォ
ルダは例外です)。[com] フォルダには、コンパイルされていないクラス([.java] ファイル)を含み
ます。このファイルはコンパイルされて [WEB-INF/classes] ディレクトリに配置され、アプリケー
ションコードからアクセス可能な状態になる必要があります。
API Version 2010-12-01
615
AWS Elastic Beanstalk 開発者ガイド
プロジェクト フォルダを構築する
[WEB-INF] ディレクトリには、ウェブサーバー上でパブリックに動作しないコードや設定が含まれま
す。ソースディレクトリ([css]、[images]、[js])のルートの他のフォルダはウェブサーバー上の対応
するパスで、一般公開されます。
次の例は、前述のプロジェクトディレクトリと同一ですが、ファイルとサブディレクトリの数が多い点
のみが異なります。このプロジェクト例には、シンプルなタグ、モデル、サポートクラス、さらに
record リソースのための Java サーバーページ(JSP)が含まれます。さらに、Bootstrap 用のスタイ
ルシートと JavaScript、デフォルトの JSP ファイル、および 404 エラーのエラーページが含まれます。
[WEB-INF/lib] には、PostgreSQL の Java Database Connectivity(JDBC)ドライバを含む Java アー
カイブ(JAR)ファイルが含まれます。クラスファイルがまだコンパイルされていないため、
[WEB-INF/classes] は空です。
~/workspace/my-app/
|-- build.sh
|-- README.MD
|-- ROOT.war
`-- src
|-- WEB-INF
|
|-- classes
|
|-- lib
|
|
`-- postgresql-9.4-1201.jdbc4.jar
|
|-- tags
|
|
`-- header.tag
|
|-- tlds
|
|
`-- records.tld
|
`-- web.xml
|-- com
|
`-- myapp
|
|-- model
|
|
`-- Record.java
|
`-- web
|
`-- ListRecords.java
|-- css
|
|-- bootstrap.min.css
|
`-- myapp.css
|-- images
|
`-- myapp.png
|-- js
|
`-- bootstrap.min.js
|-- 404.jsp
|-- default.jsp
`-- records.jsp
[build.sh] は、Java クラスをコンパイルする非常にシンプルなシェルスクリプトです。また、WAR
ファイルを構築してローカルテストのために Tomcat の [webapps] ディレクトリにコピーします。
cd src
javac -d WEB-INF/classes com/myapp/model/Record.java
javac -classpath WEB-INF/lib/*:WEB-INF/classes -d WEB-INF/classes
com/myapp/model/Record.java
javac -classpath WEB-INF/lib/*:WEB-INF/classes -d WEB-INF/classes
com/myapp/web/ListRecords.java
jar -cvf ROOT.war *.jsp images css js WEB-INF .ebextensions
cp ROOT.war /Library/Tomcat/webapps
mv ROOT.war ../
API Version 2010-12-01
616
AWS Elastic Beanstalk 開発者ガイド
.gitignore を使用する
WAR ファイルでは、前述の例の [src] ディレクトリ([src/com] フォルダを除きます)に存在する同
じストラクチャを探します。jar コマンドは、[META-INF/MANIFEST.MF] ファイルを自動的に作成し
ます。
~/workspace/my-app/ROOT.war
|-- META-INF
|
`-- MANIFEST.MF
|-- WEB-INF
|
|-- classes
|
|
`-- com
|
|
`-- myapp
|
|
|-- model
|
|
|
`-- Records.class
|
|
`-- web
|
|
`-- ListRecords.class
|
|-- lib
|
|
`-- postgresql-9.4-1201.jdbc4.jar
|
|-- tags
|
|
`-- header.tag
|
|-- tlds
|
|
`-- records.tld
|
`-- web.xml
|-- css
|
|-- bootstrap.min.css
|
`-- myapp.css
|-- images
|
`-- myapp.png
|-- js
|
`-- bootstrap.min.js
|-- 404.jsp
|-- default.jsp
`-- records.jsp
.gitignore
を使用する
コンパイルされたクラスファイルと WAR ファイルが Git レポジトリにコミットされる、または Git コ
マンドの実行時にこれらのファイルに関するメッセージが表示されることを防ぐため、プロジェクト
フォルダの [.gitignore] という名前のファイルに関連ファイルタイプを追加します。
~/workspace/myapp/.gitignore
*.zip
*.class
AWS Elastic Beanstalk Java SE プラットフォーム
を使用する
Abstract
AWS Elastic Beanstalk の Java SE プラットフォームについて説明します。
AWS Elastic Beanstalk を使用して、Java ウェブアプリケーションを実行、構築、設定することができ
ます。
API Version 2010-12-01
617
AWS Elastic Beanstalk 開発者ガイド
[Procfile] でアプリケーションプロセスを設定する
Note
Elastic Beanstalk は、2 つの Java SE 設定(Java 8 と Java 7)を提供します。詳細について
は、「サポートされるプラットフォーム (p. 27)」を参照してください。
それぞれに割り当てられるメモリ量などの Java 仮想マシン(JVM)コンテナオプションを含む、環境
のサーバーインスタンスで実行される処理を設定するには、オプションの Procfile (p. 618) をソースバン
ドルに含めます。Procfile は、ソースバンドルルートに JAR が 1 つ以上ある場合に必要です。JAR
ファイルが 1 つだけの場合は、Elastic Beanstalk は java -jar application_name.jar でそのファ
イルを実行します。
Java クラスをコンパイルし、デプロイ時に環境内の EC2 インスタンスでの他のビルドコマンドを実行
するには、アプリケーションバンドルに Buildfile (p. 619) を含めます。Buildfile により、JAR をロー
カルにコンパイルする代わりに、ソースコードをそのままデプロイしてサーバー上に構築できます。
Java SE プラットフォームには、サーバー上でのビルドを可能にする共通ビルドツールが含まれます。
Elastic Beanstalk Java SE プラットフォーム設定は、リバースプロキシとして機能する nginx サーバー
を含み、キャッシュ型静的コンテンツを提供し、アプリケーションにリクエストをパスします。
Java SE プラットフォームは、静的ファイルを含むアプリケーションでパスを指定するオプションの定
義を可能にする拡張可能な設定オプションの名前空間 (p. 620)をサポートします。これにより、静的コ
ンテンツのフォルダをソースバンドルに含め、同ファイルを直接提供してアプリケーションの負荷を低
減するように nginx に伝えることができます。
トピック
• [Procfile] でアプリケーションプロセスを設定する (p. 618)
• [Buildfile] で JARs On-Server を構築する (p. 619)
• 実行順序 (p. 620)
• ソフトウェア設定のオプション (p. 620)
• リバースプロキシを設定する (p. 620)
[Procfile] でアプリケーションプロセスを設定する
アプリケーションソースバンドルのルートに JAR ファイルが複数ある場合は、どの JAR を実行するか
を Elastic Beanstalk に伝える Procfile ファイルを含める必要があります。単一の JAR アプリケー
ション用の [Procfile] ファイルを含め、アプリケーションを実行する Java 仮想マシン(JVM)を設
定することもできます。
ソースバンドルのルートに Procfile を保存する必要があります。ファイル名では、大文字と小文字が区
別されます。Procfile には、プロセス名、コロン、JAR を実行する Java コマンドの形式を使用します。
Procfile 内の各行は、正規表現 ^[A-Za-z0-9_]+:\s*.+$ に一致する必要があります。
[Procfile]
web: java -jar server.jar -Xmms:256m
cache: java -jar mycache.jar
web_foo: java -jar other.jar
アプリケーション内の主要な JAR を実行するコマンドは、[web] と呼ばれ、Procfile 内のコマンドリ
ストの最初に記載されている必要があります。nginx サーバーは、環境のロードバランサーから受信す
るすべての HTTP リクエストをアプリケーションに転送します。
API Version 2010-12-01
618
AWS Elastic Beanstalk 開発者ガイド
[Buildfile] で JARs On-Server を構築する
デフォルトでは、Elastic Beanstalk はポート 5000 のアプリケーションにリクエストを送信するように
nginx プロキシを設定します。デフォルトのポートは、PORT システムプロパティ (p. 621)を、主要なア
プリケーションがリッスンするポートに設定することにより、上書きできます。
Note
アプリケーションがリッスンしているポートは、ロードバランサーからリクエストを受信する
ために nginx サーバーがリッスンするポートに影響を与えません。
[Procfile] を使用して複数のアプリケーションを実行すると、Elastic Beanstalk は各アプリケーショ
ンが、以前のポートよりも数値が 100 高いポートをリッスンするものとみなします。Elastic Beanstalk
は、各アプリケーションがアクセス可能な PORT 変数を、アプリケーションが実行されることが予想
されるポートに設定します。System.getProperty("PORT") を呼び出すことで、アプリケーション
コード内のこの変数にアクセスできます。
Note
前述の例では、[web] アプリケーションはポート 5000 を、[cache] はポート 5100 を、[web_foo]
は 5200 をリッスンします。[web] は、PORT 変数を読み取ることでリスニングポートを設定
し、ポート番号に 100 を足して [cache] がリッスンしているポートを決定し、リクエストを送
信します。
Procfile で開始されたプロセスからの標準出力ストリームと標準エラーストリームは、プロセスに関
連する名前のログファイルにキャプチャされ、/var/log に格納されます。たとえば、前述の例では
web プロセスが stdout および stderr についてそれぞれ web-1.log および web-1.error.log と
いう名前のログを生成します。
Elastic Beanstalk は、Procfile のすべてのエントリが常に実行されるものとみなし、Procfile に定義され
たアプリケーションが終了した場合には自動的に再起動します。終了後に再起動の必要がないコマンド
を実行するには、Buildfile (p. 619) を使用します。
[Buildfile] で JARs On-Server を構築する
ソースバンドルの [Buildfile] ファイルからビルドコマンドを起動することで、環境内の EC2 インス
タンスにアプリケーションのクラスファイルと JAR を構築できます。
[Buildfile] ファイルは、[Procfile] ファイルと同じ構文を持ちますが、[Buildfile] ファイルのコ
マンドは 1 回のみしか実行されず、完了後に終了する必要があります。一方、[Procfile] ファイルの
コマンドは、アプリケーションが有効な間、常に実行されるものみなされ、終了した場合には再起動さ
れます。アプリケーションで JAR を実行するには、変わりに [Procfile] を使用します。
[Buildfile] というファイル名(大文字と小文字を区別します)をソースバンドルのルートに追加し、
次の方法でビルドコマンドを起動するように設定します。
[Buildfile]
build: mvn assembly:assembly -DdescriptorId=jar-with-dependencies
上記の例は、Apache Maven を実行してソースコードからウェブアプリケーションを構築しています。
Java ウェブアプリケーションサンプル (p. 592)で、この機能を使用するサンプルアプリケーションを探
します。
Java SE プラットフォームには、ビルドスクリプトから起動できる次のビルドツールが含まれます。
• javac – Java コンパイラ
• ant – Apache Ant
API Version 2010-12-01
619
AWS Elastic Beanstalk 開発者ガイド
実行順序
• mvn – Apache Maven
• gradle – Gradle
実行順序
アプリケーションソースバンドルに複数のタイプの構成を含めると、次の順序で実行されます。各手順
は、直前の手順が完了するまで開始されません。
• 手順 1: 設定ファイルで定義された commands、files、packages([.ebextensions])
• 手順 2: [Buildfile] コマンド
• 手順 3: 構成ファイルの container_commands([.ebextensions])
• 手順 4: [Procfile] コマンド(すべてのコマンドは同時に実行されます)
設定ファイルで commands、files、packages、および container_commands を使用する手順の詳
細については、「Linux サーバーでのソフトウェアのカスタマイズ (p. 150)」を参照してください。
ソフトウェア設定のオプション
Java SE プラットフォームは、すべてのプラットフォームでサポートされる名前空間 (p. 117)の他に、
プラットフォーム固有の設定の名前空間を 1 つサポートします。名前空間
aws:elasticbeanstalk:container:java:staticfiles により、ウェブアプリケーションのパス
を、静的コンテンツを含むアプリケーションソースバンドルのフォルダにマッピングするオプションを
定義できます。
たとえば、この option_settings (p. 148) スニペットは、静的ファイルの名前空間で 2 つのオプションを
定義します。1 つめのオプションはパス /public を [public] というフォルダに、2 つめのオプション
はパス /images を [img] というフォルダにマッピングします。
option_settings:
- namespace: aws:elasticbeanstalk:container:java:staticfiles
option_name: /public
value: public
- namespace: aws:elasticbeanstalk:container:java:staticfiles
option_name: /images
value: img
この名前空間を使用してマッピングされるフォルダは、ソースバンドルのルートに実際に存在するフォ
ルダであることが必要です。パスを JAR ファイルのフォルダにマッピングすることはできません。
この名前空間には、デフォルトで定義されているオプションはありません。
リバースプロキシを設定する
Elastic Beanstalk はリバースプロキシとして nginx を使用し、ポート 80 の Elastic Load Balancing ロー
ドバランサーにアプリケーションをマッピングします。Elastic Beanstalk は、拡張または独自の設定で
完全に上書きできるデフォルトの nginx 設定を提供します。
Elastic Beanstalk のデフォルトの nginx 設定を拡張するには、アプリケーションソースバンドルの
[.ebextensions/nginx/conf.d/] というフォルダに [.conf] 設定ファイルを追加します。Elastic
Beanstalk の nginx 設定では、このフォルダに [.conf] ファイルが自動的に含まれます。
API Version 2010-12-01
620
AWS Elastic Beanstalk 開発者ガイド
環境設定
~/workspace/my-app/
|-- .ebextensions
|
`-- nginx
|
`-- conf.d
|
`-- myconf.conf
`-- web.jar
Elastic Beanstalk のデフォルトの nginx 設定を上書きするには、ソースバンドルの設定を
[.ebextensions/nginx/nginx.conf] に含めます。
~/workspace/my-app/
|-- .ebextensions
|
`-- nginx
|
`-- nginx.conf
`-- web.jar
Elastic Beanstalk の nginx 設定を上書きするには、[nginx.conf] に次の行を追加し、拡張ヘルスレポー
トとモニタリング (p. 263)、自動アプリケーションマッピング、および静的ファイル用に Elastic Beanstalk
の設定をプルします。
include conf.d/elasticbeanstalk/*.conf;
AWS Elastic Beanstalk Java 環境を設定する
Abstract
アプリケーションを実行している Java 仮想マシンに Elastic Beanstalk がパスするシステムプロパティを設定しま
す。
Elastic Beanstalk がサーバーインスタンスにパスするシステムプロパティを設定するには、AWS マネ
ジメントコンソールや AWS Toolkit for Eclipse を使用します。
環境プロパティの設定
環境のプロパティは、起動時に Java 仮想マシン(JVM)にパスされるシステムプロパティであり、
データベース接続文字列などのハードコーディングが必要ない情報を、-D フラグを使用してアプリケー
ションにパスします。環境プロパティは、アプリケーション環境に固有のものであり、実際の(シェ
ル)環境変数ではありません。情報を環境プロパティに保存すると、アプリケーションのポータビリ
ティとスケーラビリティの向上に役立ちます。環境間を移動する場合、ソースコードを再コンパイルす
る必要はありません。System.getProperty()(Tomcat 環境の場合)または System.getenv(Java
SE 環境の場合)を使用して、環境プロパティを取得できます。
システムプロパティを設定するには(AWS マネジメントコンソール)
1.
Elastic Beanstalk コンソールを開きます。
2.
環境については「management console (p. 50)」をご覧ください。
3.
4.
[Configuration] を選択します。
5.
[Environment Properties] で、[JDBC_CONNECTION_STRING] の横にある [Property Value] 列に接
続文字列を入力します。
[Software Configuration] セクションで、
を選択します。
API Version 2010-12-01
621
AWS Elastic Beanstalk 開発者ガイド
環境プロパティへのアクセス
たとえば、次の JDBC 接続文字列を指定すると、ユーザー名 me とパスワード mypassword を使
用し、ローカルホストのポート 3306 で MySQL データベースインスタンスに接続されます。
jdbc:mysql://localhost:3306/mydatabase?user=me&password=mypassword
6.
この文字列は、Elastic Beanstalk アプリケーションでは JDBC_CONNECTION_STRING というシス
テムプロパティとして利用できます。
[Save] を選択します。
Elastic Beanstalk によって環境が更新されます。これには約 1 分かかります。
Note
環境用に定義されるすべての環境プロパティの統合サイズは 4,096 バイトに制限されていま
す。環境プロパティの形式は KEY1=VALUE1, KEY2=VALUE2 で、各変数の値とキーの両方が
合計に含まれることを意味します。プラットフォームに 1 つまたは複数の定義済み環境プロパ
ティ([JDBC_CONNECTION_STRING] など)がある場合は、これらのプロパティも合計に含
まれます。
環境プロパティへのアクセス
System.getProperty()(Java SE 環境の場合)または System.getenv(Tomcat 環境の場合)を
使用して、コードからシステムのプロパティにアクセスします。たとえば、以下のコードでは、Tomcat
サーブレットで環境プロパティを読み取る方法を示しています。
String jdbcUrl = System.getProperty("JDBC_CONNECTION_STRING");
Java SE 環境では、環境プロパティは環境変数として用意されています。Java SE プラットフォームを
使用する場合は、System.getenv() で環境プロパティを読み取ります。
String jdbcUrl = System.getenv("JDBC_CONNECTION_STRING");
Amazon RDS データベースを Elastic Beanstalk 環
境に追加する
Abstract
Amazon RDS を使用し、Elastic Beanstalk Java アプリケーションでクラウド内の MySQL、Oracle、PostgreSQL、
または Microsoft SQL Server インスタンスのプロビジョニングと保守を行います。
Amazon Relational Database Service (Amazon RDS) DB インスタンスを使用して、アプリケーション
によって収集されて変更されたデータを保存できます。データベースは、Elastic Beanstalk でお客様の
環境にアタッチして管理したり、外部で作成して管理したりできます。
初めて Amazon RDS を使用する場合は、Elastic Beanstalk マネジメントコンソールを使用してテスト
環境に DB インスタンスを追加し、そのインスタンスにアプリケーションが接続できることを確認しま
す。
お客様の環境に DB インスタンスを追加するには
1.
Elastic Beanstalk コンソールを開きます。
API Version 2010-12-01
622
AWS Elastic Beanstalk 開発者ガイド
JDBC ドライバのダウンロード
2.
3.
4.
環境については「management console (p. 50)」をご覧ください。
[Configuration] を選択します。
[Data Tier] で、[Create a new RDS database] を選択します。
5.
DB エンジンを選択し、ユーザー名とパスワードを入力したら、[Apply] を選択します。
DB インスタンスの追加には約 10 分かかります。環境の更新が完了すると、DB インスタンスのホスト
名とその他の接続情報は以下の環境プロパティを通じてアプリケーションに使用できるようになりま
す。
• RDS_HOSTNAME – DB インスタンスのホスト名。
• RDS_DB_NAME – データベース名、ebdb。
• RDS_USERNAME – お客様のデータベース用に設定したユーザー名。
• RDS_PASSWORD – お客様のデータベース用に設定したパスワード。
• RDS_PORT – DB インスタンスが接続を許可するポート。デフォルト値は DB エンジンによって異な
ります。
内部 DB インスタンスの設定の詳細については、「Elastic Beanstalk でデータベースを設定する (p. 209)」
を参照してください。Elastic Beanstalk で使用する外部データベースを設定する手順については、
「Amazon RDS で Elastic Beanstalk を使用する (p. 308)」を参照してください。
データベースに接続するには、アプリケーションに適切なドライバの JAR を追加し、コードにドライ
バクラスをロードした後、Elastic Beanstalk に用意された環境プロパティにより接続オブジェクトを作
成します。
セクション
• JDBC ドライバのダウンロード (p. 623)
• データベースへの接続(Java SE プラットフォーム) (p. 623)
• データベースへの接続(Tomcat プラットフォーム) (p. 624)
• データベース接続のトラブルシューティング (p. 626)
JDBC ドライバのダウンロード
選択した DB エンジン用の JDBC ドライバの JAR が必要になります。JAR ファイルをソースコードに
保存し、データベースへの接続を作成するクラスをコンパイルするときのクラスパスに含めます。
以下の場所で DB エンジン用の最新のドライバが見つかります。
• MySQL – MySQL Connector/J
• Oracle SE-1 – Oracle JDBC ドライバ
• Postgres – PostgreSQL JDBC ドライバ
• SQL Server – Microsoft JDBC ドライバ
JDBC ドライバを使用するには、コード内で DriverManager.getConnection() により接続を作成
する前に、Class.forName() を呼び出してそのドライバをロードします。
データベースへの接続(Java SE プラットフォーム)
Java SE 環境では、System.getenv() を使用して環境から接続変数を読み取ります。以下のコード例
では、PostgreSQL データベースへの接続を作成するクラスを示しています。
API Version 2010-12-01
623
AWS Elastic Beanstalk 開発者ガイド
データベースへの接続(Tomcat プラットフォーム)
private static Connection getRemoteConnection() {
if (System.getenv("RDS_HOSTNAME") != null) {
try {
Class.forName("org.postgresql.Driver");
String dbName = System.getenv("RDS_DB_NAME");
String userName = System.getenv("RDS_USERNAME");
String password = System.getenv("RDS_PASSWORD");
String hostname = System.getenv("RDS_HOSTNAME");
String port = System.getenv("RDS_PORT");
String jdbcUrl = "jdbc:postgresql://" + hostname + ":" + port + "/" +
dbName + "?user=" + userName + "&password=" + password;
logger.trace("Getting remote connection with connection string from envir
onment variables.");
Connection con = DriverManager.getConnection(jdbcUrl);
logger.info("Remote connection successful.");
return con;
}
catch (ClassNotFoundException e) { logger.warn(e.toString());}
catch (SQLException e) { logger.warn(e.toString());}
}
return null;
}
データベースへの接続(Tomcat プラットフォーム)
Tomcat 環境では、環境プロパティは、System.getProperty() でアクセス可能なシステムプロパティ
として用意されています。
以下のコード例では、PostgreSQL データベースへの接続を作成するクラスを示しています。
private static Connection getRemoteConnection() {
if (System.getProperty("RDS_HOSTNAME") != null) {
try {
Class.forName("org.postgresql.Driver");
String dbName = System.getProperty("RDS_DB_NAME");
String userName = System.getProperty("RDS_USERNAME");
String password = System.getProperty("RDS_PASSWORD");
String hostname = System.getProperty("RDS_HOSTNAME");
String port = System.getProperty("RDS_PORT");
String jdbcUrl = "jdbc:postgresql://" + hostname + ":" + port + "/" +
dbName + "?user=" + userName + "&password=" + password;
logger.trace("Getting remote connection with connection string from envir
onment variables.");
Connection con = DriverManager.getConnection(jdbcUrl);
logger.info("Remote connection successful.");
return con;
}
catch (ClassNotFoundException e) { logger.warn(e.toString());}
catch (SQLException e) { logger.warn(e.toString());}
}
return null;
}
接続の取得時や SQL ステートメントの実行時に問題が発生する場合は、JSP に以下のコードを追加し
てみることができます。このコードは、DB インスタンスに接続し、テーブルを作成して、そのテーブ
ルに書き込みます。
API Version 2010-12-01
624
AWS Elastic Beanstalk 開発者ガイド
データベースへの接続(Tomcat プラットフォーム)
<%@ page import="java.sql.*" %>
<%
// Read RDS connection information from the environment
String dbName = System.getProperty("RDS_DB_NAME");
String userName = System.getProperty("RDS_USERNAME");
String password = System.getProperty("RDS_PASSWORD");
String hostname = System.getProperty("RDS_HOSTNAME");
String port = System.getProperty("RDS_PORT");
String jdbcUrl = "jdbc:mysql://" + hostname + ":" +
port + "/" + dbName + "?user=" + userName + "&password=" + password;
// Load the JDBC driver
try {
System.out.println("Loading driver...");
Class.forName("com.mysql.jdbc.Driver");
System.out.println("Driver loaded!");
} catch (ClassNotFoundException e) {
throw new RuntimeException("Cannot find the driver in the classpath!", e);
}
Connection conn = null;
Statement setupStatement = null;
Statement readStatement = null;
ResultSet resultSet = null;
String results = "";
int numresults = 0;
String statement = null;
try {
// Create connection to RDS DB instance
conn = DriverManager.getConnection(jdbcUrl);
// Create a table and write two rows
setupStatement = conn.createStatement();
String createTable = "CREATE TABLE Beanstalk (Resource char(50));";
String insertRow1 = "INSERT INTO Beanstalk (Resource) VALUES ('EC2 In
stance');";
String insertRow2 = "INSERT INTO Beanstalk (Resource) VALUES ('RDS In
stance');";
setupStatement.addBatch(createTable);
setupStatement.addBatch(insertRow1);
setupStatement.addBatch(insertRow2);
setupStatement.executeBatch();
setupStatement.close();
} catch (SQLException ex) {
// handle any errors
System.out.println("SQLException: " + ex.getMessage());
System.out.println("SQLState: " + ex.getSQLState());
System.out.println("VendorError: " + ex.getErrorCode());
} finally {
System.out.println("Closing the connection.");
if (conn != null) try { conn.close(); } catch (SQLException ignore) {}
}
try {
API Version 2010-12-01
625
AWS Elastic Beanstalk 開発者ガイド
データベース接続のトラブルシューティング
conn = DriverManager.getConnection(jdbcUrl);
readStatement = conn.createStatement();
resultSet = readStatement.executeQuery("SELECT Resource FROM Beanstalk;");
resultSet.first();
results = resultSet.getString("Resource");
resultSet.next();
results += ", " + resultSet.getString("Resource");
resultSet.close();
readStatement.close();
conn.close();
} catch (SQLException ex) {
// Handle any errors
System.out.println("SQLException: " + ex.getMessage());
System.out.println("SQLState: " + ex.getSQLState());
System.out.println("VendorError: " + ex.getErrorCode());
} finally {
System.out.println("Closing the connection.");
if (conn != null) try { conn.close(); } catch (SQLException ignore) {}
}
%>
コードを JSP ファイルの html 部分の本文に配置し、結果を表示します。
<p>Established connection to RDS. Read first two rows: <%= results %></p>
データベース接続のトラブルシューティング
アプリケーションからデータベースへの接続で問題が発生する場合は、ウェブコンテナのログとデータ
ベースを参照します。
ログを確認する
Elastic Beanstalk 環境のすべてのログは、Eclipse 内から表示できます。AWS Explorer ビューが開いて
いない場合は、ツールバーのオレンジ色の AWS アイコンの横にある矢印を選択した後、[Show AWS
Explorer View] を選択します。[AWS Elastic Beanstalk] および環境名を展開し、サーバーのコンテキス
トメニューを開き(右クリック)、[Open in WTP Server Editor] を選択します。
[Server] ビューの [Log] タブを選択し、環境の集計ログを表示します。最新のログを開くには、ページ
右上の [Refresh] ボタンを選択します。
下にスクロールし、/var/log/tomcat7/catalina.out 内の Tomcat ログを探します。これまでの
例で何回かウェブページを読み込んだ場合は、次のように表示されることがあります。
------------------------------------/var/log/tomcat7/catalina.out
------------------------------------INFO: Server startup in 9285 ms
Loading driver...
Driver loaded!
SQLException: Table 'Beanstalk' already exists
API Version 2010-12-01
626
AWS Elastic Beanstalk 開発者ガイド
データベース接続のトラブルシューティング
SQLState: 42S01
VendorError: 1050
Closing the connection.
Closing the connection.
ウェブアプリケーションが標準出力に送信するすべての情報は、ウェブコンテナのログに表示されま
す。上記の例では、すべてのページの読み込みでテーブルを作成しようとしており、結果的に最初の読
み込み以降のすべてのページの読み込みで SQL 例外がキャッチされます。
上記は例としては問題ありませんが、実際のアプリケーションでは、データベース定義をスキーマオブ
ジェクトに保持し、モデルクラス内からトランザクションを実行し、コントローラーサーブレットに
よってリクエストを調整します。
RDS DB インスタンスに接続する
My SQL クライアントアプリケーションを使用して、Elastic Beanstalk 環境内の RDS DB インスタンス
に直接接続できます。
最初に、RDS DB インスタンスからセキュリティグループにアクセスできるようにして、コンピュータ
からのトラフィックを許可します。
1.
2.
3.
4.
5.
6.
Elastic Beanstalk コンソールを開きます。
環境については「management console (p. 50)」をご覧ください。
[Configuration] を選択します。
[Network Tier] の [RDS] セクションで、 (歯車アイコン)を選択します。
[DB endpoint] の横の [View in RDS Console] を選択します。
[RDS Dashboard] のインスタンスの詳細ページで、[Security and Network] の [Security Groups] か
ら、rds- で始まるセキュリティグループを選択します。
Note
データベースには、[Security Groups] のラベルが付けられたエントリが複数ある場合があ
ります。古いほうのアカウントにデフォルトの VPC が設定されてない場合のみ、最初の
エントリ(awseb で始まるもの)を使用します。
7.
8.
[Security group details] で、[Inbound] タブ、[Edit] の順に選択します。
My SQL(ポート 3306)に、CIDR 形式で指定した IP アドレスからのトラフィックを許可するルー
ルを追加します。
9.
[Save] を選択します。変更はすぐに反映されます。
環境の Elastic Beanstalk 詳細設定に戻り、エンドポイントを書き留めます。RDS DB インスタンスに
接続するには、ドメイン名を使用します。
MySQL クライアントをインストールし、ポート 3306 でデータベースへの接続を開始します。Windows
の場合は、MySQL のホームページから MySQL Workbench をインストールし、プロンプトに従いま
す。
Linux の場合は、お客様のディストリビューションに対応したパッケージマネージャを使用して、MySQL
クライアントをインストールします。次の例は、Ubuntu および Debian から派生したその他の OS で
利用できます。
// Install My SQL client
$ sudo apt-get install mysql-client-5.5
API Version 2010-12-01
627
AWS Elastic Beanstalk 開発者ガイド
Eclipse ツールキット
...
// Connect to database
$ mysql -h aas839jo2vwhwb.cnubrrfwfka8.us-west-2.rds.amazonaws.com -u username
-ppassword ebdb
Reading table information for completion of table and column names
You can turn off this feature to get a quicker startup with -A
Welcome to the MySQL monitor. Commands end with ; or \g.
Your MySQL connection id is 117
Server version: 5.5.40-log Source distribution
...
接続後、SQL コマンドを実行し、データベースのステータス、テーブルや行が作成されたかどうかな
どの情報を確認できます。
mysql> SELECT Resource from Beanstalk;
+--------------+
| Resource
|
+--------------+
| EC2 Instance |
| RDS Instance |
+--------------+
2 rows in set (0.01 sec)
AWS Toolkit for Eclipse を使用する
Abstract
Eclipse ツールキットを使用して AWS Elastic Beanstalk 環境を作成および管理します。
AWS Toolkit for Eclipse は、AWS Elastic Beanstalk 管理機能を Java 開発環境と統合し、環境の作成、
設定、コード開発を容易にします。ツールキットには、複数の AWS アカウントのサポート、既存の環
境の管理、トラブルシューティングのための環境内のインスタンスへの直接接続が含まれます。
前提条件と AWS Toolkit for Eclipse のインストールの詳細については、http://aws.amazon.com/eclipse
を参照してください。「Using AWS Elastic Beanstalk with the AWS Toolkit for Eclipse」ビデオも参照
してください。また、ツールの役に立つ情報、操作手順、Java 開発者向けの追加資料についても説明
します。
既存の環境を Eclipse にインポートする
Abstract
AWS マネジメントコンソールで Elastic Beanstalk アプリケーション用に作成した既存の環境を Eclipse にインポー
トします。
AWS マネジメントコンソールで作成した既存の環境を Eclipse にインポートすることができます。
既存の環境をインポートするには、[AWS Elastic Beanstalk] ノードを展開し、Eclipse 内の AWS Explorer
で環境をダブルクリックします。これで Elastic Beanstalk アプリケーションをこの環境にデプロイで
きるようになりました。
API Version 2010-12-01
628
AWS Elastic Beanstalk 開発者ガイド
環境を管理する
Elastic Beanstalk アプリケーション環境を管理する
Abstract
AWS Toolkit for Eclipse を使用する Elastic Beanstalk Java アプリケーション環境で使用される AWS リソースのプ
ロビジョニングと設定を変更します。
トピック
• 環境設定を変更する (p. 629)
• 環境タイプの変更 (p. 630)
• AWS Toolkit for Eclipse の使用による EC2 サーバーインスタンスの設定 (p. 630)
• AWS Toolkit for Eclipse の使用による Elastic Load Balancing の設定 (p. 633)
• AWS Toolkit for Eclipse の使用による Auto Scaling の設定 (p. 636)
• AWS Toolkit for Eclipse の使用による通知の設定 (p. 638)
• AWS Toolkit for Eclipse の使用による Java コンテナの設定 (p. 638)
• AWS Toolkit for Eclipse を使用してシステムプロパティを設定する (p. 639)
AWS Toolkit for Eclipse を使用して、アプリケーション環境で使用される AWS リソースのプロビジョ
ニングと設定を変更できます。AWS マネジメントコンソールを使用してアプリケーション環境を管理
する方法については、「環境を管理する (p. 49)」を参照してください。ここでは、アプリケーション
環境設定の一部として AWS Toolkit for Eclipse で編集できるサービス設定の詳細について説明します。
AWS Toolkit for Eclipse の詳細については、AWS Toolkit for Eclipse 入門ガイド を参照してください。
環境設定を変更する
アプリケーションをデプロイすると、Elastic Beanstalk によって複数の AWS クラウドコンピューティ
ングサービスが設定されます。このような個々のサービスを設定する方法は、AWS Toolkit for Eclipse
を使用して制御できます。
アプリケーションの環境設定を編集するには
1.
2.
Eclipse に [AWS Explorer] ビューが表示されていない場合は、メニューで [Window] > [Show View]
> [AWS Explorer] の順にクリックします。Elastic Beanstalk ノードとアプリケーションノードを展
開します。
[AWS Explorer] で Elastic Beanstalk 環境をダブルクリックします。
3.
] ペインの下部にある [Configuration] タブをクリックします。
次の設定を編集できます。
• EC2 サーバーインスタンス
• ロードバランサー
• Auto Scaling
• 通知
API Version 2010-12-01
629
AWS Elastic Beanstalk 開発者ガイド
環境を管理する
• 環境タイプ
• 環境プロパティ
環境タイプの変更
Abstract
Java アプリケーションの拡張性に合わせた最適化が行われるように Elastic Beanstalk 環境設定を変更します。
AWS Toolkit for Eclipse では、環境の [Configuration] タブの [Environment Type] で、デプロイするアプ
リケーションの要件に応じて、[Load balanced, auto scaled] または [Single instance] 環境を選択できま
す。スケーラビリティが要求されるアプリケーションの場合は、[Load balanced, auto scaled] を選択し
ます。 シンプルでトラフィックの少ないアプリケーションの場合は、[Single instance] を選択します。
詳細については、「環境タイプ (p. 90)」を参照してください。
AWS Toolkit for Eclipse の使用による EC2 サーバーインスタン
スの設定
Abstract
Java アプリケーション用に Elastic Beanstalk 環境の Amazon Elastic Compute Cloud(EC2)インスタンス設定を
指定します。
Amazon Elastic Compute Cloud(EC2)は、Amazon のデータセンター内でサーバーインスタンスを起
動および管理するためのウェブサービスです。必要に応じて、任意の合法的な用途で Amazon EC2 サー
バーインスタンスをいつでも使用できます。インスタンスはさまざまなサイズや設定で使用できます。
詳細については、Amazon EC2 の製品ページを参照してください。
[Server] (で、Toolkit for Eclipse 内にある環境の [Configuration] タブでは、Elastic Beanstalk 環境の
Amazon EC2 インスタンスの設定を編集できます。
API Version 2010-12-01
630
AWS Elastic Beanstalk 開発者ガイド
環境を管理する
Amazon EC2 インスタンスタイプ
[Instance type] に、Elastic Beanstalk アプリケーションで使用できるインスタンスタイプが表示されま
す。インスタンスタイプを変更して、アプリケーションに最適な特性(メモリサイズや CPU 能力な
ど)を持つサーバーを選択します。例えば、高負荷の操作を長時間実行するアプリケーションでは、よ
り大きい CPU やメモリが必要となる場合があります。Elastic Beanstalk は、実行中のインスタンスを
定期的にチェックして正常であることを確認します。アプリケーションが 95% 以上の CPU を消費し
ている場合、Elastic Beanstalk はイベントをトリガします。このイベントの詳細については、「CPU
使用率が 95% を超えている (p. 812)」を参照してください。
Note
32 ビットと 64 ビットのインスタンスタイプを切り替えることはできません。例えば、アプリ
ケーションが 32 ビットプラットフォーム上に構築されている場合、リストには 32 ビットのイ
ンスタンスタイプのみが表示されます。
Elastic Beanstalk アプリケーションで使用可能な Amazon EC2 インスタンスタイプの詳細については、
Amazon Elastic Compute Cloud User Guide の「Instance Types」を参照してください。
Amazon EC2 セキュリティグループ
Amazon EC2 セキュリティグループを使用して、Elastic Beanstalk アプリケーションへのアクセスを制
御できます。セキュリティグループとは、インスタンスのファイアウォールのルールを定義するもので
す。このルールでは、どの着信ネットワークトラフィックをご使用のインスタンスに配信するかを指定
します。他の着信トラフィックはすべて破棄されます。グループのルールはいつでも変更することがで
きます。実行中のすべてのインスタンスと、今後起動されるインスタンスについて、新しいルールが自
動的に実施されます。
AWS マネジメントコンソールまたは AWS Toolkit for Eclipse を使用して、Amazon EC2 セキュリティ
グループを設定できます。Elastic Beanstalk アプリケーションへのアクセスを制御する Amazon EC2
セキュリティグループを指定できます。これには、[EC2 Security Groups] ボックスに Amazon EC2 の
セキュリティグループの名前を 1 つ以上(複数の場合はコンマ区切り)入力します。
Note
レガシーコンテナタイプを使用してアプリケーションを実行している場合、アプリケーション
のヘルスチェックを有効にするには、ソースの CIDR の範囲としてポート 80(HTTP)に
0.0.0.0/0 からアクセスできるようにします。ヘルスチェックの詳細については、「ヘルスチェッ
ク (p. 635)」を参照してください。レガシーコンテナタイプを使用しているかどうかを確認する
には、「いくつかのコンテナタイプがレガシーとマークされている理由 (p. 86)」を参照してく
ださい。
API Version 2010-12-01
631
AWS Elastic Beanstalk 開発者ガイド
環境を管理する
AWS Toolkit for Eclipse を使用してセキュリティグループを作成するには
1.
AWS Toolkit for Eclipse で、[AWS Explorer] タブをクリックします。[Amazon EC2] ノードを展開
し、[Security Groups] をダブルクリックします。
2.
左側にある表の任意の場所を右クリックし、[New Group] をクリックします。
3.
[Security Group] ダイアログボックスにセキュリティグループ名と説明を入力し、[OK] をクリック
します。
Amazon EC2 セキュリティグループの詳細については、「Amazon Elastic Compute Cloud User Guide」
の「Using Security Groups」を参照してください。
Amazon EC2 のキーペア
Elastic Beanstalk アプリケーション用にプロビジョニングされた Amazon EC2 インスタンスには、
Amazon EC2 のキーペアを使用して安全にログインできます。
Important
Elastic Beanstalk によってプロビジョニングされた Amazon EC2 インスタンスにアクセスする
には、まず Amazon EC2 キーペアを使用するために、Amazon EC2 キーペアを作成して Elastic
Beanstalk によってプロビジョニングされた Amazon EC2 インスタンスを設定する必要があり
ます。アプリケーションを Elastic Beanstalk にデプロイするときに、AWS Toolkit for Eclipse
内で [Publish to Beanstalk Wizard] を使用して、キーペアを作成することができます。または、
AWS マネジメントコンソールを使用して、Amazon EC2 キーペアを設定できます。 Amazon
EC2 のキーペアを作成する手順については、「Amazon Elastic Compute Cloud Getting Started
Guide」を参照してください。
Amazon EC2 のキーペアの詳細については、「 Elastic Compute Cloud User Guide」の「Using Amazon
EC2 Credentials」を参照してください。 Amazon EC2 インスタンスに接続する方法の詳細について
は、「Amazon Elastic Compute Cloud User Guide」の「Connecting to Instances」と「Connecting to
a Linux/UNIX Instance from Windows using PuTTY」を参照してください。
CloudWatch Metrics
デフォルトでは、基本的な Amazon CloudWatch メトリックスだけが有効化されていて、5 分周期で
データを返します。AWS Toolkit for Eclipse の環境の [Configuration] タブの [Server] セクションで、
[Monitoring Interval] で [1 minute] を選択すると、より詳細な 1 分間隔の CloudWatch メトリックスを有
効化することもできます。
Note
Amazon CloudWatch の利用料金で 1 分間隔のメトリックスに申し込むことができます。詳細
については、Amazon CloudWatch を参照してください。
API Version 2010-12-01
632
AWS Elastic Beanstalk 開発者ガイド
環境を管理する
カスタム AMI ID
AWS Toolkit for Eclipse の環境で、[Configuration] タブの [Server] セクションの [Custom AMI ID] ボッ
クスにカスタム AMI の ID を入力して、Amazon EC2 インスタンスで使用するデフォルトの AMI を独
自のカスタム AMI に置き換えることができます。
Important
独自の AMI の使用は高度な作業であるため、注意が必要です。カスタム AMI が必要な場合は、
デフォルトの Elastic Beanstalk AMI から始めて、これを変更することをお勧めします。正常と
みなされるには、Amazon EC2 インスタンスが、ホストマネージャの実行を含む Elastic Beanstalk
の一連の要件を満たす必要があります。これらの要件を満たさないと、環境が正常に動作しな
い可能性があります。
AWS Toolkit for Eclipse の使用による Elastic Load Balancing の
設定
Abstract
アプリケーションの負荷を分散するように Elastic Beanstalk 環境の負荷分散設定を指定し、Java アプリケーショ
ンの可用性を向上させます。
Elastic Load Balancing は、アプリケーションの可用性とスケーラビリティを改善する Amazon のウェ
ブサービスです。Elastic Load Balancing を使用すると、複数の Amazon EC2 インスタンス間でアプリ
ケーションの負荷を分散できます。Elastic Load Balancing による冗長化で可用性が改善され、アプリ
ケーションのトラフィック増加に対応できます。
Elastic Load Balancing を使用すると、実行しているすべての EC2 サーバーインスタンス間で、アプリ
ケーションの着信トラフィックの負荷を分散して調整することができます。また、アプリケーションの
処理能力を増やす必要があるときには、新しいインスタンスを簡単に追加することもできます。
アプリケーションをデプロイすると、Elastic Beanstalk によって自動的に Elastic Load Balancing がプ
ロビジョニングされます。Toolkit for Eclipse 内の環境の [Configuration] タブにある [Load Balancing]
でElastic Beanstalk 環境のロードバランシング設定を編集できます。
ここでは、アプリケーションで設定できる Elastic Load Balancing パラメータについて説明します。
API Version 2010-12-01
633
AWS Elastic Beanstalk 開発者ガイド
環境を管理する
ポート
Elastic Beanstalk アプリケーションへのリクエストを処理するためにプロビジョニングされたロードバ
ランサーは、アプリケーションを実行している Amazon EC2 インスタンスにリクエストを送信します。
プロビジョニングされたロードバランサーは、HTTP ポートと HTTPS ポートのリクエストをリッスン
し、AWS Elastic Beanstalk アプリケーションの Amazon EC2 インスタンスにリクエストをルーティン
グすることができます。デフォルトでは、ロードバランサーは HTTP ポートのリクエストを処理しま
す。少なくともいずれかのポート(HTTP または HTTPS)を有効にする必要があります。
Important
指定したポートがロックされていないことを確認してください。ロックされている場合、ユー
ザーは Elastic Beanstalk アプリケーションに接続できません。
HTTP ポートを制御する
HTTP ポートを無効にするには[HTTP Listener Port] で [OFF] を選択します。HTTP ポートを有効にす
るには、HTTP ポート(80 など)を選択します。
Note
デフォルトポート 80 以外のポート(例:ポート 8080)を使用して環境にアクセスする場合
は、既存のロードバランサーにリスナーを追加し、そのポートでリッスンするようにリスナー
を設定できます。たとえば、Elastic Load Balancing API ツールを使用して、次のコマンドを入
力します。<yourloadbalancername> は Elastic Beanstalk のロードバランサーの名前に置き
換えてください。
elb-create-lb-listeners --lb <yourloadbalancername> --listener "protocol=ht
tp, lb-port=8080, instance-port=80"
Elastic Beanstalk を使用して環境を監視する場合は、ポート 80 のリスナーを削除しないでく
ださい。
HTTPS ポートを制御する
Elastic Load Balancing は、ロードバランサーへのクライアント接続のトラフィックを暗号化するため
に、HTTPS/TLS プロトコルをサポートしています。ロードバランサーから EC2 インスタンスへの接
続には、プレーンテキストが使用されます。デフォルトで、HTTPS ポートは無効です。
HTTPS ポートを有効にするには
1.
2.
3.
AWS Identity and Access Management (IAM)サービスの証明書およびキーを作成してアップロー
ドします。 IAM サービスは証明書を保存し、アップロードした SSL 証明書の Amazon Resource
Name(ARN)を提供します。証明書の作成とアップロードの詳細については、「Using AWS
Identity and Access Management」の「Managing Server Certificates」を参照してください。
[HTTPS Listener Port] ドロップダウンリストからポートを選択して、HTTPS ポートを指定します。
[SSL Certificate ID] テキストボックスに、SSL 証明書の Amazon Resources Name(ARN)を入力
します(例えば、arn:aws:iam::123456789012:server-certificate/abc/certs/build)。
ステップ 1 で作成し、アップロードした SSL 証明書を使用します。証明書の ARN の表示につい
API Version 2010-12-01
634
AWS Elastic Beanstalk 開発者ガイド
環境を管理する
ては、「Using IAM Guide」の「Creating and Uploading Server Certificates」の「Verify the Certificate
Object」を参照してください。
HTTPS ポートを無効にするには、[OFF][HTTPS Listener Port] で選択します。
ヘルスチェック
[Load Balancing] パネルの EC2 Instance Health Check] を使用して、ヘルスチェックの設定を制御でき
ます。
次の一覧では、アプリケーションで設定できるヘルスチェックパラメータについて説明します。
• Elastic Beanstalk は照会する URL で応答コード 200 を探して、インスタンスのヘルスを確認しま
す。デフォルトでは、Elastic Beanstalk はレガシーではないコンテナの場合は TCP:80 を確認し、レ
ガシーコンテナの場合は HTTP:80 を確認します。オーバーライドしてアプリケーションの既存のリ
ソース(例えば、/myapp/index.jsp)に一致させるには、[Application Health Check URL] ボック
スに入力します。 デフォルトの URL をオーバーライドすると、Elastic Beanstalk は HTTP を使用し
てリソースを照会します。レガシーコンテナタイプを使用しているかどうかを確認するには、「いく
つかのコンテナタイプがレガシーとマークされている理由 (p. 86)」を参照してください。
• [Health Check Interval (seconds)] に、アプリケーションの Amazon EC2 インスタンスでヘルスチェッ
クを実行する間隔の秒数を入力します。
• [Health Check Timeout] に、Elastic Load Balancing がインスタンスの応答がないと見なす応答待機時
間の秒数を入力します。
• [Healthy Check Count Threshold] および [Unhealthy Check Count Threshold] には、Elastic Load
Balancing がインスタンスのヘルスステータスを変更するまでの URL プローブの連続成功回数また
は失敗回数を指定します。例えば、[Unhealthy Check Count Threshold] テキストボックスに 5 と指
定すると、URL から 5 回連続してエラーメッセージが返されるか、タイムアウトしてから、Elastic
Load Balancing はヘルスチェックを "失敗した" と見なします。
セッション
デフォルトでは、ロードバランサーは負荷が最小になるように、各リクエストを個別にサーバーインス
タンスにルーティングします。比較すると、スティッキーセッションの場合、セッション中にユーザー
から受信するすべてのリクエストが、同じサーバーインスタンスに送信されるように、ユーザーのセッ
ションを特定のサーバーインスタンスにバインドします。
アプリケーションでスティッキーセッションが有効な場合、Elastic Beanstalk は、ロードバランサーで
生成された HTTP Cookie を使用します。ロードバランサーは、ロードバランサーが生成する特別な
Cookie を使って、各リクエストのアプリケーションインスタンスを追跡します。ロードバランサーが
リクエストを受け取ると、まずこの Cookie がリクエスト内にあるかどうかを調べます。ある場合は、
Cookie で指定されたアプリケーションインスタンスにリクエストが送信されます。Cookie がない場
合、ロードバランサーは、既存の負荷分散アルゴリズムに基いてアプリケーションインスタンスを選択
します。同じユーザーからの以降のリクエストをそのアプリケーションインスタンスにバインドするた
め、応答に Cookie が挿入されます。ポリシー設定では、各 Cookie の有効期間を設定する Cookie 期限
を定義します。
API Version 2010-12-01
635
AWS Elastic Beanstalk 開発者ガイド
環境を管理する
[Load Balancer] 以下の [Sessions] セクションで、アプリケーションのロードバランサーでスティッキー
セッションを許可するかどうかと、各 Cookie の有効期間を指定します。
Elastic Load Balancing の詳細については、「Elastic Load Balancing Developer Guide」を参照してく
ださい。
AWS Toolkit for Eclipse の使用による Auto Scaling の設定
Abstract
ユーザーが定義したトリガに基づいて Amazon EC2 インスタンスを自動的に起動または終了するように Elastic
Beanstalk 環境の Auto Scaling 設定を指定し、Java アプリケーションのトラフィックの変化を処理します。
Auto Scaling は、ユーザーが定義したトリガに基づいて、Amazon EC2 インスタンスを自動的に起動ま
たは終了するように設計された Amazon のウェブサービスです。ユーザーは Auto Scaling グループを
セットアップし、そのグループにトリガを関連付けることで、帯域幅の使用や CPU の使用率などのメ
トリックスに基づいて、コンピューティングリソースを自動的にスケーリングできます。Auto Scaling
は Amazon CloudWatch と連携して、アプリケーションを実行するサーバーインスタンスのメトリック
スを取得します。
Auto Scaling によって、Amazon EC2 インスタンスのグループを利用して、自動的に数を増減できるよ
うにさまざまなパラメータを設定できます。Auto Scaling は、アプリケーションのトラフィックの変化
をシームレスに処理できるように、Amazon EC2 インスタンスのグループを追加または削除できます。
Auto Scaling は、起動した各 Amazon EC2 インスタンスの状態もモニタリングします。インスタンス
が予期せずに終了した場合、Auto Scaling は終了を検出し、代わりのインスタンスを起動します。この
機能を使用すると、任意の固定の Amazon EC2 インスタンス数を自動的に維持できます。
Elastic Beanstalk はアプリケーション用に Auto Scaling をプロビジョニングします。[Auto Scaling]
(Toolkit for Eclipse 内の環境の [Configuration] タブ)で、Elastic Beanstalk 環境の Auto Scaling 設定
を編集できます。
ここでは、アプリケーションの Auto Scaling パラメータの設定方法について説明します。
API Version 2010-12-01
636
AWS Elastic Beanstalk 開発者ガイド
環境を管理する
起動設定
Elastic Beanstalk アプリケーションが Auto Scaling リソースをプロビジョニングする方法を制御するた
めに起動設定を編集できます。
[Minimum Instance Count] と [Maximum Instance Count] 設定を使用して、Elastic Beanstalk アプリケー
ションが使用する Auto Scaling の最小サイズと最大サイズを指定できます。
Note
固定の Amazon EC2 インスタンス数を維持するには、[Minimum Instance Count] テキストボッ
クスと [Maximum Instance Count] テキストボックスを同じ値に設定します。
[Availability Zones] で、Amazon EC2 インスタンスを維持するアベイラビリティーゾーンの数を指定し
ます。耐障害性に優れたアプリケーションを構築するには、この数値を設定することが重要です。1 つ
のアベイラビリティーゾーンがダウンしても、インスタンスは別のアベイラビリティーゾーンで動作を
続行することができます。
Note
現在、インスタンスを維持するアベイラビリティーゾーンを指定することはできません。
トリガ
トリガとは Auto Scaling のメカニズムで、いつインスタンス数を増加(スケールアウト)させ、いつ
減少(スケールイン)させるかをシステムに指定します。CPU の使用率など、Amazon CloudWatch に
発行される任意のメトリックスに対して実行するようにトリガを設定し、指定した条件を満たしている
かどうかを判断することができます。メトリックスの上限または下限に関して指定した期間を超過する
と、トリガによって スケーリングアクティビティという長時間実行されるプロセスが起動されます。
AWS Toolkit for Eclipse を使用して、Elastic Beanstalk アプリケーションのスケーリングトリガを定義
することができます。
Toolkit for Eclipse 内にある、環境の [Configuration] タブの [Scaling Trigger] セクションで、トリガパラ
メータの次のリストを設定できます。
API Version 2010-12-01
637
AWS Elastic Beanstalk 開発者ガイド
環境を管理する
• [Trigger Measurement] には、トリガのメトリックを指定します。
• [Trigger Statistic] では、トリガが使用する統計を、Minimum、Maximum、Sum、Average から指定し
ます。
• [Unit of Measurement] には、トリガ測定の単位を指定します。
• [Measurement Period] で、Amazon CloudWatch のトリガのメトリックスの測定頻度を指定します。
[Breach Duration] には、トリガが発生するまでに、定義した限度([Upper Threshold] と [Lower
Threshold] に指定した値)をメトリックが超過できる時間を指定します。
• [Scale-up Increment] と [Scale-down Increment] で、スケーリングアクティビティを実行する際に追
加または削除する Amazon EC2 インスタンスの数を指定します。
Auto Scaling の詳細については、Auto Scaling のドキュメントを参照してください。
AWS Toolkit for Eclipse の使用による通知の設定
Abstract
Amazon Simple Notification Service(Amazon SNS)を使用するように Elastic Beanstalk 環境を設定し、Java ア
プリケーションに影響を与える重要なイベントを通知します。
[]
Elastic Beanstalk では、Amazon Simple Notification Service(Amazon SNS)を使用して、アプリケー
ションに影響を与える重要なイベントについて通知します。Amazon SNS の通知を有効にするには、
Toolkit for Eclipse 内の環境にある [Configuration] タブの [Notifications] の下にある [Email Address] テ
キストボックスに E メールアドレスを入力します。Amazon SNS の通知を無効にするには、このテキ
ストボックスから E メールアドレスを削除します。
AWS Toolkit for Eclipse の使用による Java コンテナの設定
Abstract
Amazon EC2 インスタンス上の Java Virtual Machine の動作を微調整し、Java アプリケーションの Amazon S3 ロ
グのローテーションを有効または無効にするように、Elastic Beanstalk 環境を設定します。
[Container/JVM Options] パネルを使用すると、Amazon EC2 インスタンスの Java Virtual Machine の
動作を微調整し、Amazon S3 ログの循環を有効または無効にすることができます。AWS Toolkit for
Eclipse を使用して、コンテナ情報を設定できます。Tomcat 環境で使用可能なオプションの詳細につい
ては、「Tomcat ソフトウェア設定オプションを使用する (p. 614)」を参照してください。
Note
環境の CNAME を切り替えることで、ダウンタイムなしで設定を変更できます。詳細について
は、「AWS Elastic Beanstalk を使用した Blue-Green Deployment (p. 79)」を参照してくださ
い。
Elastic Beanstalk アプリケーションの [Container/JVM Options] パネルにアクセスするには
1.
Eclipse に [AWS Explorer] ビューが表示されていない場合は、メニューで [Window] > [Show View]
> [AWS Explorer] の順にクリックします。Elastic Beanstalk ノードとアプリケーションノードを展
開します。
API Version 2010-12-01
638
AWS Elastic Beanstalk 開発者ガイド
環境を管理する
2.
3.
4.
AWS Explorer で、Elastic Beanstalk 環境をダブルクリックします。
] ペインの下部にある [Configuration] タブをクリックします。
[Container] で、コンテナのオプションを設定できます。
リモートデバッグ
リモート環境からアプリケーションをテストするには、デバッグモードでアプリケーションを実行しま
す。
リモートデバッグを有効にするには、
1.
2.
[Enable remote debugging] を選択します。
[Remote debugging port] では、リモートデバッグに使用するポート番号を指定します。
[Additional Tomcat JVM command line options] 設定は自動的に入力されます。
リモートデバッグを開始するには
1.
2.
3.
AWS Toolkit for Eclipse メニューで、[Window] > [Show View] > [Other] をクリックします。
[Server] フォルダを展開し、[Servers] をクリックします。[OK] をクリックします。
[Servers] ペインで、アプリケーションが実行されているサーバーを右クリックし、[Restart in
Debug] をクリックします。
AWS Toolkit for Eclipse を使用してシステムプロパティを設定
する
次の例では、AWS Toolkit for Eclipse で JDBC_CONNECTION_STRING システムプロパティを設定しま
す。このプロパティは、設定後に JDBC_CONNECTION_STRING というシステムプロパティとして Elastic
Beanstalk アプリケーションで使用できるようになります。
Note
AWS Toolkit for Eclipse では、VPC の環境に対して、システムプロパティなどの環境設定の変
更をまだサポートしていません。以前のアカウント(EC2 Classic を使用)をお持ちでない場
合は、AWS マネジメントコンソール(次のセクションで説明します)、または EB CLI (p. 403)
を使用する必要があります。
Note
環境設定では、アクセント記号(`、ASCII 96)は除く、印刷可能な ASCII 文字を使用できま
す。また、200 文字を超えることはできません。
API Version 2010-12-01
639
AWS Elastic Beanstalk 開発者ガイド
複数の AWS アカウントを管理する
Elastic Beanstalk アプリケーションのシステムプロパティを設定するには
1.
Eclipse で [AWS Explorer] ビューが表示されていない場合は、[Window]、[ Show View]、[Other] の
順に選択します。[AWS Toolkit] を展開し、[AWS Explorer] をクリックします。
2.
[AWS Explorer] ペインで、[Elastic Beanstalk] を展開し、アプリケーションのノードを展開して、
お使いの Elastic Beanstalk 環境をダブルクリックします。
3.
4.
環境のペインの下部で、[Advanced] タブをクリックします。
[aws:elasticbeanstalk:application:environment] で、[JDBC_CONNECTION_STRING] をクリックし
て接続文字列を入力します。たとえば、次の JDBC 接続文字列を指定すると、ユーザー名 me とパ
スワード mypassword を使用し、ローカルホストのポート 3306 で MySQL データベースインスタ
ンスに接続されます。
jdbc:mysql://localhost:3306/mydatabase?user=me&password=mypassword
5.
この文字列は、Elastic Beanstalk アプリケーションでは JDBC_CONNECTION_STRING というシス
テムプロパティとして利用できます。
キーボードでCtrl+Sを押すか、[File]、[Save] の順に選択して、変更を環境設定に保存します。変更
は約 1 分以内に反映されます。
複数の AWS アカウントを管理する
Abstract
AWS Toolkit for Eclipse を使用してアカウントを追加、編集、削除するため、複数の AWS アカウントを使用して、
テスト、ステージング、本稼働など、さまざまなタスクを実行できます。
テスト、ステージング、本番など、さまざまなタスクを実行するために、複数の AWS アカウントを設
定できます。AWS Toolkit for Eclipse を使用すると、アカウントの追加、編集、削除が簡単になりま
す。
AWS Toolkit for Eclipse を使用して AWS アカウントを追加するには
1.
2.
Eclipse で、ツールバーが表示されていることを確認します。ツールバーで、[AWS] アイコンの横
にある矢印をクリックして、 設定.
[Add account] をクリックします。
API Version 2010-12-01
640
AWS Elastic Beanstalk 開発者ガイド
イベントを表示する
3.
4.
5.
[Account Name] テキストボックスにアカウントの表示名を入力します。
[Access Key ID] テキストボックスに AWS アクセスキー ID を入力します。
[Secret Access Key] テキストボックスに AWS シークレットキーを入力します。
6.
For API access, you need an access key ID and secret access key. Use IAM user access keys
instead of AWS root account access keys. IAM lets you securely control access to AWS services
and resources in your AWS account. For more information about creating access keys, see How Do
I Get Security Credentials? in the AWS General Reference.
[OK] をクリックします。
アプリケーションを Elastic Beanstalk にデプロイするために別のアカウントを使用するには
1.
2.
3.
4.
Eclipse ツールバーで、[AWS] アイコンの横にある矢印をクリックして、[Preferences] を選択しま
す。
[Default Account] では、アプリケーションを Elastic Beanstalk にデプロイするときに使用するアカ
ウントを選択します。
[OK] をクリックします。
[Project Explorer] ペインで、デプロイするアプリケーションを右クリックし、[Amazon Web Services]
> [Deploy to Elastic Beanstalk] を選択します。
イベントを表示する
Abstract
AWS Toolkit for Eclipse を使用して、アプリケーションに関連付けられたイベントや通知にアクセスします。
AWS Toolkit for Eclipse を使用して、アカウントに関連付けられたイベントと通知にアクセスできま
す。一般的なイベントの詳細については、「環境イベントについて (p. 811)」を参照してください。
アプリケーションイベントを表示するには
1.
2.
3.
Eclipse に [AWS Explorer] ビューが表示されていない場合は、メニューで [Window] > [Show View]
> [AWS Explorer] の順にクリックします。Elastic Beanstalk ノードとアプリケーションノードを展
開します。
AWS Explorer で、Elastic Beanstalk 環境をダブルクリックします。
] ペインの下部にある [Events] タブをクリックします。
アプリケーションのすべての環境に関するイベント一覧が表示されます。
API Version 2010-12-01
641
AWS Elastic Beanstalk 開発者ガイド
サーバーインスタンスの一覧表示と接続
サーバーインスタンスの一覧表示と接続
Abstract
AWS Toolkit for Eclipse または AWS マネジメントコンソールを使用して、Elastic Beanstalk アプリケーション環
境を実行する Amazon EC2 インスタンスのリストを表示します。
AWS Toolkit for Eclipse または AWS マネジメントコンソールで Elastic Beanstalk アプリケーション環
境を実行して、Amazon EC2 インスタンスの一覧を表示できます。Secure Shell(SSH)を使用して、
これらのインスタンスに接続できます。AWS マネジメントコンソールを使用したサーバーインスタン
スの一覧表示と接続については、「サーバーインスタンスの一覧表示と接続 (p. 294)」を参照してくだ
さい。次に、AWS Toolkit for Eclipse を使用して、サーバーインスタンスを表示し、接続する手順につ
いて説明します。
環境の Amazon EC2 インスタンスを表示して接続するには
1.
AWS Toolkit for Eclipse で、[AWS Explorer] をクリックします。[Amazon EC2] ノードを展開し、
[Instances] をダブルクリックします。
2.
[Amazon EC2 Instances] ウィンドウの [Instance ID] 列で、アプリケーションのロードバランサー
で実行されている Amazon EC2 インスタンスの [Instance ID] を右クリックします。次に、[Open
Shell] をクリックします。
Eclipse で SSH クライアントが自動的に開き、EC2 インスタンスと接続されます。
Amazon EC2 インスタンスに接続する方法の詳細については、「Amazon Elastic Compute Cloud
Getting Started Guide」を参照してください。
環境を終了するには
Abstract
未使用の AWS リソースに対して料金が発生しないように、AWS Toolkit for Eclipse を使用して実行中の環境を終
了します。
未使用の AWS リソースに対して料金が発生しないように、AWS Toolkit for Eclipse を使用して実行中
の環境を終了することができます。
Note
いつでも、また同じバージョンを使用して新しい環境を起動できます。
環境を終了するには
1.
2.
AWS Toolkit for Eclipse で、[AWS Explorer] ペインをクリックします。[Elastic Beanstalk] ノード
を展開します。
Elastic Beanstalk アプリケーションを展開し、Elastic Beanstalk 環境を右クリックします。
API Version 2010-12-01
642
AWS Elastic Beanstalk 開発者ガイド
リソース
3.
[TerminateEnvironment] をクリックします。環境で実行されている AWS リソースが終了されるま
でには数分かかります。
リソース
Abstract
Java アプリケーションの開発についてさらにサポートが必要な場合は、以下の関連リソースを参照してください。
Java アプリケーションを開発する場合は、他にも参照できる場所がいくつかあります。
リソース
説明
AWS Java Development Forum
質問を投稿してフィードバックを得ることができます。
Java 開発者センター
サンプルコード、ドキュメント、ツール、追加リソースを
1 か所で入手できる場所です。
API Version 2010-12-01
643
AWS Elastic Beanstalk 開発者ガイド
AWS Toolkit for Visual Studio を使用
して .NET で Elastic Beanstalk アプ
リケーションを作成しデプロイする
Abstract
Elastic Beanstalk for .NET を使用すると、Amazon Web Servicesを利用する ASP.NET ウェブアプリケーションの
デプロイ、管理、スケーリングを簡単に行うことができます。
トピック
• チュートリアル: AWS Elastic Beanstalk を使用して .NET サンプルアプリケーションをデプロイす
る方法 (p. 645)
• 開発、テスト、デプロイ (p. 659)
• Elastic Beanstalk での .NET 環境の設定 (p. 674)
• Amazon RDS の使用 (p. 675)
• 複数のアカウントを管理する (p. 678)
• アプリケーションの状態を監視する (p. 679)
• イベントを表示する (p. 680)
• Elastic Beanstalk アプリケーション環境を管理する (p. 680)
• サーバーインスタンスの一覧表示と接続 (p. 691)
• 環境を終了するには (p. 692)
• ツール (p. 693)
• リソース (p. 696)
• v1.0.0 Elastic Beanstalk Windows Server プラットフォームへの移行 (p. 697)
Elastic Beanstalk for .NET を使用すると、Amazon Web Servicesを利用する ASP.NET ウェブアプリ
ケーションのデプロイ、管理、スケーリングを簡単に行うことができます。Elastic Beanstalk for .NET
は、IIS を使用するウェブアプリケーションを開発するかホストするすべてのユーザーが利用できます。
今すぐ始める: チュートリアルは、「チュートリアル: AWS Elastic Beanstalk を使用して .NET サンプ
ルアプリケーションをデプロイする方法 (p. 645)」からすぐに開始することができます。このチュート
API Version 2010-12-01
644
AWS Elastic Beanstalk 開発者ガイド
チュートリアル: AWS Elastic Beanstalk を使用して .NET
サンプルアプリケーションをデプロイする方法
リアルでは、AWS Elastic Beanstalk アプリケーションコンテナにサンプルの ASP.NET ウェブアプリ
ケーションをデプロイします。
このセクションの残りの部分では、AWS Toolkit for Visual Studio を使用して ASP.NET ウェブアプリ
ケーションの作成とテスト、および Elastic Beanstalk へのデプロイと再デプロイを行う手順を示しま
す。第 2 部では、AWS Toolkit for Visual Studio を使用してアプリケーションと環境を管理し設定する
方法を説明します。前提条件、インストール手順、およびコードサンプルの実行の詳細については、
「AWS Toolkit for Microsoft Visual Studio」を参照してください。また、このサイトでは、ASP.NET 開
発者に対するツール、使用方法のトピック、追加リソースに関する有効な情報も提供します。
開発者ではないが、Elastic Beanstalk アプリケーションと環境の簡単な管理と設定を必要とするユー
ザーは、AWS マネジメントコンソールを使用できます。詳細については、コンソール、CLI、および
API を使用してアプリケーションと環境を管理および設定する (p. 39) を参照してください。
チュートリアル: AWS Elastic Beanstalk を使用し
て .NET サンプルアプリケーションをデプロイす
る方法
Abstract
.NET アプリケーションを AWS Elastic Beanstalk にデプロイする方法について説明します。
このチュートリアルでは、AWS Toolkit for Visual Studio を使用して AWS Elastic Beanstalk に .NET サ
ンプルアプリケーションをデプロイする方法について説明します。
Note
このチュートリアルでは、こちらからダウンロードできるサンプルの ASP.NET ウェブアプリ
ケーションを使用します。また、Toolkit for Visual Studio も使用します。このサンプルアプリ
ケーションは、Visual Studio Professional 2012 を使用してテストされています。
ステップ 1. 環境の作成
まず、Elastic Beanstalk コンソールの新しいアプリケーションの作成ウィザードを使用して、アプリ
ケーション環境を作成します。
環境を作成するには
1.
2.
console.aws.amazon.com/elasticbeanstalk に移動して、Elastic Beanstalk コンソールにログインし
ます。
[Create New Application] を選択します。
API Version 2010-12-01
645
AWS Elastic Beanstalk 開発者ガイド
ステップ 1. 環境の作成
3.
[Application Information] ページで、[Application name] にアプリケーション名を入力し、[Next] を
選択します。
4.
[New Environment] ページで、[Create web server] を選択します。
API Version 2010-12-01
646
AWS Elastic Beanstalk 開発者ガイド
ステップ 1. 環境の作成
5.
[Environment Type] ページの [Predefined configuration] で、[IIS] を選択します。
6.
[Environment type] でデフォルトの [Load balancing, auto scaling] を使用し、[Next] を選択します。
API Version 2010-12-01
647
AWS Elastic Beanstalk 開発者ガイド
ステップ 1. 環境の作成
7.
[Application Version] ページで、[Source] に [Sample application] を選択し、[Next] を選択します。
8.
[Environment Information] ページで、すべてデフォルトを使用し、[Next] を選択します。
API Version 2010-12-01
648
AWS Elastic Beanstalk 開発者ガイド
ステップ 1. 環境の作成
9.
[Additional Resources] ページの [Create an RDS DB instance with this environment] を選択し、
[Next] を選択します。
10. [Configuration Details] ページの [Instance type] で、[t2.micro] を選択します。
その他のフィールドはデフォルト値のままにし、[Next] を選択します。
API Version 2010-12-01
649
AWS Elastic Beanstalk 開発者ガイド
ステップ 1. 環境の作成
11. [Environment Tags] ページで、[Key] および [Value] フィールドを空白のままにし、[Next] を選択し
ます。
12. [Permissions] ページの [Next(次へ)] を選択します。デフォルトのインスタンスプロファイルと
サービスロール (p. 19)がない場合は、Elastic Beanstalk によって自動的に作成されます。
13. [RDS Configuration] ページの [DB engine] で、[sqlserver-ex] を選択します。[Instance class] で
[db.t2.micro] を選択し、[Allocated storage] を [20 GB] に増やします。
API Version 2010-12-01
650
AWS Elastic Beanstalk 開発者ガイド
ステップ 1. 環境の作成
14. [Username] と [Password] でユーザー名とパスワードを作成し、[Next] を選択します。
15. [Review Information] ページで設定を確認し、[Launch] を選択します。
起動ステータスを確認するには、Elastic Beanstalk コンソールの [Dashboard] ページを参照してく
ださい。
API Version 2010-12-01
651
AWS Elastic Beanstalk 開発者ガイド
ステップ 2. Elastic Beanstalk へのアプリケーションの公開
ステップ 2. Elastic Beanstalk へのアプリケーション
の公開
AWS Toolkit for Visual Studio を使用して、Elastic Beanstalk にアプリケーションを公開します。
Elastic Beanstalk にアプリケーションを公開するには
1.
Elastic Beanstalk コンソールの [Health] ステータスで環境が正常に起動していることを確認しま
す。値が [Green] である必要があります。
2.
Visual Studio で BeanstalkDotNetSample.sln を開きます。
Note
まだサンプルを入手していない場合は、こちらから入手できます。
3.
[View] メニューで、[Solution Explorer] を選択します。
4.
5.
[Solution ‘BeanstalkDotNetSample’ (2 projects)] を展開します。
[MVC5App] のコンテキスト(右クリック)メニューを開き、[Publish to AWS] を選択します。
API Version 2010-12-01
652
AWS Elastic Beanstalk 開発者ガイド
ステップ 2. Elastic Beanstalk へのアプリケーションの公開
6.
[Publish to AWS Elastic Beanstalk] ページの [Deployment Target] で、先ほど作成した環境を選択
し、[Next] を選択します。
API Version 2010-12-01
653
AWS Elastic Beanstalk 開発者ガイド
ステップ 2. Elastic Beanstalk へのアプリケーションの公開
7.
[Application Options] ページで、すべてデフォルトを使用し、[Next] を選択します。
API Version 2010-12-01
654
AWS Elastic Beanstalk 開発者ガイド
ステップ 2. Elastic Beanstalk へのアプリケーションの公開
8.
[Review] ページで、[Deploy] を選択します。
API Version 2010-12-01
655
AWS Elastic Beanstalk 開発者ガイド
ステップ 2. Elastic Beanstalk へのアプリケーションの公開
9.
デプロイのステータスを監視するには、Visual Studio の NuGet パッケージ マネージャーを使用し
ます。
アプリケーションが正常にデプロイされている場合は、[Output] ボックスに [completed successfully]
と表示されます。
API Version 2010-12-01
656
AWS Elastic Beanstalk 開発者ガイド
ステップ 2. Elastic Beanstalk へのアプリケーションの公開
10. Elastic Beanstalk コンソールに戻り、環境名の横に表示されているアプリケーション名を選択しま
す。
ASP.NET アプリケーションが新しいタブで開きます。
API Version 2010-12-01
657
AWS Elastic Beanstalk 開発者ガイド
ステップ 3. AWS リソースのクリーンアップ
ステップ 3. AWS リソースのクリーンアップ
アプリケーションが正常にデプロイされたら、アプリケーションのビデオを視聴して Elastic Beanstalk
の詳細について確認します。
Elastic Beanstalk での作業が完了したら、.NET 環境を終了できます。
Elastic Beanstalk 環境を終了するには
1.
2.
3.
Elastic Beanstalk コンソールを開きます。
環境については「management console (p. 50)」をご覧ください。
[Actions] を選択してから、[Terminate Environment] を選択します。
Elastic Beanstalk は、EC2 インスタンス、DB インスタンス、ロードバランサー、セキュリティグルー
プ、CloudWatch アラームなど、お客様の環境に関連付けられているすべての AWS リソースをクリー
ンアップします。
詳細については、AWS Toolkit for Visual Studio を使用して .NET で Elastic Beanstalk アプリケーショ
ンを作成しデプロイする (p. 644)、AWS .NET 開発ブログ、AWS アプリケーション管理ブログを参照し
てください。
API Version 2010-12-01
658
AWS Elastic Beanstalk 開発者ガイド
開発、テスト、デプロイ
開発、テスト、デプロイ
Abstract
Elastic Beanstalk .NET アプリケーションを開発、テスト、およびデプロイします。
トピック
• プロジェクトの作成 (p. 659)
• ローカル環境でテストする (p. 660)
• AWS Elastic Beanstalk にデプロイする (p. 660)
• ログのデバッグ/表示 (p. 667)
• アプリケーションを編集して再デプロイする (p. 667)
• 本番環境にデプロイする (p. 668)
• 既存のアプリケーションバージョンを既存の環境にデプロイする (p. 673)
以下の図は、Elastic Beanstalk へのアプリケーションのデプロイを含む、一般的なソフトウェア開発の
ライフサイクルを示しています。
通常は、アプリケーションを開発してローカルの環境でテストした後、Elastic Beanstalk にデプロイし
ます。この時点で、アプリケーションが http://myexampleapp.elasticbeanstalk.com などの
URL でライブ状態になります。アプリケーションがライブ状態になるため、テスト環境と実働環境な
ど、複数の環境を設定することが推奨されます。リモートで Elastic Beanstalk アプリケーションをテ
ストしデバッグした後、Elastic Beanstalk の更新やデプロイを実行できます。変更作業が終了したら、
最新バージョンを実働環境にアップロードします。以下のセクションでは、ソフトウェア開発のライフ
サイクルの各段階について詳しく説明します。
プロジェクトの作成
Visual Studio はさまざまなプログラミング言語とアプリケーションの種類用のテンプレートを提供しま
す。いずれのテンプレートを使用して開始できます。また、AWS Toolkit for Visual Studio では、AWS
Console Project、AWS Web Project、AWS Empty Project という、アプリケーションの開発をブートス
トラップする 3 つのプロジェクトテンプレートも提供します。この例では、新しい ASP.NET ウェブア
プリケーションを作成します。
新しい ASP.NET ウェブアプリケーションプロジェクトを作成するには
1.
2.
Visual Studio の [File] メニューで [New] をクリックし、[Project] をクリックします。
[New Project] ダイアログボックスで [Installed Templates] をクリックし、[Visual C#] をクリックし
た後、[Web] をクリックします。[ASP.NET Empty Web Application] をクリックし、プロジェクト
名を入力して [OK] をクリックします。
API Version 2010-12-01
659
AWS Elastic Beanstalk 開発者ガイド
ローカル環境でテストする
プロジェクトを実行するには
次のいずれかを行ってください。
• F5 を押します。
• [Debug] メニューから [Start Debugging] を選択します。
ローカル環境でテストする
Visual Studio では、簡単にローカルでアプリケーションをテストできます。ASP.NET ウェブアプリ
ケーションをテストするか実行するには、ウェブブラウザが必要です。Visual Studio には、Internet
Information Services (IIS)、IIS Express、組み込みの Visual Studio Development Server などのオプ
ションが用意されています。各オプションの詳細や最適なオプションの決定方法については、「ASP.NET
Web プロジェクト用の Visual Studio の Web サーバー」を参照してください。
AWS Elastic Beanstalk にデプロイする
アプリケーションをテストすると、Elastic Beanstalk にデプロイする準備が完了します。
AWS Toolkit for Visual Studio を使用してアプリケーションを Elastic Beanstalk にデプロイする
には
1.
2.
[Solution Explorer] でアプリケーションを右クリックし、[Publish to AWS] を選択します。
[Publish to AWS] ウィザードで、アカウント情報を入力します。
a.
b.
c.
[AWS account to use for deployment] で、アカウントを選択するか、[Other] を選択して新しい
アカウント情報を入力します。
[Region] で、アプリケーションをデプロイするリージョンを選択します。この製品のリージョ
ンについては、『Amazon Web Services General Reference』のリージョンとエンドポイント
のページを参照してください。Elastic Beanstalk でサポートされていないリージョンを選択し
た場合、Elastic Beanstalk にデプロイするオプションは利用できなくなります。
[Deploy new application with template] をクリックし、[Elastic Beanstalk] を選択します。次に
[Next] をクリックします。
API Version 2010-12-01
660
AWS Elastic Beanstalk 開発者ガイド
AWS Elastic Beanstalk にデプロイする
3.
4.
[Application] ページで、アプリケーションの詳細を入力します。
a.
b.
c.
d.
[ Name] に、アプリケーション名を入力します。
[Description] にアプリケーションの説明を入力します。この手順は省略可能です。
アプリケーションのバージョンラベルが[Deployment version label] に自動的に表示されます。
変更したファイルのみデプロイするため、[Deploy application incrementally] を選択します。
すべてのファイルではなく変更されたファイルのみ更新するため、増分デプロイの方が高速で
す。このオプションを選択した場合、アプリケーションバージョンは Git コミット ID から設
定されます。アプリケーションを増分デプロイしない場合、[Deployment version label] ボック
スでバージョンラベルを更新できます。
e.
[Next] をクリックします。
[Environment] ページで、環境の詳細を説明します。
a.
b.
[Create a new environment for this application] を選択します。
[Name] に、環境の名前を入力します。
c.
d.
[Description] で、環境の特性を説明します。この手順は省略可能です。
使用する環境の [Type] を選択します。
[Load balanced, auto scaled] 環境または [Single instance] 環境のいずれかを選択できます。詳
細については、「環境タイプ (p. 90)」を参照してください。
API Version 2010-12-01
661
AWS Elastic Beanstalk 開発者ガイド
AWS Elastic Beanstalk にデプロイする
Note
単一インスタンス環境の場合、負荷分散、Auto Scaling、ヘルスチェック URL の設定
は適用されません。
5.
e.
ボックスにカーソルを移動すると、[Environment URL] に環境の URL が自動的に表示されま
す。
f.
[Check availability] をクリックして環境 URL が利用できることを確認します。
g.
[Next] をクリックします。
[AWS Options] ページで、デプロイの他のオプションとセキュリティ情報を設定します。
a.
[Container Type] で、[64bit Windows Server 2012 running IIS 8] か [64bit Windows Server 2008
running IIS 7.5] を選択します。
b.
c.
[Instance Type] で [Micro] を選択します。
[Key pair] で [Create new key pair] を選択します。新しいキーペアの名前を入力します。この
例では、myuswestkeypair を使用します。次に、[OK] をクリックします。キーペアを使用
すると、Amazon EC2 インスタンスへのリモートデスクトップアクセスが可能になります。
Amazon EC2 キーペアの詳細については、「Amazon Elastic Compute Cloud User Guide」の
Using Credentials を参照してください。
インスタンスプロファイルを選択します。
d.
インスタンスプロファイルがない場合は、[Create a default instance profile] を選択します。
Elastic Beanstalk でのインスタンスプロファイルの使用については、「Elastic Beanstalk で
IAM ロールを使用する (p. 345)」を参照してください。
e.
レガシーでないコンテナを使用している場合、既存の VPC 内に環境を作成するオプションを
使用できます。これには、[Launch into VPC] をクリックします。次のページで、VPC 情報を
API Version 2010-12-01
662
AWS Elastic Beanstalk 開発者ガイド
AWS Elastic Beanstalk にデプロイする
設定できます。Amazon VPC の詳細については、「Amazon Virtual Private Cloud(Amazon
VPC)」を参照してください。サポートされているレガシーではないコンテナタイプのリスト
については、「いくつかのコンテナタイプがレガシーとマークされている理由 (p. 86)」を参
照してください。
f.
6.
[Next] をクリックします。
VPC 内の環境を起動することを選択した場合は、[VPC Options] ページが表示されます。そうでな
い場合は、[Additional Options] ページが表示されます。ここでは、VPC のオプションを設定しま
す。
API Version 2010-12-01
663
AWS Elastic Beanstalk 開発者ガイド
AWS Elastic Beanstalk にデプロイする
ロードバランシングでオートスケーリングの環境の VPC オプション
単一インスタンス環境の VPC オプション
a.
環境を起動する VPC の VPC ID を選択します。
API Version 2010-12-01
664
AWS Elastic Beanstalk 開発者ガイド
AWS Elastic Beanstalk にデプロイする
Note
VPC 情報が表示されない場合、環境を起動するリージョンと同じリージョンに VPC
を作成していません。VPC を作成する方法については、「Amazon VPC で Elastic
Beanstalk を使用する (p. 319)」を参照してください。
b.
ロードバランシングでオートスケーリングの環境では、Elastic Load Balancing ロードバラン
サーがインターネットで利用できないようにする場合、[ELB Scheme] リストで [private] を選
択します。
単一インスタンスの環境の場合、環境にロードバランサーがないため、このオプションは適用
されません。詳細については、「環境タイプ (p. 90)」を参照してください。
c.
d.
e.
7.
ロードバランシングでオートスケーリングの環境では、Elastic Load Balancing ロードバラン
サーと EC2 インスタンスのサブネットを選択します。パブリックサブネットとプライベート
サブネットを作成した場合、Elastic Load Balancing と EC2 インスタンスが正しいサブネット
と関連付けられていることを確認してください。Amazon VPC のデフォルトでは、10.0.0.0/24
を使用するデフォルトパブリックサブネットと 10.0.1.0/24 を使用するプライベートサブネッ
トを作成します。既存のサブネットは https://console.aws.amazon.com/vpc/ の Amazon VPC
コンソールで表示できます。
単一インスタンスの環境の場合、VPC に必要なのは、インスタンスのパブリックサブネット
のみです。この環境には、ロードバランサーがないため、ロードバランサーのサブネット選択
は適用されません。詳細については、「環境タイプ (p. 90)」を参照してください。
ロードバランシングでオートスケーリングの環境の場合は、必要に応じてインスタンス用に作
成したセキュリティグループを選択します。詳細については、「インスタンスのセキュリティ
グループを作成する (p. 329)」を参照してください。
単一インスタンスの環境では、NAT デバイスは必要ありません。default セキュリティグルー
プを選択します。Elastic Beanstalk は、インスタンスがインターネットにアクセスできるよう
に、Elastic IP アドレスをインスタンスに割り当てます。
[Next] をクリックします。
[Application Options] ページで、アプリケーションのオプションを設定します。
a.
b.
c.
d.
e.
[Target framework] では、[.NET Framework 4.0] を選択します。
Elastic Load Balancing では、ヘルスチェックを使用して、アプリケーションを実行している
Amazon EC2 インスタンスが正常であるかどうかを確認します。ヘルスチェックでは、指定
された URL を設定間隔で調査して、インスタンスのヘルスステータスを確認します。デフォ
ルトの URL をオーバーライドして、アプリケーション内の既存のリソースと一致させること
ができます(例: /myapp/index.aspx)。そのためには、[Application health check URL] ボッ
クスに、既存のリソースの URL を入力します。アプリケーションのヘルスチェックの詳細に
ついては、「ヘルスチェック (p. 207)」を参照してください。
アプリケーションに影響する重要なイベントに関する Amazon Simple Notification Service
(Amazon SNS)通知を受信する場合は、E メールアドレスを入力します。
[Application Environment] セクションでは、アプリケーションを実行している Amazon EC2 イ
ンスタンスの環境変数を指定できます。この設定では、環境間を移動するときにソースコード
の再コンパイルを不要にすることで、移植性が向上します。
アプリケーションのデプロイに使用するアプリケーション認証情報オプションを選択します。
API Version 2010-12-01
665
AWS Elastic Beanstalk 開発者ガイド
AWS Elastic Beanstalk にデプロイする
f.
[Next] をクリックします。
8.
以前 Amazon RDS データベースをセットアップした場合、[Amazon RDS DB Security Group] ペー
ジが表示されます。Elastic Beanstalk 環境を Amazon RDS DB インスタンスに接続する場合、1 つ
以上のセキュリティグループを選択します。それ以外の場合、次のステップに進みます。準備が完
了したら、[Next] をクリックします。
9.
デプロイオプションを確認します。すべて問題なければ、[Deploy] をクリックします。
API Version 2010-12-01
666
AWS Elastic Beanstalk 開発者ガイド
ログのデバッグ/表示
ASP.NET プロジェクトはウェブデプロイファイルとしてエクスポートされ、Amazon S3 にアップ
ロードされ、Elastic Beanstalk に新しいアプリケーションバージョンとして登録されます。Elastic
Beanstalk デプロイ機能は、新しくデプロイされたコードで利用できるようになるまで、環境を監
視します。[env:<environment name>] タブに、環境のステータスが表示されます。
ログのデバッグ/表示
問題を調査するには、ログを表示できます。ログの表示の詳細については、「インスタンスログ(p.296)」
を参照してください。リモートでテストする必要がある場合は、 EC2 インスタンスに接続できます。
インスタンスへの接続手順については、「サーバーインスタンスの一覧表示と接続 (p. 294)」を参照し
てください。
アプリケーションを編集して再デプロイする
アプリケーションをテストしたので、アプリケーションを編集して再デプロイしすぐに結果を表示する
ことは簡単です。
ASP.NET ウェブアプリケーションを編集して再デプロイするには
1.
[Solution Explorer] でアプリケーションを右クリックし、[Republish to Environment <your
environment name>] をクリックします。[Re-publish to AWS Elastic Beanstalk] ウィザードが開
きます。
API Version 2010-12-01
667
AWS Elastic Beanstalk 開発者ガイド
本番環境にデプロイする
2.
デプロイの詳細を確認し、[Deploy] をクリックします。
Note
設定を変更する場合、[Cancel] をクリックし、代わりに [Publish to AWS] ウィザードを使
用します。手順については、「AWS Elastic Beanstalk にデプロイする (p. 660)」を参照し
てください。
更新した ASP.NET ウェブプロジェクトは新しいバージョンラベルが付いたウェブデプロイファイ
ルとしてエクスポートされ、Amazon S3 にアップロードされ、Elastic Beanstalk に新しいアプリ
ケーションバージョンとして登録されます。Elastic Beanstalk デプロイ機能は、新しくデプロイさ
れたコードで利用できるようになるまで、既存の環境を監視します。env:<environment name>
タブに環境のステータスが表示されます。
本番環境にデプロイする
アプリケーションに行ったすべての変更に問題がない場合、アプリケーションバージョンを本番環境に
デプロイできます。
アプリケーションバージョンを本番にデプロイするには
1.
[AWS Explorer] で Elastic Beanstalk ノードを展開して、Elastic Beanstalk アプリケーションを右
クリックします。[View Status] を選択します。
2.
[App: <application name>] タブで [Versions] をクリックします。
3.
デプロイするアプリケーションバージョンをクリックし、[Publish Version] をクリックします。
[Publish Application Version] ウィザードが表示されます。
API Version 2010-12-01
668
AWS Elastic Beanstalk 開発者ガイド
本番環境にデプロイする
4.
環境の詳細を入力します。
a.
b.
c.
d.
e.
f.
5.
[Create a new environment for this application] ボタンを選択します。
[Name] ボックスに環境の名前を入力します。
[Description] ボックスに環境の説明を入力します。この手順は省略可能です。
環境 URL は [Environment URL] ボックスに自動的に入力されます
[Check availability] をクリックして環境 URL が利用できることを確認します。
[Next] をクリックします。[AWS Options] ページが表示されます。
デプロイの他のオプションとセキュリティ情報を設定します。
API Version 2010-12-01
669
AWS Elastic Beanstalk 開発者ガイド
本番環境にデプロイする
a.
b.
c.
d.
e.
f.
6.
[Container Type] リストで、[64bit Windows Server 2012 running IIS 8] か [64bit Windows Server
2008 running IIS 7.5] をクリックします。
[Instance Type] リストで [Micro] をクリックします。
[Key pair] リストで [Create new key pair] をクリックします。新しいキーペアの名前を入力し
ます。この例では、my example key pair を使用します。次に、[OK] をクリックします。キー
ペアを使用すると、Amazon EC2 インスタンスへのリモートデスクトップが可能になります。
Amazon EC2 キーペアの詳細については、「Amazon Elastic Compute Cloud User Guide」の
Using Credentials を参照してください。
インスタンスプロファイルを選択します。
インスタンスプロファイルがない場合は、[Create a default instance profile] を選択します。
Elastic Beanstalk でのインスタンスプロファイルの使用については、「Elastic Beanstalk で
IAM ロールを使用する (p. 345)」を参照してください。
レガシーでないコンテナを使用している場合、既存の VPC 内に環境を作成するオプションを
使用できます。これには、[Launch into VPC] をクリックします。次のページで、VPC 情報を
設定できます。Amazon VPC の詳細については、「Amazon Virtual Private Cloud(Amazon
VPC)」を参照してください。サポートされているレガシーではないコンテナタイプのリスト
については、「いくつかのコンテナタイプがレガシーとマークされている理由 (p. 86)」を参
照してください。
[Next] をクリックします。VPC 内の環境を起動することを選択した場合は、[VPC Options]
ページが表示されます。そうでない場合は、[Additional Options] ページが表示されます。
VPC オプションを設定します。
a.
環境を起動する VPC の VPC ID を選択します。
API Version 2010-12-01
670
AWS Elastic Beanstalk 開発者ガイド
本番環境にデプロイする
Note
VPC 情報が表示されない場合、環境を起動するリージョンと同じリージョンに VPC
を作成していません。VPC を作成する方法については、「Amazon VPC で Elastic
Beanstalk を使用する (p. 319)」を参照してください。
b.
c.
d.
e.
7.
Elastic Load Balancing がインターネットで利用できないようにする場合、[ELB Scheme] リス
トで [private] を選択します。
Elastic Load Balancing と EC2 インスタンスのサブネットを選択します。パブリックサブネッ
トとプライベートサブネットを作成した場合、Elastic Load Balancing と EC2 インスタンスが
正しいサブネットと関連付けられていることを確認してください。Amazon VPC のデフォル
トでは、10.0.0.0/24 を使用するデフォルトパブリックサブネットと 10.0.1.0/24 を使用するプ
ライベートサブネットを作成します。既存のサブネットは https://console.aws.amazon.com/
vpc/ の Amazon VPC コンソールで表示できます。
必要に応じて、インスタンス用に作成したセキュリティグループを選択します。詳細について
は、「インスタンスのセキュリティグループを作成する (p. 329)」を参照してください。
[Next] をクリックします。[Application Options] ページが表示されます。
アプリケーションオプションを設定します。
a.
b.
c.
d.
e.
[Target runtime] プルダウンメニューから [.NET Runtime 4.0] を選択します。
Elastic Load Balancing では、ヘルスチェックを使用して、アプリケーションを実行している
Amazon EC2 インスタンスが正常であるかどうかを確認します。ヘルスチェックでは、指定
された URL を設定間隔で調査して、インスタンスのヘルスステータスを確認します。デフォ
ルト URL をオーバーライドしてアプリケーションの既存のリソース(例え
ば、"/myapp/index.aspx")に一致させるには、[Application health check URL] ボックスに入力
します。アプリケーションのヘルスチェックの詳細については、「ヘルスチェック (p. 207)」
を参照してください。
アプリケーションに影響する重要なイベントに関する Amazon Simple Notification Service
(Amazon SNS)通知を受信する場合は、E メールアドレスを入力します。
[Application Environment] セクションでは、アプリケーションを実行している Amazon EC2 イ
ンスタンスの環境変数を指定できます。この設定では、環境間を移動するときにソースコード
の再コンパイルを不要にすることで、移植性が向上します。
アプリケーションのデプロイに使用するアプリケーション認証情報オプションをクリックしま
す。
API Version 2010-12-01
671
AWS Elastic Beanstalk 開発者ガイド
本番環境にデプロイする
f.
8.
Amazon RDS データベースのセキュリティグループを設定します。
•
9.
[Next] をクリックします。以前 Amazon RDS データベースをセットアップした場合、[Amazon
RDS DB Security Group] ページが表示されます。それ以外の場合、次のステップをスキップ
してデプロイ情報を確認します。
Elastic Beanstalk 環境を Amazon RDS DB インスタンスに接続する場合、1 つ以上のセキュリ
ティグループを選択します。[Next] をクリックします。[Review] ページが表示されます。
デプロイのオプションを確認し、[Deploy] をクリックします。
ASP.NET プロジェクトはウェブデプロイファイルとしてエクスポートされ、Amazon S3 にアップ
ロードされます。Elastic Beanstalk デプロイ機能は、新しくデプロイされたコードで利用できるよ
うになるまで、環境を監視します。[env:<environment name>] タブに、環境のステータスが表
示されます。
API Version 2010-12-01
672
AWS Elastic Beanstalk 開発者ガイド
既存のアプリケーションバージョンを既存の環境にデプロ
イする
既存のアプリケーションバージョンを既存の環境に
デプロイする
以前のアプリケーションバージョンにロールバックする必要がある場合などは、既存のアプリケーショ
ンを既存の環境にデプロイできます。
既存のアプリケーションバージョンを既存の環境にデプロイするには
1.
[AWS Explorer] で Elastic Beanstalk ノードを展開して、Elastic Beanstalk アプリケーションを右
クリックします。[View Status] を選択します。
2.
[App: <application name>] タブで [Versions] をクリックします。
3.
4.
デプロイするアプリケーションバージョンをクリックし、[Publish Version] をクリックします。
[Publish Application Version] ウィザードで、[Next] をクリックします。
5.
デプロイのオプションを確認し、[Deploy] をクリックします。
API Version 2010-12-01
673
AWS Elastic Beanstalk 開発者ガイド
.NET 環境設定
ASP.NET プロジェクトはウェブデプロイファイルとしてエクスポートされ、Amazon S3 にアップ
ロードされます。Elastic Beanstalk デプロイ機能は、新しくデプロイされたコードで利用できるよ
うになるまで、環境を監視します。[env:<environment name>] タブに、環境のステータスが表
示されます。
Elastic Beanstalk での .NET 環境の設定
Abstract
Elastic Beanstalk アプリケーションの .NET 環境を設定します。
.NET アプリケーションをデプロイするときは、Amazon EC2 インスタンスの動作をカスタマイズおよ
び設定できます。ソースバンドルに設定ファイルを含めることで、アプリケーションバージョンをデプ
ロイすると同時にインスタンスを簡単にカスタマイズできます。また、Elastic Beanstalk 環境の一部で
ある環境リソースをカスタマイズしたいこともあります(Amazon SQS キュー、Amazon ElastiCache
クラスターなど)。たとえば、Amazon SQS キューおよびキューの深さに対するアラームを追加した
り、Amazon ElastiCache クラスターを追加したりする場合です。ここでは、設定ファイルを作成し、
ソースにバンドルする手順を示します。
Elastic Beanstalk 環境のソフトウェア設定にアクセスするには
1.
2.
3.
4.
Elastic Beanstalk コンソールを開きます。
環境については「management console (p. 50)」をご覧ください。
[Configuration] を選択します。
[Software Configuration] セクションで、
を選択します。
アプリケーションのバージョンフレームワークでは、2.0 または 4.0 のいずれかを選択できます。32
ビットのアプリケーションを実行する予定がある場合は、[Enable 32-bit Applications] を選択します。
Elastic Beanstalk は、アプリケーションの Amazon EC2 インスタンスのログファイルを、アプリケー
ションに関連付けられている Amazon S3 バケットに 1 時間ごとにコピーできます。この機能を有効に
するには、[Enable log file rotation to Amazon S3] を選択します。
[Environment Properties] セクションで、アプリケーションコードから読み取ることができる環境変数
を指定できます。この設定では、環境間を移動するときにソースコードの再コンパイルを不要にするこ
とで、移植性が向上します。
.NET 環境をカスタマイズおよび設定するには
1.
拡張子 .config が付いた設定ファイル(たとえば、myapp.config)を作成し、ソースバンドル
の .ebextensions 最上位ディレクトリに格納します。.ebextensions ディレクトリには複数の
設定ファイルを入れることができます。設定ファイルのファイル形式と内容の詳細については、
「設定ファイル(.ebextensions) (p. 102)」を参照してください。
Note
Visual Studio では、.ebextensions はアーカイブに含めるプロジェクトの一部である必
要があります。または、プロジェクトに設定ファイルを含める代わりに、Visual Studio を
使用してプロジェクトフォルダにすべてのファイルをデプロイできます。Solution Explorer
でプロジェクト名を右クリックし、[Properties] をクリックします。[Package/Publish Web]
タブをクリックします。[Items to deploy] セクションで、ドロップダウンリストの [All Files
in the Project Folder] を選択します。
設定ファイルのスニペットの例を次に示します。
API Version 2010-12-01
674
AWS Elastic Beanstalk 開発者ガイド
環境設定にアクセスする
# If you do not specify a namespace, the default used is aws:elasticbean
stalk:application:environment
container_commands:
foo:
command: set > c:\\myapp\\set.txt
leader_only: true
waitAfterCompletion: 0
option_settings:
- option_name: PARAM1
value: somevalue
Note
aws:elasticbeanstalk:application:environment 名前空間にキーと値のペアを指
定できます。このペアは Amazon EC2 インスタンスの環境変数として渡されます。
2.
アプリケーションバージョンをデプロイします。
環境設定にアクセスする
設定ファイルの option_settings セクションで指定したパラメータは、アプリケーション設定で渡
され、アプリケーション設定として使用されます。
キーとパラメータにアクセスするには、次のようなコードを使用します。
NameValueCollection appConfig = ConfigurationManager.AppSettings;
string param1 = appConfig["PARAM1"];
Note
環境設定では、アクセント記号(`、ASCII 96)は除く、印刷可能な ASCII 文字を使用できま
す。また、200 文字を超えることはできません。
設定の一覧については、「.NET プラットフォームのオプション (p. 140)」を参照してください。
Amazon RDS の使用
Abstract
Amazon Relational Database Service (Amazon RDS) を使用し、Elastic Beanstalk .NET アプリケーションでクラウ
ド内の MySQL、Oracle、PostgreSQL、または Microsoft SQL Server インスタンスのプロビジョニングと保守を行
います。
Amazon Relational Database Service(Amazon RDS)を使用すると、クラウド内の MySQL、Oracle、
PostgreSQL、または Microsoft SQL Server インスタンスをすばやく簡単にプロビジョニングし、保守
することができます。詳細については、「Amazon Relational Database」を参照してください。
AWS マネジメントコンソールを使用して、Amazon RDS を Elastic Beanstalk .NET アプリケーション
とともに使用できます。また、AWS Toolkit for Visual Studio を使用して、Amazon RDS DB インスタ
ンスを作成することもできます。SQL Server を使用したチュートリアル例については、「チュートリ
API Version 2010-12-01
675
AWS Elastic Beanstalk 開発者ガイド
.NET で新しい Amazon RDS DB インスタンスを使用する
アル: AWS Elastic Beanstalk を使用して .NET サンプルアプリケーションをデプロイする方法 (p. 645)」
を参照してください。
Elastic Beanstalk アプリケーションで Amazon RDS を使用するには、次の手順を実行する必要があり
ます。
1. Amazon RDS DB インスタンスを作成します。
2. データベースドライバをダウンロードしてインストールします。
3. Amazon RDS DB インスタンスへの接続情報を使用して、コードでデータベース接続を確立します。
4. アプリケーションを Elastic Beanstalk にデプロイします。
このトピックでは、以下について説明します。
• アプリケーションで新しい Amazon RDS DB インスタンスを使用する
• アプリケーションで既存の Amazon RDS DB インスタンスを使用する
.NET で新しい Amazon RDS DB インスタンスを使用
する
コンソールを使用して新しい Amazon RDS DB インスタンスを作成するか、.NET アプリケーションで
RDS 接続情報を使用できます。
.NET で Amazon RDS DB インスタンスを作成するには
1.
Amazon RDS DB インスタンスを作成します。次のいずれかの方法で RDS DB インスタンスを作
成できます。
• 新しいアプリケーションバージョンを作成する場合は、Amazon RDS DB インスタンスを作成し
ます。Elastic Beanstalk コンソールを使用する手順については、「アプリケーションを作成しま
す。 (p. 39)」を参照してください。
• 既存のアプリケーションバージョンで新しい環境を起動する場合は、Amazon RDS DB インスタ
ンスを作成します。AWS Elastic Beanstalk コンソールを使用する手順については、「AWS Elastic
Beanstalk 環境を作成する (p. 53)」を参照してください。
• すでにアプリケーションを AWS Elastic Beanstalk にデプロイしている場合は、RDS DB インス
タンスを作成して、既存の環境にアタッチできます。AWS Elastic Beanstalk コンソールを使用
する手順については、「Elastic Beanstalk でデータベースを設定する (p. 209)」を参照してくださ
い。
2.
開発環境にデータベースドライバをダウンロードしてインストールします。
3.
Amazon RDS DB インスタンスの接続情報を使用してコードでデータベース接続を確立します。ア
プリケーション設定を使用して接続情報にアクセスできます。次の例は RDS インスタンスでデー
タベースに接続する方法を示します。
NameValueCollection appConfig = ConfigurationManager.AppSettings;
string
string
string
string
string
dbname = appConfig["RDS_DB_NAME"];
username = appConfig["RDS_USERNAME"];
password = appConfig["RDS_PASSWORD"];
hostname = appConfig["RDS_HOSTNAME"];
port = appConfig["RDS_PORT"];
API Version 2010-12-01
676
AWS Elastic Beanstalk 開発者ガイド
.NET で既存の Amazon RDS DB インスタンスを使用する
接続文字列を作成します。
string cs = "server=" + hostname + ";user=" + username + ";database=" + dbname
+ ";port=" + port + ";password=" + password + ";";
次の接続文字列は、MySQL を使用した例です。
"server=mydbinstance.abcdefghijkl.us-west-2.rds.amazonaws.com;user=sa;data
base=mydb;port=3306;password=******;";
4.
更新されたアプリケーションを既存の Elastic Beanstalk 環境にデプロイします。Elastic Beanstalk
コンソールを使用して新しいアプリケーションバージョンを既存の環境にデプロイする方法につい
ては、「ステップ 4: 新しいバージョンのデプロイ (p. 7)」を参照してください。Visual Studio を
使用してアプリケーションをデプロイする方法については、「開発、テスト、デプロイ (p. 659)」
を参照してください。
.NET で既存の Amazon RDS DB インスタンスを使用
する
Amazon Relational Database Service (Amazon RDS) を使用すると、クラウド内の MySQL Server イン
スタンスをすばやく簡単にプロビジョニングし、保守することができます。ここでは、Elastic Beanstalk
アプリケーションで Amazon RDS と MySQL .NET Connector を使用する方法について説明します。
Elastic Beanstalk アプリケーションから既存の Amazon RDS DB インスタンスと .NET を使用
するには
1.
次のいずれかの方法で Elastic Beanstalk 環境を作成します。
• 新しい環境で新しいアプリケーションを作成します。Elastic Beanstalk コンソールを使用する手
順については、「アプリケーションを作成します。 (p. 39)」を参照してください。 Visual Studio
の使用手順については、「開発、テスト、デプロイ (p. 659)」を参照してください。すでに既存
の RDS DB インスタンスがあるため、この環境で RDS DB インスタンスを作成する必要はあり
ません。
• 既存のアプリケーションバージョンで新しい環境を起動します。Elastic Beanstalk コンソールを
使用する手順については、「AWS Elastic Beanstalk 環境を作成する (p. 53)」を参照してくださ
い。すでに既存の Amazon RDS DB インスタンスがあるため、この環境で Amazon RDS DB イ
ンスタンスを作成する必要はありません。
2.
Amazon RDS DB セキュリティグループを設定し、Elastic Beanstalk アプリケーションに使用する
Amazon EC2 セキュリティグループからアクセスできるようにします。AWS マネジメントコン
ソールを使用した EC2 セキュリティグループ名の検索手順については、「セキュリティグルー
プ (p. 200)」を参照してください。詳細については、「Amazon Relational Database Service User
Guide」の「Working with DB Security Groups」の「Authorizing Network Access to an Amazon EC2
Security Group」セクションを参照してください。
3.
開発環境にデータベースドライバをダウンロードしてインストールします。
4.
Amazon RDS DB インスタンスのパブリック DNS 名、ポート番号と、必要に応じてデータベース
名、データベースのログイン認証情報を使用して、接続文字列を作成します。次の例は、RDS イ
ンスタンスで mydbinstance.abcdefghijkl.us-west-2.rds.amazonaws.com でポート 3306 を使用し、
ユーザー名「sa」、パスワード「mypassword」を使用するデータベース mydb に接続する接続文
字列を示します。
API Version 2010-12-01
677
AWS Elastic Beanstalk 開発者ガイド
複数のアカウントを管理する
string cs = "server=mydbinstance.abcdefghijkl.us-west-2.rds.amazon
aws.com;user=sa;database=mydb;port=3306;password=******;";
5.
更新されたアプリケーションを既存の Elastic Beanstalk 環境にデプロイします。Elastic Beanstalk
コンソールを使用して新しいアプリケーションバージョンを既存の環境にデプロイする方法につい
ては、「ステップ 4: 新しいバージョンのデプロイ (p. 7)」を参照してください。Visual Studio を
使用してアプリケーションをデプロイする方法については、「開発、テスト、デプロイ (p. 659)」
を参照してください。
複数のアカウントを管理する
Abstract
AWS Toolkit for Visual Studio を使用してアカウントを管理する
Abstract
AWS Toolkit for Visual Studio を使用してアカウントの追加、編集、削除を行うことで、テスト、ステージング、本
番など、異なるタスクを実行するための異なる AWS アカウントをセットアップすることができます。
テスト、ステージング、本番など、異なるタスクを実行するため、異なる AWS アカウントをセット
アップする場合、AWS Toolkit for Visual Studio を使用してアカウントの追加、編集、削除ができます。
複数のアカウントを管理するには
1.
Visual Studio の [View] メニューで、[AWS Explorer] をクリックします。
2.
[Account] リストの横にある [Add Account] ボタンをクリックします。
[Add Account] ダイアログボックスが表示されます。
3.
必要な情報を入力します。
4.
[AWS Explorer] タブにアカウント情報が表示されます。Elastic Beanstalk に公開する場合、使用す
るアカウントを選択できます。
API Version 2010-12-01
678
AWS Elastic Beanstalk 開発者ガイド
アプリケーションの状態を監視する
アプリケーションの状態を監視する
Abstract
Elastic Beanstalk 機能を使用して .NET アプリケーションの応答性と状態を監視し、アプリケーションが利用可能
であり、リクエストに応答しているかどうかを確認します。
本番ウェブサイトを実行する場合、アプリケーションが利用可能であり、リクエストに応答するか確認
することが重要です。アプリケーションの応答性の監視を支援するために、Elastic Beanstalk はアプリ
ケーションに関する統計情報を監視し、しきい値を超過するとトリガされるアラートを作成する機能を
提供しています。
Elastic Beanstalk で提供される状態モニタリングの詳細については、「基本ヘルスレポート (p. 259)」を
参照してください。
アプリケーションの状態と環境ステータスを表示す
る
AWS Toolkit for Visual Studio か AWS マネジメントコンソールを使用して、アプリケーションに関す
る操作情報にアクセスできます。
Toolkit の [Status] フィールドでは環境のステータスとアプリケーションの状態が一目でわかります。
アプリケーションの状態を監視するには
1.
AWS Toolkit for Visual Studio の [AWS Explorer] で Elastic Beanstalk ノードを展開し、アプリケー
ションノードを展開します。
2.
Elastic Beanstalk 環境を右クリックし、[View Status] をクリックします。
3.
アプリケーション環境タブで、[Monitoring] をクリックします。
[Monitoring] パネルには、特定のアプリケーション環境に対するリソースの使用状況を示す一連の
グラフが表示されます。
API Version 2010-12-01
679
AWS Elastic Beanstalk 開発者ガイド
イベントを表示する
Note
デフォルトでは、時間範囲は 1 時間前に設定されます。この設定を変更するには、[Time
Range] リストで異なる時間範囲をクリックします。
イベントを表示する
Abstract
AWS Toolkit for Visual Studio または AWS マネジメントコンソールを使用して、.NET アプリケーションに関連付
けられているイベントを表示します。
AWS Toolkit for Visual Studio か AWS マネジメントコンソールを使用して、アプリケーションに関連
付けられているイベントを表示できます。一般的なイベントの詳細については、「環境イベントについ
て (p. 811)」を参照してください。AWS マネジメントコンソールを使用してイベントを表示する方法に
ついては、「イベントの表示 (p. 293)」を参照してください。このセクションでは、AWS Toolkit for
Visual Studio を使用してイベントを表示する方法を順を追って説明します。
アプリケーションイベントを表示するには
1.
AWS Toolkit for Visual Studio の [AWS Explorer] で Elastic Beanstalk ノードを展開し、アプリケー
ションノードを展開します。
2.
[AWS Explorer] で、Elastic Beanstalk 環境を右クリックし、次に [View Status] をクリックします。
3.
アプリケーション環境タブで [Events] をクリックします。
Elastic Beanstalk アプリケーション環境を管理す
る
Abstract
AWS Toolkit for Visual Studio を使用する Elastic Beanstalk .NET アプリケーション環境で使われる AWS リソース
のプロビジョニングと設定を変更します。
AWS Toolkit for Visual Studio と AWS マネジメントコンソールを使用して、アプリケーション環境で
使用される AWS リソースのプロビジョニングと設定を変更できます。AWS マネジメントコンソール
を使用してアプリケーション環境を管理する方法については、「環境を管理する (p. 49)」を参照して
API Version 2010-12-01
680
AWS Elastic Beanstalk 開発者ガイド
環境設定を変更する
ください。ここでは、アプリケーション環境設定の一部として AWS Toolkit for Visual Studio で編集で
きる特定のサービス設定について説明します。
環境設定を変更する
アプリケーションをデプロイすると、Elastic Beanstalk によって複数の AWS クラウドコンピューティ
ングサービスが設定されます。AWS Toolkit for Visual Studio を使用して、個々のサービスをどのよう
に設定するかを制御できます。
アプリケーションの環境設定を編集するには
•
Elastic Beanstalk ノードとアプリケーションノードを展開します次に、[AWS Explorer] で Elastic
Beanstalk 環境を右クリックします。[View Status] を選択します。
次の設定を編集できます。
• サーバー
• 負荷分散
• Auto Scaling
• [
Notifications
]
• 環境プロパティ
AWS Toolkit for Visual Studio を使用して EC2 サー
バーインスタンスを設定する
Abstract
AWS Toolkit for Visual Studio を使用する .NET アプリケーションの拡張性を最適化するように、Elastic Beanstalk
環境設定を変更します。
Amazon Elastic Compute Cloud (Amazon EC2)は、Amazon のデータセンターにあるサーバーイン
スタンスの起動と管理に使用するウェブサービスです。必要に応じて、任意の合法的な用途で Amazon
EC2 サーバーインスタンスをいつでも使用できます。インスタンスはさまざまなサイズや設定で使用
できます。詳細については、Amazon EC2 を参照してください。
AWS Toolkit for Visual Studio のアプリケーション環境タブ内の [Server] タブで Elastic Beanstalk 環境
の Amazon EC2 インスタンス設定を編集できます。
API Version 2010-12-01
681
AWS Elastic Beanstalk 開発者ガイド
EC2 サーバーインスタンス
Amazon EC2 インスタンスタイプ
[Instance type] に、Elastic Beanstalk アプリケーションで使用できるインスタンスタイプが表示されま
す。インスタンスタイプを変更して、アプリケーションに最適な特性(メモリサイズや CPU 能力な
ど)を持つサーバーを選択します。例えば、高負荷の操作を長時間実行するアプリケーションでは、よ
り大きい CPU やメモリが必要となる場合があります。Elastic Beanstalk は、実行中のインスタンスを
定期的にチェックして正常であることを確認します。アプリケーションが 95% 以上の CPU を消費し
ている場合、Elastic Beanstalk はイベントをトリガします。このイベントの詳細については、「CPU
使用率が 95% を超えている (p. 812)」を参照してください。
Note
32 ビットと 64 ビットのインスタンスタイプを切り替えることはできません。例えば、アプリ
ケーションが 32 ビットプラットフォーム上に構築されている場合、リストには 32 ビットのイ
ンスタンスタイプのみが表示されます。
Elastic Beanstalk アプリケーションで使用可能な Amazon EC2 インスタンスタイプの詳細については、
Amazon Elastic Compute Cloud User Guide の「Instance Types」を参照してください。
Amazon EC2 セキュリティグループ
Amazon EC2 セキュリティグループを使用して、Elastic Beanstalk アプリケーションへのアクセスを制
御できます。セキュリティグループとは、インスタンスのファイアウォールのルールを定義するもので
す。このルールでは、どの着信ネットワークトラフィックをご使用のインスタンスに配信するかを指定
します。他の着信トラフィックはすべて破棄されます。グループのルールはいつでも変更することがで
きます。実行中のすべてのインスタンスと、今後起動されるインスタンスについて、新しいルールが自
動的に実施されます。
AWS マネジメントコンソールか AWS Toolkit for Visual Studio を使用して、Amazon EC2 セキュリティ
グループをセットアップできます。1 つまたは複数の Amazon EC2 セキュリティグループ名の名前を
[EC2 Security Groups] テキストボックスに入力して、Elastic Beanstalk アプリケーションへのアクセス
を制御する Amazon EC2 セキュリティグループを指定できます(グループ間はコンマで区切ります)。
Note
アプリケーションのヘルスチェックを有効にする場合、ソース CIDR 範囲として 0.0.0.0/0 から
ポート 80 (HTTP)がアクセスできることを確認してください。ヘルスチェックの詳細につい
ては、「ヘルスチェック (p. 686)」を参照してください。
API Version 2010-12-01
682
AWS Elastic Beanstalk 開発者ガイド
EC2 サーバーインスタンス
AWS Toolkit for Visual Studio を使用してセキュリティグループを作成するには
1.
Visual Studio の [AWS Explorer] で [Amazon EC2] ノードを展開し、[Security Groups] をダブルク
リックします。
2.
[Create Security Group] をクリックし、セキュリティグループの名前と説明を入力します。
3.
[OK] をクリックします。
Amazon EC2 セキュリティグループの詳細については、「Amazon Elastic Compute Cloud User Guide」
の「Using Security Groups」を参照してください。
Amazon EC2 のキーペア
Elastic Beanstalk アプリケーション用にプロビジョニングされた Amazon EC2 インスタンスには、
Amazon EC2 のキーペアを使用して安全にログインできます。
Important
Elastic Beanstalk 提供の Amazon EC2 インスタンスにアクセスする前に、Amazon EC2 のキー
ペアを作成し、Elastic Beanstalk 提供の Amazon EC2 インスタンスが Amazon EC2 のキーペ
アを使用するよう設定する必要があります。アプリケーションを Elastic Beanstalk にデプロイ
するとき、AWS Toolkit for Visual Studio 内で [Publish to AWS] ウィザードを使用してキーペア
を作成できます。Toolkit を使用してさらにキーペアを作成する場合は、次の手順に従ってくだ
さい。または、AWS マネジメントコンソールを使用して、Amazon EC2 キーペアを設定でき
ます。Amazon EC2 のキーペアを作成する手順については、「Amazon Elastic Compute Cloud
Getting Started Guide」を参照してください。
[Existing Key Pair] テキストボックスを使用すると、Elastic Beanstalk アプリケーションを実行してい
る Amazon EC2 インスタンスに安全にログインするために使用できる Amazon EC2 のキーペアの名前
を指定できます。
Amazon EC2 のキーペアの名前を指定するには
1.
[Amazon EC2] ノードを展開し、[Key Pairs] をダブルクリックします。
2.
[Create Key Pair] をクリックし、キーペア名を入力します。
3.
[OK] をクリックします。
Amazon EC2 のキーペアの詳細については、『Amazon Elastic Compute Cloud ユーザーガイド』の
Amazon EC2 認証情報の使用のページを参照してください。Amazon EC2 インスタンスへの接続の詳
細については、「サーバーインスタンスの一覧表示と接続 (p. 691)」を参照してください。
間隔を監視する
デフォルトでは、基本的な Amazon CloudWatch メトリックスだけが有効化されていて、5 分周期で
データを返します。AWS Toolkit for Eclipse の環境の [Configuration] タブの [Server] セクションで、
[Monitoring Interval] で [1 minute] を選択すると、より詳細な 1 分間隔の CloudWatch メトリックスを有
効化することもできます。
Note
Amazon CloudWatch の利用料金で 1 分間隔のメトリックスに申し込むことができます。詳細
については、Amazon CloudWatch を参照してください。
API Version 2010-12-01
683
AWS Elastic Beanstalk 開発者ガイド
Elastic Load Balancing
カスタム AMI ID
AWS Toolkit for Eclipse の環境で、[Configuration] タブの [Server] セクションの [Custom AMI ID] ボッ
クスにカスタム AMI の ID を入力して、Amazon EC2 インスタンスで使用するデフォルトの AMI を独
自のカスタム AMI に置き換えることができます。
Important
独自の AMI の使用は高度な作業であるため、注意が必要です。カスタム AMI が必要な場合は、
デフォルトの Elastic Beanstalk AMI から始めて、これを変更することをお勧めします。正常と
みなされるには、Amazon EC2 インスタンスが、ホストマネージャの実行を含む Elastic Beanstalk
の一連の要件を満たす必要があります。これらの要件を満たさないと、環境が正常に動作しな
い可能性があります。
AWS Toolkit for Visual Studio を使用して Elastic Load
Balancing を設定する
Abstract
アプリケーションの負荷を分散するように Elastic Beanstalk 環境の負荷分散設定を指定し、AWS Toolkit for Visual
Studio を使用した .NET アプリケーションの可用性を向上させます。
Elastic Load Balancing は、アプリケーションの可用性と拡張性の向上に役立つアマゾン ウェブ サービ
スです。このサービスによって、アプリケーションの負荷を簡単に複数の Amazon EC2 インスタンス
に分散できます。Elastic Load Balancing による冗長化で可用性が改善され、アプリケーションのトラ
フィック増加に対応できます。
Elastic Load Balancing を使用すると、実行しているすべてのインスタンス間で、アプリケーションの
着信トラフィックを配信して負荷分散を行うことができます。また、アプリケーションの処理能力を増
やす必要があるときには、新しいインスタンスを簡単に追加することもできます。
アプリケーションをデプロイすると、Elastic Beanstalk によって自動的に Elastic Load Balancing がプ
ロビジョニングされます。AWS Toolkit for Visual Studio のアプリケーション環境タブ内の [Load Balancer]
タブで Elastic Beanstalk 環境の Amazon EC2 インスタンス設定を編集できます。
ここでは、アプリケーションで設定できる Elastic Load Balancing パラメータについて説明します。
API Version 2010-12-01
684
AWS Elastic Beanstalk 開発者ガイド
Elastic Load Balancing
ポート
Elastic Beanstalk アプリケーションのリクエストを処理するためにプロビジョニングされたロードバラ
ンサーから、アプリケーションを実行している Amazon EC2 インスタンスにリクエストを送信します。
プロビジョニングされたロードバランサーは、HTTP ポートと HTTPS ポートのリクエストをリッスン
し、AWS Elastic Beanstalk アプリケーションの Amazon EC2 インスタンスにリクエストをルーティン
グすることができます。デフォルトでは、ロードバランサーは HTTP ポートのリクエストを処理しま
す。少なくともいずれかのポート(HTTP または HTTPS)を有効にする必要があります。
Important
指定したポートがロックされていないことを確認してください。ロックされている場合、ユー
ザーは Elastic Beanstalk アプリケーションに接続できません。
HTTP ポートを制御する
HTTP ポートを無効にするには、[HTTP Listener Port] で [OFF] を選択します。HTTP ポートを有効に
するには、リストから HTTP ポート([80] など)を選択します。
Note
デフォルトポート 80 以外のポート(例:ポート 8080)を使用して環境にアクセスする場合
は、既存のロードバランサーにリスナーを追加し、そのポートでリッスンするようにリスナー
を設定できます。たとえば、Elastic Load Balancing API ツールを使用して、次のコマンドを入
力します。<yourloadbalancername> は Elastic Beanstalk のロードバランサーの名前に置き
換えてください。
elb-create-lb-listeners --lb <yourloadbalancername> --listener "protocol=ht
tp, lb-port=8080, instance-port=80"
Elastic Beanstalk を使用して環境を監視する場合は、ポート 80 のリスナーを削除しないでく
ださい。
HTTPS ポートを制御する
Elastic Load Balancing は、ロードバランサーへのクライアント接続のトラフィックを暗号化するため
に、HTTPS/TLS プロトコルをサポートしています。ロードバランサーから EC2 インスタンスへの接
続では、プレーンテキストの暗号化が使用されます。デフォルトで、HTTPS ポートは無効です。
HTTPS ポートを有効にするには
1.
2.
証明書とキーを作成して AWS Identity and Access Management (IAM)サービスにアップロード
します。IAM サービスは証明書を保存し、アップロードした SSL 証明書の Amazon Resource Name
(ARN)を提供します。証明書の作成とアップロードの詳細については、『Using AWS Identity
and Access Management』のサーバー証明書の管理のページを参照してください。
HTTPS ポートを指定するには[HTTPS Listener Port] で選択します。
API Version 2010-12-01
685
AWS Elastic Beanstalk 開発者ガイド
Elastic Load Balancing
3.
[SSL Certificate ID] に、SSL 証明書の Amazon リソースネーム(ARN)を入力します(例:
arn:aws:iam::123456789012:server-certificate/abc/certs/build)。ステップ 1 で
作成し、アップロードした SSL 証明書を使用します。証明書の ARN の表示については、「Using
IAM Guide」の「Creating and Uploading Server Certificates」の「Verify the Certificate Object」を
参照してください。
HTTPS ポートを無効にするには、[OFF][HTTPS Listener Port] で選択します。
ヘルスチェック
ヘルスチェックの定義には、インスタンスのヘルスを照会する URL が含まれます。デフォルトでは、
Elastic Beanstalk はレガシーではないコンテナの場合は TCP:80 を使用し、レガシーコンテナの場合は
HTTP:80 を使用します。デフォルト URL をオーバーライドしてアプリケーションの既存のリソース
(たとえば、/myapp/default.aspx)に一致させるには、そのリソースの URL を [Application Health
Check URL] ボックスに入力します。デフォルトの URL をオーバーライドすると、Elastic Beanstalk は
HTTP を使用してリソースを照会します。レガシーコンテナタイプを使用しているかどうかを確認する
には、「いくつかのコンテナタイプがレガシーとマークされている理由 (p. 86)」を参照してください。
[Load Balancing] パネルの EC2 Instance Health Check] を使用して、ヘルスチェックの設定を制御でき
ます。
ヘルスチェックの定義には、インスタンスのヘルスを照会する URL が含まれます。デフォルトの URL
をオーバーライドして、アプリケーション内の既存のリソースと一致させます(例:
/myapp/index.jsp)。そのためには、[Application Health Check URL] ボックスに、既存のリソース
の URL を入力します。
次の一覧では、アプリケーションで設定できるヘルスチェックパラメータについて説明します。
• [Health Check Interval (seconds)] には、Elastic Load Balancing がアプリケーションの Amazon EC2
インスタンスの各ヘルスチェックを待機する秒数を入力します。
• [Health Check Timeout (seconds)] には、Elastic Load Balancing がインスタンスの応答がないと見な
す応答待機時間の秒数を入力します。
• [Healthy Check Count Threshold] および [Unhealthy Check Count Threshold] には、Elastic Load
Balancing がインスタンスのヘルスステータスを変更するまでの URL プローブの連続成功回数また
は失敗回数を指定します。たとえば、[Unhealthy Check Count Threshold] ボックスに「5」を指定し
た場合、Elastic Load Balancing がヘルスチェックを失敗と見なすまでに、URL ではエラーメッセー
ジまたはタイムアウトを 5 回連続して返す必要があります。
セッション
デフォルトでは、ロードバランサーは負荷が最小になるように、各リクエストを個別にサーバーインス
タンスにルーティングします。比較すると、スティッキーセッションの場合、セッション中にユーザー
API Version 2010-12-01
686
AWS Elastic Beanstalk 開発者ガイド
Auto Scaling
から受信するすべてのリクエストが、同じサーバーインスタンスに送信されるように、ユーザーのセッ
ションを特定のサーバーインスタンスにバインドします。
アプリケーションでスティッキーセッションが有効になっている場合、Elastic Beanstalk ではロードバ
ランサーが生成する HTTP Cookie を使用します。ロードバランサーは、ロードバランサーが生成する
特別な Cookie を使って、各リクエストのアプリケーションインスタンスを追跡します。ロードバラン
サーがリクエストを受け取ると、まずこの Cookie がリクエスト内にあるかどうかを調べます。ある場
合は、Cookie で指定されたアプリケーションインスタンスにリクエストが送信されます。Cookie がな
い場合、ロードバランサーは、既存の負荷分散アルゴリズムに基づいてアプリケーションインスタンス
を選択します。同じユーザーからの以降のリクエストをそのアプリケーションインスタンスにバインド
するため、応答に Cookie が挿入されます。ポリシー設定では、各 Cookie の有効期間を設定する Cookie
期限を定義します。
[Load Balancer] タブの [Sessions] セクションを使用して、アプリケーションのロードバランサーでス
ティッキーセッションを使用できるようにするかどうかを指定できます。
Elastic Load Balancing の詳細については、「Elastic Load Balancing Developer Guide」を参照してく
ださい。
AWS Toolkit for Visual Studio を使用して Auto Scaling
を設定する
Abstract
ユーザーが定義したトリガに基づいて Amazon EC2 インスタンスを自動的に起動または終了するように Elastic
Beanstalk 環境の Auto Scaling 設定を指定し、AWS Toolkit for Visual Studio を使用した .NET アプリケーションの
トラフィックの変化を処理します。
Auto Scaling は、ユーザーが定義したトリガに基づいて、Amazon EC2 インスタンスを自動的に起動ま
たは終了するように設計された Amazon のウェブサービスです。ユーザーは Auto Scaling グループを
セットアップし、そのグループにトリガを関連付けることで、帯域幅の使用や CPU の使用率などのメ
トリックスに基づいて、コンピューティングリソースを自動的にスケーリングできます。Auto Scaling
は Amazon CloudWatch と連携して、アプリケーションを実行するサーバーインスタンスのメトリック
スを取得します。
Auto Scaling によって、Amazon EC2 インスタンスのグループを利用して、自動的に数を増減できるよ
うにさまざまなパラメータを設定できます。Auto Scaling は、アプリケーションのトラフィックの変化
をシームレスに処理できるように、Amazon EC2 インスタンスのグループを追加または削除できます。
Auto Scaling は、起動した各 Amazon EC2 インスタンスの状態も監視します。インスタンスが予期せ
ずに終了した場合、Auto Scaling は終了を検出し、代わりのインスタンスを起動します。この機能を使
用すると、任意の固定の Amazon EC2 インスタンス数を自動的に維持できます。
Elastic Beanstalk はアプリケーション用に Auto Scaling をプロビジョニングします。AWS Toolkit for
Visual Studio のアプリケーション環境タブ内の [Auto Scaling] タブで Elastic Beanstalk 環境の Amazon
EC2 インスタンス設定を編集できます。
API Version 2010-12-01
687
AWS Elastic Beanstalk 開発者ガイド
Auto Scaling
ここでは、アプリケーションの Auto Scaling パラメータの設定方法について説明します。
設定の起動
Elastic Beanstalk アプリケーションが Auto Scaling リソースをプロビジョニングする方法を制御するた
めに起動設定を編集できます。
[Minimum Instance Count] ボックスと [Maximum Instance Count] ボックスを使用して、Elastic Beanstalk
アプリケーションが使用する Auto Scaling の最小サイズと最大サイズを指定できます。
Note
Amazon EC2 インスタンスの数を固定し維持するには、[Minimum Instance Count] と [Maximum
Instance Count] に同じ値を指定します。
[Availability Zones] ボックスでは、Amazon EC2 インスタンスを維持するアベイラビリティーゾーンの
数を指定できます。フォールトトレラントアプリケーションを構築する場合、この数を設定することを
お勧めします。1 つのアベイラビリティーゾーンが停止しても、インスタンスは他のアベイラビリティー
ゾーンで実行されます。
Note
現在、インスタンスを維持するアベイラビリティーゾーンを指定することはできません。
トリガ
トリガとは、インスタンス数を増やす(スケールアウト)タイミングや、インスタンス数を減らす(ス
ケールイン)タイミングをシステムに指示するために設定できる Auto Scaling のメカニズムです。CPU
の使用率など、Amazon CloudWatch に発行された任意のメトリックスについて、トリガが発生するよ
API Version 2010-12-01
688
AWS Elastic Beanstalk 開発者ガイド
Notifications
うに設定し、指定した条件を満たしているかどうかを判断することができます。メトリックスについて
指定した条件の上限または下限を、指定した期間超過すると、トリガによって Scaling Activity という
長時間実行されるプロセスが起動されます。
AWS Toolkit for Visual Studio を使用して、Elastic Beanstalk アプリケーションのスケーリングトリガ
を定義できます。
Auto Scaling のトリガは、インスタンス固有の Amazon CloudWatch メトリックスを監視して動作しま
す。トリガには、CPU 使用率、ネットワークトラフィック、ディスクアクティビティが含まれます。
[Trigger Measurement] の設定を使用するとトリガのメトリックを設定できます。
次の一覧では、AWS マネジメントコンソールを使用して設定できるトリガパラメータについて説明し
ます。
• トリガに使用する統計を指定できます。[Trigger Statistic] に対して選択できるのは、[Minimum]、
[Maximum]、[Sum]、または [Average] です。
• [Unit of Measurement] には、トリガ測定の単位を指定します。
• [Measurement Period] ボックスの値は、Amazon CloudWatch がトリガのメトリックスを計測する頻
度を指定します。[Breach Duration] は、トリガが発生するまでに、定義した限度([Upper Threshold]
と [Lower Threshold] に指定した値)をメトリックが超過できる時間を示します。
• [Upper Breach Scale Increment] と [Lower Breach Scale Increment] では、規模の拡大や縮小を実行
する際に追加または削除する Amazon EC2 インスタンスの数を指定します。
Auto Scaling の詳細については、Auto Scaling のドキュメントを参照してください。
AWS Toolkit for Visual Studio を使用して通知を設定
する
Abstract
Amazon Simple Notification Service(Amazon SNS)を使用するように Elastic Beanstalk 環境を設定し、.NET ア
プリケーションに影響を与える重要なイベントを通知します。
[]
Elastic Beanstalk では、Amazon Simple Notification Service (Amazon SNS) を使用して、アプリケー
ションに影響を与える重要なイベントについて通知します。Amazon SNS 通知を有効化するには、
[Email Address] ボックスに電子メールアドレスを入力します。Amazon SNS 通知を無効にするには、
ボックスから電子メールアドレスを削除します.
API Version 2010-12-01
689
AWS Elastic Beanstalk 開発者ガイド
コンテナ
AWS Toolkit for Visual Studio を使用して .NET コン
テナを設定する
Abstract
Amazon EC2 インスタンスの動作を微調整し、AWS Toolkit for Visual Studio を使用した .NET アプリケーションの
Amazon S3 ログのローテーションを有効また無効にするように、Elastic Beanstalk 環境を設定します。
[Container/.NET Options] パネルでは、Amazon EC2 インスタンスの動作を微調整し、Amazon S3 のロ
グの更新を有効か無効にすることができます。AWS Toolkit for Visual Studio を使用して、コンテナ情
報を設定できます。
Note
環境の CNAME を切り替えることで、ダウンタイムなしに設定を変更できます。詳細について
は、「AWS Elastic Beanstalk を使用した Blue-Green Deployment (p. 79)」を参照してくださ
い。
必要に応じて、パラメータの数を拡張できます。パラメータの拡張の詳細については、「オプション設
定 (p. 148)」を参照してください。
Elastic Beanstalk アプリケーションの [Container/.NET Options] パネルにアクセスするには
1.
AWS Toolkit for Visual Studio で Elastic Beanstalk ノードとアプリケーションノードを展開します。
2.
[AWS Explorer] で Elastic Beanstalk 環境をダブルクリックします。
3.
[Overview] ペインの下部にある [Configuration] タブをクリックします。
4.
[Container] で、コンテナのオプションを設定できます。
API Version 2010-12-01
690
AWS Elastic Beanstalk 開発者ガイド
サーバーインスタンスの一覧表示と接続
.NET コンテナのオプション
アプリケーションの .NET Framework のバージョンを選択できます。[Target runtime] には、2.0 または
4.0 を選択します。 32 ビットアプリケーションを有効にするには、[Enable 32-bit Applications] を選択
します。
アプリケーションの設定
[Application Settings] セクションで、アプリケーションコードから読み取ることのできる環境変数を指
定できます。
サーバーインスタンスの一覧表示と接続
Abstract
AWS Toolkit for Visual Studio または AWS マネジメントコンソールを使用して、Elastic Beanstalk アプリケーショ
ン環境を実行する Amazon EC2 インスタンスのリストを表示します。
AWS Toolkit for Visual Studio か AWS マネジメントコンソールを使用して、Elastic Beanstalk アプリ
ケーション環境を実行する Amazon EC2 インスタンスのリストを表示できます。これらのインスタン
スには、リモートデスクトップ接続を使用して接続できます。AWS マネジメントコンソールを使用し
たサーバーインスタンスの一覧表示と接続については、「サーバーインスタンスの一覧表示と接
続 (p. 294)」を参照してください。以下のセクションでは、AWS Toolkit for Visual Studio を使用してサー
バーインスタンスを表示し、サーバーインスタンスに接続する手順を示します。
環境の Amazon EC2 インスタンスを表示して接続するには
1.
Visual Studio の [AWS Explorer] で [Amazon EC2] ノードを展開し、[Instances] をダブルクリック
します。
2.
アプリケーションのロードバランサーで実行されている Amazon EC2 インスタンスのインスタン
ス ID を [Instance] 列で右クリックし、コンテキストメニューから [Open Remote Desktop] を選択
します。
API Version 2010-12-01
691
AWS Elastic Beanstalk 開発者ガイド
環境を終了するには
3.
[Use EC2 keypair to log on] を選択し、アプリケーションのデプロイに使用したプライベートキー
ファイルの内容を [Private key] ボックスに貼り付けます。または、[User name] テキストボックス
と [Password] テキストボックスにユーザー名とパスワードを入力します。
Note
キーペアが Toolkit 内に保存されている場合、テキストボックスは表示されません。
4.
[OK] をクリックします。
環境を終了するには
Abstract
AWS Toolkit for Visual Studio を使用して実行中の環境を終了し、未使用の AWS リソースに対する課金を防ぎま
す。
未使用の AWS リソースに対する課金を避けるため、AWS Toolkit for Visual Studio を使用して実行中
の環境を終了できます。
API Version 2010-12-01
692
AWS Elastic Beanstalk 開発者ガイド
Note
いつでも、また同じバージョンを使用して新しい環境を起動できます。
環境を終了するには
1.
[AWS Explorer] で Elastic Beanstalk ノードとアプリケーションノードを展開します。アプリケー
ション環境を右クリックし、[Terminate Environment] を選択します。
2.
プロンプトが表示されたら、[Yes] をクリックして、環境を終了することを確認します。環境で実
行されている AWS リソースが終了されるまでには数分かかります。
Note
環境を終了すると、終了した環境に関連付けられていた CNAME はすべてのユーザーが使
用できるようになります。
ツール
Abstract
AWS SDK for .NET を使用して、費用効果の高い、スケーラブルで信頼できる AWS クラウドを利用する .NET ア
プリケーションを構築します。
トピック
• AWS SDK for .NET (p. 693)
• AWS Toolkit for Visual Studio (p. 694)
• デプロイツールを使用した、.NET 内での Elastic Beanstalk アプリケーションの配置 (p. 694)
.NET 用 AWS SDK は、高い費用対効果で拡張性ある高信頼性な AWS クラウドに送る .NET アプリケー
ションを構築する Windows 開発者にはより使いやすくなっています。SDK を使用すると、開発者は
AWS インフラストラクチャサービスのソリューションを構築できます。このソリューションには、
Amazon Simple Storage Service(Amazon S3)および Amazon Elastic Compute Cloud(Amazon EC2)
が含まれます。AWS Toolkit for Visual Studio を使用して、AWS Java SDK を既存プロジェクトに追加
するか、AWS .NET SDK に基づいて新しい .NET プロジェクトを作成できます。
AWS SDK for .NET
Abstract
AWS SDK for .NET のライブラリは、認証、再試行リクエスト、エラー処理を含む、AWS クラウドのプログラミ
ング関連の低レベルのプラミングを非表示にする .NET 開発者フレンドリーな API を提供します。
API Version 2010-12-01
693
AWS Elastic Beanstalk 開発者ガイド
AWS Toolkit for Visual Studio
.NET 用 AWS SDK により、Visual Studio プロジェクトテンプレート、AWS .NET ライブラリ、C# コー
ドサンプル、資料を含む単一のダウンロード可能なパッケージを使用して、数分で開始することができ
ます。API 上に .NET アプリケーションを構築できるため、ウェブサービスのインターフェイスに対し
て直接コーディングをする複雑さがなくなります。オールインワンのライブラリは、認証、再試行リク
エスト、エラー処理を含む、AWS クラウドのプログラミング関連の低レベルのプラミングを非表示に
する .NET 開発者フレンドリーな API を提供します。ライブラリを使用したアプリケーションの構築方
法については、C# による実用的な例が用意されています。ライブラリとコードサンプルの使用方法の
学習に役立てるため、オンラインの動画チュートリアルとリファレンスドキュメントが用意されていま
す。詳細については、「AWS SDK for .NET」を参照してください。
AWS Toolkit for Visual Studio
Abstract
.NET 用の AWS Toolkit for Visual Studio プラグインを使用して、アマゾンウェブサービスを使用した .NET アプリ
ケーションの開発とデバッグを行います。
AWS Toolkit for Visual Studio はアマゾン ウェブ サービスを使用した .NET アプリケーションの開発と
デバッグを簡単にする .NET 用プラグインです。Visual Studio プロジェクトテンプレートを使用して
AWS クラウドのためのソリューション構築をすぐに開始できます。前提条件の詳細、インストール手
順、および実行されているコードサンプルについては、「AWS Toolkit for Microsoft Visual Studio」を
参照してください。
デプロイツールを使用した、.NET 内での Elastic
Beanstalk アプリケーションの配置
Abstract
AWS Toolkit for Visual Studio を使用して Elastic Beanstalk .NET アプリケーションをデプロイしてください。
AWS Toolkit for Visual Studio には、デプロイ ツールと、AWS Toolkit のデプロイウィザードと同等の
機能を提供するコマンドラインツールが含まれています。ビルドパイプラインまたはその他のスクリプ
トでデプロイツールを使用して、Elastic Beanstalk へのデプロイを自動化できます。
デプロイツールは、初期デプロイと再デプロイの両方に使用できます。デプロイツールを使用してアプ
リケーションをデプロイした後で、Visual Studio のデプロイウィザードを使用して再デプロイすること
もできます。同様に、ウィザードを使用してデプロイした場合に、デプロイツールを使用して再デプロ
イすることもできます。
この章では、サンプル .NET アプリケーションを、まずデプロイツールを使用して Elastic Beanstalk に
デプロイし、その後増分デプロイを使用して再デプロイする方法を順番に説明します。デプロイツール
についての詳細な説明とパラメータオプションについては、「デプロイツール」を参照してください。
前提条件
デプロイツールを使用するには、AWS Toolkit for Visual Studio をインストールする必要があります。
前提条件の詳細とインストール手順については、「AWS Toolkit for Microsoft Visual Studio」を参照し
てください。
デプロイツールは通常、Windows の以下のディレクトリのいずれかにインストールします。
32 ビット
64 ビット
C:\Program Files\AWS Tools\Deploy- C:\Program Files (x86)\AWS Tools\Deployment Tool\awsdement Tool\awsdeploy.exe
ploy.exe
API Version 2010-12-01
694
AWS Elastic Beanstalk 開発者ガイド
デプロイツール
Elastic Beanstalk へのデプロイ
デプロイツールを使ってサンプルアプリケーションを Elastic Beanstalk にデプロイするには、まず
Samples ディレクトリにある ElasticBeanstalkDeploymentSample.txt 構成ファイルを編集しま
す。構成ファイルには、アプリケーション名、アプリケーションバージョン、環境名、ユーザーの AWS
アクセス資格情報。構成ファイルを編集した後、コマンドラインを使用して、サンプルアプリケーショ
ンをデプロイします。ウェブデプロイファイルが Amazon S3 にアップロードされ、Elastic Beanstalk
に新しいアプリケーションバージョンとして登録されます。アプリケーションのデプロイには数分かか
ります。環境が正常であれば、デプロイツールが実行アプリケーション用に URL を出力します。
.NET アプリケーションを Elastic Beanstalk にデプロイするには、次の手順を実行します。
1.
デプロイツールがインストールされている Samples サブディレクトリの
ElasticBeanstalkDeploymentSample.txt を開き、次の例のように、自分の AWS アクセス
キーと AWS シークレットキーを入力します。
### AWS Access Key and Secret Key used to create and deploy the application
instance
AWSAccessKey = AKIAIOSFODNN7EXAMPLE
AWSSecretKey = wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY
Note
For API access, you need an access key ID and secret access key. Use IAM user access
keys instead of AWS root account access keys. IAM lets you securely control access to
AWS services and resources in your AWS account. For more information about creating
access keys, see How Do I Get Security Credentials? in the AWS General Reference.
2.
コマンドラインプロンプトで、以下のように入力します。
C:\Program Files (x86)\AWS Tools\Deployment Tool>awsdeploy.exe /w
Samples\ElasticBeanstalkDeploymentSample.txt
アプリケーションのデプロイには数分かかります。デプロイが正常に終了すると、Application
deployment completed; environment health is Green というメッセージが表示されま
す。
Note
次のエラーが表示された場合は、CNAME がすでに存在します。
[Error]: Deployment to AWS Elastic Beanstalk failed with exception:
DNS name (MyAppEnv.elasticbeanstalk.com) is not available.
CNAME は一意でなければならないため、
Environment.CNAMEElasticBeanstalkDeploymentSample.txt を変更する必要がありま
す。
3.
ウェブブラウザ内で、実行アプリケーションの URL に移動します。URL は
<CNAME.elasticbeanstalk.com> (例: MyAppEnv.elasticbeanstalk.com)の形式です。
API Version 2010-12-01
695
AWS Elastic Beanstalk 開発者ガイド
リソース
Elastic Beanstalk への再デプロイ
増分デプロイを使用してアプリケーションを再デプロイすることができます。増分デプロイでは、全
ファイルでなく変更されたファイルのみをアップデートするので、再デプロイが短時間で済みます。こ
のセクションでは、Elastic Beanstalk へのデプロイ (p. 695) でデプロイしたサンプルアプリケーション
を再デプロイする方法を順番に説明します。
.NET アプリケーションを編集して Elastic Beanstalk に再デプロイするには、次の手順を実行
します。
1.
サンプルディレクトリにある AWSDeploymentSampleApp.zip を自分のコンピュータ上の場所
(例:c:\mydeploymentarchive\AWSDeploymentSampleApp)に展開します。
2.
AWSDeploymentSampleApp ディレクトリにあるファイルのいずれかを編集します。例えば、
default.aspx のタイトルを編集できます。
3.
ElasticBeanstalkDeploymentSample.txt 構成ファイル内で以下の手順を実行します。
• ファイルを展開した場所を指定します。これを実行するには、
ElasticBeanstalkDeploymentSample.txt 内の Incremental Deployment Settings
セクションにある DeploymentPackage キーの値を編集します。以下に例を示します。
C:\mydeploymentarchive\AWSDeploymentSampleApp
• IncrementalPushRepository と DeploymentPackage の前にある # を削除します。
• Non-Incremental Deployment Settings 内の DeploymentPackage の前に # を追加しま
す。
4.
コマンドラインで、以下のように入力します。
C:\Program Files (x86)\AWS Tools\Deployment Tool>awsdeploy.exe /r
Samples\ElasticBeanstalkDeploymentSample.txt
このコマンドが正常に実行されると、以下のようなメッセージが表示されます。
...environment 'MyAppEnvironment' found and available for redeployment
(configuration parameters not required for redeployment will be ignored)
...starting redeployment to AWS Elastic Beanstalk environment 'MyAppEnviron
ment'
...starting incremental deployment to environment 'MyAppEnvironment'
...finished incremental deployment in 9199.9199 ms
5.
ウェブブラウザ内で、「Elastic Beanstalk へのデプロイ (p. 695)」のときと同じ URL に移動しま
す。更新されたアプリケーションが表示されます。
リソース
Abstract
Elastic Beanstalk .NET アプリケーション環境で使用される AWS リソースのプロビジョニングと設定を変更しま
す。
.NET アプリケーションを開発するときに役に立つ参照先を次に示します。
API Version 2010-12-01
696
AWS Elastic Beanstalk 開発者ガイド
v1.0.0 Elastic Beanstalk Windows Server プラットフォーム
への移行
リソース
説明
.NET 開発フォーラム
質問を投稿してフィードバックを得ることができます。
.NET 開発者センター
サンプルコード、ドキュメント、ツール、追加リソースを
1 か所で入手できる場所です。
AWS SDK for .NET ドキュメント
SDK のセットアップ方法やコードサンプルの実行方法、SDK
の機能、SDK の API オペレーションの詳細について確認で
きます。
v1.0.0 Elastic Beanstalk Windows Server プラット
フォームへの移行
Abstract
Elastic Beanstalk Windows Server プラットフォームをバージョン管理外から v1.0.0 に移行する
AWS Elastic Beanstalk の Windows Server ベースのプラットフォームのバージョン 1.0.0 は 2015 年
10 月にリリースされました。このバージョンでは、環境の作成および更新中に Elastic Beanstalk が設
定ファイル(.ebextensions (p. 147))内のコマンドを実行する順序が変更されています。
以前のプラットフォームのバージョンでは、ソリューションスタック名にバージョン番号が使用されて
いません。
•
•
•
•
IIS 8.5 を実行する 64 ビット Windows Server 2012 R2
IIS 8.5 を実行する 64 ビット Windows Server Core 2012 R2
IIS 8 を実行する 64 ビット Windows Server 2012
IIS 7.5 を実行する 64 ビット Windows Server 2008 R2
以前のバージョンでは、設定ファイルの処理順には一貫性がありません。環境の作成中に、アプリケー
ションソースが IIS にデプロイされると Container Commands が実行されます。実行中の環境へのデ
プロイ中は、新しいバージョンがデプロイされる前にコンテナコマンドが実行されます。スケールアッ
プ中は、設定ファイルはまったく処理されません。
これに加えて、コンテナコマンドの実行前に IIS が開始されます。この動作により一部の顧客はコンテ
ナコマンドに回避策を実装し、コマンドの完了後に再度 IIS を起動して開始するコマンドの前に IIS サー
バーを一時停止することになります。
バージョン 1 ではこの一貫性のない状態が修正されており、Windows Server プラットフォームの動作
を Elastic Beanstalk の Linux ベースのプラットフォームでも使用できます。v1.0.0 プラットフォームで
は、Elastic Beanstalk は IIS サーバーを起動する前に常にコンテナコマンドを実行します。
バージョン 1 のプラットフォームでは、Windows Server のバージョンの後に v1.0.0 が付きます。
• IIS 8.5 を実行する 64 ビット Windows Server 2012 R2 v1.0.0
• IIS 8.5 を実行する 64 ビット Windows Server Core 2012 R2 v1.0.0
• IIS 8 を実行する 64 ビット Windows Server 2012 v1.0.0
• IIS 7.5 を実行する 64 ビット Windows Server 2008 R2 v1.0.0
さらに、v1.0.0 プラットフォームはコンテナコマンドを実行する前に、アプリケーションソースバンド
ルのコンテンツを抽出して C:\staging\ に保存します。コンテナコマンドの完了後に、このフォルダ
API Version 2010-12-01
697
AWS Elastic Beanstalk 開発者ガイド
v1.0.0 Elastic Beanstalk Windows Server プラットフォーム
への移行
のコンテンツは圧縮され IIS にデプロイされます。このワークフローにより、コマンドまたはスクリプ
トを使用してアプリケーションソースバンドルのコンテンツを変更してからデプロイできます。
古いプラットフォームのコンテナコマンドを現在使用している場合、v1.0.0 に移行する際に処理の不整
合を回避するために追加したコマンドを削除します。v1.0.0 では、コンテナコマンドが完全に実行され
てからアプリケーションソースがデプロイされ IIS が開始されることが保証されているため、このス
テップ中に C:\staging にあるソースを問題なく変更して、IIS 設定ファイルを変更できます。
たとえば、AWS CLI を使用して、DLL ファイルを Amazon S3 からアプリケーションソースにダウン
ロードできます。
.ebextensions\copy-dll.config
container_commands:
copy-dll:
command: aws s3 cp s3://my-bucket/dlls/large-dll.dll .\lib\
設定ファイルの使用の詳細については、「設定ファイル(.ebextensions)による高度な環境のカス
タマイズ (p. 147)」を参照してください。
API Version 2010-12-01
698
AWS Elastic Beanstalk 開発者ガイド
Node.js アプリケーションを AWS
Elastic Beanstalk にデプロイする
Abstract
Elastic Beanstalk を使用して、Node.js ウェブアプリケーションをデプロイ、管理、およびスケーリングします。
トピック
• Elastic Beanstalk での Node.js の使用開始 (p. 700)
• Node.js 開発環境をセットアップする (p. 701)
• AWS Elastic Beanstalk Node.js 環境の設定 (p. 704)
• 開発、テスト、デプロイ (p. 708)
• Express アプリケーションを Elastic Beanstalk にデプロイする (p. 713)
• クラスタリング付き Geddy アプリケーションを Elastic Beanstalk にデプロイする (p. 719)
• Node.js と Amazon RDS を使用する (p. 730)
• リソース (p. 732)
Node.js 用 Elastic Beanstalk を使用すると、アマゾン ウェブ サービスを使って簡単に Node.js ウェブ
アプリケーションのデプロイ、管理、スケーリングを行うことができます。Node.js 用 Elastic Beanstalk
は、Node.js を使用してウェブアプリケーションを開発するかホストするすべてのユーザーが利用でき
ます。このセクションでは、EB コマンドラインインターフェイス(CLI)を使用して Elastic Beanstalk
に Node.js ウェブアプリケーションをデプロイする手順を説明します。この章では、Express や Geddy
など一般的なフレームワークのチュートリアルを示します。
Elastic Beanstalk アプリケーションをデプロイした後、EB CLI を続けて使用してアプリケーションと
環境を管理できます。または、Elastic Beanstalk コンソール、AWS CLI、または API を使用できます。
Elastic Beanstalk コンソールを使用し、.zip ファイルを使って Node.js ファイルをアップロードするこ
ともできます。詳細については、「コンソール、CLI、および API を使用してアプリケーションと環境
を管理および設定する (p. 39)」を参照してください。
Note
お使いの Node.js バージョンのサポートがプラットフォーム設定から削除された場合には、プ
ラットフォームアップグレード (p. 86)の前に、バージョン設定の変更または削除を行ってくだ
さい。これによって、いくつかの Node.js のバージョンにセキュリティの脆弱性が見つかる場
合があります
API Version 2010-12-01
699
AWS Elastic Beanstalk 開発者ガイド
はじめに
この場合には、設定された NodeVersion (p. 140) をサポートしないプラットフォームの新しい
バージョンへのアップグレードは失敗します。 新しい環境の作成を回避するためには、古い設
定バージョンと新しいバージョンの両方をサポートするバージョンに NodeVersion 設定オプ
ションを変更するか、オプション設定を削除 (p. 110)してから、プラットフォームのアップグ
レードを行ってください。
Elastic Beanstalk での Node.js の使用開始
Abstract
AWS Elastic Beanstalk に Node.js のサンプルアプリケーションをデプロイします
AWS Elastic Beanstalk()で Node.js アプリケーションを開始するには、最初のアプリケーションバー
ジョンとしてアップロードして環境にデプロイするためのアプリケーション (p. 42)ソースバンドルが
必要です。環境を作成する際、Elastic Beanstalk は、高度にスケーラブルなウェブアプリケーションを
実行するのに必要なすべての AWS リソースを割り当てます。
Node.js サンプルアプリケーションでの環境の起動
サンプル
サポートされ
る設定
環境タイプ ソースバンドル 説明
Node.js
ウェブサー nodejs-v1.zip
バー
Node.js
RDS を搭
nodejs-express- Express フレームワークと RDS データベースを使用
載したウェ hiking-v1.zip
するログアプリケーションをハイキングします。
ブサーバー
1 ページの高速なアプリケーション。
任意のサンプルアプリケーションをダウンロードし、次の手順に従って Elastic Beanstalk にデプロイ
します。
サンプルアプリケーションを使用して環境を起動するには(コンソール)
1.
2.
3.
Elastic Beanstalk コンソールを開きます。
アプリケーションを選択するか、新しいアプリケーションを作成 (p. 39)します。
右上隅で、[Create a New Environment] を選択します。
Note
環境の作成ウィザードで次の画面が表示された場合は、AWS Quick Start Guide: Web App
Deployment を参照してください。
4.
[Create web server] を選択します。
5.
[Predefined configuration] ドロップダウンメニューから、アプリケーションで使用されるプラット
フォームに一致するプラットフォームを選択します。
Note
Elastic Beanstalk は、リストされたほとんどのプラットフォームで複数の設定 (p. 25)をサ
ポートします。アプリケーションで使用される言語、フレームワーク、ウェブコンテナの
API Version 2010-12-01
700
AWS Elastic Beanstalk 開発者ガイド
次のステップ
バージョンがデフォルト設定と一致しない場合、[Change Platform Version] を選択して別
の設定を選択します。
6.
[Next] を選択します。
7.
[Application Version] では、[Existing application version] の下の [Sample Application] を選択する
か、[Upload your own] を選択して、アプリケーションソースバンドルをアップロードします。[Next]
を選択します。
8.
9.
環境の [Environment name] と URL プレフィックスを入力し、[Next] を選択します。
アプリケーションがデータベースを必要としている場合、[Create an RDS DB Instance] を選択し
ます。
10. [Next] を選択します。
11. [Configuration Details(構成の詳細)] については、[Instance type(インスタンスタイプ)] を
t2.micro に設定して、[EC2 key pair](オプション)を選択して [Next(次へ)] を選択します。
キーペアを割り当てることで、デバッグ環境のインスタンスに接続することができます。
Note
以前にキーペアを使用したことがない場合は、『Linux インスタンス用 Amazon EC2 ユー
ザーガイド』の「Amazon EC2 キーペア」を参照してください。
12. [Next(次へ)] を選択して、タグの作成を省略します。
13. [Permissions] ページで、[Next] を選択します。デフォルトのインスタンスプロファイルとサービ
スロール (p. 19)がない場合は、Elastic Beanstalk によって自動的に作成されます。
14. 環境にデータベースを追加した場合は、ユーザー名とパスワードを入力した後、[Next] を選択しま
す。
15. [Launch] を選択します。
次のステップ
環境でアプリケーションを実行すると、アプリケーションの新しいバージョンや、まったく異なるアプ
リケーションをいつでもデプロイできるようになります。新しいアプリケーションバージョンのデプロ
イは、プロビジョニングや EC2 インスタンスの再開が必要ないため、非常に素早く行えます。
サンプルアプリケーションを 1 つか 2 つデプロイし、Node.js アプリケーションをローカルで開発およ
び実行する準備が整ったら、次のセクション (p. 701)を参照し、必要なすべてのツールとともに Node.js
開発環境を設定します。
Node.js 開発環境をセットアップする
Abstract
ツールをインストールし、Node.js アプリケーション開発用のコンピュータを設定します。
Node.js 開発環境を設定し、アプリケーションを AWS Elastic Beanstalk にデプロイする前にローカル
でテストします。このトピックでは、開発環境の設定手順と便利なツールのインストールページへのリ
ンクを概説します。
すべての言語に適用される一般的な設定手順やツールについては、AWS Elastic Beanstalk で使用する
開発環境の設定 (p. 400)を参照してください。
トピック
API Version 2010-12-01
701
AWS Elastic Beanstalk 開発者ガイド
Node.js のインストール
• Node.js のインストール (p. 702)
• NPM のインストール (p. 702)
• Node.js 用 AWS SDK のインストール (p. 702)
• Express のインストール (p. 702)
• Geddy のインストール (p. 703)
Node.js のインストール
Node.js アプリケーションをローカルで実行するように Node.js をインストールします。指定しない場
合は、Elastic Beanstalk がサポートする最新バージョンを取得します。サポートされているバージョン
の一覧については、サポートされるプラットフォームのページにある「Node.js (p. 30)」を参照してく
ださい。
nodejs.org で Node.js をダウンロードします。
Note
お使いの Node.js バージョンのサポートがプラットフォーム設定から削除された場合には、プ
ラットフォームアップグレード (p. 86)の前に、バージョン設定の変更または削除を行ってくだ
さい。これによって、いくつかの Node.js のバージョンにセキュリティの脆弱性が見つかる場
合があります
この場合には、設定された NodeVersion (p. 140) をサポートしないプラットフォームの新しい
バージョンへのアップグレードは失敗します。 新しい環境の作成を回避するためには、古い設
定バージョンと新しいバージョンの両方をサポートするバージョンに NodeVersion 設定オプ
ションを変更するか、オプション設定を削除 (p. 110)してから、プラットフォームのアップグ
レードを行ってください。
NPM のインストール
NPM は、アプリケーションで使用するためにツールおよびフレームワークをインストールしやすくす
るパッケージ マネージャです。npmjs.com で NPM をダウンロードします。
Node.js 用 AWS SDK のインストール
アプリケーション内の AWS リソースを管理する必要がある場合は、Node.js の AWS SDK for JavaScript
をインストールします。次のように NPM を使用して SDK をインストールします。
$ npm install aws-sdk
詳細については、「Node.js 内の AWS SDK for JavaScript」のホームページにアクセスしてください。
Express のインストール
Express は、Node.js を実行するウェブアプリケーションフレームワークです。
ローカルコンピュータで Express 開発環境を設定するには
1.
express コマンドにアクセスできるよう、Express をグローバルにインストールします。
~/workspace/express-app$ npm install -g express-generator
API Version 2010-12-01
702
AWS Elastic Beanstalk 開発者ガイド
Geddy のインストール
2.
オペレーティングシステムによっては、express コマンドを実行するパスを設定する必要があり
ます。パスを設定する必要がある場合、Express インストール時の以前のステップの出力を使用し
ます。次に例を示します。
node-express$ export PATH=$PATH:/usr/local/share/npm/bin/express
3.
express コマンドを実行します。package.json が生成されます。
node-express$ express
継続するかどうか確認されたら、y を入力します。
4.
ローカルの依存関係を設定します。
node-express$ npm install
5.
正しく動作することを確認します。
node-express$ npm start
次のような出力が表示されます。
Express server listening on port 3000
サーバーを停止するには、Ctrl+C を押します。
Geddy のインストール
Geddy は、Node.js を実行する別のウェブアプリケーションフレームワークです。
ローカルコンピュータで Geddy 開発環境を設定するには
1.
geddy ジェネレータを入れるかサーバーを起動するため、Geddy をグローバルにインストールし
ます。
node-geddy$ npm install -g geddy
2.
オペレーティングシステムによっては、geddycode> コマンドを実行するパスを設定する必要があ
ります。パスを設定する必要がある場合、Geddy インストール時の以前のステップの出力を使用
します。次に例を示します。
node-geddy$ export:PATH=$PATH:/usr/local/share/npm/bin/geddy
3.
アプリケーション用のディレクトリを作成します。
node-geddy$ geddy app myapp
node-geddy$ cd myapp
4.
サーバーを起動します。すべて正しく動作していることを確認したら、サーバーを停止します。
API Version 2010-12-01
703
AWS Elastic Beanstalk 開発者ガイド
環境設定
myapp$ geddy
myapp$ curl localhost:4000 (or use web browser)
サーバーを停止するには、Ctrl+C を押します。
AWS Elastic Beanstalk Node.js 環境の設定
Abstract
Elastic Beanstalk アプリケーションの Node.js コンテナを設定します。
Amazon EC2 インスタンスの動作を微調整するには、設定ファイルを使用してコンテナを設定します。
コンテナオプションのリストについては、「Node.js プラットフォームのオプション (p. 140)」を参照し
てください。
[Container/Node.js Options] 設定を使用して、Amazon EC2 インスタンスの動作を微調整し、Amazon
S3 ログのローテーションを有効または無効にすることもできます。Elastic Beanstalk 環境の Amazon
EC2 インスタンス設定を編集するには、AWS マネジメントコンソールを使用します。
Node.js 環境をカスタマイズし設定する
Abstract
Node.js アプリケーションをデプロイする場合、EC2 インスタンスの動作をカスタマイズし、設定します。
Node.js アプリケーションをデプロイする場合、EC2 インスタンスの動作をカスタマイズし設定するこ
とが必要になることがあります。ソースバンドルに設定ファイルを含めることで、アプリケーション
バージョンをデプロイすると同時にインスタンスを簡単にカスタマイズできます。ここでは、設定ファ
イルを作成し、ソースにバンドルする手順を示します。
Node.js 環境をカスタマイズし設定するには
1.
拡張子 .config が付いた設定ファイル(例えば、myapp.config)を作成し、ソースバンドルの
.ebextensions 最上位ディレクトリに格納します。.ebextensions ディレクトリには複数の設
定ファイルを入れることができます。これらのファイルはアルファベット順に実行されます。例え
ば、.ebextensions/01run.config は .ebextensions/02do.config より先に実行されま
す。
Note
設定ファイルは YAML または JSON 形式の規格に準拠している必要があります。 たとえ
ば、YAML を正しく解釈するにはインデントが重要です。詳細は、それぞれ http://
www.yaml.org/start.html または http://www.json.org を参照してください。アプリケーショ
ンでの設定ファイルのデプロイの詳細については、「設定ファイル(.ebextensions)
による高度な環境のカスタマイズ (p. 147)」を参照してください。
設定ファイルのスニペットの例を次に示します。Node.js コンテナオプションの詳細リストについ
ては、「Node.js プラットフォームのオプション (p. 140)」を参照してください。
option_settings:
- namespace: aws:elasticbeanstalk:container:nodejs
option_name: ProxyServer
value: nginx
API Version 2010-12-01
704
AWS Elastic Beanstalk 開発者ガイド
Node.js 環境をカスタマイズし設定する
- namespace: aws:elasticbeanstalk:container:nodejs:staticfiles
option_name: /public
value: /public
Note
aws:elasticbeanstalk:application:environment 名前空間にキーと値のペアを指
定できます。このペアは EC2 インスタンスの環境変数として渡されます。
2.
package.json ファイルを作成し、ソースバンドルの最上位ディレクトリに置きます。通常、
Node.js アプリケーションには他のサードパーティパッケージとの依存関係があります。必要なす
べてのパッケージ(およびそのバージョン)を 1 つの package.json ファイルに指定します。要件
ファイルの詳細については、NPM ウェブサイトにある「package.json」を参照してください。
Express フレームワーク用の package.json ファイルの例を次に示します。
{
"name": "application-name",
"version": "0.0.1",
"private": true,
"scripts": {
"start": "node app"
},
"dependencies": {
"express": "3.1.0",
"jade": "*",
"mysql": "*",
"async": "*",
"node-uuid": "*"
}
}
3.
アプリケーションバージョンをデプロイします。
Amazon ElastiCache を使用した Geddy アプリケーションのデプロイのチュートリアル例については、
「クラスタリング付き Geddy アプリケーションを Elastic Beanstalk にデプロイする (p. 719)」を参照し
てください。
環境設定にアクセスする
AWS Elastic Beanstalk で実行中の Node.js 環境内部で、以下の例と同様の process.env.ENV_VARIABLE
を使用して環境変数にアクセスできます。
process.env.PARAM1
process.env.PARAM2
Note
環境設定では、アクセント記号(`、ASCII 96)は除く、印刷可能な ASCII 文字を使用できま
す。また、200 文字を超えることはできません。
設定の一覧については、「Node.js プラットフォームのオプション (p. 140)」を参照してください。
API Version 2010-12-01
705
AWS Elastic Beanstalk 開発者ガイド
AWS マネジメントコンソール
例: 設定ファイルを使用して nginx と Apache を設定する
設定ファイルを使用して Apache を変更できます。たとえば、nginx か Apache を gzip された
application/json のサーバーとする場合(デフォルトでは無効)、次のスニペットがある構成ファイル
を作成します。
Example 1. nginx の設定例
files:
/etc/nginx/conf.d/gzip.conf:
content: |
gzip_types application/json;
Example 2. Apache の設定例
files:
/etc/httpd/conf.d/gzip.conf:
content: |
AddOutputFilterByType DEFLATE application/json
AWS マネジメントコンソール
[Node.js] 設定を使用すると、Amazon EC2 インスタンスの動作を微調整し、Amazon S3 ログのロー
テーションを有効または無効にできます。Elastic Beanstalk 環境の Amazon EC2 インスタンス設定を
編集するには、AWS マネジメントコンソールを使用します。
Elastic Beanstalk アプリケーションの Node.js コンテナの設定にアクセスするには
1.
2.
Elastic Beanstalk コンソールを開きます。
Elastic Beanstalk コンソールの [Applications] ページで、設定する環境をクリックします。
3.
環境ダッシュボードの [Overview] セクションで、[Edit] をクリックします。
4.
[Configuration] ページで、[
す。
] を [Software Configuration] でクリックしてコンテナ設定を編集しま
コンテナオプション
設定ページで、次のように指定します。
API Version 2010-12-01
706
AWS Elastic Beanstalk 開発者ガイド
AWS マネジメントコンソール
• Proxy Server – Node.js への接続のプロキシに使用するウェブサーバーを指定します。デフォルトで
は、nginx が使用されます。[none] を選択すると、静的なファイルマッピングは実行されず、gzip 圧
縮は無効になります。
• Node Version – Node.js のバージョンを指定します。サポートされているバージョンについては、サ
ポートされているプラットフォーム (p. 25) を参照してください。です。
Note
お使いの Node.js バージョンのサポートがプラットフォーム設定から削除された場合には、
プラットフォームアップグレード (p. 86)の前に、バージョン設定の変更または削除を行って
ください。これによって、いくつかの Node.js のバージョンにセキュリティの脆弱性が見つ
かる場合があります
この場合には、設定された NodeVersion (p. 140) をサポートしないプラットフォームの新し
いバージョンへのアップグレードは失敗します。 新しい環境の作成を回避するためには、古
い設定バージョンと新しいバージョンの両方をサポートするバージョンに NodeVersion 設定
オプションを変更するか、オプション設定を削除 (p. 110)してから、プラットフォームのアッ
プグレードを行ってください。
• Gzip Compression – gzip 圧縮が有効かどうかを指定します。デフォルトでは、gzip 圧縮は有効です。
• Node Command – Node.js アプリケーションの起動に使用するコマンドを入力できます。空の文字列
(デフォルト)は、Elastic Beanstalk が app.js、server.js、npm start をこの順序で使用する
ことを意味しています。
ログオプション
[Log Options] セクションには、2 つの設定があります。
• Instance profile – アプリケーションに関連付けられた Amazon S3 バケットへのアクセス許可が付与
されているインスタンスプロファイルを指定します。
• Enable log file rotation to Amazon S3 – アプリケーションの Amazon EC2 インスタンスのログファイ
ルを、アプリケーションに関連付けられている Amazon S3 バケットにコピーするかどうかを指定し
ます。
静的ファイル
パフォーマンスを向上させるには、ウェブアプリケーション内の一連のディレクトリから静的ファイル
(HTML、画像など)を提供するように nginx または Apache を設定します。仮想パスおよびディレク
トリマッピングは、[Static Files] セクションの [Container] タブで設定できます。複数のマッピングを
追加するには、[Add Path] をクリックします。マッピングを削除するには、[Remove] をクリックしま
す。
環境プロパティ
[Environment Properties] セクションでは、アプリケーションを実行している Amazon EC2 インスタン
スの環境設定を指定できます。これらの設定は、キーと値のペアでアプリケーションに渡されます。
環境設定にアクセスする
AWS Elastic Beanstalk で実行中の Node.js 環境内部で、以下の例と同様の process.env.ENV_VARIABLE
を使用して環境変数にアクセスできます。
API Version 2010-12-01
707
AWS Elastic Beanstalk 開発者ガイド
開発、テスト、デプロイ
process.env.PARAM1
process.env.PARAM2
Note
環境設定では、アクセント記号(`、ASCII 96)は除く、印刷可能な ASCII 文字を使用できま
す。また、200 文字を超えることはできません。
設定の一覧については、「Node.js プラットフォームのオプション (p. 140)」を参照してください。
開発、テスト、デプロイ
Abstract
Node.js 用 Elastic Beanstalk を使用して Node.js ウェブアプリケーションを開発、テストおよびデプロイします。
以下の図は、Elastic Beanstalk へのアプリケーションのデプロイを含む、一般的なソフトウェア開発の
ライフサイクルを示しています。
通常は、アプリケーションを開発してローカルの環境でテストした後、Elastic Beanstalk にデプロイし
ます。この時点で、アプリケーションが http://myexampleapp.elasticbeanstalk.com などの
URL でライブ状態になります。アプリケーションがライブ状態になるため、テスト環境と実働環境な
ど、複数の環境を設定することが推奨されます。リモートで Elastic Beanstalk アプリケーションをテ
ストしデバッグした後、Elastic Beanstalk の更新やデプロイを実行できます。変更作業が終了したら、
最新バージョンを実働環境にアップロードします。以下のセクションでは、ソフトウェア開発のライフ
サイクルの各段階について詳しく説明します。
設定
EB CLI は Git で使用できるコマンドラインインターフェイスで、アプリケーションを迅速かつより簡
単にデプロイすることができます。EB は、Elastic Beanstalk のコマンドラインツールパッケージの一
部として利用できます。EB CLI のインストール手順については、「EB コマンドラインインターフェイ
ス(CLI)のインストール (p. 403)」を参照してください。
Git リポジトリを初期化します。次のコマンドを実行した後で、eb init を実行すると、EB CLI では
アプリケーションが Git を使用して設定されたと認識されます。
git init .
API Version 2010-12-01
708
AWS Elastic Beanstalk 開発者ガイド
ローカルで開発
ローカルで開発
ローカルコンピュータに EB CLI 3.x をインストールした後、通常どおり Git コマンドラインを使用し
てローカルリポジトリを作成し、変更の追加とコミットを行います。使い慣れたエディタで通常行うよ
うに、Node.js アプリケーションを作成します。まだ Node.js アプリケーションを準備していない場合、
簡単な "Hello World" アプリケーションを使用できます。使い慣れたエディタで次のプログラムを入力
し、ルートプロジェクトディレクトリに server.js として保存します。
var http = require("http");
http.createServer(function(request, response) {
response.writeHead(200, {"Content-Type": "text/plain"});
response.write("Hello World");
response.end();
}).listen(process.env.PORT || 8888);
次に、プログラムをテストし、リポジトリに追加し、変更をコミットします。
node server.js
git add server.js
git commit -m "initial check-in"
Note
Git コマンドの詳細については、「Git – Fast Version Control System」を参照してください。
ローカル環境でテストする
通常、Elastic Beanstalk にデプロイする前に、この時点でアプリケーションをローカルでテストしま
す。修正する問題がいくつか見つかったとします。上記の "Hello World" アプリケーションを使用し
て、"Hello World" の後に "!" を追加し、変更をチェックインします。server.js ファイルを更新した
後、次のコマンドを入力して、更新したファイルをチェックインします。
node server.js
git add server.js
git commit -m "my second check-in"
変更をコミットした後、次のような応答が表示されます。
[master 0535814] my second check-in
1 files changed, 1 insertions(+), 1 deletions(-)
生成されたコミット ID に注意してください。この ID はアプリケーションのバージョンラベルの生成に
使用されます。
AWS Elastic Beanstalk にデプロイする
アプリケーションをローカルでテストした後に、EB CLI を使用して Elastic Beanstalk をデプロイしま
す。
eb --version 実行時に「コマンドが見つかりません」エラーが発生した場合は、実行できる eb を含
むディレクトリが PATH 環境変数にあることを確認します
API Version 2010-12-01
709
AWS Elastic Beanstalk 開発者ガイド
AWS Elastic Beanstalk にデプロイする
Linux, OS X, or Unix
$ export PATH=/eb/executable/directory:$PATH
Windows
> set PATH=%PATH%;C:\eb\executable\directory
Elastic Beanstalk を設定するには
1.
ローカルリポジトリを作成したディレクトリから、次のコマンドを入力します。
eb init
2.
3.
Elastic Beanstalk リージョンを要求されたら、リージョンの番号を入力します。この製品のリー
ジョンについては、『Amazon Web Services General Reference』のリージョンとエンドポイント
のページを参照してください。この例では、[US West (Oregon)] を使用します。
Elastic Beanstalk アプリケーションの使用を求められたら、オプション [Create new Application]
に対応する数値を入力します。アプリケーション名がまだ設定されていない場合、Elastic Beanstalk
により現在のディレクトリ名に基づいてアプリケーション名が生成されます。この例では、
HelloWorld を使用します。
Enter Application Name (default is "tmp-dev"): HelloWorld
Note
アプリケーション名にスペースが含まれる場合でも、引用符は使用しないでください。
4.
使用している正しいプラットフォームが Elastic Beanstalk で正常に削除された場合は、「y」と入
力します。それ以外の場合は「n」と入力し、正しいプラットフォームを指定します。
5.
プロンプトが表示されたら、インスタンスに接続するように Secure Shell (SSH) を設定する場合
は、「y」と入力します。SSH を設定しない場合は、「n」と入力します。この例では、「n」を入
力します。
Do you want to set up SSH for your instances?
(y/n): n
6.
実行中の環境を作成します。
eb create
7.
Elastic Beanstalk の環境名の入力を求められたら、環境の名前を入力してください。Elastic Beanstalk
は、アプリケーション名に基づいて環境名を自動的に作成します。デフォルトを使用する場合は、
Enter キーを押します。
Enter Environment Name
(default is HelloWorld-env):
API Version 2010-12-01
710
AWS Elastic Beanstalk 開発者ガイド
ログのデバッグ/表示
Note
アプリケーション名にスペースが含まれる場合でも、環境名ではスペースを使用しないで
ください。
8.
CNAME プレフィックスを指定するように求められたら、使用する CNAME プレフィックスを入力
します。Elastic Beanstalk では、環境の名前に基づいて CNAME プレフィックスを自動的に作成し
ます。デフォルトを使用する場合は、Enter キーを押します。
Enter DNS CNAME prefix
(default is HelloWorld):
EB CLI によって、環境の詳細および create オペレーションのステータスが表示されます。
次のコマンドを入力して、アプリケーションを表示します。
eb open
ローカルアプリケーションでサンプルアプリケーションを更新するには
1.
コードに変更を加えてから、コマンド
eb deploy
を入力します。
2.
Elastic Beanstalk では、app.js、次に server.js、次に "npm start" をこの順序で開始しようとしま
す。
予定どおり動作すると、次のような結果が表示されます。
Counting objects: 5, done.
Delta compression using up to 4 threads.
Compressing objects:100% (2/2), done.
Writing objects: 100% (3/3), 298 bytes, done.
Total 3 (delta 1), reused 0 (delta 0)
To https://<some long string>@git.elasticbeanstalk.us-west2.amazon.com/helloworld/helloworldenv
44c7066..b1f11a1 master -> master
3.
ウェブブラウザを再表示して、アプリケーションが更新されたことを確認してください。
ログのデバッグ/表示
eb logs コマンドを使用して、問題を調査できます。このコマンドにフラグを指定しないと、ログは
コマンドウィンドウに表示されます。このコマンドを使用してログを取得する他の方法については、
「eb logs (p. 445)」を参照してください。
API Version 2010-12-01
711
AWS Elastic Beanstalk 開発者ガイド
アプリケーションを編集して再デプロイする
アプリケーションを編集して再デプロイする
これでアプリケーションのテストが終わりましたので、アプリケーションの編集、再デプロイ、結果の
表示を簡単に行うことができます。まず、アプリケーションに変更を加えて、変更をコミットします。
その後、既存の Elastic Beanstalk 環境に新しいアプリケーションバージョンをデプロイします。
git add server.js
git commit -m "my third check-in"
eb deploy
新しいアプリケーションのバージョンがお使いの Elastic Beanstalk 環境にアップロードされます。
AWS マネジメントコンソール、CLI、または API を使用して Elastic Beanstalk 環境を管理できます。
詳細については、「コンソール、CLI、および API を使用してアプリケーションと環境を管理および設
定する (p. 39)」を参照してください。
また、特定のブランチから特定の環境にプッシュするよう Git を設定することもできます。詳細につい
ては、「Git ブランチを特定の環境にデプロイする (p. 468)」を参照してください。
本番環境にデプロイする
アプリケーションに加えたい変更がすべて完了したら、実働環境にデプロイします。アプリケーション
を新しい環境にデプロイするには、以下を実行します。
1.
2.
3.
4.
変更をコミットする
ブランチを作成する
新しい環境を作成して起動する
アプリケーションを新しい実働環境にデプロイする
EB CLI を使用してアプリケーションを更新するとき、Elastic Beanstalk では、新しいアプリケーショ
ンバージョンが作成されます。既存のアプリケーションバージョンを新しい環境にデプロイする方法に
ついては、「AWS Elastic Beanstalk 環境を作成する (p. 53)」を参照してください。次の手順では、新
しい変更をコミットし、EB CLI と Git を使用して、新しいアプリケーションバージョンで環境を更新
する方法について説明します。
EB CLI を使用して実働環境にデプロイするには
1.
変更をコミットします。
git add .
git commit -m "final checkin"
2.
ブランチを作成して、これに切り替えます。
git checkout -b prodenv
eb use prod
3.
4.
入力を求められたら、新しい環境名を入力し、以前の環境のすべての設定をそのまま使用します。
準備ができたら、新しいアプリケーションバージョンを Elastic Beanstalk にデプロイします。
eb deploy
API Version 2010-12-01
712
AWS Elastic Beanstalk 開発者ガイド
既存のアプリケーションバージョンを既存の環境にデプロ
イする
既存のアプリケーションバージョンを既存の環境に
デプロイする
既存のアプリケーションを既存の環境にデプロイする必要がある場合は、AWS マネジメントコンソー
ル、CLI、または API を使用して実行できます。このような作業が必要となるのは、以前のアプリケー
ションバージョンにロールバックしなければならない場合などです。既存のアプリケーションのバー
ジョンを既存の環境にデプロイする方法については、AWS Elastic Beanstalk 環境へのアプリケーショ
ンのデプロイ (p. 76) を参照してください。
Express アプリケーションを Elastic Beanstalk に
デプロイする
Abstract
eb(更新されたコマンドラインインターフェイス)と Git を使用してサンプル Node.js アプリケーションを Elastic
Beanstalk へデプロイし、アプリケーションを更新して Express フレームワークを使用する例。
このセクションでは、EB CLI と Git を使用して Elastic Beanstalk にサンプルアプリケーションをデプ
ロイした後、Express フレームワークを使用するようにアプリケーションを更新する手順を説明しま
す。
ステップ 1: Git リポジトリの設定
EB CLI は Git で使用できるコマンドラインインターフェイスで、アプリケーションを迅速かつより簡
単にデプロイすることができます。EB は、Elastic Beanstalk のコマンドラインツールパッケージの一
部として利用できます。EB CLI のインストール手順については、「EB コマンドラインインターフェイ
ス(CLI)のインストール (p. 403)」を参照してください。
Git リポジトリを初期化します。次のコマンドを実行した後で、eb init を実行すると、EB CLI では
アプリケーションが Git を使用して設定されたと認識されます。
git init .
ステップ 2: Express 開発環境の設定
Express を設定し、プロジェクト構造を作成します。次に、Linux オペレーティングシステムで Express
を設定する手順を示します。
ローカルコンピュータで Express 開発環境を設定するには
1.
Node.js をインストールします。手順については、http://nodejs.org/ を参照してください。次のス
テップに進む前に、インストールが成功したことを確認してください。
$ node -v
Note
サポートされている Node.js のバージョンについては、サポートされているプラットフォー
ム (p. 25) を参照してください。
API Version 2010-12-01
713
AWS Elastic Beanstalk 開発者ガイド
ステップ 2: Express 開発環境の設定
2.
Express アプリケーション用のディレクトリを作成します。
$ mkdir node-express
$ cd node-express
3.
npm をインストールします(まだインストールしていない場合)。次に、npm のインストール方
法の一例を示します。
node-express$ cd . && yum install npm
4.
express コマンドにアクセスできるよう、Express をグローバルにインストールします。
node-express$ npm install -g express-generator
5.
オペレーティングシステムによっては、express コマンドを実行するパスを設定する必要があり
ます。パスを設定する必要がある場合、Express インストール時の以前のステップの出力を使用し
ます。次に例を示します。
node-express$ export:PATH=$PATH:/usr/local/share/npm/bin/express
6.
express コマンドを実行します。package.json が生成されます。
node-express$ express
継続するかどうか確認されたら、y を入力します。
7.
ローカルの依存関係を設定します。
node-express$ cd . && npm install
8.
正しく動作することを確認します。
node-express$ npm start
次のような出力が表示されます。
> [email protected] start /home/local/user/node-express
> node ./bin/www
9.
サーバーを停止するには、Ctrl+c を押します。
Git リポジトリを初期化します。
node-express$ git init
10. .gitignore という名前のファイルを作成し、次のファイルとディレクトリを追加します。これら
のファイルはリポジトリへの追加から除外されます。このステップは必須ではありませんが、行う
ことをお勧めします。
node-express/.gitignore
API Version 2010-12-01
714
AWS Elastic Beanstalk 開発者ガイド
ステップ 3: Elastic Beanstalk の設定
node_modules/
.gitignore
.elasticbeanstalk/
ステップ 3: Elastic Beanstalk の設定
次の手順では、Elastic Beanstalk command line interface (p. 403)(EB CLI)を使用して、ローカルプロ
ジェクトディレクトリに Elastic Beanstalk アプリケーションレポジトリを設定します。
Elastic Beanstalk を設定するには
1.
ローカルリポジトリを作成したディレクトリから、次のコマンドを入力します。
eb init
2.
3.
Elastic Beanstalk リージョンを要求されたら、リージョンの番号を入力します。この製品のリー
ジョンについては、『Amazon Web Services General Reference』のリージョンとエンドポイント
のページを参照してください。この例では、[US West (Oregon)] を使用します。
Elastic Beanstalk アプリケーションの使用を求められたら、オプション [Create new Application]
に対応する数値を入力します。アプリケーション名がまだ設定されていない場合、Elastic Beanstalk
により現在のディレクトリ名に基づいてアプリケーション名が生成されます。この例では、
expressapp を使用します。
Enter an AWS Elastic Beanstalk application name (auto-generated value is
"node-express"): expressapp
Note
アプリケーション名にスペースが含まれる場合でも、引用符は使用しないでください。
4.
使用している正しいプラットフォームが Elastic Beanstalk で正常に削除された場合は、「y」と入
力します。それ以外の場合は「n」と入力し、正しいプラットフォームを指定します。
5.
プロンプトが表示されたら、インスタンスに接続するように Secure Shell (SSH) を設定する場合
は、「y」と入力します。SSH を設定しない場合は、「n」と入力します。この例では、「n」を入
力します。
Do you want to set up SSH for your instances?
(y/n): n
6.
実行中の環境を作成します。
eb create
7.
Elastic Beanstalk の環境名の入力を求められたら、環境の名前を入力してください。Elastic Beanstalk
は、アプリケーション名に基づいて環境名を自動的に作成します。デフォルトを使用する場合は、
Enter キーを押します。
API Version 2010-12-01
715
AWS Elastic Beanstalk 開発者ガイド
ステップ 4: アプリケーションの表示
Enter Environment Name
(default is HelloWorld-env):
Note
アプリケーション名にスペースが含まれる場合でも、環境名ではスペースを使用しないで
ください。
8.
CNAME プレフィックスを指定するように求められたら、使用する CNAME プレフィックスを入力
します。Elastic Beanstalk では、環境の名前に基づいて CNAME プレフィックスを自動的に作成し
ます。デフォルトを使用する場合は、Enter キーを押します。
Enter DNS CNAME prefix
(default is HelloWorld):
EB CLI によって、環境の詳細および create オペレーションのステータスが表示されます。
サンプルアプリケーションをデプロイするには
•
ローカルリポジトリを作成したディレクトリから、次のコマンドを入力します。
eb deploy
このプロセスは完了までに数分かかることがあります。このプロセス中に、Elastic Beanstalk がス
テータスを更新します。ステータス更新のポーリングは、Ctrl+C キーを押すことでいつでも停止で
きます。環境のステータスが緑になると、Elastic Beanstalk はアプリケーションの URL を出力し
ます。URL をコピーしてウェブブラウザに貼り付け、アプリケーションを表示できます。
ステップ 4: アプリケーションの表示
アプリケーションを表示するには
•
ブラウザウィンドウでアプリケーションを開くには、次を入力します。
eb open
ステップ 5: アプリケーションの更新
サンプルアプリケーションをデプロイした後、独自のアプリケーションで更新できます。このステップ
では、Express フレームワークを使用するようサンプルアプリケーションを更新します。
Express を使用するようアプリケーションを更新するには
1.
ノードコマンドを "npm start" に設定する設定ファイルを追加します。
node-express/.ebextensions/nodecommand.config
API Version 2010-12-01
716
AWS Elastic Beanstalk 開発者ガイド
ステップ 5: アプリケーションの更新
option_settings:
- namespace: aws:elasticbeanstalk:container:nodejs
option_name: NodeCommand
value: "npm start"
2.
詳細については、「設定ファイル(.ebextensions)による高度な環境のカスタマイズ (p. 147)」
を参照してください。
ファイルをステージします。
node-express$ git add .
node-express$ git commit -m "First express app"
3.
変更をデプロイします。
node-express$ eb deploy
4.
環境が緑色で示されていて準備完了したら、URL を再表示して正しく動作することを確認します。
ウェブページに "Welcome to Express" が表示されます。
次に、静的ファイルを処理し、新しいページを追加するように Express アプリケーションを更新しま
す。
静的ファイルを設定し、新しいページを Express アプリケーションに追加します。
1.
以下の内容の 2 番目の設定ファイルを追加します。
node-express/.ebextensions/staticfiles.config
option_settings:
- namespace: aws:elasticbeanstalk:container:nodejs:staticfiles
option_name: /public
value: /public
2.
node-express/app.js の静的マッピングをコメントアウトします。このステップは必須ではあ
りませんが、静的マッピングが正しく設定されていることを確認するのに適したテストです。
//
3.
app.use(express.static(path.join(__dirname, 'public')));
更新したファイルをローカルリポジトリに追加し、変更をコミットします。
node-express$ git add .ebextensions/ app.js
node-express$ git commit -m "Serve stylesheets statically with nginx."
4.
node-express/routes/hike.js を追加します。次の内容を入力します。
exports.index = function(req, res) {
res.render('hike', {title: 'My Hiking Log'});
};
API Version 2010-12-01
717
AWS Elastic Beanstalk 開発者ガイド
ステップ 6: クリーンアップ
exports.add_hike = function(req, res) {
};
5.
node-express/app.js を更新し、次の新しい 3 行を追加します。
まず、次の行を追加して、このルートに require を追加します。
hike = require('./routes/hike');
ファイルは次のスニペットのようになります。
var express = require('express');
var path = require('path');
var hike = require('./routes/hike');
次に、node-express/app.js の var app = express(); の後に、次の 2 行を追加します。
app.get('/hikes', hike.index);
app.post('/add_hike', hike.add_hike);
ファイルは次のスニペットのようになります。
var app = express();
app.get('/hikes', hike.index);
app.post('/add_hike', hike.add_hike);
6.
node-express/views/index.jade を node-express/views/hike.jade にコピーします。
node-express$ cp views/index.jade views/hike.jade
7.
ファイルをローカルリポジトリに追加し、変更をコミットし、更新したアプリケーションをデプロ
イします。
node-express$ git add .
node-express$ git commit -m "Add hikes route and template."
node-express$ eb deploy
8.
数分後、環境が更新されます。環境が緑色で示されていて準備が完了したら、ブラウザを再表示
し、URL の最後に hikes を追加して(たとえば、
http://node-express-env-syypntcz2q.elasticbeanstalk.com/hikes)、正しく動作することを確認しま
す。
タイトルが My Hiking Log のウェブページが表示されます。
ステップ 6: クリーンアップ
アプリケーションを実行したくない場合は、環境を終了し、アプリケーションを削除してクリーンアッ
プできます。
API Version 2010-12-01
718
AWS Elastic Beanstalk 開発者ガイド
クラスタリング付き Geddy アプリケーションをデプロイす
る
環境を終了するには terminate コマンドを、アプリケーションを削除するには delete コマンドを使
用します。
環境を終了するには、アプリケーションを削除できます。
•
ローカルリポジトリを作成したディレクトリから、eb terminate を実行します。
$ eb terminate
このプロセスには数分かかることがあります。環境が正常に終了すると、Elastic Beanstalk にメッ
セージが表示されます。
クラスタリング付き Geddy アプリケーションを
Elastic Beanstalk にデプロイする
Abstract
クラスタリング付き Geddy フレームワークを使用するためのサンプル Node.js アプリケーションを Elastic Beanstalk
にデプロイする例。
ここでは、EB コマンドラインインターフェイス (CLI) 3.x と Git を使用してサンプルアプリケーション
を Elastic Beanstalk にデプロイした後、Geddy フレームワークとクラスタリング用の Amazon
ElastiCache を使用するようアプリケーションを更新する手順を示します。クラスタリングはウェブア
プリケーションの高可用性、パフォーマンス、セキュリティを拡張します。Amazon ElastiCache の詳
細については、『Amazon ElastiCache User Guide』の ElastiCache の概要のページを参照してくださ
い。
Note
この例では、課金対象となる可能性のある AWS リソースを作成します。AWS の料金詳細につ
いては、http://aws.amazon.com/pricing/ を参照してください。一部のサービスは、AWS 無料
利用枠の対象です。新規のお客様は、無料でこれらのサービスをテストできる場合がありま
す。詳細については、http://aws.amazon.com/free を参照してください。
ステップ 1: Git リポジトリの設定
EB CLI は Git で使用できるコマンドラインインターフェイスで、アプリケーションを迅速かつより簡
単にデプロイすることができます。EB は、Elastic Beanstalk のコマンドラインツールパッケージの一
部として利用できます。EB CLI のインストール手順については、「EB コマンドラインインターフェイ
ス(CLI)のインストール (p. 403)」を参照してください。
Git リポジトリを初期化します。次のコマンドを実行した後で、eb init を実行すると、EB CLI では
アプリケーションが Git を使用して設定されたと認識されます。
git init .
ステップ 2: Geddy 開発環境の設定
Geddy を設定し、プロジェクト構造を作成します。次のステップでは、Linux オペレーティングシステ
ムで Geddy を設定する手順を示します。
API Version 2010-12-01
719
AWS Elastic Beanstalk 開発者ガイド
ステップ 2: Geddy 開発環境の設定
ローカルコンピュータで Geddy 開発環境を設定するには
1.
Node.js をインストールします。手順については、http://nodejs.org/ を参照してください。次のス
テップに進む前に、インストールが成功したことを確認してください。
$ node -v
Note
サポートされている Node.js のバージョンについては、サポートされているプラットフォー
ム (p. 25) を参照してください。
2.
Geddy アプリケーション用のディレクトリを作成します。
$ mkdir node-geddy
$ cd node-geddy
3.
npm をインストールします。
node-geddy$ cd . && yum install npm
4.
geddy ジェネレータを入れるかサーバーを起動するため、Geddy をグローバルにインストールし
ます。
node-geddy$ npm install -g geddy
5.
オペレーティングシステムによっては、geddycode> コマンドを実行するパスを設定する必要があ
ります。パスを設定する必要がある場合、Geddy インストール時の以前のステップの出力を使用
します。次に例を示します。
node-geddy$ export:PATH=$PATH:/usr/local/share/npm/bin/geddy
6.
アプリケーション用のディレクトリを作成します。
node-geddy$ geddy app myapp
node-geddy$ cd myapp
7.
サーバーを起動します。すべて正しく動作していることを確認したら、サーバーを停止します。
myapp$ geddy
myapp$ curl localhost:4000 (or use web browser)
サーバーを停止するには、Ctrl+C を押します。
8.
Git リポジトリを初期化します。
myapp$ git init
9.
次のファイルをリポジトリへの追加から除外します。このステップは必須ではありませんが、行う
ことをお勧めします。
API Version 2010-12-01
720
AWS Elastic Beanstalk 開発者ガイド
ステップ 3: Elastic Beanstalk の設定
myapp$ cat > .gitignore <<EOT
log/
.gitignore
.elasticbeanstalk/
EOT
ステップ 3: Elastic Beanstalk の設定
次の手順では、Elastic Beanstalk command line interface (p. 403)(EB CLI)を使用して、ローカルプロ
ジェクトディレクトリに Elastic Beanstalk アプリケーションレポジトリを設定します。
Elastic Beanstalk を設定するには
1.
ローカルリポジトリを作成したディレクトリから、次のコマンドを入力します。
eb init
2.
3.
Elastic Beanstalk リージョンを要求されたら、リージョンの番号を入力します。この製品のリー
ジョンについては、『Amazon Web Services General Reference』のリージョンとエンドポイント
のページを参照してください。この例では、[US West (Oregon)] を使用します。
Elastic Beanstalk アプリケーションの使用を求められたら、オプション [Create new Application]
に対応する数値を入力します。アプリケーション名がまだ設定されていない場合、Elastic Beanstalk
により現在のディレクトリ名に基づいてアプリケーション名が生成されます。この例では、geddyapp
を使用します。
Enter an AWS Elastic Beanstalk application name (auto-generated value is
"myapp"): geddyapp
Note
アプリケーション名にスペースが含まれる場合でも、引用符は使用しないでください。
4.
使用している正しいプラットフォームが Elastic Beanstalk で正常に削除された場合は、「y」と入
力します。それ以外の場合は「n」と入力し、正しいプラットフォームを指定します。
5.
プロンプトが表示されたら、インスタンスに接続するように Secure Shell (SSH) を設定する場合
は、「y」と入力します。SSH を設定しない場合は、「n」と入力します。この例では、「n」を入
力します。
Do you want to set up SSH for your instances?
(y/n): n
6.
実行中の環境を作成します。
eb create
7.
Elastic Beanstalk の環境名の入力を求められたら、環境の名前を入力してください。Elastic Beanstalk
は、アプリケーション名に基づいて環境名を自動的に作成します。デフォルトを使用する場合は、
Enter キーを押します。
API Version 2010-12-01
721
AWS Elastic Beanstalk 開発者ガイド
ステップ 5: アプリケーションの表示
Enter Environment Name
(default is HelloWorld-env):
Note
アプリケーション名にスペースが含まれる場合でも、環境名ではスペースを使用しないで
ください。
8.
CNAME プレフィックスを指定するように求められたら、使用する CNAME プレフィックスを入力
します。Elastic Beanstalk では、環境の名前に基づいて CNAME プレフィックスを自動的に作成し
ます。デフォルトを使用する場合は、Enter キーを押します。
Enter DNS CNAME prefix
(default is HelloWorld):
Elastic Beanstalk を設定すると、サンプルアプリケーションをデプロイできるようになります。
Elastic Beanstalk の設定を更新する場合は、もう一度 init コマンドを使用します。プロンプトが表示
されたら、設定オプションを更新できます。前の設定を維持する場合は、Enter キーを押します。
ステップ 5: アプリケーションの表示
アプリケーションを表示するには
•
ブラウザウィンドウでアプリケーションを開くには、次を入力します。
eb open
ステップ 6: アプリケーションの更新
サンプルアプリケーションをデプロイした後、独自のアプリケーションで更新できます。このステップ
では、Geddy フレームワークを使用するようサンプルアプリケーションを更新します。http://
elasticbeanstalk-samples-us-east-1.s3.amazonaws.com/nodejs-example-geddy.zip から最終ソースコー
ドをダウンロードできます。
Geddy を使用するようアプリケーションを更新するには
1.
ローカルコンピュータで node-geddy/myapp/package.json というファイルを作成します。こ
のファイルには必要な依存関係が含まれます。
{
"name": "Elastic_Beanstalk_Geddy",
"version": "0.0.1",
"dependencies": {
"geddy": "0.6.x"
}
}
API Version 2010-12-01
722
AWS Elastic Beanstalk 開発者ガイド
ステップ 6: アプリケーションの更新
2.
ローカルコンピュータで、プログラムへのエントリポイントとして node-geddy/maypp/app.js
というファイルを作成します。
var geddy = require('geddy');
geddy.startCluster({
hostname: '0.0.0.0',
port: process.env.PORT || '3000',
environment: process.env.NODE_ENV || 'development'
});
前のスニペットでは、環境設定用の環境変数を使用します。手動で環境を本番に設定できます
(environment: 'production')。また、環境変数を作成し、上の例のように使用することも
できます。ここでは、環境変数を作成し、次の手順で環境を本番に設定します。
3.
ローカルでテストします。
myapp$ npm install
myapp$ node app
サーバーが起動します。サーバーを停止するには、Ctrl+C を押します。
4.
Elastic Beanstalk にデプロイします。
myapp$ git add .
myapp$ git commit -m "First Geddy app"
myapp$ eb deploy
5.
数分後、環境が更新されます。環境が緑色で示されていて準備完了したら、URL を再表示して正
しく動作することを確認します。ウェブページに "Hello, World!" が表示されます。
API Version 2010-12-01
723
AWS Elastic Beanstalk 開発者ガイド
ステップ 6: アプリケーションの更新
アプリケーションを実行している EC2 インスタンスのログにアクセスできます。ログのアクセス手順
については、「インスタンスログ (p. 296)」を参照してください。
次に、環境変数を作成して、環境を本番に設定します。
環境変数を作成するには
1.
ローカルコンピュータのプロジェクトディレクトリ(例えば、myapp/)に .ebextensions とい
うディレクトリを作成します。
2.
ローカルコンピュータで、環境を本番に設定する次のスニペットが入ったファイル
node-geddy/myapp/.ebextensions/myapp.config を作成します。
Note
設定ファイルは YAML または JSON 形式の規格に準拠している必要があります。 たとえ
ば、YAML を正しく解釈するにはインデントが重要です。詳細は、それぞれ http://
www.yaml.org/start.html または http://www.json.org を参照してください。アプリケーショ
ンでの設定ファイルのデプロイの詳細については、「設定ファイル(.ebextensions)
による高度な環境のカスタマイズ (p. 147)」を参照してください。
option_settings:
- option_name: NODE_ENV
value: production
設定ファイルの詳細については、「Node.js 環境をカスタマイズし設定する (p. 704)」を参照してく
ださい。
3.
"geddy secret" を実行してシークレット値を取得します。アプリケーションを正しくデプロイする
には、シークレット値が必要です。
myapp$ geddy secret
node-geddy/myapp/config/secrets.json を .gitignore に追加できます。また、環境変数
にシークレット値を入れ、内容を書き出すコマンドを作成することもできます。この例では、コマ
ンドを使用します。
4.
node-geddy/myapp/config/secrets.json から
node-geddy/myapp/.elasticbeanstalk/optionsettings.gettyapp-env ファイルにシー
クレット値を追加します。(optionsettings ファイルの名前には、環境名と同じ拡張子が付き
ます)。ファイルは次のようになります。
[aws:elasticbeanstalk:application:environment]
secret=your geddy secret
PARAM1=
5.
更新したオプション設定を使用して Elastic Beanstalk 環境を更新します。
myapp$ eb update
環境が緑色で示されていて準備完了したことを確認したら、次のステップに進みます。
6.
ローカルコンピュータで、次のコマンドが入った設定ファイル
node-geddy/myapp/.ebextensions/write-secret.config を作成します。
API Version 2010-12-01
724
AWS Elastic Beanstalk 開発者ガイド
ステップ 6: アプリケーションの更新
container_commands:
01write:
command: |
cat > ./config/secrets.json << SEC_END
{ "secret":
"`{ "Fn::GetOptionSetting": {"OptionName": "secret",
"Namespace":"aws:elasticbeanstalk:application:environment"}}`" }
SEC_END
7.
ファイルをローカルリポジトリに追加し、変更をコミットし、更新したアプリケーションをデプロ
イします。
myapp$ git add .
myapp$ git commit -m "added config files"
myapp$ eb deploy
数分後、環境が更新されます。環境が緑色で示されていて準備が完了したら、ブラウザを再表示し
て正しく動作することを確認します。まだ "Hello, World!" が表示されます。
次に、Amazon ElastiCache を使用するよう Geddy アプリケーションを更新します。
Amazon ElastiCache を使用するよう Geddy アプリケーションを更新するには
1.
ローカルコンピュータで、次のスニペットが入った設定ファイル
node-geddy/myapp/.ebextensions/elasticache-iam-with-script.config を作成しま
す。この設定ファイルでは、elasticache リソースを環境に追加し、/var/nodelist にディスク
にある elasticache のノードリストを作成します。また、http://
elasticbeanstalk-samples-us-east-1.s3.amazonaws.com/nodejs-example-geddy.zip からファイルを
コピーすることもできます。ElastiCache プロパティの詳細については、「スニペット例:
ElastiCache (p. 169)」を参照してください。詳細なリファレンスについては、「AWS リソースプロ
パティタイプのリファレンス (p. 824)」を参照してください。
Resources:
MyElastiCache:
Type: AWS::ElastiCache::CacheCluster
Properties:
CacheNodeType:
Fn::GetOptionSetting:
OptionName : CacheNodeType
DefaultValue: cache.m1.small
NumCacheNodes:
Fn::GetOptionSetting:
OptionName : NumCacheNodes
DefaultValue: 1
Engine:
Fn::GetOptionSetting:
OptionName : Engine
DefaultValue: memcached
CacheSecurityGroupNames:
- Ref: MyCacheSecurityGroup
MyCacheSecurityGroup:
Type: AWS::ElastiCache::SecurityGroup
Properties:
Description: "Lock cache down to webserver access only"
MyCacheSecurityGroupIngress:
Type: AWS::ElastiCache::SecurityGroupIngress
API Version 2010-12-01
725
AWS Elastic Beanstalk 開発者ガイド
ステップ 6: アプリケーションの更新
Properties:
CacheSecurityGroupName:
Ref: MyCacheSecurityGroup
EC2SecurityGroupName:
Ref: AWSEBSecurityGroup
AWSEBAutoScalingGroup :
Metadata :
ElastiCacheConfig :
CacheName :
Ref : MyElastiCache
CacheSize :
Fn::GetOptionSetting:
OptionName : NumCacheNodes
DefaultValue: 1
WebServerUser :
Type : AWS::IAM::User
Properties :
Path : "/"
Policies:
PolicyName: root
PolicyDocument :
Statement :
Effect : Allow
Action :
- cloudformation:DescribeStackResource
- cloudformation:ListStackResources
- elasticache:DescribeCacheClusters
Resource : "*"
WebServerKeys :
Type : AWS::IAM::AccessKey
Properties :
UserName :
Ref: WebServerUser
Outputs:
WebsiteURL:
Description: sample output only here to show inline string function
parsing
Value: |
http://`{ "Fn::GetAtt" : [ "AWSEBLoadBalancer", "DNSName" ] }`
MyElastiCacheName:
Description: Name of the elasticache
Value:
Ref : MyElastiCache
NumCacheNodes:
Description: Number of cache nodes in MyElastiCache
Value:
Fn::GetOptionSetting:
OptionName : NumCacheNodes
DefaultValue: 1
files:
"/etc/cfn/cfn-credentials" :
content : |
AWSAccessKeyId=`{ "Ref" : "WebServerKeys" }`
AWSSecretKey=`{ "Fn::GetAtt" : ["WebServerKeys", "SecretAccessKey"]
API Version 2010-12-01
726
AWS Elastic Beanstalk 開発者ガイド
ステップ 6: アプリケーションの更新
}`
mode : "000400"
owner : root
group : root
"/etc/cfn/get-cache-nodes" :
content : |
# Define environment variables for command line tools
export AWS_ELASTICACHE_HOME="/home/ec2-user/elasticache/$(ls /home/ec2user/elasticache/)"
export AWS_CLOUDFORMATION_HOME=/opt/aws/apitools/cfn
export PATH=$AWS_CLOUDFORMATION_HOME/bin:$AWS_ELASTICACHE_HOME/bin:$PATH
export AWS_CREDENTIAL_FILE=/etc/cfn/cfn-credentials
export JAVA_HOME=/usr/lib/jvm/jre
# Grab the Cache node names and configure the PHP page
cfn-list-stack-resources `{ "Ref" : "AWS::StackName" }` --region `{
"Ref" : "AWS::Region" }` | grep MyElastiCache | awk '{print $3}' | xargs I {} elasticache-describe-cache-clusters {} --region `{ "Ref" : "AWS::Region"
}` --show-cache-node-info | grep CACHENODE | awk '{print $4 ":" $6}' > `{
"Fn::GetOptionSetting" : { "OptionName" : "NodeListPath", "DefaultValue"
: "/var/www/html/nodelist" } }`
mode : "000500"
owner : root
group : root
"/etc/cfn/hooks.d/cfn-cache-change.conf" :
"content": |
[cfn-cache-size-change]
triggers=post.update
path=Resources.AWSEBAutoScalingGroup.Metadata.ElastiCacheConfig
action=/etc/cfn/get-cache-nodes
runas=root
sources :
"/home/ec2-user/elasticache" : "https://s3.amazonaws.com/elasticachedownloads/AmazonElastiCacheCli-latest.zip"
commands:
make-elasticache-executable:
command: chmod -R ugo+x /home/ec2-user/elasticache/*/bin/*
packages :
"yum" :
"aws-apitools-cfn"
: []
container_commands:
initial_cache_nodes:
command: /etc/cfn/get-cache-nodes
2.
ローカルコンピュータで、次のスニペットが入った設定ファイル
node-geddy/myapp/.ebextensions/elasticache_settings.config を作成します。
option_settings:
"aws:elasticbeanstalk:customoption" :
API Version 2010-12-01
727
AWS Elastic Beanstalk 開発者ガイド
ステップ 6: アプリケーションの更新
CacheNodeType : cache.m1.small
NumCacheNodes : 1
Engine : memcached
NodeListPath : /var/nodelist
3.
ローカルコンピュータで node-geddy/myapp/config/production.js を更新します。ファイ
ルの先頭(ヘッダーの直後)に次の行を追加します。
var fs = require('fs')
次に、modules.exports の直前に次のスニペットを追加します。
var data = fs.readFileSync('/var/nodelist', 'UTF8', function(err) {
if (err) throw err;
});
var nodeList = [];
if (data) {
var lines = data.split('\n');
for (var i = 0 ; i < lines.length ; i++) {
if (lines[i].length > 0) {
nodeList.push(lines[i]);
}
}
}
if (nodeList) {
config.sessions = {
store: 'memcache',
servers: nodeList,
key: 'sid',
expiry: 14*24*60*60
}
}
4.
ローカルコンピュータで node-geddy/myapp/package.json を更新して memcached を含めま
す。
{
"name": "Elastic_Beanstalk_Geddy",
"version": "0.0.1",
"dependencies": {
"geddy": "0.6.x",
"memcached": "*"
}
}
5.
ファイルをローカルリポジトリに追加し、変更をコミットし、更新したアプリケーションをデプロ
イします。
myapp$ git add .
myapp$ git commit -m "added elasticache functionality"
myapp$ git aws.push
API Version 2010-12-01
728
AWS Elastic Beanstalk 開発者ガイド
ステップ 6: アプリケーションの更新
6.
数分後、環境が更新されます。環境が緑色で示されていて準備が完了したら、すべて正しく動作す
ることを確認します。
a.
Amazon CloudWatch コンソール で ElastiCache メトリックスを表示します。ElastiCache メ
トリックスを表示するには、左パネルで [ElastiCache] をクリックし、[Viewing] リストから
[ElastiCache: Cache Node Metrics] を選択します。
Note
アプリケーションのデプロイ先と同じリージョンを調べていることを確認してくださ
い。
アプリケーション URL をコピーして別のウェブブラウザに貼り付けた場合、5 分後に CurrItem
カウントは 2 に上がります。
b.
ログのスナップショットを取り、/var/log/nodejs/nodejs.log を調べます。ログの詳細
については、「インスタンスログ (p. 296)」を参照してください。次のような結果が表示され
ます。
"sessions": {
"key": "sid",
"expiry": 1209600,
"store": "memcache",
"servers": [
"aws-my-1awjsrz10lnxo.ypsz3t.0001.usw2.cache.amazonaws.com:11211"
]
},
API Version 2010-12-01
729
AWS Elastic Beanstalk 開発者ガイド
ステップ 7: クリーンアップ
ステップ 7: クリーンアップ
アプリケーションを実行したくない場合は、環境を終了し、アプリケーションを削除してクリーンアッ
プできます。
環境を終了するには terminate コマンドを、アプリケーションを削除するには delete コマンドを使
用します。
環境を終了するには、アプリケーションを削除できます。
•
ローカルリポジトリを作成したディレクトリから、eb terminate を実行します。
$ eb terminate
このプロセスには数分かかることがあります。環境が正常に終了すると、Elastic Beanstalk にメッ
セージが表示されます。
Node.js と Amazon RDS を使用する
Abstract
Amazon Relational Database Service(Amazon RDS)Node.js を Elastic Beanstalk アプリケーションで使用し、
クラウド内の MySQL、Oracle、または Microsoft SQL Server インスタンスをプロビジョニングし、保守します。
Amazon Relational Database Service(Amazon RDS)を使用すると、クラウド内の MySQL、Oracle、
または Microsoft SQL Server インスタンスをすばやく簡単にプロビジョニングし、保守することができ
ます。ここでは、Amazon RDS と Node.js を Elastic Beanstalk アプリケーションと共に使用する方法
を説明します。Amazon RDS の詳細については、http://aws.amazon.com/rds/ を参照してください。
Elastic Beanstalk アプリケーションから Amazon RDS を使用するには、次の手順を実行する必要があ
ります。
1. Amazon RDS DB インスタンスを作成します。
2. Node.js ドライバをインストールします。ドライバの詳細については、https://npmjs.org/ を参照して
ください。
3. Amazon RDS DB インスタンスへの接続情報を使用して、コードでデータベース接続を確立します。
4. アプリケーションを Elastic Beanstalk にデプロイします。
このトピックでは、以下について説明します。
• アプリケーションで新しい Amazon RDS DB インスタンスを使用する
• アプリケーションで既存の Amazon RDS DB インスタンスを使用する
Node.js で新しい Amazon RDS DB インスタンスを
使用する
ここでは、新しい Amazon RDS DB インスタンスを作成し、Node.js アプリケーションで使用する手順
を示します。
API Version 2010-12-01
730
AWS Elastic Beanstalk 開発者ガイド
Node.js で既存の Amazon RDS DB インスタンスを使用す
る
Elastic Beanstalk アプリケーションから新しい Amazon RDS DB インスタンスと Node.js を使
用するには
1.
Amazon RDS DB インスタンスを作成します。次のいずれかの方法で RDS DB インスタンスを作
成できます。
• 新しいアプリケーションバージョンを作成する場合は、Amazon RDS DB インスタンスを作成し
ます。Elastic Beanstalk コンソールを使用する手順については、「アプリケーションを作成しま
す。 (p. 39)」を参照してください。
• 既存のアプリケーションバージョンで新しい環境を起動する場合は、Amazon RDS DB インスタ
ンスを作成します。AWS Elastic Beanstalk コンソールを使用する手順については、「AWS Elastic
Beanstalk 環境を作成する (p. 53)」を参照してください。
• アプリケーションを Elastic Beanstalk にすでにデプロイしている場合、Amazon RDS DB イン
スタンスを作成し、既存の環境にアタッチすることができます。AWS Elastic Beanstalk コンソー
ルを使用する手順については、「Elastic Beanstalk でデータベースを設定する (p. 209)」を参照し
てください。EB CLI を使用する場合には、eb create 実行時に --database オプションを選
びます。
2.
データベース接続に使用するドライバをインストールします。詳細については、https://npmjs.org/
を参照してください。
3.
Amazon RDS DB インスタンスの接続情報を使用してコードでデータベース接続を確立します。環
境変数を使用して接続情報にアクセスできます。次の例は RDS インスタンスでデータベースに接
続する方法を示します。
Example 1. node-mysql を使用して RDS データベースに接続する例
var mysql = require('mysql');
var connection = mysql.createConnection({
host
: process.env.RDS_HOSTNAME,
user
: process.env.RDS_USERNAME,
password : process.env.RDS_PASSWORD,
port
: process.env.RDS_PORT
});
node-mysql を使用して接続文字列を作成する方法については、https://npmjs.org/package/mysql を
参照してください。
4.
更新されたアプリケーションを Elastic Beanstalk 環境にデプロイします。
Node.js で既存の Amazon RDS DB インスタンスを
使用する
以前作成した Amazon RDS DB インスタンスを使用するよう Node.js アプリケーションを更新できま
す。ここでは、既存の Amazon RDS DB インスタンスを使用する Node.js アプリケーションを更新し、
アプリケーションを Elastic Beanstalk にデプロイする方法を順に示します。
Elastic Beanstalk アプリケーションから既存の Amazon RDS DB インスタンスと Node.js を使
用するには
1.
次のいずれかの方法で新しい Elastic Beanstalk 環境を作成します。
API Version 2010-12-01
731
AWS Elastic Beanstalk 開発者ガイド
リソース
• 新しい環境で新しいアプリケーションを作成します。Elastic Beanstalk コンソールを使用する手
順については、「アプリケーションを作成します。 (p. 39)」を参照してください。 eb の使用方
法については、「開発、テスト、デプロイ (p. 708)」を参照してください。既存の RDS DB イン
スタンスがあるため、この環境で RDS DB インスタンスを作成する必要はありません。
• 既存のアプリケーションバージョンで新しい環境を起動します。Elastic Beanstalk コンソールを
使用する手順については、「AWS Elastic Beanstalk 環境を作成する (p. 53)」を参照してくださ
い。すでに既存の Amazon RDS DB インスタンスがあるため、この環境で Amazon RDS DB イ
ンスタンスを作成する必要はありません。
2.
Amazon RDS DB セキュリティグループを設定し、Elastic Beanstalk アプリケーションに使用する
Amazon EC2 セキュリティグループからアクセスできるようにします。AWS マネジメントコン
ソールを使用した EC2 セキュリティグループ名の検索手順については、「セキュリティグルー
プ (p. 200)」を参照してください。詳細については、「Amazon Relational Database Service User
Guide」の「Working with DB Security Groups」の「Authorizing Network Access to an Amazon EC2
Security Group」セクションを参照してください。
3.
データベース接続に使用するドライバをインストールします。詳細については、https://npmjs.org/
を参照してください。
4.
Amazon RDS DB インスタンスの接続情報を使用してコードでデータベース接続を確立します。次
の例は、mydbinstance.abcdefghijkl.us-west-2.rds.amazonaws.com にある RDS インスタンスの
データベースに、ポート 3306、ユーザー名 "sa"、パスワード "mypassword" を使用して接続する
方法を示しています。
Example 1. node-mysql を使用して RDS データベースに接続する例
var mysql = require('mysql');
var connection = mysql.createConnection({
host
: 'mydbinstance.abcdefghijkl.us-west-2.rds.amazonaws.com',
user
: 'sa',
password : 'mypassword',
port
: '3306'
});
node-mysql を使用して接続文字列を作成する方法については、https://npmjs.org/package/mysql を
参照してください。
5.
更新されたアプリケーションを Elastic Beanstalk 環境にデプロイします。
リソース
Abstract
Node.js アプリケーションを開発するための追加リソース。
Node.js アプリケーションを開発するときに役に立つ参照先を次に示します。
リソース
説明
GitHub
GitHub を使用して AWS SDK for Node.js をインストールし
ます。
Node.js 開発フォーラム
質問を投稿してフィードバックを得ることができます。
API Version 2010-12-01
732
AWS Elastic Beanstalk 開発者ガイド
リソース
リソース
説明
AWS SDK for Node.js(デベロッパープ サンプルコード、ドキュメント、ツール、追加リソースを
レビュー)
1 か所で入手できる場所です。
API Version 2010-12-01
733
AWS Elastic Beanstalk 開発者ガイド
チュートリアル - Laravel 5.2
AWS Elastic Beanstalk での PHP ア
プリケーションの作成とデプロイ
Abstract
AWS Elastic Beanstalk を使用して、PHP ウェブアプリケーションをデプロイ、管理、拡張します。
トピック
• Elastic Beanstalk への Laravel アプリケーションのデプロイ (p. 734)
• CakePHP アプリケーションを Elastic Beanstalk にデプロイする (p. 742)
• Symfony2 アプリケーションを Elastic Beanstalk にデプロイする (p. 749)
• PHP で Amazon RDS を使用する (p. 754)
• Elastic Beanstalk での PHP 環境の設定 (p. 757)
• ツールとリソース (p. 759)
PHP 用 Elastic Beanstalk を使用すると、アマゾン ウェブ サービスを使って簡単に PHP ウェブアプリ
ケーションのデプロイ、管理、スケーリングを行うことができます。PHP 用 Elastic Beanstalk は、PHP
を使用してウェブアプリケーションを開発またはホスティングするすべてのユーザーが利用できます。
このセクションでは、PHP ウェブアプリケーションを Elastic Beanstalk にデプロイする手順を説明し
ます。Elastic Beanstalk コマンドラインインターフェイス(EB CLI)または Elastic Beanstalk マネジ
メントコンソールを使用すると、わずか数分でアプリケーションをデプロイできます。また、CakePHP、
Symfony2 などの一般的なフレームワークのチュートリアルも示します。コンソール、CLI、または API
を使用してアプリケーションと環境を管理する方法については、「コンソール、CLI、および API を使
用してアプリケーションと環境を管理および設定する (p. 39)」を参照してください。
Elastic Beanstalk への Laravel アプリケーションの
デプロイ
Abstract
サンプル PHP アプリケーションの Elastic Beanstalk へのデプロイ方法、および Laravel フレームワークの使用方
法の例。
API Version 2010-12-01
734
AWS Elastic Beanstalk 開発者ガイド
前提条件
Laravel は PHP 用のオープンソースのモデルビューコントローラー(MVC)フレームワークです。こ
のチュートリアルでは、Laravel のアプリケーションを生成し、AWS Elastic Beanstalk 環境にデプロイ
し、Amazon Relational Database Service (Amazon RDS) データベースインスタンスに接続するように
設定するプロセスについて説明します。
セクション
• 前提条件 (p. 735)
• Composer をインストールする (p. 736)
• Laravel をインストールしてウェブサイトを生成する (p. 736)
• Elastic Beanstalk 環境を作成してアプリケーションをデプロイする (p. 736)
• お客様の環境にデータベースを追加する (p. 739)
• クリーンアップと次のステップ (p. 742)
前提条件
このチュートリアルでは、基本的な Elastic Beanstalk オペレーションと Elastic Beanstalk コンソール
についてある程度の知識があることを前提としています。Elastic Beanstalk 環境をまだ起動していない
場合は、「Elastic Beanstalk の使用開始 (p. 4)」の指示に従ってまず起動してください。
このガイドの手順に従うには、コマンドを実行するためのコマンドラインターミナルまたはシェルが必
要になります。コマンドは、該当する場合、プロンプト記号($)と現在のディレクトリの名前が前に
付けられて、リストに示されます。
~/eb-project$ this is a command
this is output
Note
このチュートリアルに示しているすべてのコマンドは Linux 仮想マシン、OS X、または Amazon
Linux EC2 インスタンスで実行できます。開発環境が必要な場合は、単一インスタンスの Elastic
Beanstalk 環境を起動し、SSH で接続できます。
Laravel には、PHP 5.5.9 以降とその拡張モジュール mbstring が必要です。このチュートリアルでは、
PHP 5.6 とそれに対応する Elastic Beanstalk プラットフォーム設定を使用します。
PHP 5.6 と必要な拡張機能をインストールします。お客様のプラットフォームとパッケージマネージャー
によって、手順は異なります。
Amazon Linux では、yum を使用します。
$ sudo yum install php56 --skip-broken
$ sudo yum install php56-mbstring
OS X では、Homebrew を使用します。
$ brew install php56
Windows では、windows.php.net のダウンロードページにアクセスして PHP を入手し、拡張機能の詳
細についてこのページをお読みください。
PHP のインストール後、ターミナルを再び開いて php --version を実行して、新しいバージョンが
インストールされてデフォルトになっていることを確認します。
API Version 2010-12-01
735
AWS Elastic Beanstalk 開発者ガイド
Composer をインストールする
Composer をインストールする
Composer は PHP 用の依存関係管理ツールです。また、Laravel とその依存関係をインストールし、
Laravel アプリケーションを生成するための推奨ツールです。
インストーラーをダウンロードして PHP で実行することで、Composer をインストールします。イン
ストーラーによって Phar ファイルが生成されます。このファイルを PHP で呼び出して、現在のディ
レクトリに Laravel プロジェクトを生成できます。
~$ curl -s https://getcomposer.org/installer | php
All settings correct for using Composer
Downloading...
Composer successfully installed to: /home/ec2-user/composer.phar
Use it: php composer.phar
Composer のインストール中に問題が発生した場合は、公式ドキュメント(https://getcomposer.org/)
を参照してください。
Laravel をインストールしてウェブサイトを生成する
以下の 1 つのコマンドで、Composer は Laravel をインストールして作業プロジェクトを作成できま
す。
~$ php composer.phar create-project --prefer-dist laravel/laravel eb-laravel
Installing laravel/laravel (v5.2.15)
- Installing laravel/laravel (v5.2.15)
Downloading: 100%
Created project in eb-laravel
> php -r "copy('.env.example', '.env');"
Loading composer repositories with package information
Installing dependencies (including require-dev)
- Installing vlucas/phpdotenv (v2.2.0)
Downloading: 100%
- Installing symfony/polyfill-mbstring (v1.1.0)
Loading from cache
...
Composer は Laravel とその依存関係をインストールし、デフォルトのプロジェクトを生成します。
Laravel のインストール中に問題が発生した場合は、公式ドキュメント(https://laravel.com/docs/5.2)
のインストールに関するトピックを参照してください。
Elastic Beanstalk 環境を作成してアプリケーション
をデプロイする
Composer で作成されたファイルを含むソースバンドル (p. 42)を作成します。.zip ファイルの作成に
は、隠しファイルに対応していれば、いずれのプログラムも使用できます。コマンドラインで、以下の
zip コマンドを使用します。
API Version 2010-12-01
736
AWS Elastic Beanstalk 開発者ガイド
Elastic Beanstalk 環境を作成してアプリケーションをデプ
ロイする
~$ cd eb-laravel
~/eb-laravel$ zip ../laravel-default.zip -r * .[^.]*
アクセスできる場所に .zip アーカイブを保存します。これは、環境を作成するときに Elastic Beanstalk
にアップロードするソースバンドルになります。
Note
Elastic Beanstalk 環境でリモートで作業している場合は、AWS CLI の aws cp コマンドを使用
して、Amazon Simple Storage Service (Amazon S3) の Elastic Beanstalk ストレージバケット
にアーカイブをアップロードできます。
~$ aws s3 cp laravel-default.zip s3://elasticbeanstalk-us-west2-123456789012
Elastic Beanstalk によってこのバケットが作成されるのは、環境を初めて作成するときです。
Amazon S3 にファイルをアップロードするには、お客様の環境のインスタンスプロファイ
ル (p. 21)にバケットへの書き込みアクセス権限を与える必要があります。
AWS マネジメントコンソール を使用して、アプリケーションを実行する Elastic Beanstalk 環境を作成
します。[PHP 5.6] プラットフォーム設定を選択し、プロンプトが表示されたら、ソースバンドルをアッ
プロードします。
環境を起動するには(コンソール)
1.
2.
3.
Elastic Beanstalk コンソールを開きます。
アプリケーションを選択するか、新しいアプリケーションを作成 (p. 39)します。
右上隅で、[Create a New Environment] を選択します。
Note
環境の作成ウィザードで次の画面が表示された場合は、AWS Quick Start Guide: Web App
Deployment を参照してください。
4.
5.
[Create web server] を選択します。
[Predefined configuration] ドロップダウンメニューから、アプリケーションで使用されるプラット
フォームに一致するプラットフォームを選択します。
Note
Elastic Beanstalk は、リストされたほとんどのプラットフォームで複数の設定 (p. 25)をサ
ポートします。アプリケーションで使用される言語、フレームワーク、ウェブコンテナの
バージョンがデフォルト設定と一致しない場合、[Change Platform Version] を選択して別
の設定を選択します。
6.
7.
8.
9.
[Next] を選択します。
[Application Version] で、[Upload your own] を選択し、アプリケーションソースバンドルをアップ
ロードします。[Next] を選択します。
お客様の環境の [Environment name] と URL プレフィックスを入力し、[Next] を選択します。
[Next(次へ)] を選択して、追加リソースの作成を省略します。
API Version 2010-12-01
737
AWS Elastic Beanstalk 開発者ガイド
Elastic Beanstalk 環境を作成してアプリケーションをデプ
ロイする
10. [Configuration Details(構成の詳細)] については、[Instance type(インスタンスタイプ)] を
t2.micro に設定して、[EC2 key pair](オプション)を選択して [Next(次へ)] を選択します。
キーペアを割り当てることで、デバッグ環境のインスタンスに接続することができます。
Note
以前にキーペアを使用したことがない場合は、『Linux インスタンス用 Amazon EC2 ユー
ザーガイド』の「Amazon EC2 キーペア」を参照してください。
11. [Next(次へ)] を選択して、タグの作成を省略します。
12. [Permissions] ページで、[Next] を選択します。デフォルトのインスタンスプロファイルとサービ
スロール (p. 19)がない場合は、Elastic Beanstalk によって自動的に作成されます。
13. [Launch] を選択します。
環境の作成には約 5 分かかります。作成が完了したら、ブラウザーで Laravel アプリケーションを開く
ための URL をクリックします。
説明デフォルトでは、Elastic Beanstalk によってウェブサイトのルートパスにプロジェクトのルートが
提供されています。この場合、デフォルトのページ(index.php)は public フォルダーの 1 レベル
下にあります。URL に /public を追加することでこれを確認できます。たとえば、
http://laravel.us-east-1.elasticbeanstalk.com/public となります。
このフォルダーへのアクセスを許可するには、Elastic Beanstalk コンソールを使用してウェブサイトの
ドキュメントルートを設定します。
ウェブサイトのドキュメントルートを設定するには
1.
2.
3.
Elastic Beanstalk コンソールを開きます。
環境については「management console (p. 50)」をご覧ください。
[Configuration] を選択します。
4.
5.
[Software Configuration] セクションで、 を選択します。
[Document Root] に「/public」と入力します。
6.
[Apply] を選択します。
API Version 2010-12-01
738
AWS Elastic Beanstalk 開発者ガイド
お客様の環境にデータベースを追加する
7.
更新が完了したら、ブラウザーでサイトを再び開くための URL をクリックします。
ここまで完了したら、次は、お客様の環境にデータベースを追加し、そのデータベースに接続するよう
に Laravel を設定します。
お客様の環境にデータベースを追加する
Elastic Beanstalk 環境で RDS DB インスタンスを起動します。Elastic Beanstalk 上の Laravel では、
MySQL、SQLServer、または PostgreSQL データベースを使用できます。この例では、MySQL を使用
します。
Elastic Beanstalk 環境に RDS DB インスタンスを追加するには
1.
2.
3.
Elastic Beanstalk コンソールを開きます。
環境については「management console (p. 50)」をご覧ください。
[Configuration] を選択します。
4.
5.
[Data Tier] セクションで、[create a new RDS database] を選択します。
[DB engine] で、[mysql] を選択します。
6.
マスターの [username] と [password] に入力します。Elastic Beanstalk は環境プロパティを使用し
て、アプリケーションにこれらの値を渡します。
[Apply] を選択します。
7.
データベースインスタンスの作成には約 10 分かかります。その間に、環境から接続情報を読み取るよ
うにソースコードを更新できます。Elastic Beanstalk は、RDS_HOSTNAME などの環境変数を使用して、
接続の詳細をアプリケーションに渡します。
Laravel のデータベース設定は、プロジェクトコードで config フォルダー内の database.php とい
う名前のファイルに保存されています。このファイルを開いたら、$_SERVER から環境変数を読み取っ
API Version 2010-12-01
739
AWS Elastic Beanstalk 開発者ガイド
お客様の環境にデータベースを追加する
てローカル変数に割り当てるコードを追加します。そのためには、以下の例で強調表示された行を最初
の行(<?php)の後に挿入してください。
Example ~/eb-laravel/config/database.php
<?php
if (!defined('RDS_HOSTNAME')) {
define('RDS_HOSTNAME', $_SERVER['RDS_HOSTNAME']);
define('RDS_USERNAME', $_SERVER['RDS_USERNAME']);
define('RDS_PASSWORD', $_SERVER['RDS_PASSWORD']);
define('RDS_DB_NAME', $_SERVER['RDS_DB_NAME']);
}
return [
...
データベース接続は database.php ファイル内をさらに下がったセクションで設定されています。以
下のセクションを見つけ、データベースエンジン(Mysql、Sqlserver、または Postgres)と一致
するドライバの名前で、デフォルトのデータソース設定を変更し、Elastic Beanstalk から対応する値を
読み取るように host、database、username、and password 変数を設定します。
Example ~/eb-laravel/config/database.php
...
'connections' => [
'sqlite' => [
'driver'
=> 'sqlite',
'database' => database_path('database.sqlite'),
'prefix'
=> '',
],
'mysql' => [
'driver'
'host'
'database'
'username'
'password'
'charset'
'collation'
'prefix'
'strict'
'engine'
],
=>
=>
=>
=>
=>
=>
=>
=>
=>
=>
'mysql',
RDS_HOSTNAME,
RDS_DB_NAME,
RDS_USERNAME,
RDS_PASSWORD,
'utf8',
'utf8_unicode_ci',
'',
false,
null,
...
データベース接続が正しく設定されていることを確認するには、データベースに接続してデフォルトの
レスポンスを返すコードを index.php に追加します。
API Version 2010-12-01
740
AWS Elastic Beanstalk 開発者ガイド
お客様の環境にデータベースを追加する
Example ~/eb-laravel/public/index.php
...
if(DB::connection()->getDatabaseName())
{
echo "Connected to database ".DB::connection()->getDatabaseName();
}
$response->send();
...
DB インスタンスの起動が完了したら、更新したアプリケーションのバンドルを作成し、お客様の環境
にデプロイします。
Elastic Beanstalk環境を更新するには
1.
新しいソースバンドルを作成します。
~/eb-laravel$ zip ../laravel-v2-rds.zip -r * .[^.]*
2.
3.
4.
5.
Elastic Beanstalk コンソールを開きます。
環境については「management console (p. 50)」をご覧ください。
[Upload and Deploy] を選択する。
[Browse] を選択し、laravel-v2-rds.zip をアップロードします。
6.
[Deploy] を選択します。
アプリケーションの新しいバージョンのデプロイには 1 分以上かかりません。デプロイが完了したら、
ウェブページを更新して、データベースに接続されたことを確認します。
API Version 2010-12-01
741
AWS Elastic Beanstalk 開発者ガイド
クリーンアップと次のステップ
クリーンアップと次のステップ
Elastic Beanstalk での作業が完了したら、PHP 環境を終了できます。
Elastic Beanstalk 環境を終了するには
1.
2.
3.
Elastic Beanstalk コンソールを開きます。
環境については「management console (p. 50)」をご覧ください。
[Actions] を選択してから、[Terminate Environment] を選択します。
Elastic Beanstalk は、EC2 インスタンス、DB インスタンス、ロードバランサー、セキュリティグルー
プ、Amazon CloudWatch アラームなど、お客様の環境に関連付けられているすべての AWS リソース
を終了します。
アプリケーションの開発が進むにつれ、多くの場合、.zip ファイルを手動で作成して Elastic Beanstalk
コンソールにアップロードすることなく、環境を管理してアプリケーションをデプロイする方法が必要
になります。Elastic Beanstalk コマンドラインインターフェイス (p. 403)(EB CLI)には、コマンドラ
インからアプリケーションを作成、設定して、Elastic Beanstalk 環境にデプロイするための使いやすい
コマンドが用意されています。
このチュートリアルでは、アプリケーションのドキュメントルートを設定しました。追加の環境を起動
するときは、各環境でこの設定を手動で設定することはお勧めしません。設定ファイル (p. 147)を使用
して、この設定とその他の設定をソースコードに保存することで、それらの設定が自動的に適用される
ようにできます。
Elastic Beanstalk 環境で RDS DB インスタンスを実行するのは、開発とテストには最適ですが、デー
タベースのライフサイクルがお客様の環境に結び付けられます。お客様の環境の外で実行されている
データベースに接続する手順については、「PHP で Amazon RDS を使用する (p. 754)」を参照してく
ださい。
最後に、本稼働環境でアプリケーションを使用する予定の場合は、お客様の環境にカスタムドメイン名
を設定 (p. 215)し、セキュアな接続のために HTTPS (p. 217) を有効にすることが必要になります。
Laravel の詳細については、laravel.com でチュートリアルを参照してください。
CakePHP アプリケーションを Elastic Beanstalk
にデプロイする
Abstract
サンプル PHP アプリケーションの Elastic Beanstalk へのデプロイ方法、および CakePHP フレームワークの使用
方法の例。
CakePHP は PHP 用のオープンソースの MVC フレームワークです。このチュートリアルでは、CakePHP
のプロジェクトを生成し、Elastic Beanstalk 環境にデプロイし、Amazon RDS データベースインスタ
ンスに接続するように設定するプロセスについて説明します。
セクション
• 前提条件 (p. 743)
• Composer をインストールする (p. 743)
• CakePHP をインストールしてウェブサイトを生成する (p. 744)
• Elastic Beanstalk 環境を作成してアプリケーションをデプロイする (p. 744)
API Version 2010-12-01
742
AWS Elastic Beanstalk 開発者ガイド
前提条件
• お客様の環境にデータベースを追加する (p. 747)
• クリーンアップと次のステップ (p. 749)
前提条件
このガイドの手順に従うには、コマンドを実行するためのコマンドラインターミナルまたはシェルが必
要になります。コマンドは、該当する場合、プロンプト記号('$')と現在のディレクトリの名前が前に
付けられて、以下のようなリストに示されます。
~/eb-project$ this is a command
this is output
Note
このチュートリアルのすべてのコマンドは Amazon Linux EC2 インスタンスで実行できます。
開発環境が必要な場合は、単一インスタンスの Elastic Beanstalk 環境を起動し、SSH で接続
できます。
CakePHP には、PHP 5.5.9 以降とその拡張機能 mbstring および intl が必要です。このチュートリアル
では、PHP 5.6 とそれに対応する Elastic Beanstalk プラットフォーム設定を使用します。
PHP 5.6 と必要な拡張機能をインストールします。お客様のプラットフォームと使用可能なパッケージ
マネージャーによって、手順は異なります。
Amazon Linux では、yum を使用します。
$ sudo yum install php56 --skip-broken
$ sudo yum install php56-mbstring
$ sudo yum install php56-intl
OS-X では、brew を使用します。
$ brew install php56
$ brew install php56-intl
Windows では、windows.php.net のダウンロードページにアクセスして PHP を取得し、拡張機能の詳
細についてこのページをお読みください。
PHP のインストール後、ターミナルを再び開いて php --version を実行して、新しいバージョンが
インストールされてデフォルトになっていることを確認します。
Composer をインストールする
Composer は PHP 用の依存関係管理ツールです。このツールを使用して、CakePHP とその依存関係
をインストールし、CakePHP プロジェクトを生成することをお勧めします。
インストーラーをダウンロードして PHP で実行することで、Composer をインストールします。イン
ストーラーによって現在のディレクトリに PHAR ファイルが生成されます。このファイルを PHP で呼
び出して、CakePHP プロジェクトを生成できます。
~$ curl -s https://getcomposer.org/installer | php
All settings correct for using Composer
API Version 2010-12-01
743
AWS Elastic Beanstalk 開発者ガイド
CakePHP をインストールしてウェブサイトを生成する
Downloading...
Composer successfully installed to: /home/ec2-user/composer.phar
Use it: php composer.phar
Composer のインストール中に問題が発生した場合は、公式ドキュメント(https://getcomposer.org/)
を参照してください。
CakePHP をインストールしてウェブサイトを生成す
る
以下の 1 つのコマンドで、Composer は CakePHP をインストールして作業プロジェクトを作成できま
す。
~$ php composer.phar create-project --prefer-dist cakephp/app eb-cake
Installing cakephp/app (3.2.0)
- Installing cakephp/app (3.2.0)
Downloading: 100%
Created project in eb-cake
Loading composer repositories with package information
Installing dependencies (including require-dev)
- Installing aura/installer-default (1.0.0)
Downloading: 100%
- Installing cakephp/plugin-installer (0.0.12)
Downloading: 100%
- Installing psr/log (1.0.0)
Downloading: 100%
...
Composer は、CakePHP と約 20 個の依存関係をインストールし、デフォルトのプロジェクトを生成
します。
CakePHP のインストール中に問題が発生した場合は、公式ドキュメントのインストールに関するト
ピック( http://book.cakephp.org/3.0/en/installation.html)を参照してください。
Elastic Beanstalk 環境を作成してアプリケーション
をデプロイする
Composer で作成されたファイルを含むソースバンドル (p. 42)を作成します。任意のプログラムを使用
して ZIP ファイルを作成できます。ただし、内部のファイルが隠しファイルになることが前提です。コ
マンドラインで、以下の zip コマンドを使用します。
~$ cd eb-cake
~/eb-cake$ zip ../cake-default.zip -r * .[^.]*
アクセスできる場所に ZIP アーカイブを保存します。これは、環境を作成するときに Elastic Beanstalk
にアップロードするソースバンドルになります。
API Version 2010-12-01
744
AWS Elastic Beanstalk 開発者ガイド
Elastic Beanstalk 環境を作成してアプリケーションをデプ
ロイする
Note
Elastic Beanstalk 環境でリモートで作業している場合は、AWS CLI の aws cp コマンドを使用
して、Amazon S3 の Elastic Beanstalk ストレージバケットにアーカイブをアップロードでき
ます。
~$ aws s3 cp cake-default.zip s3://elasticbeanstalk-us-west-2-123456789012
Elastic Beanstalk によってこのバケットが作成されるのは、環境を初めて作成するときです。
Amazon S3 にファイルをアップロードするには、お客様の環境のインスタンスプロファイ
ル (p. 21)にバケットへの書き込みアクセス権限が必要です。
AWS マネジメントコンソール を使用して、アプリケーションを実行する Elastic Beanstalk 環境を作成
します。[PHP 5.6] プラットフォーム設定を選択し、プロンプトが表示されたら、ソースバンドルをアッ
プロードします。
環境を起動するには(コンソール)
1.
2.
3.
Elastic Beanstalk コンソールを開きます。
アプリケーションを選択するか、新しいアプリケーションを作成 (p. 39)します。
右上隅で、[Create a New Environment] を選択します。
Note
環境の作成ウィザードで次の画面が表示された場合は、AWS Quick Start Guide: Web App
Deployment を参照してください。
4.
5.
[Create web server] を選択します。
[Predefined configuration] ドロップダウンメニューから、アプリケーションで使用されるプラット
フォームに一致するプラットフォームを選択します。
Note
Elastic Beanstalk は、リストされたほとんどのプラットフォームで複数の設定 (p. 25)をサ
ポートします。アプリケーションで使用される言語、フレームワーク、ウェブコンテナの
バージョンがデフォルト設定と一致しない場合、[Change Platform Version] を選択して別
の設定を選択します。
6.
7.
[Next] を選択します。
[Application Version] で、[Upload your own] を選択し、アプリケーションソースバンドルをアップ
ロードします。[Next] を選択します。
8.
9.
お客様の環境の [Environment name] と URL プレフィックスを入力し、[Next] を選択します。
[Next(次へ)] を選択して、追加リソースの作成を省略します。
10. [Configuration Details(構成の詳細)] については、[Instance type(インスタンスタイプ)] を
t2.micro に設定して、[EC2 key pair](オプション)を選択して [Next(次へ)] を選択します。
キーペアを割り当てることで、デバッグ環境のインスタンスに接続することができます。
Note
以前にキーペアを使用したことがない場合は、『Linux インスタンス用 Amazon EC2 ユー
ザーガイド』の「Amazon EC2 キーペア」を参照してください。
API Version 2010-12-01
745
AWS Elastic Beanstalk 開発者ガイド
Elastic Beanstalk 環境を作成してアプリケーションをデプ
ロイする
11. [Next(次へ)] を選択して、タグの作成を省略します。
12. [Permissions] ページで、[Next] を選択します。デフォルトのインスタンスプロファイルとサービ
スロール (p. 19)がない場合は、Elastic Beanstalk によって自動的に作成されます。
13. [Launch] を選択します。
環境の作成には約 5 分かかります。作成が完了したら、ブラウザーで CakePHP アプリケーションを開
くための URL をクリックします。
API Version 2010-12-01
746
AWS Elastic Beanstalk 開発者ガイド
お客様の環境にデータベースを追加する
ここまで完了したら、次は、お客様の環境にデータベースを追加し、そのデータベースに接続するよう
に CakePHP を設定します。
お客様の環境にデータベースを追加する
Elastic Beanstalk 環境で Amazon RDS データベースインスタンスを起動します。Elastic Beanstalk 上
の CakePHP では、MySQL、SQLServer、または PostgreSQL データベースを使用できます。この例
では、PostgreSQL を使用します。
Elastic Beanstalk 環境に Amazon RDS DB インスタンスを追加するには
1.
2.
Elastic Beanstalk コンソールを開きます。
環境については「management console (p. 50)」をご覧ください。
3.
4.
5.
[Configuration] を選択します。
[Data Tier] セクションで、[create a new RDS database] を選択します。
[DB engine] で、[postgres] を選択します。
6.
マスターの [username] と [password] に入力します。Elastic Beanstalk は環境プロパティを使用し
て、アプリケーションにこれらの値を渡します。
[Apply] を選択します。
7.
データベースインスタンスの作成には約 10 分かかります。その間に、環境から接続情報を読み取るよ
うにソースコードを更新できます。Elastic Beanstalk は、RDS_HOSTNAME などの環境変数を使用して、
接続の詳細をアプリケーションに渡します。
CakePHP のデータベース設定は、プロジェクトコードで config フォルダー内の app.php という名
前のファイルにあります。このファイルを開き、$_SERVER から環境変数を読み取ってローカル変数に
割り当てるコードをいくつか追加します。最初の行(<?php)の後に、以下の例で強調表示された行を
挿入します。
Example ~/eb-cake/config/app.php
<?php
if (!defined('RDS_HOSTNAME')) {
define('RDS_HOSTNAME', $_SERVER['RDS_HOSTNAME']);
define('RDS_USERNAME', $_SERVER['RDS_USERNAME']);
define('RDS_PASSWORD', $_SERVER['RDS_PASSWORD']);
define('RDS_DB_NAME', $_SERVER['RDS_DB_NAME']);
}
return [
...
データベース接続は app.php 内をさらに下がったセクションで設定されています。以下のセクション
を見つけ、データベースエンジン(Mysql、Sqlserver、または Postgres)と一致するドライバの
名前で、デフォルトのデータソース設定を変更し、Elastic Beanstalk から対応する値を読み取るように
host、username、password、database 変数を設定します。
API Version 2010-12-01
747
AWS Elastic Beanstalk 開発者ガイド
お客様の環境にデータベースを追加する
Example ~/eb-cake/config/app.php
...
/**
* Connection information used by the ORM to connect
* to your application's datastores.
* Drivers include Mysql Postgres Sqlite Sqlserver
* See vendor\cakephp\cakephp\src\Database\Driver for complete list
*/
'Datasources' => [
'default' => [
'className' => 'Cake\Database\Connection',
'driver' => 'Cake\Database\Driver\Postgres',
'persistent' => false,
'host' => RDS_HOSTNAME,
/**
* CakePHP will use the default DB port based on the driver selected
* MySQL on MAMP uses port 8889, MAMP users will want to uncomment
* the following line and set the port accordingly
*/
//'port' => 'non_standard_port_number',
'username' => RDS_USERNAME,
'password' => RDS_PASSWORD,
'database' => RDS_DB_NAME,
'encoding' => 'utf8',
'timezone' => 'UTC',
'flags' => [],
'cacheMetadata' => true,
'log' => false,
...
DB インスタンスの起動が完了したら、更新したアプリケーションのバンドルを作成し、お客様の環境
にデプロイします。
Elastic Beanstalk環境を更新するには
1.
新しいソースバンドルを作成します。
~/eb-cake$ zip ../cake-v2-rds.zip -r * .[^.]*
2.
3.
Elastic Beanstalk コンソールを開きます。
環境については「management console (p. 50)」をご覧ください。
4.
5.
[Upload and Deploy] を選択する。
[Browse] を選択し、cake-v2-rds.zip をアップロードします。
6.
[Deploy] を選択します。
アプリケーションの新しいバージョンのデプロイには 1 分以上かかりません。デプロイが完了したら、
ウェブページを更新して、データベースに接続されたことを確認します。
API Version 2010-12-01
748
AWS Elastic Beanstalk 開発者ガイド
クリーンアップと次のステップ
クリーンアップと次のステップ
Elastic Beanstalk での作業が完了したら、PHP 環境を終了できます。
Elastic Beanstalk 環境を終了するには
1.
2.
3.
Elastic Beanstalk コンソールを開きます。
環境については「management console (p. 50)」をご覧ください。
[Actions] を選択してから、[Terminate Environment] を選択します。
Elastic Beanstalk は、EC2 インスタンス、DB インスタンス、ロードバランサー、セキュリティグルー
プ、CloudWatch アラームなど、お客様の環境に関連付けられているすべての AWS リソースをクリー
ンアップします。
CakePHP の詳細については、ドキュメント(book.cakephp.org)をお読みください。
アプリケーションの開発が進むにつれ、多くの場合、ZIP ファイルを手動で作成して Elastic Beanstalk
コンソールにアップロードすることなく、環境を管理してアプリケーションをデプロイする方法が必要
になります。Elastic Beanstalk コマンドラインインターフェイス (p. 403)(EB CLI)には、コマンドラ
インから Elastic Beanstalk 環境を作成、設定、デプロイするための使いやすいコマンドが用意されて
います。
Elastic Beanstalk 環境で Amazon RDS DB インスタンスを実行するのは、開発とテストには最適です
が、データベースのライフサイクルがお客様の環境に結び付けられます。お客様の環境の外で実行され
ているデータベースに接続する手順については、「PHP で Amazon RDS を使用する (p. 754)」を参照
してください。
最後に、本稼働環境でアプリケーションを使用する予定の場合は、お客様の環境にカスタムドメイン名
を設定 (p. 215)し、セキュアな接続のために HTTPS (p. 217) を有効にすることが必要になります。
Symfony2 アプリケーションを Elastic Beanstalk
にデプロイする
Abstract
EB CLI と Git を使用してサンプル PHP アプリケーションを Elastic Beanstalk にデプロイし、アプリケーションを
更新して Symfony2 フレームワークを使用する例。
このセクションでは、Elastic Beanstalk コマンドラインインターフェイス(EB CLI)と Git を使用して
Elastic Beanstalk にサンプルアプリケーションをデプロイした後、Symfony2 フレームワークを使用す
るようにアプリケーションを更新する手順を説明します。
API Version 2010-12-01
749
AWS Elastic Beanstalk 開発者ガイド
ステップ 1: Git リポジトリの設定
ステップ 1: Git リポジトリの設定
EB CLI は Git で使用できるコマンドラインインターフェイスで、アプリケーションを迅速かつより簡
単にデプロイすることができます。EB は、Elastic Beanstalk のコマンドラインツールパッケージの一
部として利用できます。EB CLI のインストール手順については、「EB コマンドラインインターフェイ
ス(CLI)のインストール (p. 403)」を参照してください。
Git リポジトリを初期化します。次のコマンドを実行した後で、eb init を実行すると、EB CLI では
アプリケーションが Git を使用して設定されたと認識されます。
git init .
ステップ 2: Symfony2 開発環境の設定
Symfony2 を設定し、プロジェクト構造を作成します。次に、Linux オペレーティングシステムで
Symfony2 を設定する手順を示します。詳細については、http://symfony.com/download を参照してくだ
さい。
ローカルコンピュータで PHP 開発環境を設定するには
1.
getcomposer.org から composer をダウンロードしインストールします。詳細については、http://
getcomposer.org/download/ を参照してください。
curl -s https://getcomposer.org/installer | php
2.
Composer を使用して Symfony2 Standard Edition をインストールします。入手可能な最新バージョ
ンについては、http://symfony.com/download を参照してください。次のコマンドを使用すると、
composer によりベンダーライブラリがインストールされます。
php composer.phar create-project symfony/framework-standard-edition sym
fony2_example/ <version number>
cd symfony2_example
Note
インストールを正しく終了するには、php.ini に date.timezone の設定が必要になることが
あります。また、必要に応じて Composer のパラメータも指定します。
3.
Git リポジトリを初期化します。
git init
4.
vendor、cache、logs、composer.phar を無視するように .gitignore ファイルを更新します。これ
らのファイルをリモートサーバーにプッシュする必要はありません。
cat > .gitignore <<EOT
app/bootstrap.php.cache
app/cache/*
app/logs/*
vendor
API Version 2010-12-01
750
AWS Elastic Beanstalk 開発者ガイド
ステップ 3: Elastic Beanstalk の設定
composer.phar
EOT
5.
hello バンドルを生成します。
php app/console generate:bundle --namespace=Acme/HelloBundle --format=yml
確認を求められたら、すべてのデフォルト値を承認します。詳細については、Symfony2 でのペー
ジの作成に関するページを参照してください。
次に Composer を設定します。Composer の依存関係では、HOME または COMPOSER_HOME 環境
変数を指定する必要があります。また、Composer を自己更新型として設定し、常に最新のバージョン
を使用できるようにします。
Composer を設定するには
1.
拡張子が [.config](例: composer.config)の設定ファイルを作成し、ソースバンドルの最上位レ
ベルにある .ebextensions ディレクトリに配置します。.ebextensions ディレクトリには複数
の設定ファイルを入れることができます。設定ファイルのファイル形式の詳細については、「設定
ファイル(.ebextensions)による高度な環境のカスタマイズ (p. 147)」を参照してください。
Note
設定ファイルは YAML または JSON 形式の規格に準拠します。詳細は、それぞれ http://
www.yaml.org/start.html または http://www.json.org を参照してください。
2.
.config ファイルでは、次を入力します。
commands:
01updateComposer:
command: export COMPOSER_HOME=/root && /usr/bin/composer.phar self-update
1.0.0-alpha11
option_settings:
- namespace: aws:elasticbeanstalk:application:environment
option_name: COMPOSER_HOME
value: /root
1.0.0-alpha11 をコンポーザーの任意のバージョンに置き換えます。使用可能なバージョンのリ
ストについては、getcomposer.org/download をご参照ください。
ステップ 3: Elastic Beanstalk の設定
次の手順では、Elastic Beanstalk command line interface (p. 403)(EB CLI)を使用して、ローカルプロ
ジェクトディレクトリに Elastic Beanstalk アプリケーションレポジトリを設定します。
Elastic Beanstalk を設定するには
1.
ローカルリポジトリを作成したディレクトリから、次のコマンドを入力します。
eb init
API Version 2010-12-01
751
AWS Elastic Beanstalk 開発者ガイド
ステップ 3: Elastic Beanstalk の設定
2.
3.
Elastic Beanstalk リージョンを要求されたら、リージョンの番号を入力します。この製品のリー
ジョンについては、『Amazon Web Services General Reference』のリージョンとエンドポイント
のページを参照してください。この例では、[US West (Oregon)] を使用します。
Elastic Beanstalk アプリケーション名の入力を求められたら、アプリケーション名を入力します。
アプリケーション名がまだ設定されていない場合、Elastic Beanstalk により現在のディレクトリ名
に基づいてアプリケーション名が生成されます。この例では、symfony2app を使用します。
Enter an AWS Elastic Beanstalk application name (auto-generated value is
"windows"): symfony2app
Note
アプリケーション名にスペースが含まれる場合でも、引用符は使用しないでください。
4.
使用している正しいプラットフォームが Elastic Beanstalk で正常に削除された場合は、「y」と入
力します。それ以外の場合は「n」と入力し、正しいプラットフォームを指定します。
5.
プロンプトが表示されたら、インスタンスに接続するように Secure Shell (SSH) を設定する場合
は、「y」と入力します。SSH を設定しない場合は、「n」と入力します。この例では、「n」を入
力します。
Do you want to set up SSH for your instances?
(y/n): n
6.
実行中の環境を作成します。
eb create
7.
Elastic Beanstalk の環境名の入力を求められたら、環境の名前を入力してください。Elastic Beanstalk
は、アプリケーション名に基づいて環境名を自動的に作成します。デフォルトを使用する場合は、
Enter キーを押します。
Enter Environment Name
(default is HelloWorld-env):
Note
アプリケーション名にスペースが含まれる場合でも、環境名ではスペースを使用しないで
ください。
8.
CNAME プレフィックスを指定するように求められたら、使用する CNAME プレフィックスを入力
します。Elastic Beanstalk では、環境の名前に基づいて CNAME プレフィックスを自動的に作成し
ます。デフォルトを使用する場合は、Enter キーを押します。
Enter DNS CNAME prefix
(default is HelloWorld):
Elastic Beanstalk を設定すると、サンプルアプリケーションをデプロイできるようになります。
API Version 2010-12-01
752
AWS Elastic Beanstalk 開発者ガイド
ステップ 4: アプリケーションの表示
Elastic Beanstalk の設定を更新する場合は、もう一度 init コマンドを使用します。プロンプトが表示
されたら、設定オプションを更新できます。前の設定を維持する場合は、Enter キーを押します。
サンプルアプリケーションをデプロイするには
•
ローカルリポジトリを作成したディレクトリから、次のコマンドを入力します。
eb deploy
このプロセスは完了までに数分かかることがあります。このプロセス中に、Elastic Beanstalk がス
テータスを更新します。ステータス更新のポーリングは、Ctrl+C キーを押すことでいつでも停止で
きます。環境のステータスが緑になると、Elastic Beanstalk はアプリケーションの URL を出力し
ます。URL をコピーしてウェブブラウザに貼り付け、アプリケーションを表示できます。
ステップ 4: アプリケーションの表示
アプリケーションを表示するには
•
ブラウザウィンドウでアプリケーションを開くには、次を入力します。
eb open
ステップ 5: アプリケーションの更新
サンプルアプリケーションをデプロイした後、独自のアプリケーションで更新できます。このステップ
では、サンプルアプリケーションを簡単な "Hello World" Symfony2 アプリケーションで更新します。
サンプルアプリケーションを更新するには
1.
ファイルをローカルの Git リポジトリに追加し、変更をコミットします。
git add -A && git commit -m "Initial commit"
Note
Git コマンドの詳細については、「Git – Fast Version Control System」を参照してくださ
い。
2.
ローカルリポジトリに一致するアプリケーションバージョンを作成し、Elastic Beanstalk 環境にデ
プロイします(指定した場合)。
eb deploy
3.
また、特定のブランチから特定の環境にプッシュするよう Git を設定することもできます。詳細に
ついては、「EB CLI による Elastic Beanstalk 環境の管理 (p. 413)」の「EB CLI での Git の使用」を
参照してください。
環境が緑色で示されていて準備が完了したら、アプリケーションの URL に /web/hello/AWS を追
加します。アプリケーションは "Hello AWS!" を書き出します。
API Version 2010-12-01
753
AWS Elastic Beanstalk 開発者ガイド
ステップ 6: クリーンアップ
アプリケーションを実行している EC2 インスタンスのログにアクセスできます。ログのアクセス手順
については、「インスタンスログ (p. 296)」を参照してください。
ステップ 6: クリーンアップ
アプリケーションを実行したくない場合は、環境を終了し、アプリケーションを削除してクリーンアッ
プできます。
環境を終了するには terminate コマンドを、アプリケーションを削除するには delete コマンドを使
用します。
環境を終了するには、アプリケーションを削除できます。
•
ローカルリポジトリを作成したディレクトリから、eb terminate を実行します。
$ eb terminate
このプロセスには数分かかることがあります。環境が正常に終了すると、Elastic Beanstalk にメッ
セージが表示されます。
PHP で Amazon RDS を使用する
Abstract
Relational Database Service(Amazon RDS)を PHP で使用し、クラウド内の MySQL、Oracle、PostgreSQL、ま
たは Microsoft SQL Server インスタンスをプロビジョニングして、保守します。
Relational Database Service(Amazon RDS)を使用すると、クラウド内の MySQL、Oracle、
PostgreSQL、または Microsoft SQL Server インスタンスをすばやく簡単にプロビジョニングし、保守
することができます。このトピックでは、Elastic Beanstalk アプリケーションで Amazon RDS と PHP
を使用する方法を説明します。Amazon RDS の詳細については、http://aws.amazon.com/rds/ を参照し
てください。
Elastic Beanstalk アプリケーションで Amazon RDS を使用するには、次の手順を実行する必要があり
ます。
1. Amazon RDS DB インスタンスを作成します。
2. PDO を使用する予定の場合は PDO ドライバをインストールします。詳細については、http://
www.php.net/manual/pdo.installation.php を参照してください。
3. Amazon RDS DB インスタンスへの接続情報を使用して、コードでデータベース接続を確立します。
4. アプリケーションを Elastic Beanstalk にデプロイします。
このトピックでは、以下について説明します。
• アプリケーションで新しい Amazon RDS DB インスタンスを使用する
• アプリケーションで既存の Amazon RDS DB インスタンスを使用する
API Version 2010-12-01
754
AWS Elastic Beanstalk 開発者ガイド
PHP で新しい Amazon RDS DB インスタンスを使用する
PHP で新しい Amazon RDS DB インスタンスを使用
する
このトピックでは、新しい Amazon RDS DB インスタンスを作成し、PHP アプリケーションで使用す
る手順を示します。
Elastic Beanstalk アプリケーションから新しい Amazon RDS DB インスタンスと PHP を使用
するには
1.
Amazon RDS DB インスタンスを作成します。次のいずれかの方法で RDS DB インスタンスを作
成できます。
• 新しいアプリケーションバージョンを作成する場合は、Amazon RDS DB インスタンスを作成し
ます。Elastic Beanstalk コンソールを使用する手順については、「アプリケーションを作成しま
す。 (p. 39)」を参照してください。Amazon RDS を使用して CakePHP アプリケーションをデ
プロイするサンプルチュートリアルについては、「CakePHP アプリケーションを Elastic Beanstalk
にデプロイする (p. 742)」を参照してください。
• 既存のアプリケーションバージョンで新しい環境を起動する場合は、Amazon RDS DB インスタ
ンスを作成します。AWS Elastic Beanstalk コンソールを使用する手順については、「AWS Elastic
Beanstalk 環境を作成する (p. 53)」を参照してください。
• アプリケーションを Elastic Beanstalk にすでにデプロイしている場合、Amazon RDS DB イン
スタンスを作成し、既存の環境にアタッチすることができます。AWS Elastic Beanstalk コンソー
ルを使用する手順については、「Elastic Beanstalk でデータベースを設定する (p. 209)」を参照し
てください。EB CLI を使用する場合には、eb create 実行時に --database オプションを選
びます。
2.
PDO を使用する予定の場合は PDO ドライバをインストールします。詳細については、http://
www.php.net/manual/pdo.installation.php を参照してください。
3.
Amazon RDS DB インスタンスの接続情報を使用してコードでデータベース接続を確立します。環
境変数を使用して接続情報にアクセスできます。次の例は RDS インスタンスでデータベースに接
続する方法を示します。
Example 1. PDO を使用して RDS データベースに接続する例
<?php
$dbhost = $_SERVER['RDS_HOSTNAME'];
$dbport = $_SERVER['RDS_PORT'];
$dbname = $_SERVER['RDS_DB_NAME'];
$dsn = "mysql:host={$dbhost};port={$dbport};dbname={$dbname}";
$username = $_SERVER['RDS_USERNAME'];
$password = $_SERVER['RDS_PASSWORD'];
$dbh = new PDO($dsn, $username, $password);
?>
PDO を使用して接続文字列を構築する方法の詳細については、http://us2.php.net/manual/en/
pdo.construct.php を参照してください。
API Version 2010-12-01
755
AWS Elastic Beanstalk 開発者ガイド
PHP で既存の Amazon RDS DB インスタンスを使用する
Example 2. mysqli_connect() を使用して RDS データベースに接続する例
$link = mysqli_connect($_SERVER['RDS_HOSTNAME'], $_SERVER['RDS_USERNAME'],
$_SERVER['RDS_PASSWORD'], $_SERVER['RDS_DB_NAME'], $_SERVER['RDS_PORT']);
mysqli_connect() の使用方法の詳細については、http://www.phpbuilder.com/manual/
function.mysqli-connect.php を参照してください。
4.
更新されたアプリケーションを Elastic Beanstalk 環境にデプロイします。
PHP で既存の Amazon RDS DB インスタンスを使用
する
以前に作成した Amazon RDS DB インスタンスを使用するように アプリケーションを更新できます。
このトピックでは、既存の Amazon RDS DB インスタンスを使用して PHP アプリケーションを更新
し、アプリケーションを Elastic Beanstalk にデプロイする方法について説明します。
Elastic Beanstalk アプリケーションから既存の Amazon RDS DB インスタンスと PHP を使用
するには
1.
次のいずれかの方法で Elastic Beanstalk 環境を作成します。
• 新しい環境で新しいアプリケーションを作成します。Elastic Beanstalk コンソールを使用する手
順については、「アプリケーションを作成します。 (p. 39)」を参照してください。Amazon RDS
を使用して CakePHP アプリケーションをデプロイするサンプルチュートリアルについては、
「CakePHP アプリケーションを Elastic Beanstalk にデプロイする (p. 742)」を参照してくださ
い。既存の RDS DB インスタンスがあるため、この環境で RDS DB インスタンスを作成する必
要はありません。
• 既存のアプリケーションバージョンで新しい環境を起動します。Elastic Beanstalk コンソールを
使用する手順については、「AWS Elastic Beanstalk 環境を作成する (p. 53)」を参照してくださ
い。すでに既存の Amazon RDS DB インスタンスがあるため、この環境で Amazon RDS DB イ
ンスタンスを作成する必要はありません。
2.
3.
4.
Amazon RDS DB セキュリティグループを設定し、Elastic Beanstalk アプリケーションに使用する
Amazon EC2 セキュリティグループからアクセスできるようにします。AWS マネジメントコン
ソールを使用した EC2 セキュリティグループ名の検索手順については、「セキュリティグルー
プ (p. 200)」を参照してください。詳細については、「Amazon Relational Database Service User
Guide」の「Working with DB Security Groups」の「Authorizing Network Access to an Amazon EC2
Security Group」セクションを参照してください。
PDO を使用する予定の場合は PDO ドライバをインストールします。詳細については、http://
www.php.net/manual/pdo.installation.php を参照してください。
Amazon RDS DB インスタンスの接続情報を使用してコードでデータベース接続を確立します。次
の例は、mydbinstance.abcdefghijkl.us-west-2.rds.amazonaws.com にある RDS インスタンスの
データベースに、ポート 3306、ユーザー名 "sa"、パスワード "mypassword" を使用して接続する
方法を示しています。
API Version 2010-12-01
756
AWS Elastic Beanstalk 開発者ガイド
PHP 環境設定
Example 1. PDO を使用して RDS データベースに接続する例
<?php
$dsn = 'mysql:host=mydbinstance.abcdefghijkl.us-east-1.rds.amazon
aws.com;port=3306;dbname=mydb';
$username = 'sa';
$password = 'mypassword';
$dbh = new PDO($dsn, $username, $password);
?>
PDO を使用して接続文字列を構築する方法の詳細については、http://us2.php.net/manual/en/
pdo.construct.php を参照してください。
Example 2. mysqli_connect() を使用して RDS データベースに接続する例
$link = mysqli_connect('mydbinstance.abcdefghijkl.us-east-1.rds.amazon
aws.com', 'sa', 'mypassword', 'mydb', 3306);
mysqli_connect() の使用方法の詳細については、http://www.phpbuilder.com/manual/
function.mysqli-connect.php を参照してください。
5.
更新されたアプリケーションを Elastic Beanstalk 環境にデプロイします。
Elastic Beanstalk での PHP 環境の設定
Abstract
Elastic Beanstalk アプリケーションの PHP コンテナを設定します。
Elastic Beanstalk 環境の Amazon EC2 インスタンス設定を編集するには、AWS マネジメントコンソー
ルを使用します。PHP 環境の設定では、Amazon EC2 インスタンスの動作を微調整し、Amazon S3 ロ
グのローテーションを有効または無効にすることができます。
PHP 環境の設定オプションにアクセスするには
1.
Elastic Beanstalk コンソールを開きます。
2.
3.
4.
環境については「management console (p. 50)」をご覧ください。
[Configuration] を選択します。
[Software Configuration] セクションで、
を選択します。
コンテナオプション
設定ページで、次のように指定します。
• Document root – パブリック向けウェブのルートとして処理されるプロジェクトの子ディレクトリを
指定できます。ルートドキュメントがプロジェクトディレクトリに保存されている場合は、この設定
を "/" のままにします。ルートドキュメントが子ディレクトリ内(<project>/public など)にある場
合、この値はその子ディレクトリと一致するように設定します。値の先頭の文字には "/" を使用しま
す。先頭に "." を使用することはできません(この値は http-vhosts.conf ファイルに書き込まれます)。
• Memory limit – PHP 環境に割り当てられるメモリ量を指定します(この値は php.ini ファイルに書
き込まれます)。
API Version 2010-12-01
757
AWS Elastic Beanstalk 開発者ガイド
ログオプション
• Allow URL fopen – PHP ファイルの機能で、ウェブサイトや FTP サーバーなどのリモートロケーショ
ンからデータを取得できるようにするかどうかを指定します。(この値は php.ini ファイルに書き込
まれます)。
• Display errors – エラーメッセージを出力に含めるかどうかを指定します。(この値は php.ini ファ
イルに書き込まれます)。
• Max execution time – 環境によって終了されるまでの、スクリプトを実行できる最大時間(秒単位)
を設定します。これは、書き込みが不十分なうちに、スクリプトがサーバーに関連付けられないよう
にするのに役立ちます。
ログオプション
[Log Options] セクションには、2 つの設定があります。
• Instance profile – アプリケーションに関連付けられた Amazon S3 バケットへのアクセス許可が付与
されているインスタンスプロファイルを指定します。
• Enable log file rotation to Amazon S3 – アプリケーションの Amazon EC2 インスタンスのログファイ
ルを、アプリケーションに関連付けられている Amazon S3 バケットにコピーするかどうかを指定し
ます。
環境プロパティ
[Environment Properties] セクションでは、アプリケーションを実行している Amazon EC2 インスタン
スの環境設定を指定できます。これらの設定は、キーと値のペアでアプリケーションに渡されます。
Elastic Beanstalk を実行する PHP 環境内部で、これらの値は /etc/php.d/environment.ini に書き込まれ、
$_SERVER を使用してアクセスできます。
Note
get_cfg_var 関数もサポートされます。
キーとパラメータにアクセスするには、次のようなコードを使用します。
echo $_SERVER['PARAM1'];
echo $_SERVER['PARAM2'];
echo $_SERVER['PARAM5'];
Note
環境設定では、アクセント記号(`、ASCII 96)は除く、印刷可能な ASCII 文字を使用できま
す。また、200 文字を超えることはできません。
PHP プラットフォーム名前空間
追加の設定オプションは aws:elasticbeanstalk:container:php:phpini 名前空間で使用できま
す。
<listitem>
[Composer Options] では、composer.phar インストールで Composer を使用して依存関係をインストー
ルするときに使用するカスタムオプションを設定します(この値は php.ini ファイルに書き込まれま
す)。使用できるオプションの詳細については、http://getcomposer.org/doc/03-cli.md#install を参照し
てください。
API Version 2010-12-01
758
AWS Elastic Beanstalk 開発者ガイド
ツールとリソース
</listitem>
以下の設定ファイルの例では、この名前空間で使用できる各オプションの設定を示しています。
config_options:
aws:elasticbeanstalk:container:php:phpini:
document_root: /public
memory_limit: 128M
zlib.output_compression: Off
allow_url_fopen: On
display_errors: Off
max_execution_time: 60
composer_options: vendor/package
ツールとリソース
Abstract
Elastic Beanstalk での PHP 開発用のツールとリソースについて説明します。
AWS SDK for PHP では、AWS PHP ライブラリ、コードサンプル、資料が単一のダウンロード可能な
パッケージにまとめられているので、数分で使用を開始できます。API 上に PHP アプリケーションを
構築できるため、ウェブサービスのインターフェイスに対して直接コーディングをする複雑さがなくな
ります。オールインワンのライブラリは、認証、再試行リクエスト、エラー処理を含む、AWS クラウ
ドのプログラミングに関連する低レベルのタスクを非表示にする PHP の開発者フレンドリーな API を
提供します。ライブラリを使用したアプリケーションの構築方法については、PHP による実用的な例
が用意されています。ライブラリとコードサンプルの使用方法の学習に役立てるため、オンラインの動
画チュートリアルとリファレンスドキュメントが用意されています。AWS SDK for PHP の詳細につい
ては、http://aws.amazon.com/sdkforphp/ を参照してください。
PHP アプリケーションを開発するときに役に立つ参照先を次に示します。
リソース
説明
GitHub
GitHub を使用して AWS SDK for PHP をインストールしま
す。
PHP 開発フォーラム
質問を投稿してフィードバックを得ることができます。
PHP 開発者センター
サンプルコード、ドキュメント、ツール、追加リソースを
1 か所で入手できる場所です。
AWS SDK for PHP FAQ
一般的な質問について回答を確認できます。
API Version 2010-12-01
759
AWS Elastic Beanstalk 開発者ガイド
開発環境
Python の使用
Abstract
AWS Elastic Beanstalk で使用する Python アプリケーションを開発します。
このセクションでは、AWS Elastic Beanstalk を使用した Python アプリケーションのデプロイに関する
チュートリアルと情報を提供します。
トピック
• Python 開発環境をセットアップする (p. 760)
• AWS Elastic Beanstalk への Flask アプリケーションのデプロイ (p. 762)
• Elastic Beanstalk への Django アプリケーションのデプロイ (p. 769)
• Amazon RDS データベースインスタンスを Elastic Beanstalk 環境に追加する (p. 778)
• AWS Elastic Beanstalk Python 環境の設定 (p. 781)
• Python のツールとリソース (p. 784)
Python 開発環境をセットアップする
Abstract
Elastic Beanstalk で使用する Python 開発環境を設定する
AWS Elastic Beanstalk では、Python アプリケーションをデプロイするための一貫性のあるインター
フェイスを提供しているため、使用するアプリケーションフレームワークに関係なく、またアプリケー
ションフレームワークを使用しているかどうかに関係なく、共通の手順を使用できます。
セクション
• 一般的な前提条件 (p. 761)
• 仮想 Python 環境の設定 (p. 761)
• Elastic Beanstalk 用に Python プロジェクトを設定する (p. 762)
API Version 2010-12-01
760
AWS Elastic Beanstalk 開発者ガイド
一般的な前提条件
一般的な前提条件
Important
Elastic Beanstalk を含め、アマゾン ウェブ サービス(AWS)を使用するには、AWS アカウン
トと認証情報が必要です。詳細を確認し、サインアップするには、https://aws.amazon.com/ に
アクセスしてください。
Elastic Beanstalk を使用してデプロイするすべての Python アプリケーションについて、以下の前提条
件は共通しています。
1. Python 2.7 または 3.4
2. ご使用の Python のバージョンに応じた pip ユーティリティ。これは、アプリケーション環境のセッ
トアップ方法を Elastic Beanstalk が判断できるように、プロジェクトの依存関係をインストールし
一覧表示するために使用されます。
3. virtualenv パッケージ。これは、アプリケーションの開発とテストに使用する環境を作成するた
めに使用されます。これにより、アプリケーションに必要ない余分なパッケージをインストールす
ることなく、その環境を Elastic Beanstalk がレプリケートできます。
4. awsebcli パッケージ。Elastic Beanstalk によるデプロイに必要なファイルを使用して、アプリケー
ションを初期化するのに使用されます。
5. 正常に機能する ssh インストール。これは、デプロイの調査またはデバッグが必要なときに、実行
中のインスタンスに接続するために使用されます。
Python、pip、EB CLI のインストール手順については、「EB コマンドラインインターフェイス(CLI)
のインストール (p. 403)」を参照してください。
仮想 Python 環境の設定
前提条件をインストールしたら、virtualenv を使用して仮想環境をセットアップし、アプリケーショ
ンの依存関係をインストールします。仮想環境を使用することで、アプリケーションで必要なパッケー
ジを正確に識別し、アプリケーションを実行する EC2 インスタンスにそれらの必要なパッケージをイ
ンストールすることができます。
仮想環境をセットアップするには
1.
コマンドラインウィンドウを開き、次のように入力します。
virtualenv -p python2.7 /tmp/eb_python_app
eb_python_app を、アプリケーションに対応するわかりやすい名前に置き換えます(アプリケー
ション名やディレクトリ名を使用することをお勧めします)。virtualenv コマンドによって仮想
環境が作成され、アクションの結果が出力されます。
Running virtualenv with interpreter /usr/bin/python2.7
New python executable in /tmp/eb_python_app/bin/python2.7
Also creating executable in /tmp/eb_python_app/bin/python
Installing setuptools, pip...done.
2.
仮想環境の準備が整ったら、環境の bin ディレクトリにある activate スクリプトを実行して起
動します。たとえば、前のステップで作成した eb_python_app 環境を開始するには、次のよう
に入力します。
API Version 2010-12-01
761
AWS Elastic Beanstalk 開発者ガイド
Elastic Beanstalk 用に Python プロジェクトを設定する
. /tmp/eb_python_app/bin/activate
コマンドプロンプトの冒頭には毎回、仮想環境の名前(例: (eb_python_app))が出力され、仮
想 Python 環境を使用していることがわかるようになっています。
Note
仮想環境の作成後は、activate スクリプトを再び実行することで、いつでも再起動できま
す。
Elastic Beanstalk 用に Python プロジェクトを設定す
る
Elastic Beanstalk CLI を使用して、Elastic Beanstalk を使用した Python アプリケーションのデプロイ
を準備できます。
Elastic Beanstalk でのデプロイ用に Python アプリケーションを設定するには
1.
仮想環境 (p. 761)で、プロジェクトのディレクトリツリーの最上位(python_eb_app)に戻り、次
のように入力します。
pip freeze >requirements.txt
このコマンドは、仮想環境にインストールされているパッケージの名前とバージョンを
requirements.txt にコピーします。たとえば、PyYAML パッケージ、バージョン 3.11 が仮想環境に
インストールされている場合、このファイルには次の行が含まれます。
PyYAML==3.11
2.
これにより、Elastic Beanstalk は、アプリケーションの開発とテストに使用されたのと同じパッ
ケージとバージョンを使用して、アプリケーションの Python 環境をレプリケートすることができ
ます。
eb init コマンドで EB CLI リポジトリを設定します。画面の指示に従ってリージョン、プラット
フォーム、その他のオプションを選択します。詳細な手順については、「EB CLI による Elastic
Beanstalk 環境の管理 (p. 413)」を参照してください。
デフォルトでは、Elastic Beanstalk は、アプリケーションを開始するために application.py という
ファイルを探します。作成した Python プロジェクトにこのファイルが存在しない場合は、アプリケー
ション環境の調整が必要になります。また、アプリケーションのモジュールをロードできるように、環
境変数を設定する必要があります。詳細については、「AWS Elastic Beanstalk Python 環境の設
定 (p. 781)」を参照してください。
AWS Elastic Beanstalk への Flask アプリケーショ
ンのデプロイ
Abstract
EB CLI で Flask アプリケーションを作成し、設定して、AWS Elastic Beanstalk にデプロイします。
API Version 2010-12-01
762
AWS Elastic Beanstalk 開発者ガイド
前提条件
このチュートリアルでは、Python 2.7 を実行している Elastic Beanstalk 環境への単純な Flask ウェブ
サイトのデプロイについて説明します。デプロイメカニズムとして EB CLI を使用しますが、プロジェ
クトの内容を含む ZIP ファイルをデプロイするために AWS マネジメントコンソール を使用すること
もできます。EB CLI は、Python SDK for AWS(boto)を使用する Python で記述されたインタラクティ
ブなコマンドラインインターフェイスです。
セクション
• 前提条件 (p. 763)
• Flask で Python 仮想環境を設定する (p. 763)
• Flask アプリケーションを作成する (p. 764)
• Elastic Beanstalk 用に Flask アプリケーションを設定する (p. 766)
• EB CLI でサイトをデプロイする (p. 767)
• クリーンアップと次のステップ (p. 768)
前提条件
Elastic Beanstalk を含め、アマゾン ウェブ サービス(AWS)を使用するには、AWS アカウントと認
証情報が必要です。詳細を確認し、サインアップするには、https://aws.amazon.com/ にアクセスして
ください。
このチュートリアルを実行するには、以下のパッケージを含む、インストールされている Python の一
般的な前提条件 (p. 760)をすべて満たす必要があります。
•
•
•
•
Python 2.7
pip
virtualenv
awsebcli
チュートリアルの一部として Flask フレームワークをインストールします。
Note
EB CLI を使用して環境を作成するには、サービスロール (p. 20)が必要です。Elastic Beanstalk
管理コンソールで環境を作成することで、サービスロールを作成できます。サービスロールが
ない場合は、eb create を実行したときに EB CLI によって作成されます。
Flask で Python 仮想環境を設定する
virtualenv で仮想環境を作成し、それを使用して Flask とその依存関係をインストールします。仮想環
境を使用することで、アプリケーションで必要なパッケージを正確に識別し、アプリケーションを実行
する EC2 インスタンスにそれらの必要なパッケージをインストールすることができます。
開発環境を設定するには
1.
eb-virt という名前の仮想環境を作成します。
~$ virtualenv eb-virt
2.
仮想環境をアクティブ化します。
API Version 2010-12-01
763
AWS Elastic Beanstalk 開発者ガイド
Flask アプリケーションを作成する
~$ source ~/eb-virt/bin/activate
(eb-virt) ~$
3.
コマンドプロンプトの先頭に (eb-virt) と表示され、仮想環境を使用していることが示されま
す。
pip を使用して、次のように入力して Flask をインストールします。
(eb-virt)~$ pip install flask==0.10.1
4.
Flask がインストールされたことを確認するには、次のように入力します。
(eb-virt)~$ pip freeze
Flask==0.10.1
itsdangerous==0.24
Jinja2==2.7.3
MarkupSafe==0.23
Werkzeug==0.10.1
このコマンドは、仮想環境にインストールされるすべてのパッケージを一覧します。後でこのコマ
ンドの出力を使用して、プロジェクトを Elastic Beanstalk で使用するために設定します。
Flask アプリケーションを作成する
次に、Elastic Beanstalk を使用してデプロイするアプリケーションを作成します。ここでは、"Hello
World" という RESTful ウェブサービスを作成します。
Hello World Flask アプリケーションを作成するには
1.
仮想環境をアクティブ化します。
~$ source ~/eb-virt/bin/activate
2.
プロジェクト用に eb-flask という名前のディレクトリを作成します。
(eb-virt) ~$ mkdir eb-flask
(eb-virt) ~$ cd eb-flask
3.
このディレクトリに、application.py という名前と以下の内容で新しいテキストファイルを作
成します。
API Version 2010-12-01
764
AWS Elastic Beanstalk 開発者ガイド
Flask アプリケーションを作成する
Example ~/eb-flask/application.py
from flask import Flask
# print a nice greeting.
def say_hello(username = "World"):
return '<p>Hello %s!</p>\n' % username
# some bits of text for the page.
header_text = '''
<html>\n<head> <title>EB Flask Test</title> </head>\n<body>'''
instructions = '''
<p><em>Hint</em>: This is a RESTful web service! Append a username
to the URL (for example: <code>/Thelonious</code>) to say hello to
someone specific.</p>\n'''
home_link = '<p><a href="/">Back</a></p>\n'
footer_text = '</body>\n</html>'
# EB looks for an 'application' callable by default.
application = Flask(__name__)
# add a rule for the index page.
application.add_url_rule('/', 'index', (lambda: header_text +
say_hello() + instructions + footer_text))
# add a rule when the page is accessed with a name appended to the site
# URL.
application.add_url_rule('/<username>', 'hello', (lambda username:
header_text + say_hello(username) + home_link + footer_text))
# run the app.
if __name__ == "__main__":
# Setting debug to True enables debug output. This line should be
# removed before deploying a production app.
application.debug = True
application.run()
この例では、サービスへのアクセスに使用されるパスに基づいて変更されるカスタマイズされた挨
拶を出力します。
Note
アプリケーションを実行する前に application.debug = True を追加することで、問
題が発生した場合にデバッグ出力が有効になります。これは開発の場合に有用な方法です
が、デバッグ出力によってアプリケーションの内部的な側面が明らかになる可能性がある
ため、実稼働のコードではデバッグステートメントを削除する必要があります。
4.
ファイル名として application.py を使用し、呼び出し可能な application オブジェクト(こ
の場合は Flask オブジェクト)を提供することで、Elastic Beanstalk がアプリケーションコードを
見つけやすくなります。
Python を使用して application.py を実行します。
(eb-virt) ~/eb-flask$ python application.py
Flask がウェブサーバーを起動し、アプリケーションにアクセスするための URL が表示されます。
以下に例を示します。
API Version 2010-12-01
765
AWS Elastic Beanstalk 開発者ガイド
Elastic Beanstalk 用に Flask アプリケーションを設定する
* Running on http://127.0.0.1:5000/ (Press CTRL+C to quit)
* Restarting with stat
5.
この URL をウェブブラウザで開きます。実行中のアプリケーションが表示され、インデックスペー
ジが表示されます。
6.
サーバーログをチェックして、リクエストからの出力を確認します。ウェブサーバーを停止し、
Ctrl+C を押して、仮想環境に戻ることができます。
デバッグ出力が表示される場合は、Elastic Beanstalk 用に設定する前に、エラーを修正し、そのアプリ
ケーションがローカルで実行されることを確認します。
Elastic Beanstalk 用に Flask アプリケーションを設定
する
アプリケーションがローカルで実行されたら、Elastic Beanstalk でのデプロイ用に設定する準備が整っ
ています。
Elastic Beanstalk 用にサイトを設定するには
1.
仮想環境をアクティブ化します。
~$ source ~/eb-virt/bin/activate
2.
pip freeze を実行して出力を requirements.txt という名前のファイルに保存します。
(eb-virt) ~/eb-flask$ pip freeze > requirements.txt
3.
Elastic Beanstalk は requirements.txt を使用して、アプリケーションを実行する EC2 インス
タンスにどのパッケージをインストールするかを判断します。
deactivate コマンドを使用して、仮想環境を非アクティブ化します。
(eb-virt) ~/eb-flask$ deactivate
API Version 2010-12-01
766
AWS Elastic Beanstalk 開発者ガイド
EB CLI でサイトをデプロイする
追加パッケージをアプリケーションに追加するか、またはアプリケーションをローカルで実行する
必要があるときは、いつでも仮想環境を再アクティブ化します。
EB CLI でサイトをデプロイする
Elastic Beanstalk でアプリケーションをデプロイするために必要な条件をすべて追加しました。プロ
ジェクトディレクトリは次のようになります。
~/eb-flask/
|-- application.py
`-- requirements.txt
次に、アプリケーション環境を作成し、設定済みのアプリケーションを Elastic Beanstalk を使用して
デプロイします。
環境を作成し、Flask アプリケーションをデプロイするには
1.
eb init コマンドで EB CLI リポジトリを初期化します。
~/eb-flask$ eb init -p python2.7 flask-tutorial
Application flask-tutorial has been created.
2.
このコマンドは、flask-tutorial という名前の新しいアプリケーションを作成し、最新の Python
2.7 プラットフォーム設定で環境を作成するようにローカルリポジトリを設定します。
(オプション)eb init を再び実行してデフォルトのキーペアを設定し、アプリケーションを実
行している EC2 インスタンスに SSH で接続できるようにします。
~/eb-flask$ eb init
Do you want to set up SSH for your instances?
(y/n): y
Select a keypair.
1) my-keypair
2) [ Create new KeyPair ]
3.
1 つのキーペアがすでにある場合はそれを選択するか、またはプロンプトに従って新しいキーペア
を作成します。プロンプトが表示されないか設定を後で変更する必要がない場合は、eb init -i
を実行します。
環境を作成し、eb create を使用してそこにアプリケーションをデプロイします。
~/eb-flask$ eb create flask-env
Note
「service role required」エラーメッセージが表示された場合は、eb create をインタラ
クティブに (環境名を指定せずに) 実行してください。EB CLI によってロールが作成され
ます。
4.
このコマンドは、flask-env という名前の負荷分散 Elastic Beanstalk 環境を作成します。環境の
作成には約 5 分かかります。Elastic Beanstalk はアプリケーションを実行するのに必要なリソース
を作成し、EB CLI がターミナルに中継する情報メッセージを出力します。
環境作成プロセスが完了したら、eb open でウェブサイトを開きます。
API Version 2010-12-01
767
AWS Elastic Beanstalk 開発者ガイド
クリーンアップと次のステップ
~/eb-flask$ eb open
これにより、アプリケーション用に作成されたドメイン名を使用してブラウザウィンドウが開きま
す。ローカルで作成してテストしたのと同じ Flask ウェブサイトが表示されます。
アプリケーションが実行されていることを確認できない場合や、エラーメッセージが表示される場合
は、エラーの原因を判断する方法のヒントを得るために「デプロイのトラブルシューティング (p. 760)」
を参照してください。
アプリケーションが実行されていることを実際に確認できた場合は、Elastic Beanstalk での最初の Flask
アプリケーションのデプロイが正常に完了しています。
クリーンアップと次のステップ
インスタンス時間と開発セッション間の他の AWS リソースを保存するには、eb terminate を使用し
て Elastic Beanstalk 環境を終了します。
~/eb-flask$ eb terminate flask-env
このコマンドは、環境とその中で実行されているすべての AWS リソースを終了します。これによって
アプリケーションが削除されることはありません。したがって eb create を実行することで、いつで
も同じ設定でさらに環境を作成することができます。EB CLI コマンドの詳細については、「EB CLI に
よる Elastic Beanstalk 環境の管理 (p. 413)」を参照してください。
サンプルアプリケーションで実行した場合は、プロジェクトフォルダと仮想環境を削除することもでき
ます。
~$ rm -rf ~/eb-virt
~$ rm -rf ~/eb-flask
詳細なチュートリアルを含め Flask の詳細については、公式ドキュメント を参照してください。
別の Python ウェブフレームワークを試してみる場合は、「Elastic Beanstalk への Django アプリケー
ションのデプロイ (p. 769)」を確認してください。
API Version 2010-12-01
768
AWS Elastic Beanstalk 開発者ガイド
チュートリアル - Django 1.9
Elastic Beanstalk への Django アプリケーションの
デプロイ
Abstract
EB CLI で Django アプリケーションを作成、設定し、AWS Elastic Beanstalk にデプロイします。
このチュートリアルでは、デフォルトの Django ウェブサイトを、Python 2.7 を実行している Elastic
Beanstalk 環境にデプロイする方法について説明します。チュートリアルでは、デプロイのメカニズム
として EB CLI を使用しますが、AWS マネジメントコンソール を使用してプロジェクトのコンテンツ
を含む ZIP ファイルをデプロイすることもできます。EB CLI は、Python SDK for AWS(boto)を使用
する Python で記述されたインタラクティブなコマンドラインインターフェイスです。
セクション
•
•
•
•
•
•
•
前提条件 (p. 769)
Django で Python 仮想環境を設定する (p. 769)
Django プロジェクトを作成する (p. 770)
Elastic Beanstalk 用に Django をアプリケーションを設定する (p. 772)
EB CLI でサイトをデプロイする (p. 772)
アプリケーションの更新 (p. 774)
クリーンアップと次のステップ (p. 778)
前提条件
Elastic Beanstalk を含め、アマゾン ウェブ サービス(AWS)を使用するには、AWS アカウントと認
証情報が必要です。詳細を確認し、サインアップするには、https://aws.amazon.com/ にアクセスして
ください。
このチュートリアルを実行するには、以下のパッケージを含む、インストールされている Python の一
般的な前提条件 (p. 760)をすべて満たす必要があります。
•
•
•
•
Python 2.7
pip
virtualenv
awsebcli
チュートリアルの一部として Django フレームワークをインストールします。
Note
EB CLI を使用して環境を作成するには、サービスロール (p. 20)が必要です。Elastic Beanstalk
管理コンソールで環境を作成することで、サービスロールを作成できます。サービスロールが
ない場合は、eb create を実行したときに EB CLI によって作成されます。
Django で Python 仮想環境を設定する
virtualenv で仮想環境を作成し、それを使用して Django とその依存関係をインストールします。仮想
環境を使用することで、アプリケーションで必要なパッケージを正確に識別し、アプリケーションを実
行する EC2 インスタンスにそれらの必要なパッケージをインストールすることができます。
API Version 2010-12-01
769
AWS Elastic Beanstalk 開発者ガイド
Django プロジェクトを作成する
開発環境を設定するには
1.
eb-virt という名前の仮想環境を作成します。
~$ virtualenv eb-virt
2.
仮想環境をアクティブ化します。
~$ source ~/eb-virt/bin/activate
(eb-virt) ~$
3.
コマンドプロンプトの先頭に (eb-virt) と表示され、仮想環境を使用していることが示されま
す。
pip を使用して、次のように入力して Django をインストールします。
(eb-virt)~$ pip install django==1.9.2
4.
Django がインストールされたことを確認するには、次のように入力します。
(eb-virt)~$ pip freeze
Django==1.9.2
wheel==0.29.0
このコマンドは、仮想環境にインストールされるすべてのパッケージを一覧します。後でこのコマ
ンドの出力を使用して、プロジェクトを Elastic Beanstalk で使用するために設定します。
Django プロジェクトを作成する
仮想環境を使用して、Django プロジェクトを作成してマシンで実行する準備ができました。
Django アプリケーションを作成するには
1.
仮想環境をアクティブ化します。
~$ source ~/eb-virt/bin/activate
2.
django-admin startproject コマンドを使用して、ebdjango という名前の Django の新しい
プロジェクトを作成します。
(eb-virt)~$ django-admin startproject ebdjango
このコマンドは、次のディレクトリ構造を持つ ebdjango という標準の Django サイトを作成しま
す。
~/ebdjango
|-- ebdjango
|
|-- __init__.py
|
|-- settings.py
|
|-- urls.py
API Version 2010-12-01
770
AWS Elastic Beanstalk 開発者ガイド
Django プロジェクトを作成する
|
`-- wsgi.py
`-- manage.py
3.
manage.py runserver で Django サイトをローカルで実行します。
(eb-virt) ~$ cd ebdjango
(eb-virt) ~/ebdjango$ python manage.py runserver
4.
ウェブブラウザで http://127.0.0.1:8000/ を開いて、サイトを表示します。
5.
サーバーログをチェックして、リクエストからの出力を確認します。Ctrl+C と入力すると、ウェブ
サーバーを停止して仮想環境に戻ることができます。
Django version 1.9.2, using settings 'ebdjango.settings'
Starting development server at http://127.0.0.1:8000/
Quit the server with CONTROL-C.
Not Found: /
[15/Feb/2016 20:14:09] "GET / HTTP/1.1" 200 1767
Ctrl+C
API Version 2010-12-01
771
AWS Elastic Beanstalk 開発者ガイド
Elastic Beanstalk 用に Django をアプリケーションを設定
する
Elastic Beanstalk 用に Django をアプリケーションを
設定する
Django を使用してローカルシステムに作成したサイトを、Elastic Beanstalk でのデプロイ用に設定し
ます。
デフォルトでは、Elastic Beanstalk は、アプリケーションを開始するために application.py という
ファイルを探します。作成した Django プロジェクトにはこのファイルが存在しないため、アプリケー
ション環境の調整が必要になります。また、アプリケーションのモジュールをロードできるように、環
境変数を設定する必要があります。
Elastic Beanstalk 用にサイトを設定するには
1.
仮想環境をアクティブ化します。
~/ebdjango$ source ~/eb-virt/bin/activate
2.
pip freeze を実行して出力を requirements.txt という名前のファイルに保存します。
(eb-virt) ~/ebdjango$ pip freeze > requirements.txt
3.
Elastic Beanstalk は requirements.txt を使用して、アプリケーションを実行する EC2 インス
タンスにどのパッケージをインストールするかを判断します。
.ebextensions という名前のディレクトリを作成します。
(eb-virt) ~/ebdjango$ mkdir .ebextensions
4.
.ebextensions ディレクトリ内に、次のテキストを持つ django.config という名前の設定ファ
イル (p. 147)を追加します。
Example ~/ebdjango/.ebextensions/django.config
option_settings:
aws:elasticbeanstalk:container:python:
WSGIPath: ebdjango/wsgi.py
この設定 WSGIPath は、アプリケーションを起動するのに Elastic Beanstalk が使用する WSGI ス
クリプトの場所を指定します。
5.
deactivate コマンドを使用して、仮想環境を非アクティブ化します。
(eb-virt) ~/ebdjango$ deactivate
追加パッケージをアプリケーションに追加するか、またはアプリケーションをローカルで実行する
必要があるときは、いつでも仮想環境を再アクティブ化します。
EB CLI でサイトをデプロイする
Elastic Beanstalk でアプリケーションをデプロイするために必要な条件をすべて追加しました。プロ
ジェクトディレクトリは次のようになります。
API Version 2010-12-01
772
AWS Elastic Beanstalk 開発者ガイド
EB CLI でサイトをデプロイする
~/ebdjango/
|-- .ebextensions
|
`-- django.config
|-- ebdjango
|
|-- __init__.py
|
|-- settings.py
|
|-- urls.py
|
`-- wsgi.py
|-- db.sqlite3
|-- manage.py
`-- requirements.txt
次に、アプリケーション環境を作成し、設定済みのアプリケーションを Elastic Beanstalk を使用して
デプロイします。
環境を作成し、Django アプリケーションをデプロイするには
1.
eb init コマンドで EB CLI リポジトリを初期化します。
~/ebdjango$ eb init -p python2.7 django-tutorial
Application django-tutorial has been created.
2.
このコマンドは、django-tutorial という名前の新しいアプリケーションを作成し、ローカルリ
ポジトリを設定して最新の Python 2.7 プラットフォーム設定で環境を作成します。
(オプション)eb init を再度実行してデフォルトのキーペアを設定し、アプリケーションを実
行している EC2 インスタンスに SSH で接続できるようにします。
~/ebdjango$ eb init
Do you want to set up SSH for your instances?
(y/n): y
Select a keypair.
1) my-keypair
2) [ Create new KeyPair ]
3.
1 つのキーペアがすでにある場合はそれを選択するか、またはプロンプトに従って新しいキーペア
を作成します。プロンプトが表示されないか設定を後で変更する必要がない場合は、eb init -i
を実行します。
環境を作成し、eb create を使用してそこにアプリケーションをデプロイします。
~/ebdjango$ eb create django-env
Note
「service role required」エラーメッセージが表示された場合は、eb create をインタラ
クティブに (環境名を指定せずに) 実行してください。EB CLI によってロールが作成され
ます。
このコマンドは、django-env という名前のロードバランシング Elastic Beanstalk 環境を作成し
ます。環境の作成には約 5 分かかります。Elastic Beanstalk はアプリケーションを実行するのに必
要なリソースを作成し、EB CLI がターミナルに中継する情報メッセージを出力します。
4.
環境作成プロセスが完了したら、eb open でウェブサイトを開きます。
API Version 2010-12-01
773
AWS Elastic Beanstalk 開発者ガイド
アプリケーションの更新
~/ebdjango$ eb open
これにより、アプリケーション用に作成されたドメイン名を使用してブラウザウィンドウが開きま
す。ローカルで作成してテストしたのと同じ Django ウェブサイトが表示されます。
アプリケーションが実行されていることを確認できない場合や、エラーメッセージが表示される場合
は、エラーの原因を判断する方法のヒントを得るために「デプロイのトラブルシューティング (p. 760)」
を参照してください。
アプリケーションが実行されていることを実際に確認できた場合は、Elastic Beanstalk での最初の
Django アプリケーションのデプロイが正常に完了しています。
アプリケーションの更新
Elastic Beanstalk で実行中のアプリケーションまたはその設定を更新して再デプロイすることができま
す。この場合、インスタンスを更新して新しいアプリケーションバージョンを開始する作業は、Elastic
Beanstalk が実行します。
この例では、Django の管理コンソールを有効にして、他のいくつかの項目を設定します。
サイト設定を変更する
デフォルトでは、Django ウェブサイトは UTC タイムゾーンを使用して時間を表示します。settings.py
でタイムゾーンを指定して、これを変更することができます。
API Version 2010-12-01
774
AWS Elastic Beanstalk 開発者ガイド
アプリケーションの更新
サイトのタイムゾーンを変更するには
1.
settings.py の TIME_ZONE 設定を変更する
Example ~/ebdjango/ebdjango/settings.py
...
# Internationalization
LANGUAGE_CODE = 'en-us'
TIME_ZONE = 'US/Pacific'
USE_I18N = True
USE_L10N = True
USE_TZ = True
タイムゾーンのリストについては、このページを参照してください。
2.
Elastic Beanstalk 環境にアプリケーションをデプロイします。
~/ebdjango/$ eb deploy
サイト管理者を作成する
Django アプリケーション用のサイト管理者を作成すると、ウェブサイトから管理コンソールに直接ア
クセスできます。管理者のログインの詳細は、Django が生成したデフォルトプロジェクトに含まれる
ローカルデータベースイメージに安全に保存されます。
サイト管理者を作成するには
1.
Django アプリケーションのローカルデータベースを初期化します。
~/ebdjango$ python manage.py migrate
Operations to perform:
Apply all migrations: admin, contenttypes, auth, sessions
Running migrations:
Rendering model states... DONE
Applying contenttypes.0001_initial... OK
Applying auth.0001_initial... OK
Applying admin.0001_initial... OK
Applying admin.0002_logentry_remove_auto_add... OK
Applying contenttypes.0002_remove_content_type_name... OK
Applying auth.0002_alter_permission_name_max_length... OK
Applying auth.0003_alter_user_email_max_length... OK
Applying auth.0004_alter_user_username_opts... OK
Applying auth.0005_alter_user_last_login_null... OK
Applying auth.0006_require_contenttypes_0002... OK
Applying auth.0007_alter_validators_add_error_messages... OK
Applying sessions.0001_initial... OK
2.
manage.py createsuperuser を実行して、環境を作成します。
~/ebdjango$ python manage.py createsuperuser
Username: admin
Email address: [email protected]
API Version 2010-12-01
775
AWS Elastic Beanstalk 開発者ガイド
アプリケーションの更新
Password: ********
Password (again): ********
Superuser created successfully.
3.
静的ファイルの保存場所を Django に渡すには、settings.py で STATIC_ROOT を定義します。
Example ~/ebdjango/ebdjango/settings.py
# Static files (CSS, JavaScript, Images)
# https://docs.djangoproject.com/en/1.9/howto/static-files/
STATIC_URL = '/static/'
STATIC_ROOT = 'static'
4.
manage.py collectstatic を実行して、static ディレクトリに admin サイトの静的アセット
(javascript、CSS、画像)を追加します。
~/ebdjango$ python manage.py collectstatic
You have requested to collect static files at the destination
location as specified in your settings:
~/ebdjango/static
This will overwrite existing files!
Are you sure you want to do this?
Type 'yes' to continue, or 'no' to cancel: yes
Copying 'admin/static/adm/css/rtl.css'
Copying 'admin/static/adm/css/changelists.css'
Copying 'admin/static/adm/css/fonts.css'
...
5.
アプリケーションをデプロイします。
~/ebdjango$ eb deploy
6.
ブラウザでローカルサイトを開き、次のようにサイトの URL に /admin/ を付加することで、管
理コンソールが表示されます。
http://djang-env.p33kq46sfh.us-west-2.elasticbeanstalk.com/admin/
API Version 2010-12-01
776
AWS Elastic Beanstalk 開発者ガイド
アプリケーションの更新
7.
ステップ 2 で設定したユーザー名とパスワードでログインします。
ローカルでの更新/テストと同様の手順を使用し、続けて eb deploy を実行することができます。実稼
働サーバーの更新は Elastic Beanstalk が処理するため、ユーザーはサーバー管理ではなくアプリケー
ション開発に集中できます。
データベース移行設定ファイルを追加する
サイトが更新されたときに実行される .ebextensions スクリプトに、コマンドを追加することがで
きます。これにより、データベースマイグレーションを自動的に生成できます。
アプリケーションがデプロイされたときに移行ステップを追加するには
1.
次の内容で、db-migrate.config という名前の新しい設定ファイル (p. 147)を作成します。
API Version 2010-12-01
777
AWS Elastic Beanstalk 開発者ガイド
クリーンアップと次のステップ
Example ~/ebdjango/.ebextensions/db-migrate.config
container_commands:
01_migrate:
command: "django-admin.py migrate"
leader_only: true
option_settings:
aws:elasticbeanstalk:application:environment:
DJANGO_SETTINGS_MODULE: ebdjango.settings
2.
この設定ファイルは、アプリケーションが起動する前に、デプロイプロセスの間に
django-admin.py migrate コマンドを実行します。アプリケーションが起動する前に実行され
るため、DJANGO_SETTINGS_MODULE 環境変数を明示的に設定する必要があります(通常は、ス
タートアップ中に wsgi.py がこれを行います)。コマンドで leader_only: true を指定する
ことで、複数のインスタンスにデプロイする場合に 1 回だけ実行するようにできます。
アプリケーションをデプロイします。
~/ebdjango$ eb deploy
クリーンアップと次のステップ
インスタンス時間と開発セッション間の他の AWS リソースを保存するには、eb terminate を使用し
て Elastic Beanstalk 環境を終了します。
~/ebdjango$ eb terminate django-env
このコマンドは、環境とその中で実行されているすべての AWS リソースを終了します。これによって
アプリケーションが削除されることはありません。したがって eb create を実行することで、いつで
も同じ設定でさらに環境を作成することができます。EB CLI コマンドの詳細については、「EB CLI に
よる Elastic Beanstalk 環境の管理 (p. 413)」を参照してください。
サンプルアプリケーションで実行した場合は、プロジェクトフォルダと仮想環境を削除することもでき
ます。
~$ rm -rf ~/eb-virt
~$ rm -rf ~/ebdjango
詳細なチュートリアルを含む Django の詳細については、が、公式ドキュメントを参照してください。
別の Python ウェブフレームワークを試す場合は、「AWS Elastic Beanstalk への Flask アプリケーショ
ンのデプロイ (p. 762)」をチェックアウトしてください。
Amazon RDS データベースインスタンスを Elastic
Beanstalk 環境に追加する
Abstract
Python で Amazon Relational Database Service(Amazon RDS)を使用し、クラウド内の MySQL、Oracle、
PostgreSQL、または Microsoft SQL Server インスタンスのプロビジョニングと保守を行います。
API Version 2010-12-01
778
AWS Elastic Beanstalk 開発者ガイド
Python での新しい Amazon RDS DB インスタンスの使用
Amazon Relational Database Service(Amazon RDS)を使用すると、クラウド内の MySQL、Oracle、
PostgreSQL、または Microsoft SQL Server インスタンスをすばやく簡単にプロビジョニングし、保守
することができます。このトピックでは、Elastic Beanstalk アプリケーションで Amazon RDS と Python
を使用する方法について説明します。Amazon RDS の詳細については、http://aws.amazon.com/rds/ を
参照してください。
Elastic Beanstalk アプリケーションから Amazon RDS を使用するには、次の手順を実行する必要があ
ります。
1. Amazon RDS DB インスタンスを作成します。
2. Amazon RDS DB インスタンスへの接続情報を使用して、コードでデータベース接続を確立します。
3. requirements.txt ファイルを更新します。
4. アプリケーションを Elastic Beanstalk にデプロイします。
このトピックでは、以下について説明します。
• アプリケーションで新しい Amazon RDS DB インスタンスを使用する
• アプリケーションで既存の Amazon RDS DB インスタンスを使用する
Python での新しい Amazon RDS DB インスタンスの
使用
このトピックでは、新しい Amazon RDS DB インスタンスを作成し、Python アプリケーションでそれ
を使用する手順について説明します。
Elastic Beanstalk アプリケーションから新しい Amazon RDS DB インスタンスと Python を使
用するには
1.
Amazon RDS DB インスタンスを作成します。次のいずれかの方法で RDS DB インスタンスを作
成できます。
• 新しいアプリケーションバージョンを作成する場合は、Amazon RDS DB インスタンスを作成し
ます。Elastic Beanstalk コンソールを使用する手順については、「アプリケーションを作成しま
す。 (p. 39)」を参照してください。EB CLI を使用して Amazon RDS で Django アプリケーショ
ンをデプロイするサンプルウォークスルーについては、「Elastic Beanstalk への Django アプリ
ケーションのデプロイ (p. 769)」を参照してください。
• 既存のアプリケーションバージョンで新しい環境を起動する場合は、Amazon RDS DB インスタ
ンスを作成します。AWS Elastic Beanstalk コンソールを使用する手順については、「AWS Elastic
Beanstalk 環境を作成する (p. 53)」を参照してください。
• アプリケーションを Elastic Beanstalk にすでにデプロイしている場合、Amazon RDS DB イン
スタンスを作成し、既存の環境にアタッチすることができます。AWS Elastic Beanstalk コンソー
ルを使用する手順については、「Elastic Beanstalk でデータベースを設定する (p. 209)」を参照し
てください。EB CLI を使用する場合には、eb create 実行時に --database オプションを選
びます。
2.
os.environ オブジェクトの RDS 接続情報にアクセスします。
import os
if 'RDS_HOSTNAME' in os.environ:
DATABASES = {
API Version 2010-12-01
779
AWS Elastic Beanstalk 開発者ガイド
Python での既存の Amazon RDS DB インスタンスの使用
'default': {
'ENGINE': 'django.db.backends.mysql',
'NAME': os.environ['RDS_DB_NAME'],
'USER': os.environ['RDS_USERNAME'],
'PASSWORD': os.environ['RDS_PASSWORD'],
'HOST': os.environ['RDS_HOSTNAME'],
'PORT': os.environ['RDS_PORT'],
}
}
Note
この情報はアプリケーションコードからのみアクセス可能であり、ターミナルでリストさ
れる環境変数には表示されません。
3.
requirements.txt ファイルを作成し、ソースバンドルの最上位ディレクトリに保存します。通常の
Python アプリケーションには、他のサードパーティ製 Python パッケージに対する依存関係があり
ます。Python では、pip がパッケージをインストールする標準的な方法です。pip の機能を使用す
ると、すべての必要なパッケージ(およびバージョン)を 1 つの要件ファイルで指定できます。要
件ファイルの詳細については、「要件ファイルの形式」を参照してください。Django 用の
requirements.txt ファイルの例を次に示します。
Django==1.4.1
MySQL-python==1.2.3
4.
更新されたアプリケーションを Elastic Beanstalk 環境にデプロイします。
Python での既存の Amazon RDS DB インスタンスの
使用
以前に作成した Amazon RDS DB インスタンスを使用するように Python アプリケーションを更新でき
ます。このトピックでは、既存の Amazon RDS DB インスタンスを使用して Python アプリケーション
を更新し、アプリケーションを Elastic Beanstalk にデプロイする方法について説明します。
Elastic Beanstalk アプリケーションから既存の Amazon RDS DB インスタンスと Python を使用するに
は
1.
次のいずれかの方法で Elastic Beanstalk 環境を作成します。
• 新しい環境で新しいアプリケーションを作成します。Elastic Beanstalk コンソールを使用する手
順については、「アプリケーションを作成します。 (p. 39)」を参照してください。EB CLI を使
用して Amazon RDS で Django アプリケーションをデプロイするサンプルウォークスルーにつ
いては、「Elastic Beanstalk への Django アプリケーションのデプロイ (p. 769)」を参照してくだ
さい。既存の RDS DB インスタンスがあるため、この環境で RDS DB インスタンスを作成する
必要はありません。
• 既存のアプリケーションバージョンで新しい環境を起動します。Elastic Beanstalk コンソールを
使用する手順については、「AWS Elastic Beanstalk 環境を作成する (p. 53)」を参照してくださ
い。すでに既存の Amazon RDS DB インスタンスがあるため、この環境で Amazon RDS DB イ
ンスタンスを作成する必要はありません。
2.
Amazon RDS DB セキュリティグループを設定し、Elastic Beanstalk アプリケーションに使用する
Amazon EC2 セキュリティグループからアクセスできるようにします。AWS マネジメントコン
API Version 2010-12-01
780
AWS Elastic Beanstalk 開発者ガイド
環境設定
ソールを使用した EC2 セキュリティグループ名の検索手順については、「セキュリティグルー
プ (p. 200)」を参照してください。詳細については、「Amazon Relational Database Service User
Guide」の「Working with DB Security Groups」の「Authorizing Network Access to an Amazon EC2
Security Group」セクションを参照してください。
3.
Amazon RDS DB インスタンスの接続情報を使用してコードでデータベース接続を確立します。次
の例は、mydbinstance.abcdefghijkl.us-west-2.rds.amazonaws.com にある RDS インスタンスの
データベースに、ポート 3306、ユーザー名 "sa"、パスワード "mypassword" を使用して接続する
方法を示しています。
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.mysql',
'NAME': 'mydb',
'USER': 'sa',
'PASSWORD': 'mypwd',
'HOST': 'mydbinstance.abcdefghijkl.us-west-2.rds.amazonaws.com',
'PORT': '3306',
}
}
4.
requirements.txt ファイルを作成し、データベースと通信するために必要なパッケージを追加して、
ソースバンドルの最上位ディレクトリに保存します。要件ファイルの詳細については、「要件ファ
イルの形式」を参照してください。requirements.txt ファイルの例を次に示します。
MySQL-python==1.2.3
5.
更新されたアプリケーションを Elastic Beanstalk 環境にデプロイします。
AWS Elastic Beanstalk Python 環境の設定
Abstract
Elastic Beanstalk アプリケーション用に Python 環境を設定します。
Elastic Beanstalk には、Elastic Beanstalk 環境内の EC2 インスタンスで実行されるソフトウェアのカ
スタマイズに使用できる設定オプション (p. 101)が用意されています。アプリケーションに必要な環境
変数を設定し、Amazon S3 に対してログのローテーションを有効にしたら、アプリケーションのソー
スで静的ファイルが含まれるフォルダーを、プロキシサーバーによって提供されるパスにマッピングで
きます。
これらの各オプションは、AWS マネジメントコンソール で、長時間実行される環境のテストとワンタ
イム設定に使用できます。複数の環境を作成する場合は、コンソールを使用して各環境に異なる設定を
適用できます。環境の作成後にのみ、コンソール設定 (p. 782)を使用できます。
移植性のために、アプリケーションのソースコードに、同じ設定を定義する設定ファイルを含めること
ができます。設定ファイルを使用すると、その設定は、新しい環境を作成するたびに、またはアプリ
ケーションをデプロイするたびに適用されます。設定ファイルを使用して、デプロイ時にパッケージを
インストールし、スクリプトを実行することもできます。
pip から入手可能な Python パッケージの場合、アプリケーションのソースコードのルートに、
Requirements.txt という名前の要件ファイル (p. 784)を含めることもできます。Elastic Beanstalk
は、デプロイ時に要件ファイルで指定されたパッケージをすべてインストールします。
API Version 2010-12-01
781
AWS Elastic Beanstalk 開発者ガイド
AWS マネジメントコンソール での Python 環境の設定
AWS マネジメントコンソール で適用される設定は、設定ファイルに同じ設定があれば、それらの設定
を上書きします。これにより、設定ファイルでデフォルト設定を定義し、コンソールでそのデフォルト
設定を環境に固有の設定で上書きできます。設定の優先順位の詳細と設定の他の変更方法については、
「設定オプション (p. 101)」を参照してください。
セクション
• AWS マネジメントコンソール での Python 環境の設定 (p. 782)
• 設定ファイル (p. 783)
• 要件ファイル (p. 784)
AWS マネジメントコンソール での Python 環境の設
定
AWS マネジメントコンソール を使用して、Amazon S3 に対してログのローテーションを有効にした
ら、アプリケーションが環境から読み取ることのできる変数を設定し、アプリケーションのソースで静
的ファイルが含まれるフォルダーを、プロキシサーバーによって提供されるパスにマッピングできま
す。
お客様の環境のソフトウェア構成設定にアクセスするには
1.
2.
3.
4.
Elastic Beanstalk コンソールを開きます。
環境については「management console (p. 50)」をご覧ください。
[Configuration] を選択します。
[Software Configuration] セクションで、
を選択します。
ログオプション
[Log Options] セクションには、2 つの設定があります。
• Instance profile – アプリケーションに関連付けられた Amazon S3 バケットへのアクセス許可が付与
されているインスタンスプロファイルを指定します。
• Enable log file rotation to Amazon S3 – アプリケーションの Amazon EC2 インスタンスのログファイ
ルを、アプリケーションに関連付けられている Amazon S3 バケットにコピーするかどうかを指定し
ます。
静的ファイル
[Static Files] セクションでは、Python アプリケーションをヒットすることなく、ユーザーに直接、静的
なアセットを提供するように、プロキシサーバーを設定できます。
デフォルトでは、プロキシサーバーによってファイルはすべて、static という名前のフォルダー
に、/static パスで提供されます。たとえば、アプリケーションのソースで static という名前のフォ
ルダーに logo.png という名前のファイルがある場合、プロキシサーバーによってそのファイルは
subdomain.elasticbeanstalk.com/static/logo.png でユーザーに提供されます。
エントリを追加して [Apply] を選択することで、追加のマッピングを設定できます。各エントリには、
アプリケーションのパスをソースコードのディレクトリにマッピングするキーと値を指定します。
API Version 2010-12-01
782
AWS Elastic Beanstalk 開発者ガイド
設定ファイル
環境プロパティ
環境プロパティを使用して、アプリケーションに情報を渡し、環境変数を設定できます。たとえば、
CONNECTION_STRING という名前の環境プロパティを作成し、そのプロパティで、データベースへの
接続にアプリケーションが使用する接続文字列を指定できます。
Elastic Beanstalk 内で実行している Python 環境の内部では、Python の os.environ ディクショナリ
を使用してこれらの値にアクセスできます。詳細については、http://docs.python.org/library/os.html を
参照してください。
以下のようなコードを使用して、キーとパラメータにアクセスできます。
import os
connectionstring = os.environ['CONNECTION_STRING']
環境プロパティを使用して、フレームワークに情報を渡すこともできます。たとえば、
DJANGO_SETTINGS_MODULE という名前のプロパティを作成して、そのプロパティで、特定の設定モ
ジュールを使用するように Django を設定できます。環境に応じて、その値は development.settings
や production.settings などになります。
設定ファイル
Python アプリケーションをデプロイするときは、Amazon EC2 インスタンスの動作をカスタマイズお
よび設定できます。ソースコードに設定ファイル (p. 147)を含めることで、アプリケーションバージョ
ンをデプロイすると同時にインスタンスを簡単にカスタマイズできます。
以下の設定ファイルの例で指定しているのは、DJANGO_SETTINGS_MODULE という名前の環境プロパ
ティを作成する設定オプション、staticimages という名前のディレクトリを /images パスにマッピ
ングする静的ファイルオプション、aws:elasticbeanstalk:container:python (p. 143) 名前空
間にある追加の設定です。この名前空間には、ソースコードで WSGI スクリプトの場所を指定できる
オプションと、WSGI で実行するスレッドとプロセスの数を指定できるオプションが含まれています。
option_settings:
aws:elasticbeanstalk:application:environment:
DJANGO_SETTINGS_MODULE: production.settings
aws:elasticbeanstalk:container:python:staticfiles:
"/images/": "staticimages/"
aws:elasticbeanstalk:container:python:
WSGIPath: ebdjango/wsgi.py
NumProcesses: 3
NumThreads: 20
設定ファイルでは、お客様の環境のインスタンスでソフトウェアをさらに変更する (p. 150)ためのキー
もいくつかサポートされています。この例では、packages (p. 150) キーを使用して、Memcached をイ
ンストールし、yum および container コマンド (p. 157)を使用して、デプロイ時にサーバーを設定するコ
マンドを実行します。
packages:
yum:
libmemcached-devel: '0.31'
container_commands:
collectstatic:
command: "django-admin.py collectstatic --noinput"
01syncdb:
API Version 2010-12-01
783
AWS Elastic Beanstalk 開発者ガイド
要件ファイル
command: "django-admin.py syncdb --noinput"
leader_only: true
02migrate:
command: "django-admin.py migrate"
leader_only: true
03wsgipass:
command: 'echo "WSGIPassAuthorization On" >> ../wsgi.conf'
99customize:
command: "scripts/customize.sh"
要件ファイル
requirements.txt ファイルを作成し、ソースバンドルの最上位ディレクトリに保存します。通常の Python
アプリケーションには、他のサードパーティ製 Python パッケージに対する依存関係があります。Python
では、pip がパッケージをインストールする標準的な方法です。pip の機能を使用すると、すべての必
要なパッケージ(およびバージョン)を 1 つの要件ファイルで指定できます。要件ファイルの詳細につ
いては、「要件ファイルの形式」を参照してください。Django 用の requirements.txt ファイルの例を
次に示します。
Django==1.9.2
MySQL-python==1.2.3
開発環境で、pip freeze コマンドを使用して要件ファイルを生成できます。
~/my-app$ pip freeze > requirements.txt
要件ファイルに、実際にアプリケーションによって使用されるパッケージのみが含まれるようにするに
は、それらのパッケージのみがインストールされている仮想環境 (p. 761)を使用します。仮想環境の外
では、pip freeze の出力に、オペレーティングシステムに付属のパッケージを含め、開発マシンにイ
ンストール済みのすべての pip パッケージが含まれます。
Python のツールとリソース
Abstract
Python アプリケーションを開発するための追加リソース。
Python アプリケーションのデプロイに関しては他にも参照情報があります。
リソース
説明
Boto(AWS SDK for Python)
GitHub を使用して Boto をインストールします。
Python 開発フォーラム
質問を投稿してフィードバックを得ることができます。
Python 開発者センター
サンプルコード、ドキュメント、ツール、追加リソースを
1 か所で入手できる場所です。
API Version 2010-12-01
784
AWS Elastic Beanstalk 開発者ガイド
EB CLI および Git を使用した Ruby
での Elastic Beanstalk アプリケー
ションのデプロイ
Abstract
Elastic Beanstalk を使用して、Ruby ウェブアプリケーションをデプロイ、管理、および拡張します。
トピック
• Rails アプリケーションの Elastic Beanstalk へのデプロイ (p. 786)
• AWS Elastic Beanstalk への Sinatra アプリケーションのデプロイ (p. 795)
• Elastic Beanstalk での Ruby 環境の設定 (p. 801)
• Ruby での Amazon RDS の使用 (p. 805)
• ツール (p. 807)
• リソース (p. 808)
Ruby 用 Elastic Beanstalk を使用すると、アマゾン ウェブ サービスを使って簡単に Ruby ウェブアプ
リケーションのデプロイ、管理、スケーリングを行うことができます。Elastic Beanstalk は、Ruby を
使用してウェブアプリケーションを開発またはホスティングするすべてのユーザーが利用できます。こ
のセクションでは、Elastic Beanstalk コマンドラインインターフェイス(EB CLI)を使用して Elastic
Beanstalk にサンプルアプリケーションをデプロイした後、Rails および Sinatra ウェブアプリケーショ
ンフレームワークを使用するようにアプリケーションを更新する手順を説明します。このウォークス
ルーを完了するには、EB CLI (p. 403) をインストールして設定する必要があります。
Elastic Beanstalk アプリケーションをデプロイした後、AWS マネジメントコンソール、CLI、または
API を使用して Elastic Beanstalk 環境を管理できます。詳細については、「コンソール、CLI、および
API を使用してアプリケーションと環境を管理および設定する (p. 39)」を参照してください。
API Version 2010-12-01
785
AWS Elastic Beanstalk 開発者ガイド
Rails アプリケーションのデプロイ
Rails アプリケーションの Elastic Beanstalk へのデ
プロイ
Abstract
EB CLI と Git を使用して、Elastic Beanstalk 環境に Rails アプリケーションをデプロイします。
Elastic Beanstalk コマンドラインインターフェイス(EB CLI)と Git を使用して、Rails アプリケーショ
ンを Elastic Beanstalk にデプロイできます。 このウォークスルーでは、その方法を説明します。また、
開発環境やアプリケーションがまだない場合に、Rails インストールを最初からセットアップする方法
についても説明します。
ソフトウェアのバージョン
ここで紹介する多くのテクノロジは、現在も開発が進められています。最良の結果を得るに
は、各ツールは可能な限り同じバージョンを使用してください。このチュートリアルを作成す
る際に使用したバージョンは次のとおりです。
Ubuntu
14.04
RVM
1.26.3
Ruby
2.1.5p273
Rails
4.1.8
Python
2.7.6
プラットフォーム
Ruby 2.1(Puma)を実行する 64 ビット
Amazon Linux 2015.09 v2.0.6
このチュートリアルで使用されているの表記規則については、『全般的なリファレンス』の「ドキュメ
ントの表記規則」を参照してください。
セクション
• Rails 開発環境のセットアップ (p. 786)
• EB CLI のインストール (p. 788)
• Git リポジトリのセットアップ (p. 789)
• EB CLI の設定 (p. 789)
• サービスロールとインスタンスプロファイルの作成 (p. 790)
• Gemfile の更新 (p. 790)
• プロジェクトのデプロイ (p. 790)
• アプリケーションの更新 (p. 793)
• クリーンアップ (p. 794)
Rails 開発環境のセットアップ
Rails 開発環境を最初からセットアップする場合は、このセクションをお読みください。開発環境に
Rails、Git、および作業用アプリケーションが設定されている場合は、このセクションをスキップでき
ます (p. 788)。
API Version 2010-12-01
786
AWS Elastic Beanstalk 開発者ガイド
Rails 開発環境のセットアップ
Ubuntu EC2 インスタンスの取得
次の手順は、Ubuntu 14.04 が実行されている Amazon EC2 インスタンスを使用して開発およ
びテストされています。AWS マネジメントコンソール を使用した EC2 インスタンスの設定手
順や EC2 インスタンスへの接続手順については、『Linux 用 Amazon EC2 ユーザーガイド』
の「はじめに」セクションを参照してください。
AWS マネジメントコンソール へのアクセス権がない場合、またはコマンドラインを使用する
場合は、『AWS CLI ユーザーガイド』を参照し、AWS CLI のインストール手順や AWS CLI を
使用したセキュリティグループの設定手順を確認して、キーペアの作成とインスタンスの起動
を行います。インスタンスを起動するときは、EB CLI で使用する認証情報と同じものを使って
ください。
Rails のインストール
RVM(Ruby の一般的なバージョンマネージャ)には、数個のコマンドを使用して RVM、Ruby、Rails
をインストールするためのオプションが用意されています。
~$ gpg --keyserver hkp://keys.gnupg.net --recv-keys D39DC0E3
~$ curl -sSL https://get.rvm.io | bash -s stable --rails
~$ source /home/ubuntu/.rvm/scripts/rvm
nodejs をインストールして、Rails サーバーがローカルで実行できるようにします。
~$ sudo apt-get install nodejs
Note
他のオペレーティングシステムでの Rails のインストールについては、http://installrails.com/ を
参照してください。
新しい Rails プロジェクトの作成
アプリケーションの名前と共に rails new を使用して、新しい Rails プロジェクトを作成します。
~$ rails new rails-beanstalk
Rails によって、指定した名前を持つディレクトリが作成され、サンプルプログラムをローカルで実行
する際に必要となるすべてのファイルが生成されます。その後で Bundler が実行され、プロジェクトの
Gemfile で定義されている依存関係(Gem)がすべてインストールされます。
プロジェクトのローカルでの実行
デフォルトのプロジェクトをローカルで実行して、Rails インストールをテストします。
$ cd rails-beanstalk
rails-beanstalk $ rails server -d
=> Booting WEBrick
=> Rails 4.2.0 application starting in development on http://localhost:3000
=> Run `rails server -h` for more startup options
rails-beanstalk $ curl http://localhost:3000
<!DOCTYPE html>
API Version 2010-12-01
787
AWS Elastic Beanstalk 開発者ガイド
EB CLI のインストール
<html>
<head>
<title>Ruby on Rails: Welcome aboard</title>
...
Note
Elastic Beanstalk は Rails アセットをデフォルトでプリコンパイルします。Ruby 2.1 コンテナ
タイプについては、次の点に注意してください。
• nginx ウェブサーバーは、/public および /public/assets フォルダからアセットを提供
するように事前設定されています。
• Puma アプリケーションの場合、 gem "puma" Gemfilebundle exec に
追加する必要があります。
EB CLI のインストール
このセクションでは、EB CLI、数個の依存関係、および Git をインストールします。
Note
EB CLI を使用するときには、Git または別のリビジョン管理ツールの使用をお勧めしますが、
必須ではありません。このチュートリアルで Git を使用するステップをすべて省略してもかま
いません。
Git、Python 開発ライブラリ、pip のインストール
このチュートリアルでは、リビジョンの管理に Git を使用し、EB CLI のインストールの管理に Pip を
使用します。Ubuntu の開発環境では、次の一連のコマンドを使用して、Git、Python 開発ライブラリ、
pip のすべてをインストールできます。
~$
~$
~$
~$
sudo
sudo
curl
sudo
apt-get install git
apt-get install python-dev
"https://bootstrap.pypa.io/get-pip.py" -o "get-pip.py"
python get-pip.py
Windows ユーザー
Python 3.4 をインストールします。これには pip が含まれます。
EB CLI のインストール
pip では、1 つのコマンドを使用して EB CLI をインストールできます。
Linux, OS X, or Unix
~$ sudo pip install awsebcli
Windows
API Version 2010-12-01
788
AWS Elastic Beanstalk 開発者ガイド
Git リポジトリのセットアップ
> pip install awsebcli
Git リポジトリのセットアップ
Rails プロジェクトがローカルの Git リポジトリにすでに存在する場合は、「EB CLI の設定 (p. 789)」に
進んでください。
最初に、リポジトリを開始します。Rails プロジェクトディレクトリで、「git init」と入力します。
~/rails-beanstalk$ git init
Initialized empty Git repository in /home/ubuntu/rails-beanstalk/.git/
次に、プロジェクトのすべてのファイルをステージング領域に追加し、変更をコミットします。
~/rails-beanstalk$ git add .
~/rails-beanstalk$ git commit -m "default rails project"
56 files changed, 896 insertions(+)
create mode 100644 .gitignore
create mode 100644 Gemfile
...
EB CLI の設定
Git リポジトリを設定し、必要なすべてのツールをインストールすると、EB CLI プロジェクトを簡単に
設定できます。プロジェクトディレクトリで eb init を実行し、表示される手順に従うだけです。
~/rails-beanstalk$ 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)
...
このチュートリアルでは次の値を使用しますが、お客様の要件に適した値を自由に使用してもかまいま
せん。アクセスキーがない場合は、「AWS 全般リファレンス」の「セキュリティ認証情報の入手方法」
を参照してください。
値
リージョン
Enter キー(デフォルトを維持します)
AWS アクセスキー ID
お客様のアクセスキー
AWS 秘密鍵
お客様のシークレットキー
アプリケーション名
Enter キー(デフォルトを維持します)
Ruby を使用しますか?
y キー(はい)
プラットフォームのバージョン
Ruby 2.1(Puma)
SSH をセットアップしますか?
n キー(いいえ)
API Version 2010-12-01
789
AWS Elastic Beanstalk 開発者ガイド
サービスロールとインスタンスプロファイルの作成
デプロイの環境を設定するだけでなく、eb init は Git の一部の拡張機能をセットアップしたり、エ
ントリをプロジェクトディレクトリの .gitignore ファイルに追加したりすることができます。次の
手順に進む前に、変更を .gitignore にコミットしてください。
~/rails-beanstalk$ git commit -am "updated .gitignore"
サービスロールとインスタンスプロファイルの作成
新しいプラットフォームバージョンでは、ロールとインスタンスプロファイルが必要です。これらの
ロールで、Elastic Beanstalk は環境リソースをモニタリングと、環境のインスタンスによるログファイ
ルの Amazon S3 へのアップロードを許可します。詳細については、「サービスロール、インスタンス
プロファイル、ユーザーポリシー (p. 19)」を参照してください。
サービスロールおよびインスタンスプロファイルがまだない場合は、それらを作成している Elastic
Beanstalk マネジメントコンソールを使用します。
サービスロールとインスタンスプロファイルを作成するには
1.
2.
3.
4.
5.
Elastic Beanstalk コンソールを開きます。
[Create New Application] を選択します。
[Permissions] ページに達するまでウィザードを進みます。
[Next] を選択して IAM コンソールを開きます。
[Allow] を選択してロールを作成します。
Gemfile の更新
Elastic Beanstalk へアプリケーションをデプロイする前に、Rails によって生成されるデフォルトの
Gemfile ファイルで簡単な変更を行う必要があります。gem のリストに Puma を追加して、正しくイ
ンストールされていることを確認します。
~/rails-beanstalk/Gemfile
source 'https://rubygems.org'
gem 'puma'
gem 'rails', '4.1.8'
gem 'sqlite3'
...
git commit で変更をコミットします。
~/rails-beanstalk$ git commit -am "Add Puma to Gemfile"
プロジェクトのデプロイ
次に、Elastic Beanstalk 環境を作成し、eb create を使用してそこにアプリケーションをデプロイし
ます。
~/rails-beanstalk$ eb create rails-beanstalk-env
Creating application version archive "app-150219_215138".
Uploading rails-beanstalk/app-150219_215138.zip to S3. This may take a while.
Upload Complete.
API Version 2010-12-01
790
AWS Elastic Beanstalk 開発者ガイド
プロジェクトのデプロイ
Environment details for: rails-beanstalk-env
Application name: rails-beanstalk
Region: us-west-2
Deployed Version: app-150219_215138
Environment ID: e-pi3immkys7
Platform: 64bit Amazon Linux 2015.09 v2.0.6 running Ruby 2.1 (Puma)
Tier: WebServer-Standard
CNAME: UNKNOWN
Updated: 2015-02-19 21:51:40.686000+00:00
Printing Status:
INFO: createEnvironment is starting.
...
Note
「service role required」エラーメッセージが表示された場合は、eb create をインタラクティ
ブに (環境名を指定せずに) 実行してください。EB CLI によってロールが作成されます。
1 つのコマンドを使用するだけで、EB CLI では、アプリケーションを AWS で実行する際に必要となる
すべてリソースをセットアップします。次のようなリソースがあります。
•
•
•
•
•
環境データを保存する Amazon S3 バケット
トラフィックをウェブサーバーに分散するロードバランサー
着信ウェブトラフィックを許可するセキュリティグループ
負荷の変化に応じてサーバーの数を調整する Auto Scalingグループ
負荷が低くなった場合または高くなった場合に Auto Scaling グループに通知する Amazon CloudWatch
アラーム
• アプリケーションをホストする Amazon EC2 インスタンス
処理が完了すると、EB CLI はアプリケーションサーバーのパブリック DNS 名を出力します。デフォル
トのブラウザでウェブサイトを開くには、eb open を使用します。Ubuntu 環境の場合、デフォルトの
ブラウザは W3M と呼ばれるテキストベースブラウザとなります。
$ eb open
A really lowlevel plumbing error occured. Please contact your local Maytag(tm)
repair man.
これは、何らかの異常が発生していることを示す Puma のメッセージです。このようなエラーが発生
した場合は、eb logs コマンドを使用してログを調べてください。
rails-beanstalk $ eb logs
INFO: requestEnvironmentInfo is starting.
INFO: [Instance: i-8cdc6480] Successfully finished tailing 5 log(s)
================ i-8cdc6480 =================
------------------------------------/var/log/eb-version-deployment.log
------------------------------------...
対象となるエラーは、ウェブコンテナのログ(/var/log/puma/puma.log)に記録されています。
API Version 2010-12-01
791
AWS Elastic Beanstalk 開発者ガイド
プロジェクトのデプロイ
...
------------------------------------/var/log/puma/puma.log
------------------------------------=== puma startup: 2014-12-15 18:37:51 +0000 ===
=== puma startup: 2014-12-15 18:37:51 +0000 ===
[1982] + Gemfile in context: /var/app/current/Gemfile
[1979] - Worker 0 (pid: 1982) booted, phase: 0
2014-12-15 18:41:42 +0000: Rack app error: #<RuntimeError: Missing
`secret_key_base` for 'production' environment, set this value in `con
fig/secrets.yml`>
/opt/rubies/ruby-2.1.4/lib/ruby/gems/2.1.0/gems/railties-4.1.8/lib/rails/applic
ation.rb:462:in `validate_secret_key_config!'
/opt/rubies/ruby-2.1.4/lib/ruby/gems/2.1.0/gems/railties-4.1.8/lib/rails/applic
ation.rb:195:in `env_config'
...
アプリケーションを使用できるようにするには、環境変数をいくつか設定する必要があります。まず、
プロジェクトの config フォルダにある secrets.yml で参照される SECRET_KEY_BASE を設定し
ます。
この変数はキーを作成するために使用されます。また変数名が示すように、シークレットにする必要が
あります。そのため、この変数は、他のユーザーが参照できるようなソース管理では保存しないように
する必要があります。この変数は eb setenv を使用して任意の値に設定します。
rails-beanstalk $ eb setenv SECRET_KEY_BASE=23098520lkjsdlkjfsdf
INFO: Environment update is starting.
INFO: Updating environment rails-beanstalk-env's configuration settings.
INFO: Successfully deployed new configuration to environment.
INFO: Environment update completed successfully.
設定の更新や新しいコードのデプロイを行うたびに、EB CLI によってウェブサーバーが自動的に再起
動されます。サイトをもう一度読み込んでみます。
$ eb open
The page you were looking for doesn't exist (404)
404 エラーが発生したため、状況があまり改善されていないことが考えられますが、ウェブコンテナが
動作しており、探しているページへのルートを検索できなかったことは確認できます。
以前に表示されていた先頭ページにはどのような問題が発生したのでしょうか。この場合、重要となる
環境変数は RACK_ENV です。ここでは、この変数は production に設定されており、デバッグ機能や
"Welcome to Rails" ページが表示されなくなっています。
eb printenv コマンドを使用して、すべての環境変数の現在の値を表示します。
rails-beanstalk $ eb printenv
Environment Variables:
AWS_SECRET_KEY = None
RAILS_SKIP_ASSET_COMPILATION = false
SECRET_KEY_BASE = 23098520lkjsdlkjfsdf
RACK_ENV = production
PARAM5 = None
PARAM4 = None
PARAM3 = None
API Version 2010-12-01
792
AWS Elastic Beanstalk 開発者ガイド
アプリケーションの更新
PARAM2 = None
PARAM1 = None
BUNDLE_WITHOUT = test:development
RAILS_SKIP_MIGRATIONS = false
AWS_ACCESS_KEY_ID = None
この問題を修正するための適切な方法は、コンテンツとルートをプロジェクトに追加することです。た
だし、もうしばらくプロジェクトの動作を調べた後で、RACK_ENV を development に設定します。
rails-beanstalk $ eb setenv RACK_ENV=development
次回サイトを読み込むときは、正常に読み込まれます。
$ eb open
Ruby on Rails: Welcome aboard
...
これでアプリケーションが動作すること確認できたので、RACK_ENV を production に戻し、そのコン
テンツの追加について考慮することができます。
rails-beanstalk $ eb setenv RACK_ENV=production
アプリケーションの更新
次に、本稼働モードで表示された 404 エラーを回避するために、先頭ページにコンテンツを追加しま
す。
最初に、rails generate を使用して、コントローラー、ルート、および先頭ページのビューを作成
します。
$ rails generate controller WelcomePage welcome
create app/controllers/welcome_page_controller.rb
route get 'welcome_page/welcome'
invoke erb
create
app/views/welcome_page
create
app/views/welcome_page/welcome.html.erb
...
この操作によって、rails-beanstalk-env-kpvmmmqpbr.elasticbeanstalk.com/welcome_page/welcome
にあるページにアクセスするために必要なすべてのデータが用意されます。ただし、変更を発行する前
に、ビューのコンテンツを変更し、このページがサイトの最上位レベルに表示されるようにルートを追
加します。
使い慣れたテキストエディタを使用して、app/views/welcome_page/welcome.html.erb のコン
テンツを編集します。Nano と Vim はよく使用されるコマンドラインエディタです。この例では、cat
を使用して既存のファイルのコンテンツを上書きします。
rails-beanstalk $ cat > app/views/welcome_page/welcome.html.erb
> <h1>Welcome!</h1>
> <p>This is the front page of my first Rails application on Elastic Bean
stalk.</p>
Ctrl+D
API Version 2010-12-01
793
AWS Elastic Beanstalk 開発者ガイド
クリーンアップ
最後に、次のルートを config/routes.rb に追加します。
Rails.application.routes.draw do
get 'welcome_page/welcome'
root 'welcome_page#welcome'
end
これにより、Rails は、リクエストをウェブサイトのルートに送り、先頭ページのコントローラーの
welcome メソッドにルーティングできるようになります。このメソッドでは、先頭ページのビュー
(welcome.html.erb)のコンテンツを表示します。これで、eb deploy を使用して、変更のコミッ
トと環境の更新を行う準備ができました。
rails-beanstalk $ git add .
rails-beanstalk $ git commit -m "welcome page controller, view and route"
rails-beanstalk $ eb deploy
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.
更新プロセスは高速に処理されます。コマンドラインで Curl を使用してフロントページを読むか、eb
open と入力してウェブブラウザでサイトを開き、結果を確認してください。
$ eb open
Welcome
This is the front page of my first Rails application on Elastic Beanstalk.
これで、Rails サイトで作業を続けることができます。プッシュする新しいコミットがある場合は必ず、
eb deploy を使用して環境を更新します。
クリーンアップ
アプリケーションを実行したくない場合は、環境を終了し、アプリケーションを削除してクリーンアッ
プできます。
環境を終了するには terminate コマンドを、アプリケーションを削除するには delete コマンドを使
用します。
環境を終了するには、アプリケーションを削除できます。
•
ローカルリポジトリを作成したディレクトリから、eb terminate を実行します。
$ eb terminate
このプロセスには数分かかることがあります。環境が正常に終了すると、Elastic Beanstalk にメッ
セージが表示されます。
引き続きサイトを開発する場合は、リソースを節約するために環境を終了しても問題ありません。eb
create を使用することで、Beanstalk 環境をいつでも再作成できます。
API Version 2010-12-01
794
AWS Elastic Beanstalk 開発者ガイド
Sinatra アプリケーションのデプロイ
AWS Elastic Beanstalk への Sinatra アプリケーショ
ンのデプロイ
Abstract
EB CLI 3.x を使用して、Sinatra アプリケーションを AWS Elastic Beanstalk にデプロイします。
このウォークスルーでは、EB コマンドラインインターフェイス(EB CLI)を使用して、単純な Sinatra
ウェブアプリケーションを AWS Elastic Beanstalk(Elastic Beanstalk)にデプロイする方法を説明しま
す。
Note
EB CLI を使用して環境を作成するには、サービスロール (p. 20)が必要です。Elastic Beanstalk
管理コンソールで環境を作成することで、サービスロールを作成できます。サービスロールが
ない場合は、eb create を実行したときに EB CLI によって作成されます。
トピック
• 前提条件 (p. 795)
• ステップ 1: プロジェクトの設定 (p. 796)
• ステップ 2: アプリケーションの作成 (p. 796)
• ステップ 3: 環境の作成 (p. 798)
• ステップ 4: 単純な Sinatra アプリケーションのデプロイ (p. 799)
• ステップ 5: クリーンアップ (p. 800)
• 関連リソース (p. 801)
前提条件
このウォークスルーでは、Linux、Windows、OS X のいずれかのワークステーションが必要です。この
ウォークスルーを実行すると、ワークステーションの Git および EB CLI の設定が変更されます。ウォー
クスルーでワークステーションの設定を変更したくない場合は、以下のいずれかを使用できます。
• ワークステーションの仮想マシンで実行されるインスタンス。
このウォークスルーは、Vagrant を使用して Ubuntu 14.04 LTS インスタンスを VirtualBox で実行す
るように準備されています。
• Amazon Elastic Compute Cloud(Amazon EC2)インスタンス。
SSH を使用して、インスタンスにログインします。コマンドラインからウォークスルー全体を実行
できます。完了したら、インスタンスを終了できます。
このウォークスルーを完了するには、以下のツールが必要です。
• EB CLI。「EB コマンドラインインターフェイス(CLI)のインストール (p. 403)」の説明に従ってイ
ンストールします。
このトピックでは、AWS アカウントをお持ちでない場合のサインアップ方法も説明しています。
• ご使用のシステムでアプリケーション環境を構成する AWS リソースを作成できるアクセス権限を持
つ AWS 認証情報。
これらの認証情報により、EB CLI がお客様に代わって環境のリソースを作成することができます。
認証情報をまだ保存していない場合は、アプリケーションを作成するときに認証情報の入力を求める
API Version 2010-12-01
795
AWS Elastic Beanstalk 開発者ガイド
ステップ 1: プロジェクトの設定
プロンプトが EB CLI によって表示されます。認証情報を保存する方法と、保存された認証情報を
EB CLI がどのように使用するかについては、「構成設定と優先順位 (p. 412)」を参照してください。
必要なアクセス権限の詳細については、「Elastic Beanstalk を AWS Identity and Access Management
に使用する (p. 344)」を参照してください。
• Git
Linux システムでは、パッケージマネージャを使用して Git をインストールできます。たとえば、
Ubuntu など、Debian ファミリの Linux システムでは、次のコマンドにより Git をインストールしま
す。
$ sudo apt-get install git
Red Hat ファミリのシステムでは、同じコマンドを使用できますが、パッケージマネージャの名前と
して yum を使用します。OS X システムでの Git のインストールに関する指示を含め、詳細について
は、Git を参照してください。
ステップ 1: プロジェクトの設定
EB CLI を使用すると、Elastic Beanstalk 環境 (p. 49)をすばやく作成し、Git リポジトリからのその環境
にアプリケーションをデプロイできます。最初のプロジェクトを開始する前に、ウォークスルーのサン
プルのプロジェクトを設定します。
サンプルプロジェクトを設定するには
1.
ターミナルウィンドウを開き、システム上のわかりやすい場所にプロジェクトディレクトリを作成
します。このウォークスルーでは、ディレクトリに sinatraapp という名前を付けることを前提
としています。
~$ mkdir sinatraapp
2.
sinatraapp ディレクトリに移動し、Git リポジトリを初期化します。
~$ cd sinatraapp
~sinatraapp$ git init .
Note
このウォークスルーでは、GitHub などのリモートリポジトリに対するアクセス権は不要で
す。このウォークスルーでは、ローカルの Git リポジトリを使用します。
3.
初めて Git を使用する場合は、変更をコミットできるように、Git 設定にユーザー名とメールアド
レスを追加します。
$ git config --global user.email "[email protected]"
$ git config --global user.name "Username"
ステップ 2: アプリケーションの作成
アプリケーションおよびそれに関連付けられる環境 (p. 49)を作成します。
API Version 2010-12-01
796
AWS Elastic Beanstalk 開発者ガイド
ステップ 2: アプリケーションの作成
アプリケーションを作成するには
1.
sinatraapp ディレクトリで、次のコマンドを実行して、アプリケーションを作成します。
~/sinatraapp$ eb init
2.
デフォルトの AWS リージョンを選択します。このウォークスルーでは、US-West-2 を選択しま
す。
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) sa-east-1 : South America (Sao Paulo)
(default is 3): 3
Tip
過去に EB CLI、AWS CLI、SDK のいずれかでデフォルトのリージョンを設定したことが
ある場合は、--region (p. 420) オプションを使用してリージョンを明示的に指定しない限
り、EB CLI はこのステップをスキップし、デフォルトのリージョンにアプリケーションを
作成します。
3.
適切なアクセス権限 (p. 344)を持つ AWS 認証情報のセットを指定します。保存された認証情報の適
切なセット (p. 412)がある場合、EB CLI はそれらの認証情報を自動的に使用し、このステップをス
キップします。
Important
当社では、お客様のアカウントのルート認証情報を Elastic Beanstalk に指定しないことを
お勧めします。その代わりに、適切なアクセス権限を指定して AWS Identity and Access
Management (IAM) ユーザーを作成し、その認証情報を指定します。AWS 認証情報の管理
については、「AWS アクセスキーを管理するためのベストプラクティス」を参照してく
ださい。
保存された認証情報がないか、保存された認証情報では適切なアクセス権限が付与されない場合、
eb init により、認証情報の入力を求める次のようなプロンプトが表示されます。
You have not yet set up your credentials or your credentials are incorrect
You must provide your credentials.
(aws-access-id): AKIAIOSFODNN7EXAMPLE
(aws-secret-key): wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY
4.
その後で、Elastic Beanstalk はそれらの認証情報を、eb-cli のプロファイル名で AWS CLI の ファイルに保存します。
アプリケーション名を入力します。このウォークスルーでは、デフォルトの値(アプリケーション
のルートディレクトリ名)を使用します。
API Version 2010-12-01
797
AWS Elastic Beanstalk 開発者ガイド
ステップ 3: 環境の作成
Enter Application Name
(default is "sinatraapp"): sinatraapp
5.
プラットフォームを指定します。このウォークスルーでは、Ruby を使用します。
Select a platform.
1) PHP
2) Node.js
3) IIS
4) Tomcat
5) Python
6) Ruby
7) Docker
8) GlassFish
9) Go
(default is 1): 6
6.
プラットフォームのバージョンを指定します。この例では、Ruby 2.1 (Puma) を使用します。
Select a platform version.1
1) Ruby 2.1 (Puma)
2) Ruby 2.1 (Passenger Standalone)
3) Ruby 2.0 (Puma)
4) Ruby 2.0 (Passenger Standalone)
5) Ruby 1.9.3
(default is 1): 1
7.
インスタンスへのログインに SSH を使用するかどうかを指定します。このウォークスルーでは、
インスタンスにログインする必要がないため、n と入力します。
Do you want to set up SSH for your instances?
(y/n): n
ステップ 3: 環境の作成
次に、Elastic Beanstalk 環境を作成し、eb create でその環境にサンプルアプリケーションをデプロ
イします。
~/sinatraapp$ eb create sinatraapp-dev --sample
Note
「service role required」エラーメッセージが表示された場合は、eb create をインタラクティ
ブに (環境名を指定せずに) 実行してください。EB CLI によってロールが作成されます。
1 つのコマンドを使用するだけで、EB CLI では、アプリケーションを AWS で実行する際に必要となる
すべてリソースをセットアップします。次のようなリソースがあります。
• 環境データを保存する Amazon S3 バケット
• トラフィックをウェブサーバーに分散するロードバランサー
API Version 2010-12-01
798
AWS Elastic Beanstalk 開発者ガイド
ステップ 4: 単純な Sinatra アプリケーションのデプロイ
• 着信ウェブトラフィックを許可するセキュリティグループ
• 負荷の変化に応じてサーバーの数を調整する Auto Scalingグループ
• 負荷が低くなった場合または高くなった場合に Auto Scaling グループに通知する Amazon CloudWatch
アラーム
• アプリケーションをホストする Amazon EC2 インスタンス
処理が完了すると、EB CLI はアプリケーションサーバーのパブリック DNS 名を出力します。デフォル
トのブラウザでウェブサイトを開くには、eb open を使用します。
~/sinatraapp$ eb open
ステップ 4: 単純な Sinatra アプリケーションのデプ
ロイ
次に、Sinatra アプリケーションを作成してデプロイすることができます。このステップでは、単純な
Sinatra アプリケーションを実装し、前のステップで作成した環境にデプロイする方法について説明し
ます。この例では、単純な文字列 Hello World! を表示する古典的なアプリケーションを実装します。
この例を拡張することで、より複雑な古典的アプリケーションまたはモジュール式のアプリケーション
を簡単に実装することができます。
Note
これ以降の手順では、すべてのアプリケーションファイルを、アプリケーションのルートディ
レクトリ sinatraapp に作成します。
Sinatra アプリケーションを作成してデプロイするには
1.
次の内容で、config.ru という名前の設定ファイルを作成します。
require './helloworld'
run Sinatra::Application
2.
次の内容で、helloworld.rb という名前の Ruby コードファイルを作成します。
require 'sinatra'
get '/' do
"Hello World!"
end
3.
次の内容で、Gemfile を作成します。
source 'http://rubygems.org'
gem 'sinatra'
4.
次のように、ファイルを Git リポジトリに追加し、変更をコミットします。
~/sinatraapp$ git add .
~/sinatraapp$ git commit -m "Add a simple Sinatra application"
API Version 2010-12-01
799
AWS Elastic Beanstalk 開発者ガイド
ステップ 5: クリーンアップ
ファイルが正常にコミットされたことを示す、次のような出力が表示されます。
[master (root-commit) dcdfe6c] Add a simple Sinatra application
4 files changed, 13 insertions(+)
create mode 100644 .gitignore
create mode 100644 Gemfile
create mode 100644 config.ru
create mode 100644 helloworld.rb
5.
ファイルは現在の Git ブランチにコミットされます。ブランチを明示的に作成しなかったため、
master という名前のデフォルトのブランチにファイルがコミットされます。リポジトリに複数の
ブランチがある場合、各ブランチを別の環境にプッシュするように Git を設定できます。詳細につ
いては、「EB CLI による Elastic Beanstalk 環境の管理 (p. 413)」を参照してください。
新しい Sinatra アプリケーションを環境にデプロイします。
~/sinatraapp$ eb deploy
eb deploy コマンドは、アプリケーションコードのバンドル (p. 42)を master ブランチに作成し
て環境にデプロイし、デフォルトのアプリケーションを置き換えます。2 回目にデプロイするとき
は、環境の AWS リソースがすでに作成されているため、1 回目よりもはるかに高速です。
6.
eb status --verbose コマンドを実行して、環境のステータスを確認します。次のような出力
が表示されます。
~/sinatraapp$ eb status --verbose
Environment details for: sinatraapp-dev
Application name: sinatraapp
Region: us-west-2
Deployed Version: dcdf
Environment ID: e-kn7feaqre2
Platform: 64bit Amazon Linux 2014.09 v1.2.0 running Ruby 2.1 (Puma)
Tier: WebServer-Standard
CNAME: sinatraapp-dev.elasticbeanstalk.com
Updated: 2015-03-03 23:15:19.183000+00:00
Status: Ready
Health: Green
Running instances: 1
i-c2e712cf: InService
[Status] が [Ready] になり、[Health] が [Green] になるまで、コマンドを繰り返します。次に、ブ
ラウザを更新するか、eb open を再び実行して、更新されたアプリケーションを表示します。
Hello World! と表示されるはずです。
Tip
デプロイの詳細な説明については、eb logs を実行して、デプロイのログを表示することがで
きます。
ステップ 5: クリーンアップ
手順が完了したら、ルートディレクトリ sinatraapp から次のコマンドを実行して、アプリケーショ
ンの環境を終了することができます。
API Version 2010-12-01
800
AWS Elastic Beanstalk 開発者ガイド
関連リソース
~/sinatraapp$ eb terminate
このコマンドを実行すると、環境のすべての AWS リソースがシャットダウンされるため、それ以上の
料金は発生しません。通常は数分かかります。プロセスが完了すると、Elastic Beanstalk によって次の
メッセージが表示されます。
INFO: terminateEnvironment completed successfully.
Tip
Amazon Relational Database Service (Amazon RDS) データベースインスタンスを環境にアタッ
チした場合は、終了することでそのインスタンスが削除されます。データを保存する場合は、
環境を終了する前にスナップショットを作成してください。詳細については、「DB スナップ
ショットの作成」を参照してください。Elastic Beanstalk での Amazon RDS の使用の詳細に
ついては、「Ruby での Amazon RDS の使用」を参照してください。
関連リソース
Git コマンドの詳細については、「Git – Fast Version Control System」を参照してください。
このウォークスルーでは、限られた EB CLI コマンドのみを使用します。完全なリストについては、eb
--help を実行するか、「EB CLI コマンドリファレンス (p. 420)」を参照してください。
Elastic Beanstalk での Ruby 環境の設定
Abstract
Elastic Beanstalk アプリケーションの Ruby コンテナを設定します。
Ruby 環境のカスタマイズと設定
Abstract
Ruby アプリケーションの Amazon EC2 インスタンスの動作をカスタマイズし、設定します。
Ruby アプリケーションをデプロイするときは、Amazon EC2 インスタンスの動作をカスタマイズおよ
び設定できます。ソースバンドルに設定ファイルを含めることで、アプリケーションバージョンをデプ
ロイすると同時にインスタンスを簡単にカスタマイズできます。ここでは、設定ファイルを作成し、
ソースにバンドルする手順を示します。
Note
設定ファイルは YAML または JSON 形式の規格に準拠している必要があります。 たとえば、
YAML を正しく解釈するにはインデントが重要です。詳細は、それぞれ http://www.yaml.org/
start.html または http://www.json.org を参照してください。アプリケーションでの設定ファイル
のデプロイの詳細については、「設定ファイル(.ebextensions)による高度な環境のカス
タマイズ (p. 147)」を参照してください。
Ruby 環境をカスタマイズおよび設定するには
1.
拡張子 .config が付いた設定ファイル(例えば、myapp.config)を作成し、ソースバンドルの
.ebextensions 最上位ディレクトリに格納します。.ebextensions ディレクトリには複数の設定ファ
API Version 2010-12-01
801
AWS Elastic Beanstalk 開発者ガイド
Ruby 環境のカスタマイズと設定
イルを入れることができます。設定ファイルのファイル形式と内容については、「設定ファイル
(.ebextensions)による高度な環境のカスタマイズ (p. 147)」を参照してください。
設定ファイルのスニペットの例を次に示します。
# Configure third-party service credentials
# in environment variables:
option_settings:
- option_name: AIRBRAKE_API_KEY
value: MYAPIKEY
# Run rake tasks before an application deployment
container_commands:
01deploy:
command: rake my_deployment_tasks
Note
アプリケーションで使用できる環境変数を設定する場合、"namespace" キーを
option_settings セクションで指定する必要はありません。
アクセス認証情報を渡すこともできます。例えば、次のように指定できます。
# If you do not specify a namespace, the default used is aws:elasticbean
stalk:application:environment
option_settings:
- option_name: PARAM1
value: somevalue
2.
アプリケーションバージョンをデプロイします。
Rails アプリケーションをデプロイする方法の例については、「Rails アプリケーションの Elastic
Beanstalk へのデプロイ (p. 786)」を参照してください。Sinatra アプリケーションをデプロイする方法
の例については、「AWS Elastic Beanstalk への Sinatra アプリケーションのデプロイ (p. 795)」を参照
してください。
環境変数にアクセスする
Elastic Beanstalk 環境変数を実行する Ruby 環境内部には、ENV['VARIABLE_NAME'] を使ってアクセ
スできます。
次のようなコードを使用します。
param1 = ENV['MYPARAM']
param2 = ENV['MYPARAM2']
Note
環境設定では、アクセント記号(`、ASCII 96)は除く、印刷可能な ASCII 文字を使用できま
す。また、200 文字を超えることはできません。
設定オプションの一覧については、「Ruby プラットフォームのオプション (p. 144)」を参照してくださ
い。
API Version 2010-12-01
802
AWS Elastic Beanstalk 開発者ガイド
AWS マネジメントコンソール
AWS マネジメントコンソール
Ruby の設定では、Amazon S3 ログのローテーションを有効または無効にできます。
Elastic Beanstalk アプリケーションの Ruby コンテナの設定にアクセスするには
1.
Elastic Beanstalk コンソールを開きます。
2.
Elastic Beanstalk コンソールの [Applications] ページで、設定する環境をクリックします。
3.
4.
環境ダッシュボードの [Overview] セクションで、[Edit] をクリックします。
[Configuration] ページで、[
す。
] を [Software Configuration] でクリックしてコンテナ設定を編集しま
ログオプション
[Log Options] セクションには、2 つの設定があります。
• Instance profile – アプリケーションに関連付けられた Amazon S3 バケットへのアクセス許可が付与
されているインスタンスプロファイルを指定します。
• Enable log file rotation to Amazon S3 – アプリケーションの Amazon EC2 インスタンスのログファイ
ルを、アプリケーションに関連付けられている Amazon S3 バケットにコピーするかどうかを指定し
ます。
環境プロパティ
[Environment Properties] セクションでは、アプリケーションを実行している Amazon EC2 インスタン
スの環境設定を指定できます。環境プロパティは、キーと値のペアでアプリケーションに渡されます。
次の環境設定を指定できます。
• BUNDLE_WITHOUT – Gemfile から依存関係をインストールするときに無視するグループを指定しま
す。複数のグループを指定するときは、各グループをコロン ":" で区切ります。詳細については、
http://gembundler.com/groups.html を参照してください。
• 各 [PARAM] ボックスでは、追加の環境設定を指定します。
Note
環境設定では、アクセント記号(`、ASCII 96)は除く、印刷可能な ASCII 文字を使用でき
ます。また、200 文字を超えることはできません。
API Version 2010-12-01
803
AWS Elastic Beanstalk 開発者ガイド
コマンドラインインターフェイス(CLI)
• RACK_ENV – アプリケーションを実行できる環境ステージ(開発、本稼働、テストなど)を指定し
ます。
• RAILS_SKIP_ASSET_COMPILIATION – ユーザーのアプリケーションの代わりに rake
assets:precompile を実行するか、単にスキップするかを指定します。Rails 3.x アプリケーショ
ンにのみ適用できます。
• RAILS_SKIP_MIGRATIONS – ユーザーのアプリケーションの代わりにコンテナで rake db:migrate
を実行するか、単にスキップするかを指定します。Rails 3.x アプリケーションにのみ適用できます。
Rails 以外の移行については、拡張子が .config のファイル(myconfig.config)を使用してコン
テナコマンドを指定し、手動で移行を実行する必要があります。RAILS_SKIP_MIGRATIONS を true
に設定した場合は、設定ファイルを使用して移行を行います。設定ファイルの使用の詳細について
は、「Ruby 環境のカスタマイズと設定 (p. 801)」を参照してください。
環境変数にアクセスする
Elastic Beanstalk 環境変数を実行する Ruby 環境内部には、ENV['VARIABLE_NAME'] を使ってアクセ
スできます。
次のようなコードを使用します。
param1 = ENV['MYPARAM']
param2 = ENV['MYPARAM2']
Note
環境設定では、アクセント記号(`、ASCII 96)は除く、印刷可能な ASCII 文字を使用できま
す。また、200 文字を超えることはできません。
コマンドラインインターフェイス(CLI)
アプリケーションの環境設定を編集するには
•
アプリケーションの環境設定を更新します。
$ aws elasticbeanstalk update-environment --environment-name my-env --optionsettings file://options.txt
options.txt
[
{
"Namespace": "aws:elasticbeanstalk:hostmanager",
"OptionName": "LogPublicationControl",
"Value": "false"
}
]
API
アプリケーションの環境設定を編集するには
API Version 2010-12-01
804
AWS Elastic Beanstalk 開発者ガイド
Amazon RDS の使用
•
以下のパラメータを使って UpdateEnvironment を呼び出します。
• OptionSettings.member.1.Namespace = aws:elasticbeanstalk:hostmanager
• OptionSettings.member.1.OptionName = LogPublicationControl
• OptionSettings.member.1.Value = false
Example
https://elasticbeanstalk.us-west-2.amazon.com/?EnvironmentName=SampleAppEnv
&OptionSettings.member.1.Namespace=aws%3Aelasticbeanstalk%3Ahostmanager
&OptionSettings.member.1.OptionName=LogPublicationControl
&OptionSettings.member.1.Value=false
&Operation=UpdateEnvironment
&AuthParams
Ruby での Amazon RDS の使用
Abstract
Amazon Relational Database Service(Amazon RDS)を使用し、Ruby アプリケーションでクラウド内の MySQL、
Oracle、PostgreSQL、または Microsoft SQL Server インスタンスのプロビジョニングと保守を行います。
Amazon Relational Database Service(Amazon RDS)を使用すると、クラウド内の MySQL、Oracle、
PostgreSQL、または Microsoft SQL Server インスタンスをすばやく簡単にプロビジョニングし、保守
することができます。このトピックでは、Elastic Beanstalk アプリケーションで Amazon RDS と Ruby
を使用する方法について説明します。Amazon RDS の詳細については、http://aws.amazon.com/rds/ を
参照してください。
Elastic Beanstalk アプリケーションで Amazon RDS を使用するには、次の手順を実行する必要があり
ます。
1. Amazon RDS DB インスタンスを作成します。
2. Amazon RDS DB インスタンスへの接続情報を使用して、コードでデータベース接続を確立します。
3. アプリケーションを Elastic Beanstalk にデプロイします。
このトピックでは、以下について説明します。
• アプリケーションで新しい Amazon RDS DB インスタンスを使用する
• アプリケーションで既存の Amazon RDS DB インスタンスを使用する
Ruby で新しい Amazon RDS DB インスタンスを使
用する
このトピックでは、新しい Amazon RDS DB インスタンスを作成し、Ruby アプリケーションでそれを
使用する手順について説明します。
Elastic Beanstalk アプリケーションから新しい Amazon RDS DB インスタンスと Ruby を使用するには
API Version 2010-12-01
805
AWS Elastic Beanstalk 開発者ガイド
Ruby で既存の Amazon RDS DB インスタンスを使用する
1.
Amazon RDS DB インスタンスを作成します。次のいずれかの方法で RDS DB インスタンスを作
成できます。
• 新しいアプリケーションバージョンを作成する場合は、Amazon RDS DB インスタンスを作成し
ます。Elastic Beanstalk コンソールを使用する手順については、「アプリケーションを作成しま
す。 (p. 39)」を参照してください。 eb を使用して Amazon RDS で Rails アプリケーションを
デプロイするサンプルウォークスルーについては、「Rails アプリケーションの Elastic Beanstalk
へのデプロイ (p. 786)」を参照してください。
• 既存のアプリケーションバージョンで新しい環境を起動する場合は、Amazon RDS DB インスタ
ンスを作成します。AWS Elastic Beanstalk コンソールを使用する手順については、「AWS Elastic
Beanstalk 環境を作成する (p. 53)」を参照してください。
• アプリケーションを Elastic Beanstalk にすでにデプロイしている場合、Amazon RDS DB イン
スタンスを作成し、既存の環境にアタッチすることができます。AWS Elastic Beanstalk コンソー
ルを使用する手順については、「Elastic Beanstalk でデータベースを設定する (p. 209)」を参照し
てください。EB CLI を使用する場合には、eb create 実行時に --database オプションを選
びます。
2.
Amazon RDS DB インスタンスの接続情報を使用してコードでデータベース接続を確立します。環
境変数を使用して接続情報にアクセスできます。次の例は RDS インスタンスでデータベースに接
続する方法を示します。
production:
adapter: mysql2
encoding: utf8
database: <%= ENV['RDS_DB_NAME'] %>
username: <%= ENV['RDS_USERNAME'] %>
password: <%= ENV['RDS_PASSWORD'] %>
host: <%= ENV['RDS_HOSTNAME'] %>
port: <%= ENV['RDS_PORT'] %>
3.
更新されたアプリケーションを Elastic Beanstalk 環境にデプロイします。
Ruby で既存の Amazon RDS DB インスタンスを使
用する
以前に作成した Amazon RDS DB インスタンスを使用するように Ruby アプリケーションを更新でき
ます。このトピックでは、既存の Amazon RDS DB インスタンスを使用して Ruby アプリケーション
を更新し、アプリケーションを Elastic Beanstalk にデプロイする方法について説明します。
Elastic Beanstalk アプリケーションから既存の Amazon RDS DB インスタンスと Ruby を使用するには
1.
次のいずれかの方法で Elastic Beanstalk 環境を作成します。
• 新しい環境で新しいアプリケーションを作成します。Elastic Beanstalk コンソールを使用する手
順については、「アプリケーションを作成します。 (p. 39)」を参照してください。 eb を使用し
て Amazon RDS で Rails アプリケーションをデプロイするサンプルウォークスルーについては、
「Rails アプリケーションの Elastic Beanstalk へのデプロイ (p. 786)」を参照してください。既存
の RDS DB インスタンスがあるため、この環境で RDS DB インスタンスを作成する必要はあり
ません。
• 既存のアプリケーションバージョンで新しい環境を起動します。Elastic Beanstalk コンソールを
使用する手順については、「AWS Elastic Beanstalk 環境を作成する (p. 53)」を参照してくださ
い。すでに既存の Amazon RDS DB インスタンスがあるため、この環境で Amazon RDS DB イ
ンスタンスを作成する必要はありません。
API Version 2010-12-01
806
AWS Elastic Beanstalk 開発者ガイド
ツール
2.
Amazon RDS DB セキュリティグループを設定し、Elastic Beanstalk アプリケーションに使用する
Amazon EC2 セキュリティグループからアクセスできるようにします。AWS マネジメントコン
ソールを使用した EC2 セキュリティグループ名の検索手順については、「セキュリティグルー
プ (p. 200)」を参照してください。詳細については、「Amazon Relational Database Service User
Guide」の「Working with DB Security Groups」の「Authorizing Network Access to an Amazon EC2
Security Group」セクションを参照してください。
3.
Amazon RDS DB インスタンスの接続情報を使用してコードでデータベース接続を確立します。次
の例は、mydbinstance.abcdefghijkl.us-west-2.rds.amazonaws.com にある RDS インスタンスの
データベースに、ポート 3306、ユーザー名 "sa"、パスワード "mypassword" を使用して接続する
方法を示しています。
production:
adapter: mysql2
encoding: utf8
database: exampledb
username: sa
password: mypassword
host: mydbinstance.abcdefghijkl.us-west-2.rds.amazonaws.com
port: 3306
4.
更新されたアプリケーションを Elastic Beanstalk 環境にデプロイします。
ツール
Abstract
API 上に Ruby アプリケーションを構築して、ウェブサービスのインターフェイスに対して直接コーディングをす
る際の複雑さを解消します。
AWS SDK for Ruby
AWS Ruby ライブラリ、コードサンプル、資料を備えた 1 つのダウンロード可能なパッケージで、す
ぐに開始できます。API 上に Ruby アプリケーションを構築できるため、ウェブサービスのインター
フェイスに対して直接コーディングをする複雑さがなくなります。オールインワンのライブラリは、認
証、再試行リクエスト、エラー処理を含む、AWS クラウドのプログラミングに関連する低レベルのタ
スクを非表示にする Ruby の開発者フレンドリーな API を提供します。ライブラリを使用したアプリ
ケーションの構築方法については、Ruby による実用的な例が用意されています。SDK の詳細情報、サ
ンプルコード、資料、ツール、追加のリソースについては、http://aws.amazon.com/ruby/ にアクセスし
てください。
EB CLI による Git でのデプロイ
EB CLI は、アプリケーションをコマンドラインから迅速に、より簡単にデプロイできるようにする
AWS Elastic Beanstalk です。eb および Git を使用して Ruby アプリケーションを Elastic Beanstalk に
初めてデプロイする場合は、「EB CLI および Git を使用した Ruby での Elastic Beanstalk アプリケー
ションのデプロイ (p. 785)」を参照してください。
API Version 2010-12-01
807
AWS Elastic Beanstalk 開発者ガイド
リソース
リソース
Abstract
Ruby アプリケーションの開発を支援する追加リソース。
Ruby アプリケーションのデプロイに関しては他にも参照情報があります。
リソース
説明
AWS SDK for Ruby
AWS SDK for Ruby をインストールします。
Ruby 開発フォーラム
質問を投稿してフィードバックを得ることができます。
Ruby 開発者センター
サンプルコード、ドキュメント、ツール、追加リソースを
1 か所で入手できる場所です。
API Version 2010-12-01
808
AWS Elastic Beanstalk 開発者ガイド
トラブルシューティング
Abstract
最も頻繁に発生する Elastic Beanstalk の問題に関する情報とその解決方法または回避方法を示します。
トピック
• 環境イベントについて (p. 811)
• Docker コンテナのトラブルシューティング (p. 819)
このセクションでは、最も頻繁に発生する Elastic Beanstalk の問題とその解決方法または回避方法を
リストします。
問題
回避方法
Elastic Beanstalk から Amazon RDS に RDS を Elastic Beanstalk アプリケーションに接続するに
接続できない。
は、以下の作業を実行します。
• RDS が Elastic Beanstalk アプリケーションと同じリー
ジョンにあることを確認します。
• 該当するインスタンスの RDS セキュリティグループが、
Elastic Beanstalk 環境用に使用している Amazon EC2 セ
キュリティグループの権限を持っていることを確認しま
す。AWS マネジメントコンソールを使用した EC2 セキュ
リティグループ名の検索手順については、「セキュリティ
グループ (p. 200)」を参照してください。EC2 セキュリティ
グループの詳しい設定方法については「Amazon Relational
Database Service User Guide」の「Working with DB Security Groups」にある「Authorizing Network Access to an
Amazon EC2 Security Group」セクションをご覧くださ
い。
• Java の場合は、MySQL JAR ファイルが WEB-INF/lib に
あることを確認してください。詳細については、Amazon
RDS データベースを Elastic Beanstalk 環境に追加す
る (p. 622) をご覧ください。
API Version 2010-12-01
809
AWS Elastic Beanstalk 開発者ガイド
問題
回避方法
アプリケーションのバージョンを更新
するときに、数秒間のダウンタイムが
生じる。
Elastic Beanstalk はドロップインアップグレードプロセスを
使用するため、数秒間のダウンタイムが生じることがありま
す。ローリングデプロイ (p. 77)を使用して、運用環境にお
けるデプロイの影響を最小化します。
Elastic Beanstalk 環境の Amazon EC2 CNAME レコードを作成し、それを、Amazon EC2 インス
セキュリティグループを使用して、別 タンスのパブリックにポイントします。
の Amazon EC2 インスタンスに接続で
きない。
アプリケーション URL を、
myapp.elasticbeanstalk.com から
www.myapp.com に変更したい。
DNS サーバーに、次のような CNAME レコードを登録しま
す: www.mydomain.com CNAME mydomain.elasticbeanstalk.com。
Elastic Beanstalk アプリケーションに
特定のアベイラビリティーゾーンを指
定できない。
API、CLI、Eclipse プラグイン、または Visual Studio プラ
グインを使用して、特定の AZ を指定することはできます。
AWSマネジメントコンソールを使用してアベイラビリティー
ゾーンを指定する方法については、「Elastic Beanstalk で
Auto Scaling を設定する (p. 189)」を参照してください。
自分の Elastic Beanstalk アプリケーショ デフォルトの Elastic Beanstalk 設定では追加の課金は発生
ンに対して課金される。
しません。ただし、Amazon EC2 のインスタンスタイプを
変更したり別の Amazon EC2 インスタンスを追加したりし
て、デフォルト設定を変更した場合は、課金が発生すること
があります。無料利用枠について詳しくは、http://aws.amazon.com/free/ を参照してください。ご利用のア
カウントに関する質問は、カスタマーサービスチームに直接
お問い合わせください。
SMS で通知を受け取りたい。
http://www.makeuseof.com/tag/email-to-sms で作成されるよ
うな SMS メールアドレスを指定すると、SMS で通知を受
け取ることができます。複数のメールアドレスを指定するに
は、Elastic Beanstalk コマンドラインを使用して、環境とと
もに SNS トピックを登録します。
環境のインスタンスタイプはどのよう
に変更できますか?
環境の設定画面の [ウェブ層] セクションで [インスタンス]
カードの歯車アイコンを選択します。 新しいインスタンス
タイプを選択し、[適用] をクリックして環境を更新します。
Elastic Beanstalk はすべての実行中インスタンスを終了し、
新しいインスタンスに置き換えます。
AWS Toolkit for Eclipse を使用してデプ 以下のいずれかを行ってください。
ロイするときに、Elastic Beanstalk に
• Eclipse の最新のディストリビューションを実行している
接続できない。
ことを確認します。
• Elastic Beanstalk にアカウントを登録し、確認メールを受
信済みであることを確認します。
• Eclipse で「エラーログ」を調べ、追加情報またはスタッ
クトレースがないかどうか確認します。
API Version 2010-12-01
810
AWS Elastic Beanstalk 開発者ガイド
起動イベント
問題
回避方法
Elastic Beanstalk を実行した際に、EBS 環境内のインスタンスは EBS を使用して保管します。しか
ボリュームが削除されることを防ぐ方 し、インスタンスが Autoscaling で終了されると、そのルー
法とは?
トボリュームは削除されます。 状態やその他のデータをイ
ンスタンスに保存することは推奨されません。 必要に応じ
て、ボリュームが削除されることを EC2 CLI で防ぐことが
できます。$ ec2-modify-instance-attribute -b
'/dev/sdc=<vol-id>:false これは「EC2 コマンドライ
ンリファレンス」で説明されています。
AWS マネジメントコンソールで作成し 既存の環境を Eclipse にインポートする (p. 628) に従って、
たサーバーが、Toolkit for Eclipse に表 サーバーを手動でインポートします。
示されない。
環境は起動するが、コマンドのタイム
アウトエラーが発生する。
インスタンス上でコマンドを実行する、大きなファイルをダ
ウンロードする、あるいはパッケージをインストールするた
めに設定ファイルを使用すると、アプリケーションのデプロ
イに時間がかかる場合があります。 コマンドまたはスクリ
プトが適切に返されることを確認して、必要に応じてコマン
ドタイムアウトを高めてください。 詳細については、「環
境の起動および更新オペレーションは成功したが、コマンド
がタイムアウトした (p. 817)」を参照してください。
環境を更新できない。関連イベント You
cannot configure an AWS Elastic
Beanstalk environment with
values for both the Elastic
Load Balancing Target option
and Application Healthcheck URL
option
これは、Elastic Beanstalk が、aws:elasticbeanstalk:application 名前空間の [Application Healthcheck URL] オプ
ションの設定に指定した値と競合するオプション設定を受け
取ったことを示しています。[Target] オプション
(aws:elb:healthcheck 名前空間)を環境または設定ファ
イル (p. 147)から削除して、環境を再び更新してみてくださ
い。
AZ 内のサブネット間でロードバラン
サーを移動しようとしたときに、更新
が原因 ELB cannot be attached to
multiple subnets in the same
AZ. により失敗した。
ロードバランサーのサブネットを変更するには、元のアベイ
ラビリティーゾーンの外に移動してから、必要なサブネット
を用意した元のアベイラビリティーゾーンに戻す必要があり
ます。この処理中は、すべてのインスタンスは AZ 間で移行
されるため、長時間のダウンタイムが発生します。別のサブ
ネットを使用する必要がある場合は、新しい環境を作成して
CNAME スワップを実行する (p. 79)ことをお勧めします。
環境イベントについて
Abstract
最も一般的な起動イベント、その発生理由、および Elastic Beanstalk アプリケーションの環境起動関連の問題への
対処方法について説明します。
トピック
• Elastic Beanstalk URL に対する HTTP HEAD リクエストが失敗する (p. 812)
• CPU 使用率が 95% を超えている (p. 812)
• Elastic Load Balancer に正常なインスタンスがない (p. 813)
• Elastic Load Balancer が見つからない (p. 813)
• インスタンスがステータスヘルスチェックに応答しない (p. 814)
• 環境の起動に失敗する (p. 815)
API Version 2010-12-01
811
AWS Elastic Beanstalk 開発者ガイド
Elastic Beanstalk URL に対する HTTP HEAD リクエストが
失敗する
• Amazon EC2 インスタンスの起動に失敗する (p. 815)
• アプリケーションがタイムアウト期間内に準備完了状態にならない (p. 815)
• 環境は起動したが、問題がある (p. 816)
• Amazon EC2 インスタンスが待機時間内に起動できない (p. 816)
• 環境の起動および更新オペレーションは成功したが、コマンドがタイムアウトした (p. 817)
• アプリケーションバージョンのデプロイの失敗 (p. 818)
Elastic Beanstalk は、お使いのアプリケーションの状態を確認するために、環境起動処理を監視しま
す。Elastic Beanstalk は、アプリケーションの状態を確認するため、アプリケーションのヘルスチェッ
ク URL(デフォルトではルートまたは ‘/’)に定期的にリクエストを送信します。アプリケーションに
問題があってヘルスチェックに応答しない場合、さまざまな起動イベントが発行されます。このセク
ションでは、最も一般的な起動イベントについて説明し、その発生の理由と、環境起動関連の問題への
対処方法について説明します。イベントの表示手順については、イベントの表示 (p. 293) をご覧くださ
い。ヘルスチェック URL の詳細については、ヘルスチェック (p. 207) をご覧ください。
Elastic Beanstalk URL に対する HTTP HEAD リクエ
ストが失敗する
Abstract
"Failed to perform HTTP HEAD requests to http://<yourapp>.elasticbeanstalk.com:80" という起動イベントを受信し
ました。
"Failed to Perform HTTP HEAD Request to http://<yourapp>.elasticbeanstalk.com:80"
Elastic Beanstalk は、ヘルスチェック URL に定期的に HTTP HEAD リクエストを送信します。このイ
ベントは、ヘルスチェック URL が(HTTP コード 200)で正常に応答しないときに発生します。
このイベントを受け取ったら、以下のいずれかの手順を試してください。
• アプリケーションのヘルスチェック URL が存在することを確認します。例えば、Elastic Beanstalk
が http://healthcheckrocks.elasticbeanstalk.com:80/myapp/index.jsp にヘルスチェッ
クリクエストを送信する場合は、/myapp/index.jsp が存在していてアクセス可能であることを確
認します。PHP の場合も同様に、
http://healthcheckrocks.elasticbeanstalk.com:80/myapp/index.php を使用する際
は、/myapp/index.php が存在していてアクセス可能であることを確認します。ASP.NET の場合、
http://healthcheckrocks.elasticbeanstalk.com:80/myapp/default.aspx を使用する際
は、/myapp/default.aspx が存在していてアクセス可能であることを確認します。
• AWS マネジメントコンソールの [Events] ページで以前のイベントを調べ、環境が正常であることを
確認してください。例えば環境のインスタンスが CPU 利用率の 100% 近くで動作している場合、反
応が悪くなることがあります。Elastic Beanstalk は、次の内容のイベントを通じてアラートします。
Instance <instance id> is experiencing CPU Utilization greater than 95.00%. Consider adjusting
auto-scaling settings or upgrading to an instance type larger than a <instance type>.このイベントの
詳細については、CPU 使用率が 95% を超えている (p. 812) をご覧ください。
CPU 使用率が 95% を超えている
Abstract
CPU 使用率が 95% を超えているという起動イベントを受信しました。
"CPU Utilization Greater Than 95.00%"
API Version 2010-12-01
812
AWS Elastic Beanstalk 開発者ガイド
Elastic Load Balancer に正常なインスタンスがない
Instance <instance id> is experiencing CPU utilization greater than 95.00%. Consider adjusting auto-scaling
settings or upgrading to an instance type larger than a <instance type>. というイベントを受け取った場
合は、インスタンスが CPU を 95% 以上の時間において使用していることを意味します。
複数のインスタンスをまたがってアプリケーションを並列処理できる場合は、インスタンスの最大数を
増加し、スケーリングトリガを調整することによって、自動スケーリング設定を調整できます。手順に
ついては、「Elastic Beanstalk で Auto Scaling を設定する (p. 189)」を参照してください。
お使いのアプリケーションで、より高いコンピューティング能力が必要とされる場合は、お使いの環境
の Amazon EC2 インスタンスタイプを更新することもできます。手順については、「Elastic Beanstalk
を使用して Amazon EC2 サーバーインスタンスを設定する (p. 199)」を参照してください。
Elastic Load Balancer に正常なインスタンスがない
Abstract
Elastic Load Balancer の awseb-<yourapp> に正常なインスタンスがないという起動イベントを受信しました。
"Elastic Load Balancer awseb-<yourapp> Has Zero Healthy Instances"
すべてのインスタンスの状態が緑色から赤色に変わると、Elastic Beanstalk が、アプリケーションが利
用できなくなったことを伝える警告を発します。アプリケーションのヘルスチェック URL が存在する
ことを確認します。例えば、Elastic Beanstalk が
http://healthcheckrocks.elasticbeanstalk.com:80/myapp/index.jsp にヘルスチェック
リクエストを送信する場合は、/myapp/index.jsp が存在していてアクセス可能であることを確認し
ます。PHP の場合も同様に、
http://healthcheckrocks.elasticbeanstalk.com:80/myapp/index.php を使用する際
は、/myapp/index.php が存在していてアクセス可能であることを確認します。ASP.NET の場合、
http://healthcheckrocks.elasticbeanstalk.com:80/myapp/default.aspx を使用する際
は、/myapp/default.aspx が存在していてアクセス可能であることを確認します。
Elastic Load Balancer が見つからない
Abstract
Elastic Load Balancer の awseb-<yourapp> が見つからないという起動イベントを受信しました。
"Elastic Load Balancer awseb-<yourapp> Cannot Be Found"
Elastic Load Balancer awseb-yourapp cannot be found. If this problem persists, try rebuilding your
environment というイベントを受け取った場合は、お使いの環境の Elastic Load Balancer が削除された
ことを意味します。通常、このイベントはアカウント所有者または権限付与されたユーザーが手動で
Elastic Load Balancer を削除した場合に発生します。 この問題を解決するには、環境を再構築する必
要があります。
環境を再構築するには、以下の手順を実行します。
1.
Elastic Beanstalk コンソールの [Applications] ページで、再構築する環境の名前をクリックします。
API Version 2010-12-01
813
AWS Elas