Elastic Beanstalk 環境でのカスタム Amazon マシンイメージ (AMI) の使用 - AWS Elastic Beanstalk

Elastic Beanstalk 環境でのカスタム Amazon マシンイメージ (AMI) の使用

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

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

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

カスタム AMI の作成

EC2 Image Builder を使用して、これらの手順の代替としてカスタム AMI を作成および管理できます。詳細については、「Image Builder User Guide」を参照してください。

ベースの 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/Node.js 20 running on 64bit Amazon Linux 2023/6.1.7" \ --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 2022/2.15.3" --query PlatformDescription.CustomAmiList [ { "VirtualizationType": "pv", "ImageId": "" }, { "VirtualizationType": "hvm", "ImageId": "ami-020ae06fdda6a0f66" } ]
  2. 結果として ImageId のようになる ami-020ae06fdda6a0f66 値を書き留めます。

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

注記

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

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

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

    注記

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

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

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

  5. インスタンスタイプを選択し、[次: インスタンスの詳細の設定] を選択します。

  6. (廃止された Amazon Linux AMI (AL1) プラットフォームの場合) サポートされている Linux ベースのプラットフォームまたは Windows プラットフォームで環境が実行されている場合は、このステップをスキップします。

    [高度な詳細] セクションを展開し、[ユーザーデータ] フィールドに以下のテキストを貼り付けます。

    #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 を使用するために必要となります。

  7. ウィザードを続行して、EC2 インスタンスを起動します。プロンプトが表示されたら、次のステップでそのインスタンスに接続できるように、アクセス権があるキーペアを選択します。

  8. SSH または RDP でインスタンスに接続します。

  9. 目的のカスタマイズを行います。

  10. (Windows プラットフォーム) EC2Config サービス Sysprep を実行します。EC2Config の詳細については、「EC2Config サービスを使用した Windows インスタンスの設定」を参照してください。 から取得できるランダムなパスワードを生成するように Sysprep が設定されていることを確認しますAWS マネジメントコンソール

  11. Amazon EC2 コンソールで、EC2 インスタンスを停止します。次に、[インスタンスの操作] メニューで、[イメージの作成 (EBS AMI)] を選択します。

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

Elastic Beanstalk 環境でカスタム AMI を使用するには
  1. Elastic Beanstalk コンソールを開き、[Regions] (リージョン) リストで AWS リージョンを選択します。

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

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

  4. [容量] 設定カテゴリで、[編集] を選択します。

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

  6. ページの最下部で [適用] を選択し変更を保存します。

カスタム AMI で新しい環境を作成するときは、AMI の作成時にベースとして使用したのと同じプラットフォームバージョンを使用する必要があります。

カスタム AMI を使用した環境の管理

プラットフォームの更新

カスタム AMI を使用する場合、Elastic Beanstalk は、更新が手動で適用されるか、マネージドプラットフォーム更新を介して適用されるかにかかわらず、プラットフォームバージョンが更新されても、環境内で同じカスタム AMI を引き続き使用します。新しいプラットフォームバージョンのストック AMI を使用するように環境はリセットされません

新しいプラットフォームバージョンのストック AMI に基づいて、新しいカスタム AMI を作成することをお勧めします。これにより、新しいプラットフォームバージョンで利用可能なパッチが適用され、互換性のないパッケージまたはライブラリバージョンによるデプロイの失敗も最小限に抑えられます。

新しいカスタム AMI 作成の詳細については、このトピックで前述した「カスタム AMI の作成」を参照してください。

カスタム AMI の削除

環境からカスタム AMI を削除し、環境のプラットフォームバージョンにストック AMI を使用するようにリセットする場合は、次の CLI コマンドを使用します。

aws elasticbeanstalk update-environment \ --application-name my-application \ --environment-name my-environment \ --region us-east-1 \ --options-to-remove Namespace=aws:autoscaling:launchconfiguration,OptionName=ImageId
注記

サービスの中断を回避するには、この変更を本稼働環境に適用する前に、アプリケーションをストック AMI でテストします。

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

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