web-dev-qa-db-ja.com

AWS Beanstalk Post InstallHookのバックグラウンドプロセスとしてPHP Script

UDPATE

これがエラスティックビーンズトークの間違った使い方であることがわかりました。アプリは実行されますが、正しい解決策ではなくハックになります。

代わりにEC2を使用してください。


次の設定を使用してPHPアプリケーションをデプロイしています:

セットアップ

  1. Bitbucketパイプラインは、composerを使用して説明を作成し、完成したZipファイルを作成します。
  2. Bitbucket AWS Elastic Beanstalkは、コードをAWS ElasticBeanstalkアプリケーションにデプロイします。
  3. opt/elasticbeanstalk/hooks/appdeploy/postのインストール後フックは、デプロイ後にPHPスクリプトを実行します

問題

PHPスクリプトは、バックグラウンドタスクとしてデプロイ後フックで実行する必要があり、実行を停止することはありません。これにより、パイプラインが事実上詰まります。

パイプラインが永久に実行されているスクリーンショット(意図的に停止)

AWS ElasticBeanstalkアプリケーションのヘルスステータスをチェックするBitbucketパイプライン

.ebextensions構成ファイルのコードは次のとおりです。

container_commands:
  01-create_post_hook:
    command: "mkdir -p /opt/elasticbeanstalk/hooks/appdeploy/post"
    ignoreErrors: true
files:
  "/opt/elasticbeanstalk/hooks/appdeploy/post/start.sh":
    mode: "000770"
    owner: root
    group: root
    content: | #!/bin/bash
      echo "--------Starting Runner------------"
      php /var/app/current/runner.php &

質問

  • Bashスクリプトは正しく構成されていますかバックグラウンドで実行する
  • アプリケーションが更新された後にスクリプトを実行する別の(推奨される)方法はありますか?

ノート

バックグラウンドで実行されるはずのスクリプトは実際には終了していないため、アプリケーションのヘルスステータスは常に「info」のままです。アプリケーションを正常にデプロイするには「OK」である必要があるため、これは問題です。

アプリケーションの正常性が「OK」ではなく「情報」でスタックしている

私がインターネット全体で見つけた同様の質問:

https://forums.aws.Amazon.com/thread.jspa?threadID=301439&tstart=https://forums.aws.Amazon.com/thread.jspa?messageID= 425130&#4251

1
Thomas

通常、これらの処理には、Jenkins、CircleCI、BambooなどのCI/CD(継続的インテグレーション/継続的デリバリー)ツールを使用します。 BitbucketからWebhookを取得できます。これにより、PHPスクリプトの呼び出し、bashスクリプトの実行、raketaskの実行など、あらゆる種類のタスクがトリガーされます。

0
Stefano Martins