AWS Elastic Beanstalk の機能を利用して、作成する EC2 インスタンスをカスタマイズしようとしています。これには、.ebextensions ディレクトリに .config ファイルを作成する必要があります。
アプリケーションがインスタンスにデプロイされるときに実行するコマンドの数を指定できます。これを使用して、いくつかの msi ファイルをインストールし、インスタンスに一意の名前を割り当てるように EC2 を構成しています。これには再起動が必要です。
私の問題は、インスタンスが最初にデプロイされたときにのみこれらのコマンドを実行したいということです。コードのみの変更を既存のインスタンスにデプロイする場合、それらは実行されるべきではありません。
コマンドの実行を妨げる「テスト」パラメーターを使用してみました。最後のコマンドとしてファイルを作成し、「test」パラメーターでそのファイルの存在を確認します。しかし、うまくいかないようです。
私の設定ファイルは次のようなものです:
# File structure documented at http://docs.aws.amazon.com/elasticbeanstalk/latest/dg/customize-containers-windows-ec2.html
files:
"C:\\Users\\Public\\EnableEc2SetComputerName.ps1":
source: "[File Source]"
commands:
init-01-ec2setcomputername-enable:
test: cmd /c "if exist C:\\Users\\Public\\initialised (exit 1) else (exit 0)"
command: powershell.exe -ExecutionPolicy Bypass -File "C:\\Users\\Public\\EnableEc2SetComputerName.ps1"
waitAfterCompletion: 0
init-05-reboot-instance:
test: cmd /c "if exist C:\\Users\\Public\\initialised (exit 1) else (exit 0)"
command: shutdown -r # restart to enable EC2 to set the computer name
waitAfterCompletion: forever
init-06-mark-initialised:
test: cmd /c "if exist C:\\Users\\Public\\initialised (exit 1) else (exit 0)"
command: echo initialised > C:\\Users\\Public\\initialised
waitAfterCompletion: 0
これを達成する別の方法はありますか?それとも私は愚かなことをしていますか?
Unix ベースのシステムには、コマンドtouch
とコマンドがあります ( Unix システムに対して同等の質問をするこの回答test
で言及されています)。この状況で最適に機能する Windows の同等のものは何ですか?