

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

# Elastic Beanstalk 環境用のプラットフォームスクリプトツール
<a name="custom-platforms-scripts"></a>

このトピックでは、Amazon Linux プラットフォームを使用する環境向けに AWS Elastic Beanstalk が提供するツールについて説明します。これらのツールは Elastic Beanstalk 環境の Amazon EC2 インスタンスにあります。

## get-config
<a name="custom-platforms-scripts.get-config"></a>

`get-config` ツールを使用して、プレーンテキストの環境変数の値やその他のプラットフォームおよびインスタンス情報を取得します。このツールは `/opt/elasticbeanstalk/bin/get-config` にあります。

### get-config コマンド
<a name="custom-platforms-scripts.get-config.commands"></a>

各 `get-config` ツールコマンドは、特定の種類の情報を返します。いずれかのツールのコマンドを実行するには、次の構文を使用します。

```
$ /opt/elasticbeanstalk/bin/get-config {{command}} [ {{options}} ]
```

次の例では、`environment` コマンドを実行します。

```
$ /opt/elasticbeanstalk/bin/get-config environment -k PORT
```

選択したコマンドとオプションに応じて、ツールはキーバリューのペアを持つオブジェクト (JSON または YAML)、または単一の値を返します。

SSH を使用して Elastic Beanstalk 環境内のEC2 インスタンスに connect することで `get-config` をテストできます。

**注記**  
`get-config` テストを実行する場合、一部のコマンドでは、基礎となる情報にアクセスするために root ユーザー権限が必要になる場合があります。アクセス許可エラーが表示された場合は、`sudo` でコマンドを再度実行します。  
環境にデプロイするスクリプトでツールを使用するときは、`sudo` を追加する必要はありません。Elastic Beanstalk は、すべてのスクリプトを root ユーザーとして実行します。

以下のセクションでは、各ツールのコマンドについて説明します。

#### optionsettings - 設定オプション
<a name="custom-platforms-scripts.get-config.commands.optionsettings"></a>

`get-config optionsettings` コマンドは、環境に設定され、環境インスタンス上のプラットフォームに使用される設定オプションをリストにしたオブジェクトを返します。これらは、名前空間別に組織されています。

```
$ /opt/elasticbeanstalk/bin/get-config optionsettings
{"aws:elasticbeanstalk:application:environment":{"JDBC_CONNECTION_STRING":""},"aws:elasticbeanstalk:container:tomcat:jvmoptions":{"JVM Options":"","Xms":"256m","Xmx":"256m"},"aws:elasticbeanstalk:environment:proxy":{"ProxyServer":"nginx","StaticFiles":[""]},"aws:elasticbeanstalk:healthreporting:system":{"SystemType":"enhanced"},"aws:elasticbeanstalk:hostmanager":{"LogPublicationControl":"false"}}
```

特定の設定オプションを返すには、`--namespace` (`-n`) オプションを使用して名前空間を指定し、`--option-name` (`-o`) オプションを使用してオプション名を指定します。

```
$ /opt/elasticbeanstalk/bin/get-config optionsettings -n {{aws:elasticbeanstalk:container:php:phpini}} -o {{memory_limit}}
256M
```

#### environment - 環境プロパティ
<a name="custom-platforms-scripts.get-config.commands.environment"></a>

