AWS Elastic Beanstalk
開発者ガイド

Windows Server でのソフトウェアのカスタマイズ

アプリケーションが依存するソフトウェアをカスタマイズして設定できます。これらのファイルは、たとえば、実行する必要のある追加パッケージやサービスなど、アプリケーションが必要とするいずれかの依存関係です。Elastic Beanstalk 環境のカスタマイズと設定に関する一般的な情報については、「AWS Elastic Beanstalk 環境の設定」を参照してください。

注記

YAML は、一貫したインデントに依存します。設定ファイルの例でコンテンツを置き換える際はインデントレベルを一致させ、テキストエディタがインデントにタブ文字ではなくスペースを使用していることを確認します。

設定ファイルは、アプリケーションが実行している Windows サーバーに影響する次のキーをサポートします。

キーは、上に表示した順に処理されます。

注記

古い (バージョニング非対応) .NET プラットフォームのバージョンの場合は、正しい順序で設定ファイルが処理されません。詳細については、Elastic Beanstalk Windows Server プラットフォームのメジャーバージョン間での移行 を参照してください。

設定ファイルの作成およびテスト中は、環境のイベントを監視します。Elastic Beanstalk は、無効なキーなどの検証エラーが含まれている設定ファイルを無視し、同じファイルに含まれている他のキーを一切処理しません。これが発生すると、Elastic Beanstalk は警告イベントをイベントログに追加します。

パッケージ

packages キーを使用して、パッケージ済みのアプリケーションとコンポーネントをダウンロードしてインストールします。

Windows 環境では、Elastic Beanstalk は MSI パッケージのダウンロードとインストールをサポートしています。(Linux 環境は、追加のパッケージマネージャをサポートします。詳細については、「Linux サーバーでのソフトウェアのカスタマイズ」ページの「パッケージ」を参照してください。)

URL が一般にアクセス可能であれば、Amazon Simple Storage Service (Amazon S3) オブジェクトなど、任意の外部ロケーションを参照できます。

複数の msi: パッケージを指定する場合、それらのインストール順序は保証されません。

構文

パッケージ名として選択した名前と、値としての MSI ファイルの場所への URL を指定します。msi: キーの下に複数のパッケージを指定できます。

packages: msi: package name: package url ...

次の例では、https://dev.mysql.com/ から [mysql] をダウンロードする URL を指定します。

packages: msi: mysql: https://dev.mysql.com/get/Downloads/Connector-Net/mysql-connector-net-8.0.11.msi

次の例では、MSI ファイルの場所として Amazon S3 オブジェクトを指定しています。

packages: msi: mymsi: https://mybucket.s3.amazonaws.com/myobject.msi

ソース

sources キーを使用して、公開 URL からアーカイブファイルをダウンロードし、EC2 インスタンス上のターゲットディレクトリに解凍します。

構文

sources: target directory: location of archive file

サポートされる形式

Windows 環境では、Elastic Beanstalk は .zip 形式をサポートしています。(Linux 環境は、追加の形式をサポートします。詳細については、「Linux サーバーでのソフトウェアのカスタマイズ」ページの「ソース」を参照してください。)

URL が一般にアクセス可能であれば、Amazon Simple Storage Service (Amazon S3) オブジェクトなど、任意の外部ロケーションを参照できます。

以下の例では、Amazon S3 バケットから公開 .zip ファイルをダウンロードし、c:/myproject/myapp に解凍しています。

sources: "c:/myproject/myapp": https://mybucket.s3.amazonaws.com/myobject.zip

ファイル

files キーを使用して、EC2 インスタンス上にファイルを作成できます。内容は、設定ファイルでインラインとするか、URL から指定できます。ファイルは辞書式順序でディスクに書き込まれます。Amazon S3 からプライベートファイルをダウンロードするには、認可のインスタンスプロファイルを指定します。

構文

files: "target file location on disk": source: URL authentication: authentication name: "target file location on disk": content: | this is my content encoding: encoding format

オプション

content

(オプション) 文字列。

source

(オプション) ファイルの読み込み元の URL。このオプションと content キーを一緒に指定することはできません。

encoding

(オプション) エンコード形式。このオプションは、指定されたコンテンツキーの値にのみ使用されます。デフォルト値は plain です。

有効な値: plain | base64

