

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

# Elastic Beanstalk カスタムプラットフォーム (廃止)
<a name="custom-platforms"></a>

**注記**  
[2022 年 7 月 18 日](https://docs.aws.amazon.com/elasticbeanstalk/latest/relnotes/release-2022-07-18-linux-al1-retire.html)に、Elastic Beanstalk では Amazon Linux AMI (AL1) に基づくプラットフォームブランチのステータスがすべて**廃止**に設定されました。これには、カスタムプラットフォームが含まれます。Elastic Beanstalk は、カスタムプラットフォームをサポートしていません。Elastic Beanstalk による Amazon Linux AMI の廃止に関する詳細については、「[プラットフォームの廃止に関するよくある質問](using-features.migration-al.FAQ.md)」を参照してください。

このトピックは、廃止前に Elastic Beanstalk カスタムプラットフォーム機能を使用したすべてのお客様の参照用として、このドキュメントに残ります。以前、Elastic Beanstalk カスタムプラットフォームでは、Amazon Linux AMI、RHEL 7、RHEL 6、または Ubuntu 16.04 ベース AMI からの AMI の構築をサポートしていました。これらのオペレーティングシステムは、Elastic Beanstalk によってサポートされなくなりました。サポートされなくなったカスタムプラットフォーム機能の詳細については、次のトピックを展開してください。



## カスタムプラットフォーム
<a name="custom-platforms-collapsed"></a>

カスタムプラットフォームは、いくつかの点で[カスタムイメージ](using-features.customenv.md)より高度なカスタマイズです。カスタムプラットフォームでは、ゼロから新しいプラットフォーム全体を開発し、プラットフォームインスタンスで Elastic Beanstalk が実行するオペレーティングシステム、その他のソフトウェア、およびスクリプトをカスタマイズできます。この柔軟性により、Elastic Beanstalk がマネージドプラットフォームを提供していない、言語やその他のインフラストラクチャソフトウェアを使用するアプリケーション用のプラットフォームを構築できます。既存の Elastic Beanstalk プラットフォームで使用する Amazon マシンイメージ (AMI) を変更するカスタムイメージと比べた場合、Elastic Beanstalk は依然としてプラットフォームスクリプトを提供してプラットフォームのソフトウェアスタックを制御します。さらに、カスタムプラットフォームでは、自動のスクリプト化された方法を使用してカスタマイズを作成して維持します。一方、カスタムイメージでは、実行中のインスタンスで変更を手動で行います。

カスタムプラットフォームを作成するには、サポートされているオペレーティングシステムである Ubuntu、RHEL、または Amazon Linux (正確なバージョン番号については「[Platform.yaml ファイルの形式。](#platform-yaml-format)」の `flavor` エントリを参照) のいずれかから Amazon マシンイメージ (AMI) を作成し、それをカスタマイズします。[Packer](https://www.packer.io/) を使用して独自の Elastic Beanstalk プラットフォームを作成します。これは、Amazon Elastic Compute Cloud (Amazon EC2) で使用する AMI を含む多くのプラットフォームのマシンイメージを作成するためのオープンソースツールです。Elastic Beanstalk プラットフォームは、アプリケーションをサポートする一連のソフトウェアを実行するよう設定された AMI と、カスタム設定オプションやデフォルトの設定オプションの設定を含むことができるメタデータで構成されます。

Elastic Beanstalk は Packer を個別の組み込みプラットフォームとして管理するため、Packer の設定とバージョンについて心配する必要はありません。

Packer テンプレートと、AMI を構築するにテンプレートが呼び出すスクリプトおよびファイルを Elastic Beanstalk に提供して、プラットフォームを作成します。これらのコンポーネントは、テンプレートとメタデータを指定する[プラットフォーム定義ファイル](#custom-platform-creating)により、[プラットフォーム定義ファイル](#custom-platforms-pda)と呼ばれる ZIP アーカイブにパッケージ化されます。

カスタムプラットフォームの作成時に、Packer を実行する Elastic IP を使用しないで単一インスタンス環境を起動します。こうすることで Packer は別のインスタンスを起動してイメージを作成します。この環境は、複数のプラットフォームや各プラットフォームの複数のバージョンで再利用できます。

**注記**  
カスタムプラットフォームは AWS リージョン固有です。複数のリージョンで Elastic Beanstalk を使用する場合は、各リージョンでプラットフォームを個別に作成する必要があります。  
特定の状況下では、Packer で起動したインスタンスはクリーンアップされないため、手動で終了させる必要があります。これらのインスタンスを手動でクリーンアップする方法については、「[Packer インスタンスのクリーンアップ](#custom-platforms-packercleanup)」を参照してください。

アカウントのユーザーは、環境の作成中に[プラットフォーム ARN](AWSHowTo.iam.policies.arn.md) を指定してカスタムプラットフォームを使用できます。ARN は、カスタムプラットフォームの作成に使用した **eb platform create** コマンドによって返されます。

カスタムプラットフォームを構築するたびに、Elastic Beanstalk は新しいプラットフォームのバージョンを作成します。ユーザーは、プラットフォームを名前で指定して最新バージョンのプラットフォームのみを取得したり、バージョン番号を指定して特定のバージョンを取得したりできます。

たとえば、最新バージョンのカスタムプラットフォーム (バージョン 3.0 など) を、ARN **MyCustomPlatformARN** を使用してデプロイする場合、EB CLI のコマンドラインは次のようになります。

```
eb create -p MyCustomPlatformARN
```

バージョン 2.1 をデプロイする場合、EB CLI のコマンドラインは次のようになります。

```
eb create -p MyCustomPlatformARN --version 2.1
```

カスタムプラットフォームバージョンの作成時にタグを適用できます。また、既存のカスタムプラットフォームバージョンのタグを編集できます。詳細については、「[custom プラットフォームバージョンのタグ付け](#custom-platforms-tagging)」を参照してください。

### カスタムプラットフォームの作成
<a name="custom-platform-creating"></a>

カスタムプラットフォームを作成するには、アプリケーションの root に `platform.yaml` ファイルを含める必要があります。このファイルは、カスタムプラットフォームの作成に使用されるビルダーのタイプを定義します。このファイルの形式は、「[Platform.yaml ファイルの形式。](#platform-yaml-format)」で説明しています。カスタムプラットフォームを最初から作成することも、[サンプルカスタムプラットフォーム](#custom-platforms-sample)のいずれかを開始点として使用することもできます。

### サンプル カスタム プラットフォームの使用
<a name="custom-platforms-sample"></a>

独自のカスタムプラットフォームを作成する別の方法として、プラットフォーム定義アーカイブサンプルの 1 つを使用してカスタムプラットフォームをブートストラップできます。ソース AMI とリージョンを設定するだけで、サンプルを使用できます。

**注記**  
本番稼働で未変更のサンプルカスタムプラットフォームを使用しないでください。サンプルの目的は、プラットフォームで使用できる機能の一部を紹介することであり、本番稼働用としては強化されていません。

[NodePlatform\_Ubuntu.zip](https://github.com/awslabs/eb-custom-platforms-samples/releases/download/v1.0.4/NodePlatform_Ubuntu.zip)  
このカスタムプラットフォームは、**Ubuntu 16.04** に基づいており、**Node.js 4.4.4** をサポートしています。このセクションの例では、このカスタムプラットフォームを使用しています。

[NodePlatform\_RHEL.zip](https://github.com/awslabs/eb-custom-platforms-samples/releases/download/v1.0.4/NodePlatform_RHEL.zip)  
このカスタムプラットフォームは、**RHEL 7.2** に基づいており、**Node.js 4.4.4** をサポートしています。

[NodePlatform\_AmazonLinux.zip](https://github.com/awslabs/eb-custom-platforms-samples/releases/download/v1.0.4/NodePlatform_AmazonLinux.zip)  
このカスタムプラットフォームは、**Amazon Linux 2016.09.1** に基づいており、**Node.js 4.4.4** をサポートしています。

[TomcatPlatform\_Ubuntu.zip](https://github.com/awslabs/eb-custom-platforms-samples/releases/download/v1.0.4/TomcatPlatform_Ubuntu.zip)  
このカスタムプラットフォームは、**Ubuntu 16.04** に基づいており、**Tomcat 7/Java 8** をサポートしています。

[CustomPlatform\_NodeSampleApp.zip](https://github.com/awslabs/eb-custom-platforms-samples/releases/download/v1.0.4/CustomPlatform_NodeSampleApp.zip)  
[**express**] と [**ejs**] を使用して静的なウェブページを表示する Node.js サンプル

[CustomPlatform\_TomcatSampleApp.zip](https://github.com/awslabs/eb-custom-platforms-samples/releases/download/v1.0.4/CustomPlatform_TomcatSampleApp.zip)  
デプロイ時静的ウェブページを表示する Tomcat のサンプル

サンプルプラットフォーム定義アーカイブ `NodePlatform_Ubuntu.zip` をダウンロードします。このファイルには、プラットフォーム定義ファイル、Packer テンプレート、イメージの作成中に Packer が実行するスクリプト、およびプラットフォームの作成中に Packer がビルダーインスタンスにコピーするスクリプトと設定ファイルが含まれています。

**Example NodePlatform\_Ubuntu.zip**  

```
|-- builder                 Contains files used by Packer to create the custom platform
|-- custom_platform.json    Packer template
|-- platform.yaml           Platform definition file
|-- ReadMe.txt              Briefly describes the sample
```

プラットフォーム定義ファイル `platform.yaml` は、Elastic Beanstalk に Packer テンプレート (`custom_platform.json`) の名前を指定します。

```
version: "1.0"

provisioner:
  type: packer
  template: custom_platform.json
  flavor: ubuntu1604
```

Packer テンプレートは、HVM インスタンスタイプのプラットフォームイメージのベースとして [Ubuntu AMI](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/AMIs.html) を使用して、プラットフォーム用の AMI を構築する方法を Packer に伝えます。`provisioners` セクションでは、アーカイブ内の `builder` フォルダのすべてのファイルをインスタンスにコピーし、インスタンスで `builder.sh` スクリプトを実行するよう Packer に伝えます。スクリプトが完了すると、Packer は変更したインスタンスからイメージを作成します。

Elastic Beanstalk は、Packer の AMI にタグを付けるために使用できる 3 つの環境変数を作成します。

AWS\_EB\_PLATFORM\_ARN  
カスタム プラットフォームの ARN。

AWS\_EB\_PLATFORM\_NAME  
カスタム プラットフォームの名前。

AWS\_EB\_PLATFORM\_VERSION  
カスタム プラットフォームのバージョン。

サンプル `custom_platform.json` ファイルは、これらの変数を使用して、スクリプトで使用する次の値を定義します。
+ `platform_name` で設定されている `platform.yaml`
+ `platform_version` で設定されている `platform.yaml`
+ `platform_arn` は、メインビルドスクリプトによって設定され、`builder.sh` は、サンプル `custom_platform.json` のファイルの最後に表示される。

この `custom_platform.json` ファイルには、値を指定する必要がある 2 つのプロパティとして `source_ami` と `region` があります。AMI とリージョンの適切な値を選択する方法の詳細については、*eb-custom-platforms-samples* GitHub リポジトリの「[Updating Packer template](https://github.com/aws-samples/eb-custom-platforms-samples#updating-packer-template)」(Packer テンプレートの更新) を参照してください。

**Example custom\_platform.json**  

```
{
  "variables": {
    "platform_name": "{{env `AWS_EB_PLATFORM_NAME`}}",
    "platform_version": "{{env `AWS_EB_PLATFORM_VERSION`}}",
    "platform_arn": "{{env `AWS_EB_PLATFORM_ARN`}}"
  },
  "builders": [
    {
      ...
      "region": "",
      "source_ami": "",
      ...
    }
  ],
  "provisioners": [
    {...},
    {
      "type": "shell",
      "execute_command": "chmod +x {{ .Path }}; {{ .Vars }} sudo {{ .Path }}",
      "scripts": [
        "builder/builder.sh"
      ]
    }
  ]
}
```

プラットフォーム定義アーカイブに含めるスクリプトとその他のファイルは、インスタンスに対して行う変更によって大きく異なります。サンプルプラットフォームには以下のスクリプトが含まれます。
+ `00-sync-apt.sh` – コメントアウト: `apt -y update`。ユーザーに自動パッケージの更新を中断させるようプロンプトするため、このコマンドについてコメントアウトしました。これは、Ubuntu の問題の可能性があります。ただし、ベストプラクティスとして `apt -y update` を実行することを依然としてお勧めします。このため、このコマンドは参照用としてサンプルスクリプトに残してあります。
+ `01-install-nginx.sh` – nginx をインストールします。
+ `02-setup-platform.sh` – `wget`、`tree`、`git` をインストールします。フックと[ログ作成設定](using-features.logging.md)をインスタンスにコピーし、次のディレクトリを作成します。
  + `/etc/SampleNodePlatform` – ここに、デプロイ中にコンテナ設定ファイルがアップロードされます。
  + `/opt/elasticbeanstalk/deploy/appsource/` – ここに、`00-unzip.sh` スクリプトは、デプロイ中にアプリケーションのソースコードをアップロードします (このスクリプトについては [Elastic Beanstalk 環境用のプラットフォームスクリプトツール](custom-platforms-scripts.md) セクションを参照)。
  + `/var/app/staging/` – ここで、アプリケーションのソースコードがデプロイ中に処理されます。
  + `/var/app/current/` – ここで、アプリケーションのソースコードが処理後に実行されます。
  + `/var/log/nginx/healthd/` – ここに、[拡張ヘルスエージェント](health-enhanced.md#health-enhanced-agent)がログを書き込みます。
  + `/var/nodejs` – ここに、デプロイ中に Node.js ファイルがアップロードされます。

EB CLI を使用して、サンプルプラットフォーム定義ファイルで最初のカスタムプラットフォームを作成します。

**カスタムプラットフォームを作成するには**

1. [EB CLI のインストール](eb-cli3.md#eb-cli3-install)。

1. サンプルカスタムプラットフォームを展開するディレクトリを作成します。

   ```
   ~$ mkdir ~/custom-platform
   ```

1. `NodePlatform_Ubuntu.zip` をディレクトリに抽出し、展開されたディレクトリに移動します。

   ```
   ~$ cd ~/custom-platform
   ~/custom-platform$ unzip ~/NodePlatform_Ubuntu.zip
   ~/custom-platform$ cd NodePlatform_Ubuntu
   ```

1. `custom_platform.json` ファイルを編集し、`source_ami` プロパティと `region` プロパティの値を指定します。詳細については、「[Updating Packer template](https://github.com/aws-samples/eb-custom-platforms-samples#updating-packer-template)」を参照してください。

1. [**eb platform init**](eb3-platform.md#eb3-platform-init) を実行し、プロンプトに従ってプラットフォームリポジトリを初期化します。

   **eb platform** を **ebp** に短縮することができます。
**注記**  
Windows PowerShell では、コマンドエイリアスとして **ebp** を使用します。Windows PowerShell で EB CLI を実行している場合は、このコマンドの長い形式 **eb platform** を使用してください。

   ```
   ~/custom-platform$ eb platform init
   ```

   このコマンドは、ディレクトリ `.elasticbeanstalk` を現在のディレクトリに作成し、設定ファイル `config.yml` をディレクトリに追加します。Elastic Beanstalk がカスタムプラットフォームを作成するときにこのファイルを使用するため、このファイルを変更または削除しないでください。

   デフォルトでは、**eb platform init** は、現在のフォルダの名前をカスタムプラットフォームの名前として使用します。この例では、`custom-platform` です。

1. [**eb platform create**](eb3-platform.md#eb3-platform-create) を実行して Packer 環境を起動し、カスタムプラットフォームの ARN を取得します。この値は、後でカスタムプラットフォームから環境を作成する際に必要になります。

   ```
   ~/custom-platform$ eb platform create
   ...
   ```

   デフォルトでは、Elastic Beanstalk はカスタムプラットフォームのインスタンスプロファイル `aws-elasticbeanstalk-custom-platform-ec2-role` を作成します。代わりに既存のインスタンスプロファイルを使用する場合は、[**eb platform create**](eb3-platform.md#eb3-platform-create) コマンドに `-ip {{INSTANCE_PROFILE}}` オプションを追加します。
**注記**  
Elastic Beanstalk のデフォルトインスタンスプロファイル `aws-elasticbeanstalk-ec2-role` を使用すると、Packer によるカスタムプラットフォームの作成は失敗します。

   EB CLI には、ビルドを完了するまでは Packer 環境のイベント出力が表示されます。**Ctrl\+C** キーを押すと、イベントの表示を終了できます。

1. [**eb platform logs**](eb3-platform.md#eb3-platform-logs) コマンドを使用してエラーがないか、ログを確認できます。

   ```
   ~/custom-platform$ eb platform logs
   ...
   ```

1. 後で、[**eb platform events**](eb3-platform.md#eb3-platform-events) によりプロセスを確認できます。

   ```
   ~/custom-platform$ eb platform events
   ...
   ```

1. [**eb platform status**](eb3-platform.md#eb3-platform-status) を使用してプラットフォームのステータスを確認します。

   ```
   ~/custom-platform$ eb platform status
   ...
   ```

オペレーションが完了すると、Elastic Beanstalk 環境の起動に使用できるプラットフォームが用意されます。

コンソールから環境を作成するときに、カスタムプラットフォームを使用できます。「[新しい環境の作成ウィザード](environments-create-wizard.md)」を参照してください。

**カスタムプラットフォームで環境を起動するには**

1. アプリケーション用の新しいディレクトリを作成します。

   ```
   ~$ mkdir custom-platform-app
   ~$ cd ~/custom-platform-app
   ```

1. アプリケーションリポジトリを初期化します。

   ```
   ~/custom-platform-app$ eb init
   ...
   ```

1. サンプルアプリケーション [NodeSampleApp.zip](samples/NodeSampleApp.zip) をダウンロードしてください。

1. サンプルアプリケーションの抽出

   ```
   ~/custom-platform-app$ unzip {{~/}}NodeSampleApp.zip
   ```

1. **eb create -p {{CUSTOM-PLATFORM-ARN}}** ({{CUSTOM-PLATFORM-ARN}} は **eb platform create** コマンドで返された ARN) を実行して、カスタムプラットフォームを実行する環境を起動します。

   ```
   ~/custom-platform-app$ eb create -p {{CUSTOM-PLATFORM-ARN}}
   ...
   ```

### プラットフォーム定義アーカイブのコンテンツ
<a name="custom-platforms-pda"></a>

プラットフォーム定義アーカイブは、[アプリケーションソースバンドル](applications-sourcebundle.md)のプラットフォームに相当します。プラットフォーム定義アーカイブは、プラットフォーム定義アーカイブ、Packer テンプレート、およびプラットフォームを作成するために Packer テンプレートによって使用されるスクリプトとファイルを含む ZIP ファイルです。

**注記**  
EB CLI を使用してカスタムプラットフォームを作成する場合、EB CLI はプラットフォームレポジトリのファイルとフォルダーからプラットフォーム定義アーカイブを作成するため、アーカイブを手動で作成する必要はありません。

プラットフォーム定義ファイルは YAML 形式のファイルで、`platform.yaml` という名前でプラットフォーム定義アーカイブの root になければなりません。プラットフォーム定義ファイルでサポートされる必須キーおよびオプションのキーのリストについては、[カスタムプラットフォームの作成](#custom-platform-creating) を参照してください。

特定の方法で Packer テンプレートに名前を付けるせんが、ファイル名はプラットフォーム定義アーカイブで指定された provisioner テンプレートに一致する必要があります。Packer テンプレートを作成する手順については、公式の [Packer ドキュメント](https://www.packer.io/docs/templates/introduction.html)を参照してください。

プラットフォーム定義アーカイブのその他のファイルには、AMI を作成する前にインスタンスをカスタマイズするためにテンプレートによって使用されるスクリプトとファイルがあります。

### カスタムプラットフォームフック
<a name="custom-platform-hooks"></a>

Elastic Beanstalk は、カスタムプラットフォームで標準化されたディレクトリ構造をフックに使用します。これらはライフサイクルイベント中、および管理オペレーション (環境のインスタンスが起動された、ユーザーがデプロイを開始した、またはユーザーがアプリケーションサーバーの再起動機能を使用した) に応じて実行されるスクリプトです。

フックをトリガーするスクリプトを `/opt/elasticbeanstalk/hooks/` フォルダのサブフォルダの 1 つに配置します。

**警告**  
*マネージド型プラットフォームでのカスタムプラットフォームフックの使用はサポートされていません。*カスタムプラットフォームフックは、カスタムプラットフォーム用に設計されています。Elastic Beanstalk マネージド型プラットフォームでは、プラットフォームによって、動作が異なったり、問題が発生したりすることがあります。Amazon Linux AMI プラットフォーム (上記 Amazon Linux 2) は、場合によっては便利なため、注意した上で使用してください。  
カスタムプラットフォームフックは、Amazon Linux AMI プラットフォームに存在するレガシー機能です。Amazon Linux 2 プラットフォームでは、`/opt/elasticbeanstalk/hooks/` フォルダ内のカスタムプラットフォームフックは完全に終了しています。Elastic Beanstalk はそれらを読み込んだり実行したりしません。Amazon Linux 2 プラットフォームは、Elastic Beanstalk マネージドプラットフォームを拡張するために特別に設計された新しい種類のプラットフォームフックをサポートしています。カスタムスクリプトおよびプログラムは、アプリケーションソースバンドルのフックディレクトリに直接追加できます。Elastic Beanstalk は、さまざまなインスタンスプロビジョニング段階でそれらを実行します。詳細については、[Elastic Beanstalk Linux プラットフォームの拡張](platforms-linux-extend.md) の「*プラットフォームフック*」セクションを参照してください。

フックは次のフォルダーに整理されます。
+ `appdeploy` — アプリケーションのデプロイ中に実行されるスクリプト。Elastic Beanstalk は、新しいインスタンスが起動されたときと、クライアントが新しいバージョンのデプロイを開始したときに、アプリケーションのデプロイを実行します。
+ `configdeploy` — クライアントがオンインスタンスのソフトウェア設定に影響する設定の更新 (たとえば、環境プロパティの設定や、Amazon S3 へのログローテーションの有効化など) を行ったときに実行されるスクリプト。
+ `restartappserver` — クライアントがアプリサーバーの再起動オペレーションを行ったときに実行されるスクリプト。
+ `preinit` — インスタンスのブートストラップ中に実行されるスクリプト。
+ `postinit` — インスタンスのブートストラップの後で実行されるスクリプト。

`appdeploy`、`configdeploy`、および `restartappserver` フォルダには `pre`、`enact`、および `post` サブフォルダがあります。オペレーションの各段階で、`pre` フォルダのすべてのスクリプトがアルファベット順に実行され、次に `enact` フォルダ、`post` フォルダの順に実行されます。

インスタンスを起動すると、Elastic Beanstalk は `preinit`、`appdeploy`、`postinit` の順序で実行します。実行中のインスタンスへのそれ以降のデプロイで、Elastic Beanstalk は `appdeploy` フックを実行します。ユーザーがインスタンスソフトウェアの設定を更新すると、`configdeploy` フックが実行されます。`restartappserver` フックは、ユーザーがアプリケーションサーバーの再起動を開始するときのみ実行されます。

スクリプトでエラーが発生した場合、ゼロ以外のステータスで終了し、`stderr` に書き込んでオペレーションを失敗させることができます。`stderr` に書き込むメッセージは、オペレーションが失敗した場合に出力されるイベントに表示されます。Elastic Beanstalk は、この情報をログファイル `/var/log/eb-activity.log` に取り込み、オペレーションを失敗させたくない場合は 0 (ゼロ) を返します。`stderr` または `stdout` に書き込むメッセージは[デプロイログ](using-features.logging.md)に表示されますが、オペレーションが失敗しない限り、イベントストリームには表示されません。

### Packer インスタンスのクリーンアップ
<a name="custom-platforms-packercleanup"></a>

Packer ビルダープロセスを完了前に停止するなど特定の状況では、Packer によって起動されたインスタンスはクリーンアップされません。これらのインスタンスは Elastic Beanstalk 環境の一部ではなく、Amazon EC2 サービスを使用してのみ表示および終了できます。

**手動でこれらのインスタンスをクリーンアップするには**

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

1. Packer でインスタンスを作成したリージョンと同じ AWS リージョンにいることを確認します。

1. **[Resources]** (リソース) の下で {{N }}**[Running Instances]** (N 個の実行中のインスタンス) を選択します。{{N}} は実行中のインスタンスの数です。

1. クエリテキストボックスをクリックします。

1. [**Name**] タグを選択します。

1. 「**packer**」と入力します。

   クエリは次のようになります。[**tag:Name: packer**]

1. クエリに一致するインスタンスを選択します。

1. [**Instance State (インスタンスの状態)**] が [**実行中**] の場合は、[**アクション**]、[**Instance State (インスタンスの状態)**]、[**Stop (停止)**] の順に選択し、次に [**アクション**]、[**Instance State (インスタンスの状態)**]、[**終了**] の順に選択します。

### Platform.yaml ファイルの形式。
<a name="platform-yaml-format"></a>

`platform.yaml` ファイルの形式は次のとおりです。

```
version: "{{version-number}}"

provisioner:
   type: {{provisioner-type}}
   template: {{provisioner-template}}
   flavor: {{provisioner-flavor}}
        
metadata:
   maintainer: {{metadata-maintainer}}
   description: {{metadata-description}}
   operating_system_name: {{metadata-operating_system_name}}
   operating_system_version: {{metadata-operating_system_version}}
   programming_language_name: {{metadata-programming_language_name}}
   programming_language_version: {{metadata-programming_language_version}}
   framework_name: {{metadata-framework_name}}
   framework_version: {{metadata-framework_version}}

option_definitions:
   - namespace: {{option-def-namespace}}
     option_name: {{option-def-option_name}}
     description: {{option-def-description}}
     default_value: {{option-def-default_value}}

option_settings:
   - namespace: "{{option-setting-namespace}}"
     option_name: "{{option-setting-option_name}}"
     value: "{{option-setting-value}}"
```

プレースホルダーを該当する値に置き換えます。

{{version-number}}  
必須。YAML 定義のバージョン。**1.0** を指定してください。

{{provisioner-type}}  
必須。カスタム プラットフォームを作成するのに使用されるビルダーのタイプ。**packer** を指定してください。

{{provisioner-template}}  
必須。{{provisioner-type}} の設定を含む JSON ファイル。

{{provisioner-flavor}}  
オプション。AMI に使用する基本オペレーティング システム。次のいずれかです:     
amazon (デフォルト)  
Amazon Linux。指定されていない場合は、プラットフォームが作成された時点の Amazon Linux の最新バージョンです。  
Amazon Linux 2 はサポートされているオペレーティングシステムフレーバーではありません。  
ubuntu1604  
Ubuntu 16.04 LTS  
rhel7  
RHEL 7  
rhel6  
RHEL 6

{{metadata-maintainer}}  
オプション。プラットフォーム所有者の連絡先情報 (100 文字)。

{{metadata-description}}  
オプション。プラットフォームについての説明 (2000 文字)。

{{metadata-operating\_system\_name}}  
オプション。プラットフォームのオペレーティングシステムの名前 (50 文字)。この値は、[ListPlatformVersions](https://docs.aws.amazon.com/elasticbeanstalk/latest/api/API_ListPlatformVersions.html) API の出力をフィルタリングするときに使用できます。

{{metadata-operating\_system\_version}}  
オプション。プラットフォームのオペレーティングシステム のバージョン (20 文字)。

{{metadata-programming\_language\_name}}  
オプション。プラットフォームがサポートするプログラミング言語 (50 文字)

{{metadata-programming\_language\_version}}  
オプション。プラットフォームの言語のバージョン (20 文字)。

{{metadata-framework\_name}}  
オプション。プラットフォームで使用されるウェブフレームワークの名前 (50 文字)。

{{metadata-framework\_version}}  
オプション。プラットフォームのウェブフレームワークのバージョン (20 文字)。

{{option-def-namespace}}  
オプション。`aws:elasticbeanstalk:container:custom` 下の名前空間 (100 文字)

{{option-def-option\_name}}  
オプション。オプション名 (100 文字)。プラットフォームがユーザーに提供する最大 50 個のカスタム設定オプションを定義します。

{{option-def-description}}  
オプション。オプションについての説明 (1024 文字)。

{{option-def-default\_value}}  
オプション。ユーザーが指定しなかった場合に使用されるデフォルト値。  
次の例では、オプション **NPM\_START** を作成します。  

```
options_definitions:
 -  namespace: "aws:elasticbeanstalk:container:custom:application"
    option_name: "NPM_START"
    description: "Default application startup command"
    default_value: "node application.js"
```

{{option-setting-namespace}}  
オプション。オプションの名前空間。

{{option-setting-option\_name}}  
オプション。オプションの名前。[Elastic Beanstalk によって提供されるオプション](command-options-general.md)を 50 個まで指定できます。

{{option-setting-value}}  
オプション。ユーザーが 1 つを指定しない場合に使用されるデフォルト。  
次の例では、オプション **TEST** を作成します。  

```
option_settings:
 - namespace: "aws:elasticbeanstalk:application:environment"
   option_name: "TEST"
   value: "This is a test"
```

### custom プラットフォームバージョンのタグ付け
<a name="custom-platforms-tagging"></a>

 AWS Elastic Beanstalk カスタムプラットフォームバージョンにタグを適用できます。タグは、 AWS リソースに関連付けられたキーと値のペアです。Elastic Beanstalk リソースのタグ付け、ユースケース、タグのキーと値の制約、サポートされているリソースタイプの詳細については、「[Elastic Beanstalk アプリケーションリソースのタグ付け](applications-tagging-resources.md)」を参照してください。

カスタムプラットフォームバージョンの作成時にタグを指定できます。既存のカスタムプラットフォームバージョンでは、タグの追加や削除、既存タグの値の更新ができます。カスタムプラットフォームバージョンごとに最大 50 個のタグを追加できます。

#### カスタムプラットフォームバージョンの作成時にタグを追加する
<a name="custom-platforms-tagging.create"></a>

EB CLI を使用してカスタムプラットフォームバージョンを作成する場合は。**[eb platform create](eb3-platform.md#eb3-platform-create)** の `--tags` オプションを使用してタグを追加します。

```
~/workspace/my-app$ eb platform create --tags {{mytag1}}={{value1}},{{mytag2}}={{value2}}
```

 AWS CLI または他の API ベースのクライアントで、 **[create-platform-version](https://docs.aws.amazon.com/cli/latest/reference/elasticbeanstalk/create-platform-version.html)** コマンドの `--tags`パラメータを使用してタグを追加します。

```
$ aws elasticbeanstalk create-platform-version \
      --tags Key={{mytag1}},Value={{value1}} Key={{mytag2}},Value={{value2}} \
      --platform-name {{my-platform}} --platform-version {{1.0.0}} --platform-definition-bundle S3Bucket={{amzn-s3-demo-bucket}},S3Key={{sample.zip}}
```

#### 既存のカスタムプラットフォームバージョンのタグを管理する
<a name="custom-platforms-tagging.manage"></a>

既存の Elastic Beanstalk カスタムプラットフォームバージョンのタグを追加、更新、削除できます。

EB CLI を使用してカスタムプラットフォームバージョンを更新する場合は、 **[eb tags](eb3-tags.md)** を使用してタグを追加、更新、削除、一覧表示します。

たとえば、次のコマンドでは、カスタムプラットフォームバージョンのタグを一覧表示します。

```
~/workspace/my-app$ eb tags --list --resource "arn:aws:elasticbeanstalk:us-east-2:{{my-account-id}}:platform/{{my-platform}}/{{1.0.0}}"
```

次のコマンドでは、`mytag1` タグを更新して `mytag2` タグを削除します。

```
~/workspace/my-app$ eb tags --update {{mytag1}}={{newvalue}} --delete {{mytag2}} \
      --resource "arn:aws:elasticbeanstalk:us-east-2:{{my-account-id}}:platform/{{my-platform}}/{{1.0.0}}"
```

オプションの完全なリストおよび詳細な例については、「`eb tags`」を参照してください。

 AWS CLI または他の API ベースのクライアントでは、 **[list-tags-for-resource](https://docs.aws.amazon.com/cli/latest/reference/elasticbeanstalk/list-tags-for-resource.html)** コマンドを使用してカスタムプラットフォームバージョンのタグを一覧表示します。

```
$ aws elasticbeanstalk list-tags-for-resource --resource-arn "arn:aws:elasticbeanstalk:us-east-2:{{my-account-id}}:platform/{{my-platform}}/{{1.0.0}}"
```

カスタムプラットフォームバージョンのタグを追加、更新、または削除するには、 **[update-tags-for-resource](https://docs.aws.amazon.com/cli/latest/reference/elasticbeanstalk/update-tags-for-resource.html)** コマンドを使用します。

```
$ aws elasticbeanstalk update-tags-for-resource \
      --tags-to-add Key={{mytag1}},Value={{newvalue}} --tags-to-remove {{mytag2}} \
      --resource-arn "arn:aws:elasticbeanstalk:us-east-2:{{my-account-id}}:platform/{{my-platform}}/{{1.0.0}}"
```

追加するタグと更新するタグを **update-tags-for-resource** の `--tags-to-add` パラメータで指定します。存在していないタグが追加され、既存のタグの値が更新されます。

**注記**  
一部の EB CLI および AWS CLI コマンドを Elastic Beanstalk カスタムプラットフォームバージョンで使用するには、カスタムプラットフォームバージョンの ARN が必要です。ARN を取得するには、次のコマンドを使用します。  

```
$ aws elasticbeanstalk list-platform-versions
```
出力をフィルタリングしてカスタムプラットフォームの名前に絞り込むには、 `--filters` オプションを使用します。