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
© Copyright 2024 ExpyDoc