

翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。

# Elastic Beanstalk 環境でのカスタム Amazon マシンイメージ (AMI) の使用
<a name="using-features.customenv"></a>

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

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

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

## カスタム AMI の作成
<a name="using-features.customenv.create"></a>

[EC2 Image Builder](https://aws.amazon.com/image-builder) を使用して、これらの手順の代替としてカスタム AMI を作成および管理できます。詳細については、「[Image Builder User Guide](https://docs.aws.amazon.com/imagebuilder/latest/userguide/what-is-image-builder.html)」を参照してください。

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

1. コマンドウィンドウで、次のようなコマンドを実行します。詳細については、「*AWS CLI コマンドリファレンス*」の [describe-platform-version](https://docs.aws.amazon.com/cli/latest/reference/elasticbeanstalk/describe-platform-version.html) を参照してください。

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

     
**Example - 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"
       }
   ]
   ```  
**Example - 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"
       }
   ]
   ```

1. 結果として `ami-020ae06fdda6a0f66` のようになる `ImageId` 値を書き留めます。

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

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

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

**注記**  
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.md)または[マルチコンテナ Docker プラットフォーム](create_deploy_docker_ecs.md)で実行することもできます。

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

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

1. [**インスタンスの作成**] を選択してください。

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

   ニーズに合った別のコミュニティ AMI のリストを検索することもできます。
**注記**  
HVM 仮想化を使用する AMI を選択することをお勧めします。これらの AMI の説明には、[**仮想化タイプ: hvm**] と表示されます。  
詳細については、「Amazon EC2 ユーザーガイド」の「[仮想化タイプ](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/ComponentsAMIs.html#virtualization_types)」を参照してください。

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

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

1. **(廃止された 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 より前) に基づく[プラットフォームバージョン](concepts.platforms.md)のソリューションスタック名に示される日付と同じです。
**注記**  
`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 を使用するために必要となります。

1. ウィザードを続行して、[EC2 インスタンスを起動](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/launching-an-instance.html)します。プロンプトが表示されたら、次のステップでそのインスタンスに接続できるように、アクセス権があるキーペアを選択します。

1.  SSH または RDP で[インスタンスに接続](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/AccessingInstances.html)します。

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

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

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

1.  AWS 追加料金が発生しないようにするには、[EC2 インスタンスを終了します](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/terminating-instances.html)。

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

1. [Elastic Beanstalk コンソール](https://console.aws.amazon.com/elasticbeanstalk)を開き、**リージョン**リストで を選択します AWS リージョン。

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

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

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

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

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

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

## カスタム AMI を使用した環境の管理
<a name="using-features.customenv.managing"></a>

### プラットフォームの更新
<a name="using-features.customenv.platform-updates."></a>

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

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

新しいカスタム AMI 作成の詳細については、このトピックで前述した「[カスタム AMI の作成](#using-features.customenv.create)」を参照してください。

### カスタム AMI の削除
<a name="using-features.customenv.platform-updates."></a>

環境からカスタム 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 をクリーンアップする
<a name="using-features.customenv.cleanup"></a>

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