authentication

(オプション) 使用する AWS CloudFormation 認証方法の名前。リソースキーで、オートスケーリンググループメタデータに認証方法を追加できます。

次の例は、ファイルコンテンツを提供する 2 つの方法である、URL からと設定ファイルのインラインからの方法を示しています。

files: "c:\\targetdirectory\\targetfile.txt": source: http://foo.bar/myfile "c:/targetdirectory/targetfile.txt": content: | # this is my file # with content

注記

ファイルパスにバックスラッシュ (\) を使用する場合、前の例に示すようにこの前に別のバックスラッシュ (エスケープ文字) を置く必要があります。

次の例では、リソースキーを使用して S3Auth という認証方法を追加して、Amazon S3 バケットから秘密ファイルをダウンロードするのに使用します。

files: "c:\\targetdirectory\\targetfile.zip": source: https://elasticbeanstalk-us-east-2-123456789012.s3.amazonaws.com/prefix/myfile.zip authentication: S3Auth Resources: AWSEBAutoScalingGroup: Metadata: AWS::CloudFormation::Authentication: S3Auth: type: "s3" buckets: ["elasticbeanstalk-us-east-2-123456789012"] roleName: "Fn::GetOptionSetting": Namespace: "aws:autoscaling:launchconfiguration" OptionName: "IamInstanceProfile" DefaultValue: "aws-elasticbeanstalk-ec2-role"

コマンド

commands キーを使用して、EC2 インスタンスでコマンドを実行します。コマンドは、名前のアルファベット順に処理され、アプリケーションとウェブサーバーが設定されてアプリケーションバージョンファイルが抽出される前に実行されます。

指定されたコマンドが管理者ユーザーとして実行されます。

コマンドの問題をトラブルシューティングするには、インスタンスログで出力を確認できます。

構文

commands: command name: command: command to run

オプション

command

実行するコマンドを指定する配列または文字列です。配列を使用する場合、スペース文字をエスケープしたり、コマンドパラメータを引用符で囲んだりする必要はありません。

cwd

(オプション)作業ディレクトリです。デフォルトでは、Elastic Beanstalk はプロジェクトのディレクトリの場所を探します。見つからない場合は、デフォルトとして c:\Windows\System32 を使用します。

env

(オプション)コマンドの環境変数を設定します。このプロパティは、既存の環境に追加するのではなく、既存の環境を上書きします。

ignoreErrors

(オプション)command キーに含まれるコマンドが失敗した場合(非ゼロ値を返した場合)、他のコマンドを実行する必要があるかどうかを指定するブール値です。失敗したコマンドがあっても他のコマンドの実行を続ける場合は、この値を true に設定します。コマンドが失敗したら実行を停止する場合は、false に設定します。デフォルト値は false です。

test

(オプション) Elastic Beanstalk が command キーに含まれるコマンドを処理するために、値 true (終了コード 0) を返す必要があるコマンド。

waitAfterCompletion

(オプション) コマンドが完了してから次のコマンドを実行するまでに、待機する秒数。コマンドの完了後にシステムの再起動が必要な場合は、指定された秒数が経過した後にシステムが再起動します。コマンドの結果としてシステムコマンドの結果、Elastic Beanstalk は設定ファイル内のコマンドの後ろに復旧します。デフォルト値は 60 秒です。また、forever を指定することもできますが、別のコマンドを実行する前にシステムが再起動する必要があります。

次の例は、指定されたファイルに set コマンドの出力を保存します。後続のコマンドがある場合、Elastic Beanstalk は、このコマンドの完了直後にそのコマンドを実行します。このコマンドで再起動が必要な場合、Elastic Beanstalk はコマンドが完了すると、直後にインスタンスを再起動します。

commands: test: command: set > c:\\myapp\\set.txt waitAfterCompletion: 0

サービス

services キーを使用して、インスタンスが起動されるときに開始または停止する必要のあるサービスを定義できます。また、services キーではソース、パッケージ、ファイルへの依存関係も指定でき、インストールされているファイルのために再起動が必要になった場合に、Elastic Beanstalk がサービスの再起動を処理します。

構文

services: windows: name of service: files: - "file name" sources: - "directory" packages: name of package manager: "package name[: version]" commands: - "name of command"

オプション

