2016-11-28 22 views
0

私は、接続されたRDSデータベースをプロビジョニング/アップデートする単一インスタンスのWebサーバーAWS EB環境にコードをデプロイしています。私が展開コードを呼び出す.ebextensionsファイル持っている:同じ展開でAWS Elastic Beanstalkデプロイメントオーダー

--- 
container_commands: 
    01deploydb: 
    command: /var/www/html/php/cli/deploy-db.php 
    leader_only: true 

を、私は/cli/に戻って一つのディレクトリを展開-をdb.phpファイルを落としました。展開時には、ERROR: [Instance: i-*****] Command failed on instance. Return code: 127 Output: /bin/sh: /var/www/html/php/cli/deploy-db.php: No such file or directory. container_command 01deploydb in .ebextensions/01_db.config failed. For more detail, check /var/log/eb-activity.log using console or EB CLI.

コマンドを含まないバージョンを展開して、コマンドを含む2番目の更新プログラムを展開すると、エラーは発生しません。ただし、同時に呼び出すコマンドとファイルを追加すると、エラーが発生します。同様のシーケンスが、以前は異なるコマンド/ファイルで発生していました。

私の質問です:AWSが環境をどのように更新するかについて文書化された注文/シーケンスがありますか? container_commandsが呼び出される前に私の新しいバージョンが完全に展開されていて(そして.phpファイルがインストールされている)ことが予想されました。

答えて

2

コマンド:セクションは、プロジェクトファイルが配置される前に実行されます。ここでサーバーパッケージをインストールできます。

container_commands:セクションは、ファイルが最終的な宛先に置かれる前にステージングディレクトリで実行されます。必要に応じてファイルを変更することができます。 http://docs.aws.amazon.com/elasticbeanstalk/latest/dg/customize-containers-ec2.html

あなたはまた、ポストを実行することができます。現在のパスは、この(私はアプリのディレクトリが間違っているかもしれません、多分それはphp/cli/deploy-db.phpする必要があります)

container_commands: 
    01deploydb: 
    command: cli/deploy-db.php 
    leader_only: true 

上記のためのリファレンスのようにそれを実行できるように、このステージングディレクトリでありますスクリプトをデプロイします。これはあまりよく書かれていません(少なくともそれはそうではありませんでした)。

files: 
    "/opt/elasticbeanstalk/hooks/appdeploy/post/99_deploy.sh": 
     mode: "000755" 
     owner: root 
     group: root 
     content: | 
      #!/usr/bin/env bash 
      /var/www/html/php/cli/deploy-db.php 
+0

おかげ@Gustaf:あなたは、この(それが唯一しかしリーダーになることはありませんが、あなたはcontainer_commands:を通じてこのディレクトリにファイルを置くことができる)のような何かを行うことができます! – Calteran

関連する問題