カスタム 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 を作成するには、Elastic Beanstalk プラットフォーム AMI を Amazon EC2 で起動し、ニーズに合わせてソフトウェアと設定をカスタマイズした後、インスタンスを停止して、そこから AMI を保存します。

カスタム AMI の作成

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

  1. コマンドウィンドウで、次のようなコマンドを実行します。詳細については、AWS CLI コマンドリファレンスdescribe-platform-version をご参照ください。

    カスタム AMI を使用する AWS のリージョンを指定し、プラットフォームの ARN とバージョン番号をアプリケーションが基盤にする Elastic Beanstalk プラットフォームで置き換えます。

    例 - Mac OS / Linux OS

    $ 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" } ]

    例 - Windows OS

    C:\> aws elasticbeanstalk describe-platform-version --region us-east-2 --platform-arn"arn:aws:elasticbeanstalk:us-east-2::platform/IIS 10.0 running on 64bit Windows Server 2019/2.6.4" --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 にリベースすることもお勧めします。これにより、互換性のないパッケージまたはライブラリのバージョンによるデプロイエラーが最小限に抑えられます。

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

注記

Windows Server に基づくカスタム AMI には、ステップ 1 で前述したように、describe-platform-version から返されたストックの Elastic Beanstalk AMI が必要です。

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

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

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

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

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

  4. ベースの Elastic Beanstalk AMI (describe-platform-version を使用) または Amazon Linux AMI を特定したら、その AMI ID を検索ボックスに入力します。次に、Enter キーを押します。

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

    注記

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

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

    インスタンスの仮想化タイプの詳細については、Linux インスタンス用 Amazon EC2 ユーザーガイドLinux AMI 仮想化タイプまたは Windows インスタンス用 Amazon EC2 ユーザーガイドWindows 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 の詳細については、「EC2Config サービスを使用した Windows インスタンスの設定」を参照してください。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 の登録解除」を参照してください。