ensureRunning

(オプション) true に設定すると、Elastic Beanstalk が終了した後でサービスが実行されます。

false に設定すると、Elastic Beanstalk が終了した後でサービスは実行されません。

このキーを省略すると、サービスの状態は変更されません。

enabled

(オプション) true に設定すると、起動時にサービスが自動的に開始されます。

false に設定すると、起動時にサービスが自動的に開始されません。

このキーを省略すると、このプロパティは変更されません。

files

ファイルのリストです。Elastic Beanstalk がファイルブロックによって直接変更した場合、サービスは再起動されます。

sources

ディレクトリのリストです。Elastic Beanstalk がこれらのディレクトリの 1 つにアーカイブを拡張した場合、サービスは再起動されます。

packages

パッケージ名のリストに対するパッケージマネージャのマップです。Elastic Beanstalk がこれらのパッケージの 1 つをインストールまたは更新した場合、サービスは再起動されます。

commands

コマンド名のリストです。Elastic Beanstalk が指定したコマンドを実行した場合、サービスは再起動されます。

services: windows: myservice: enabled: true ensureRunning: true

コンテナコマンド

container_commands キーを使用して、アプリケーションのソースコードに影響するコマンドを実行します。コンテナコマンドは、アプリケーションおよびウェブサーバーが設定され、アプリケーションバージョンアーカイブが抽出された後、アプリケーションバージョンがデプロイされる前に実行されます。コンテナ以外のコマンドと他のカスタマイズオペレーションは、アプリケーションソースコードが抽出される前に実行されます。

コンテナコマンドは、ソースコードがアプリケーションサーバーにデプロイされる前に抽出されたステージングディレクトリから実行されます。コンテナコマンドを使用してステージングディレクトリにあるソースコードに対して行うすべての変更は、ソースが最終的な場所にデプロイされる際に含まれます。

コンテナコマンドの問題をトラブルシューティングするには、インスタンスログで出力を確認できます。

leader_only オプションを使用して、1 つのインスタンスでコマンドを実行するか、テストコマンドが test と評価される場合のみコマンドを実行するよう true を設定します。リーダー専用コンテナコマンドは、環境の作成およびデプロイ中のみ実行されます。他のコマンドやサーバーカスタマイズオペレーションは、インスタンスがプロビジョニングまたは更新されるたびに実行されます。リーダー専用コンテナコマンドは、AMI ID やインスタンスタイプの変更などの起動設定の変更によって実行されることはありません。

構文

container_commands: name of container_command: command: command to run

オプション

command

実行する文字列または文字列の配列。

env

(オプション) コマンドを実行する前に環境変数を設定し、既存の値を上書きします。

cwd

(オプション)作業ディレクトリです。デフォルトでは、これは解凍されたアプリケーションのステージングディレクトリです。

leader_only

(オプション) Elastic Beanstalk によって選択された単一のインスタンスでコマンドを実行するのみです。リーダー専用コンテナコマンドは、他のコンテナコマンドより前に実行されます。コマンドはリーダー専用または test を持つことができますが、両方はできません (leader_only が優先されます)。

test

(オプション) このコンテナコマンドを実行するために、true を返す必要があるテストコマンドを実行します。コマンドはリーダー専用または test を持つことができますが、両方はできません (leader_only が優先されます)。

ignoreErrors

(オプション) このコンテナコマンドが 0 (成功) 以外の値を返す場合は、デプロイに失敗しません。有効にするには、true に設定します。

waitAfterCompletion

(オプション) コマンドが完了してから次のコマンドを実行するまでに、待機する秒数。コマンドの完了後にシステムの再起動が必要な場合は、指定された秒数が経過した後にシステムが再起動します。コマンドの結果としてシステムコマンドの結果、Elastic Beanstalk は設定ファイル内のコマンドの後ろに復旧します。デフォルト値は 60 秒です。また、forever を指定することもできますが、別のコマンドを実行する前にシステムが再起動する必要があります。

次の例は、指定されたファイルに set コマンドの出力を保存します。Elastic Beanstalk は 1 つのインスタンスでコマンドを実行し、コマンドが完了すると、直後にインスタンスを再起動します。

container_commands: foo: command: set > c:\\myapp\\set.txt leader_only: true waitAfterCompletion: 0