2017-12-11 24 views
0

私はAPIを弾力のあるbeanstalkに配備しています。インスタンスが起動されるたびに、特定のフォルダ "temp_storage"が必要になります。これは、S3バケットにアップロードする前にサイズを変更しながらイメージを保存するので、書き込みアクセス権が必要です。私はまた、いくつかの作曲家プログラムをインストールする必要があります。AWS - Elastic Beanstalkのインストールコマンド

私のセットアップは

fd-api/ 
    composer.json (These need to be installed) 
    temp_storage/ (This folder needs write access) 
    .ebextensions/ 
      temp-folders.config 

一時-folders.config

container_commands: 
    chown_folder: 
    command: "chown -R webapp /var/www/html/fd-api/temp_storage" 
    chmod_folder: 
    command: "chmod 777 /var/www/html/fd-api/temp_storage" 

これは、それがどのように動作するかをの私の理解ですが、私はこれを実行しようとすると、私はエラーが出ています

インスタンスID(i-03f5ed1eb55f52d17)でコマンドが正しく実行されませんでした。操作を中止します。

アプリケーションを配備できませんでした。

中止された展開中に、一部のインスタンスが新しいアプリケーションバージョンを展開している可能性があります。すべてのインスタンスで同じバージョンが実行されていることを確認するには、適切なアプリケーションバージョンを再デプロイします。

これはどこでデバッグを開始するのかわかりません。読んで私の理解は、弾力のあるbeanstalkインスタンスが生成され、.ebextension/something.configファイルのコマンドが実行されるたびに、コンポーザファイルが自動的に実行されることです。

ユーザーwebappは本当にわかりません。弾力のあるbeanstalkインスタンスのデフォルトユーザーであると仮定します。

ご協力いただければ幸いです。

+1

/var/log/eb-activity.logがあなたのインスタンス場所にログファイルをある私の問題を解決することになりましたログを見ることができます。 – Zohaib

+0

あなたのコマンドが実行されているとき、 'temp_storage'フォルダが存在しないと思います。 ElasticBeanstalkは最初にすべてのファイルをステージング場所に抽出し、すべてのデプロイメントフック( 'container_commands 'など)が実行された後にそれらを場所に移動します。 @ Zohaibは言ったように、 '/ var/log/eb-activity.log'は何が起こっているかを正確に伝えるべきです。また、 'webapp'はあなたのアプリケーションを実行するユーザです。 – Brian

+0

@Brianだからあなたはコマンドを実際にディレクトリを作成して、新しく作成したフォルダにアクセス許可を設定する必要があると思いますか? – hunijkah

答えて

1

解決策は、.ebextensionsファイル内のコマンドが辞書順に実行されることでした。 001、002、003を追加することで、...そのようなコマンド名の前に:

container_commands: 
    001create_folder_nonsudo: 
    command: "mkdir temp_storage" 
    002chown_folder: 
    command: "chown webapp temp_storage" 
    003chmod_folder: 
    command: "chmod 777 temp_storage" 

+0

申し訳ありませんが、私は言及しませんでした!私はいつも私の命令に癖のついた数字を付けるが、それがどれほど重要か忘れている。 – Brian

+0

@ブライアンすべて良い、非常に助けてくれてありがとう!それは有り難いです。 – hunijkah

関連する問題