`get-config environment` コマンドは、ユーザー設定の環境プロパティと Elastic Beanstalk が提供する環境プロパティの両方のリストを含むオブジェクトを返します。ユーザー設定のプロパティは、[コンソール](environments-cfg-softwaresettings.md#environments-cfg-softwaresettings-console)で*プレーンテキスト*として、または設定オプションの名前空間 [aws:elasticbeanstalk:application:environment](command-options-general.md#command-options-general-elasticbeanstalkapplicationenvironment) を使用して定義されます。

```
$ /opt/elasticbeanstalk/bin/get-config environment
{"JDBC_CONNECTION_STRING":"","RDS_PORT":"3306","RDS_HOSTNAME":"anj9aw1b0tbj6b.cijbpanmxz5u.us-west-2.rds.amazonaws.com","RDS_USERNAME":"testusername","RDS_DB_NAME":"ebdb","RDS_PASSWORD":"testpassword1923851"}
```

例えば、Elastic Beanstalk は統合された Amazon RDS DB インスタンス (`RDS_HOSTNAME` など) に connect する環境プロパティを提供します。これらの RDS 接続プロパティは、の出力に表示されます。`get-config environment`。ただし、出力には表示されません。`get-config optionsettings`。これは、設定オプションで設定されていないためです。

特定の環境プロパティを返すには、`--key` (`-k`) オプションを使用してプロパティキーを指定します。

```
$ /opt/elasticbeanstalk/bin/get-config environment -k {{TESTPROPERTY}}
testvalue
```

**注記**  
`get-config` ツールは、[シークレットを保存する環境変数](AWSHowTo.secrets.env-vars.md)を取得できません。シークレットストアまたはパラメータストアからプログラムで値を取得する方法の詳細については、「[ Secrets Manager を使用する](AWSHowTo.secrets.Secrets-Manager-and-Parameter-Store.md#AWSHowTo.secrets.Secrets-Manager)」または「[Systems Manager パラメータストアの使用](AWSHowTo.secrets.Secrets-Manager-and-Parameter-Store.md#AWSHowTo.secrets.SSM-parmameter-store)」を参照してください。

#### container - インスタンス上の構成値
<a name="custom-platforms-scripts.get-config.commands.container"></a>

`get-config container` コマンドは、環境インスタンスのプラットフォームと環境設定値をリストにしたオブジェクトを返します。

次の例は、Amazon Linux 2 Tomcat の環境でのコマンドへの出力を示しています。

```
$ /opt/elasticbeanstalk/bin/get-config container
{"common_log_list":["/var/log/eb-engine.log","/var/log/eb-hooks.log"],"default_log_list":["/var/log/nginx/access.log","/var/log/nginx/error.log"],"environment_name":"myenv-1da84946","instance_port":"80","log_group_name_prefix":"/aws/elasticbeanstalk","proxy_server":"nginx","static_files":[""],"xray_enabled":"false"}
```

特定のキーの値を返すには、`--key` (`-k`) オプションを使用してキーを指定します。

```
$ /opt/elasticbeanstalk/bin/get-config container -k {{environment_name}}
myenv-1da84946
```

#### addons - アドオンの構成値
<a name="custom-platforms-scripts.get-config.commands.addons"></a>

`get-config addons` コマンドは、環境アドオンの設定情報を含むオブジェクトを返します。これを使用して、環境に関連付けられた Amazon RDS データベースの設定を回復します。

```
$ /opt/elasticbeanstalk/bin/get-config addons
{"rds":{"Description":"RDS Environment variables","env":{"RDS_DB_NAME":"ebdb","RDS_HOSTNAME":"ea13k2wimu1dh8i.c18mnpu5rwvg.us-east-2.rds.amazonaws.com","RDS_PASSWORD":"password","RDS_PORT":"3306","RDS_USERNAME":"user"}}}
```

結果を制限するには、2 つの方法があります。特定のアドオンの値を取得するには、`--add-on` (`-a`) オプションを使用してアドオン名を指定します。

```
$ /opt/elasticbeanstalk/bin/get-config addons -a {{rds}}
{"Description":"RDS Environment variables","env":{"RDS_DB_NAME":"ebdb","RDS_HOSTNAME":"ea13k2wimu1dh8i.c18mnpu5rwvg.us-east-2.rds.amazonaws.com","RDS_PASSWORD":"password","RDS_PORT":"3306","RDS_USERNAME":"user"}}
```

アドオン内の特定のキーの値を返すには、`--key` (`-k`) オプションを追加してキーを指定します。

```
$ /opt/elasticbeanstalk/bin/get-config addons -a {{rds}} -k {{RDS_DB_NAME}}
ebdb
```

#### platformconfig - 定数の構成値
<a name="custom-platforms-scripts.get-config.commands.platformconfig"></a>

`get-config platformconfig` コマンドは、プラットフォームのバージョンに一定のプラットフォーム設定情報を含むオブジェクトを返します。同じプラットフォームのバージョンを実行しているすべての環境で、出力は変わりません。コマンドの出力オブジェクトには、次の 2 つの埋め込んであるオブジェクトがあります。
+ `GeneralConfig` - すべての Amazon Linux 2 および Amazon Linux 2023 プラットフォームブランチの最新バージョンで一定の情報が含まれています。
+ `PlatformSpecificConfig` - プラットフォームのバージョンに対して一定で、それに固有の情報が含まれます。

次の例は、*Tomcat 8.5 running Corretto 11* プラットフォームブランチを使用する環境でのコマンドの出力を示しています。

```
$ /opt/elasticbeanstalk/bin/get-config platformconfig
{"GeneralConfig":{"AppUser":"webapp","AppDeployDir":"/var/app/current/","AppStagingDir":"/var/app/staging/","ProxyServer":"nginx","DefaultInstancePort":"80"},"PlatformSpecificConfig":{"ApplicationPort":"8080","JavaVersion":"11","TomcatVersion":"8.5"}}
```

特定のキーの値を返すには、`--key` (`-k`) オプションを使用してキーを指定します。これらのキーは、2 つの埋め込みオブジェクト間で一意です。キーを含むオブジェクトを指定する必要はありません。

```
$ /opt/elasticbeanstalk/bin/get-config platformconfig -k {{AppStagingDir}}
/var/app/staging/
```

### get-config 出力オプション
<a name="custom-platforms-scripts.get-config.global"></a>

出力オブジェクトの形式を指定するには、`--output` オプションを使用します。有効な値は、`JSON` (デフォルト) と `YAML` です。これはグローバルオプションです。コマンド名の前に指定する必要があります。

次の例は、設定オプション値を YAML 形式で返すものです。

```
$ /opt/elasticbeanstalk/bin/get-config --output YAML optionsettings
aws:elasticbeanstalk:application:environment:
  JDBC_CONNECTION_STRING: ""
aws:elasticbeanstalk:container:tomcat:jvmoptions:
  JVM Options: ""
  Xms: 256m
  Xmx: 256m
aws:elasticbeanstalk:environment:proxy:
  ProxyServer: nginx
  StaticFiles:
        - ""
aws:elasticbeanstalk:healthreporting:system:
  SystemType: enhanced
aws:elasticbeanstalk:hostmanager:
  LogPublicationControl: "false"
```

## pkg-repo
<a name="custom-platforms-scripts.pkg-repo"></a>

**注記**  
`pkg-repo` ツールは、Amazon Linux 2023 プラットフォームに基づく環境では使用できません。ただし、パッケージとオペレーティングシステムの更新を AL2023 インスタンスに手動で適用することはできます。詳細については、「*Amazon Linux 2023 ユーザーガイド*」の「[パッケージとオペレーティングシステムの更新の管理](https://docs.aws.amazon.com/linux/al2023/ug/managing-repos-os-updates.html)」を参照してください

緊急の状況によっては、必要な Elastic Beanstalk プラットフォームバージョンでまだリリースされていない Amazon Linux 2 セキュリティパッチで Amazon EC2 インスタンスを更新する必要がある場合があります。デフォルトでは、Elastic Beanstalk 環境で手動更新を実行することはできません。これは、プラットフォームのバージョンが Amazon Linux 2 リポジトリの特定のバージョンにロックされているためです。このロックにより、インスタンスがサポートされ、一貫性のあるソフトウェアバージョンが実行されることが保証されます。緊急の場合、`pkg-repo`ツールを使用すると、新しい Elastic Beanstalk プラットフォームバージョンでリリースされる前に環境にインストールする必要がある場合は、Amazon Linux 2 で yum パッケージを手動で更新する回避策を使用できます。

-`pkg-repo`Amazon Linux 2 プラットフォーム上のツールは、`yum`パッケージリポジトリ。その後、を手動で実行できます**yum update**セキュリティパッチの場合。逆に、ツールを使用して yum パッケージのリポジトリをロックして、さらなる更新を防ぐことで、更新をフォローできます。-`pkg-repo`このツールはにあります`/opt/elasticbeanstalk/bin/pkg-repo`Elastic Beanstalk 環境にあるすべての EC2 インスタンスのディレクトリ。

を使用した変更`pkg-repo`ツールは、ツールが使用されている EC2 インスタンスでのみ作成されます。他のインスタンスに影響したり、環境への今後の更新を妨げたりすることはありません。このトピックで後述する例では、を呼び出して、すべてのインスタンスに変更を適用する方法を説明します。`pkg-repo`スクリプトおよび設定ファイルからのコマンド

**警告**  
このツールは推奨されませんユーザー。ロック解除されたプラットフォームバージョンに適用される手動による変更は、帯域外と見なされます。このオプションは、次のリスクを受け入れる可能性のある緊急の状況にあるユーザーに対してのみ実行できます。  
プラットフォームのバージョンは、環境内のすべてのインスタンスで一貫性が保証されるわけではありません。
を使用して変更された環境`pkg-repo`ツールが正しく機能することは保証されません。Elastic Beanstalk がサポートするプラットフォームではテストおよび検証が行われていません。
テストとバックアウト計画を含むベストプラクティスを適用することを強くお勧めします。ベストプラクティスの促進に役立つ,Elastic Beanstalk コンソールと EB CLI を使用すると、環境のクローンを作成し、環境 URL をスワップできます。これらの操作の詳細については、このガイドの「*環境の管理*」の章の「[ブルー/グリーンデプロイ](using-features.CNAMESwap.md)」を参照してください。

yum リポジトリ構成ファイルを手動で編集する場合は、`pkg-repo`ツールはまずです。-`pkg-repo`yum リポジトリ設定ファイルを手動で編集した Amazon Linux 2 環境では、ツールが意図したとおりに動作しない場合があります。これは、ツールが構成の変更を認識しない可能性があるためです。

Amazon Linux パッケージリポジトリについては、「*Amazon EC2 ユーザーガイド*」の「[パッケージリポジトリ](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/amazon-linux-ami-basics.html#package-repository)」のトピックを参照してください。

### pkg-repo コマンド
<a name="custom-platforms-scripts.pkg-repo.commands"></a>

`pkg-repo`ツールのコマンドを実行するには、次の構文を使用します。

```
$ /opt/elasticbeanstalk/bin/pkg-repo {{command}} [{{options}}]
```

`pkg-repo` コマンドを以下に示します：
+ **lock**— をロックします`yum`リポジトリを特定のバージョンにパッケージ化する
+ **unlock**— ロックを解除します`yum`特定のバージョンのリポジトリをパッケージ化する
+ **status**— すべてのリストを表示します。`yum`パッケージリポジトリとその現在のロックステータス
+ **help**— 1 つのコマンドに関する一般的なヘルプまたはヘルプを表示します

オプションは、以下のようにコマンドに適用されます。
+ `lock`,`unlock`そして`status `— オプション:`-h`,`--help`、またはなし (既定)。
+ `help`— オプション:`lock`,`unlock`,`status`、またはなし (既定)。



次の例では、**unlock** コマンドを実行します。

```
$ sudo /opt/elasticbeanstalk/bin/pkg-repo unlock
Amazon Linux 2 core package repo successfully unlocked
Amazon Linux 2 extras package repo successfully unlocked
```

次の例では、**lock** コマンドを実行します。

```
$ sudo /opt/elasticbeanstalk/bin/pkg-repo lock
Amazon Linux 2 core package repo successfully locked
Amazon Linux 2 extras package repo successfully locked
```

次の例では、**status** コマンドを実行します。

```
$ sudo /opt/elasticbeanstalk/bin/pkg-repo status
Amazon Linux 2 core package repo is currently UNLOCKED
Amazon Linux 2 extras package repo is currently UNLOCKED
```

次の例では、**help**コマンドの**lock**コマンド。

```
$ sudo /opt/elasticbeanstalk/bin/pkg-repo help lock
```

次の例では、**help**コマンドの`pkg-repo`ツール。

```
$ sudo /opt/elasticbeanstalk/bin/pkg-repo help
```

SSH を使用して Elastic Beanstalk 環境内のインスタンスに接続することで `pkg-repo` をテストできます。SSH オプションの 1 つに EB CLI があります[**eb ssh**](eb3-ssh.md)コマンド。

**注記**  
-`pkg-repo`ツールを実行するには root ユーザー権限が必要です。アクセス許可エラーが表示された場合は、`sudo` でコマンドを再度実行します。  
環境にデプロイするスクリプトまたは設定ファイルでツールを使用するときは、`sudo` を追加する必要はありません。Elastic Beanstalk は、すべてのスクリプトを root ユーザーとして実行します。

### pkg-repo の例
<a name="custom-platforms-scripts.pkg-repo.examples"></a>

前のセクションでは、Elastic Beanstalk 環境の個々の EC2 インスタンスでテストするためのコマンドラインの例を示します。このアプローチはテストに役立ちます。ただし、一度に更新されるインスタンスは 1 つだけなので、環境内のすべてのインスタンスに変更を適用するのは現実的ではありません。

より実用的なアプローチは[プラットフォームフック](platforms-linux-extend.hooks.md)スクリプトまたは[`.ebextensions`](ebextensions.md)一貫した方法ですべてのインスタンスに変更を適用するための設定ファイル。

次の例では、を呼び出します。`pkg-repo`の設定ファイルから[`.ebextensions`](ebextensions.md)folder Elastic Beanstalk は、`update_package.config`アプリケーションソースバンドルをデプロイするときにファイルを指定します。

```
.ebextensions
└── update_package.config
```

*docker* パッケージが最新バージョンを受け取るには、この設定で、**yum update** コマンドの *docker* パッケージを指定します。

```
### update_package.config ###

commands:
  update_package:
    command: |
      /opt/elasticbeanstalk/bin/pkg-repo unlock
      yum update docker -y
      /opt/elasticbeanstalk/bin/pkg-repo lock
      yum clean all -y
      rm -rf /var/cache/yum
```

この設定では、**yum update**コマンド。その結果、利用可能なすべての更新が適用されます。

```
### update_package.config ###

commands:
  update_package:
    command: |
      /opt/elasticbeanstalk/bin/pkg-repo unlock
      yum update -y
      /opt/elasticbeanstalk/bin/pkg-repo lock
      yum clean all -y
      rm -rf /var/cache/yum
```

次の例では、を呼び出します。`pkg-repo`bashスクリプトから[プラットフォームフック](platforms-linux-extend.hooks.md)。Elastic Beanstalk`update_package.sh`にあるスクリプトファイル`prebuild`サブディレクトリ。

```
.platform
└── hooks
    └── prebuild
        └── update_package.sh
```

*docker* パッケージが最新バージョンを受け取るには、このスクリプトで **yum update** コマンドの *docker* パッケージを指定します。パッケージ名を省略すると、すべての利用可能な更新が適用されます。前の設定ファイルの例では、この方法を示しています。

```
### update_package.sh ###

#!/bin/bash

/opt/elasticbeanstalk/bin/pkg-repo unlock
yum update docker -y
/opt/elasticbeanstalk/bin/pkg-repo lock
yum clean all -y
rm -rf /var/cache/yum
```

## download-source-bundle (Amazon Linux AMI のみ)
<a name="custom-platforms-scripts.download"></a>

Amazon Linux AMI プラットフォームブランチ (Amazon Linux 2 より前) では、Elastic Beanstalk は追加ツールを提供していて、それは`download-source-bundle`です。このツールを使用して、プラットフォームのデプロイ中にアプリケーションの出典コードをダウンロードします。このツールは `/opt/elasticbeanstalk/bin/download-source-bundle` にあります。

サンプルスクリプト `00-unzip.sh` は、環境インスタンスの `appdeploy/pre` フォルダにあります。これは `download-source-bundle` を使用して、デプロイ中にアプリケーションの出典コードを `/opt/elasticbeanstalk/deploy/appsource` フォルダにダウンロードする方法を示しています。