プラットフォームスクリプトツール - AWS Elastic Beanstalk

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

プラットフォームスクリプトツール

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

get-config

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

get-config コマンド

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 ユーザーとして実行します。

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

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

get-config environment コマンドは、環境プロパティのリストを含むオブジェクトを返します。これらには、ユーザー設定のプロパティも Elastic Beanstalk によって提供されるプロパティも両方とも含んでいます。

$ /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 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

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

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 出力オプション

出力オブジェクトの形式を指定するには、--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

注記

pkg-repo ツールは、Amazon Linux 2023 プラットフォームに基づく環境では使用できません。ただし、パッケージとオペレーティングシステムの更新を AL2023 インスタンスに手動で適用することはできます。詳細については、「Amazon Linux 2023 ユーザーガイド」の「パッケージとオペレーティングシステムの更新の管理」を参照してください

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

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

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

警告

このツールは推奨されませんユーザー。ロック解除されたプラットフォームバージョンに適用される手動による変更は、帯域外と見なされます。このオプションは、次のリスクを受け入れる可能性のある緊急の状況にあるユーザーに対してのみ実行できます。

  • プラットフォームのバージョンは、環境内のすべてのインスタンスで一貫性が保証されるわけではありません。

  • を使用して変更された環境pkg-repoツールが正しく機能することは保証されません。Elastic Beanstalk がサポートするプラットフォームではテストおよび検証が行われていません。

テストとバックアウト計画を含むベストプラクティスを適用することを強くお勧めします。ベストプラクティスの促進に役立つ,Elastic Beanstalk コンソールと EB CLI を使用すると、環境のクローンを作成し、環境 URL をスワップできます。これらの操作の詳細については、このガイドの「環境の管理」の章の「ブルー/グリーンデプロイ」を参照してください。

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

Amazon Linux パッケージリポジトリの詳細については、「」を参照してください。パッケージリポジトリのトピックLinux インスタンス用 Amazon EC2 ユーザーガイド

pkg-repo コマンド

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コマンド。

注記

-pkg-repoツールを実行するには root ユーザー権限が必要です。アクセス許可エラーが表示された場合は、sudo でコマンドを再度実行します。

環境にデプロイするスクリプトまたは設定ファイルでツールを使用するときは、sudo を追加する必要はありません。Elastic Beanstalk は、すべてのスクリプトを root ユーザーとして実行します。

pkg-repo の例

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

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

次の例では、を呼び出します。pkg-repoの設定ファイルから.ebextensionsfolder 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-repobashスクリプトからプラットフォームフック。Elastic Beanstalkupdate_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 のみ)

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 フォルダにダウンロードする方法を示しています。