カスタム Amazon Machine Image (AMI) の使用 - AWS Elastic Beanstalk

カスタム Amazon Machine Image (AMI) の使用

AWS Elastic Beanstalk 環境を作成すると、Amazon マシンイメージ (AMI) を指定して、プラットフォームバージョンに含まれる標準 Elastic Beanstalk AMI の代わりに使用できます。カスタム AMI では、標準 AMI に含まれていない多数のソフトウェアをインストールする必要がある場合、インスタンスがユーザーの環境で起動されていればプロビジョニング時間が向上します。

設定ファイルの使用は、環境を迅速かつ一貫して設定およびカスタマイズするのに役立ちます。ただし、設定を適用すると、環境の作成および更新時に時間がかかるようになることがあります。設定ファイルで多数のサーバーの設定をする場合は、必要なソフトウェアのインストールおよび設定が済んでいるカスタム AMI を作成することによって、その時間を短縮できます。

設定ファイルでは実装が困難であったり適用に時間がかかったりする低レベルのコンポーネント (Linux カーネルなど) に対する変更を、カスタム AMI で行うこともできます。カスタム AMI を作成するには、Amazon EC2 で Elastic Beanstalk プラットフォーム AMI を起動し、ニーズに合わせてソフトウェアと設定をカスタマイズした後、インスタンスを停止して、そこから AMI を保存します。

カスタム AMI の作成

ベースの Elastic Beanstalk AMI を特定する

  1. コマンドウィンドウで、次のようなコマンドを実行します。カスタム AMI を使用する AWS のリージョンを指定し、プラットフォームの ARN とバージョン番号をアプリケーションが基盤にする Elastic Beanstalk プラットフォームで置き換えます。

    $ aws elasticbeanstalk describe-platform-version --region us-east-2 \ --platform-arn "arn:aws:elasticbeanstalk:us-east-2::platform/Tomcat 8.5 with Java 8 running on 64bit Amazon Linux/3.1.6" \ --query PlatformDescription.CustomAmiList [ { "VirtualizationType": "pv", "ImageId": "" }, { "VirtualizationType": "hvm", "ImageId": "ami-020ae06fdda6a0f66" } ]
  2. 結果として ami-020ae06fdda6a0f66 のようになる ImageId 値を書き留めます。

この値は、アプリケーションに関連するプラットフォームバージョン、EC2 インスタンスアーキテクチャ、および AWS のリージョンのストック Elastic Beanstalk AMI です。複数のプラットフォーム、アーキテクチャまたは AWS のリージョン向けの AMI を作成する必要がある場合、このプロセスを繰り返して各組み合わせの正しいベース AMI を特定します。

コメント
  • Elastic Beanstalk 環境で起動したインスタンスから AMI を作成しないでください。Elastic Beanstalk は、プロビジョニング時にインスタンスに変更を加えるため、保存された AMI で問題が発生する可能性があります。Elastic Beanstalk 環境のインスタンスからイメージを保存すると、そのインスタンスにデプロイされたアプリケーションのバージョンがイメージの固定部分になります。

  • 常に最新のプラットフォームバージョンを使用することをお勧めします。新しいプラットフォームバージョンに更新する場合は、カスタム AMI を新しいプラットフォームバージョンの AMI にリベースすることもお勧めします。これにより、互換性のないパッケージまたはライブラリのバージョンによるデプロイエラーが最小限に抑えられます。

Elastic Beanstalk が発行したものではないコミュニティ AMI からカスタム AMI を作成することもできます。最新の Amazon Linux AMI を出発点として使用できます。Elastic Beanstalk によって管理されていない Linux AMI を使用して環境を起動すると、Elastic Beanstalk は、拡張ヘルスレポート などの機能をサポートするために、プラットフォームソフトウェア (言語、フレームワーク、プロキシサーバーなど) と追加のコンポーネントのインストールを試みます。

注記

Elastic Beanstalk によって管理されていない AMI は、Windows Server ベースの Elastic Beanstalk プラットフォームではサポートされません。

Elastic Beanstalk は Elastic Beanstalk によって管理されていない AMI を使用できますが、Elastic Beanstalk が欠落したコンポーネントをインストールするためにプロビジョニング時間が増加し、そもそもカスタム AMI を作成する利点が少なくなったり、まったくなくなったりします。他の Linux ディストリビューションは一部のトラブルシューティングについては動作しますが、公式にはサポートされていません。アプリケーションに特定の Linux ディストリビューションが必要な場合は、代わりの方法として Docker イメージを作成し、Elastic Beanstalk の Docker プラットフォームまたは マルチコンテナ Docker プラットフォームで実行することもできます。

カスタム AMI を作成するには

  1. https://console.aws.amazon.com/ec2/ で Amazon EC2 コンソールを開きます。

  2. [インスタンスの作成] を選択します。

  3. [コミュニティ AMI] を選択します。

  4. カスタム AMI を作成するためにカスタマイズする、ベースとなる Elastic Beanstalk または Amazon Linux を特定した場合は、AMI ID を検索ボックスに入力し、Enter キーを押します。

    ニーズに合った別のコミュニティ AMI のリストを検索することもできます。

    注記

    HVM 仮想化を使用する AMI を選択することをお勧めします。これらの AMI の説明には、[仮想化タイプ: hvm] と表示されます。

    
              EC2 コンソールに HVM 仮想化タイプがリストされた AMI

    インスタンスの仮想化タイプの詳細については、Linux インスタンス用 Amazon EC2 ユーザーガイドの「Linux AMI 仮想化タイプ」を参照してください。

  5. [選択] で AMI を選択します。

  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 イメージの場合、この値は、Amazon Linux AMI (Amazon Linux 2 以前) に基づく プラットフォームバージョンのソリューションスタック名に示される日付と同じです。

    注記

    repo_releasever 設定では、Amazon Linux AMI のロックオン起動機能を指定します。これにより、AMI は起動時に固定された特定のリポジトリバージョンを使用します。この機能は Amazon Linux 2 ではサポートされないため、環境で最新の Amazon Linux 2 プラットフォームブランチが使用されている場合は、指定しないでください。カスタム AMI を Elastic Beanstalk で使用する場合は、Amazon Linux AMI プラットフォームブランチ (Amazon Linux 2 以前) でのみ、この設定が必要です。

    repo_upgrade を設定すると、セキュリティ更新プログラムの自動インストールが無効になります。これは、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. Amazon EC2 コンソールで、EC2 インスタンスを停止します。次に、[インスタンスの操作] メニューで、[イメージの作成 (EBS AMI)] を選択します。

  13. AWS の追加料金が発生しないように、EC2 インスタンスを終了します。

Elastic Beanstalk 環境でカスタム AMI を使用するには

  1. Elastic Beanstalk コンソールを開き、[リージョン] のリストで AWS リージョンを選択します。

  2. ナビゲーションペインで、[環境] を選択し、リストから環境の名前を選択します。

    注記

    環境が多数ある場合は、検索バーを使用して環境リストをフィルタリングします。

  3. ナビゲーションペインで、[設定] を選択します。

  4. [キャパシティー] 設定カテゴリで、[編集] を選択します。

  5. [AMI ID] には、ユーザーのカスタム AMI ID を入力します。

  6. [Apply] を選択します。

カスタム AMI で新しい環境を作成するときは、AMI の作成時にベースとして使用したのと同じプラットフォームバージョンを使用する必要があります。後でカスタム AMI を使用している環境にプラットフォーム更新を適用した場合、Elastic Beanstalk はブートストラッププロセス中にライブラリと設定の更新の適用を試みます。

カスタム AMI をクリーンアップする

カスタム AMI を終了し、Elastic Beanstalk 環境をもう起動する必要がない場合は、ストレージコストを最小限に抑えるために、AMI をクリーンアップすることを検討してください。カスタム AMI をクリーンアップするには、Amazon EC2 から登録を解除し、関連する他のリソースを削除する必要があります。詳細については、「Linux AMI の登録解除」または「Windows AMI の登録解除」を参照してください。