AWS Elastic Beanstalk で PHP を使用してバックグラウンド ジョブを実行する最良の方法を見つけようとしてきました。Google と SO で何時間も検索した結果、SWF とアクティビティ ワーカーを使用することが 1 つの良い解決策であると考えています。
この例が aws-sdk-for-php に埋もれているのを見つけました: https://github.com/amazonwebservices/aws-sdk-for-php/tree/master/_samples/AmazonSimpleWorkflow/cron
read-me ファイルには次のように書かれています。
このサンプルを実行するには、別のターミナル/コンソール ウィンドウでコマンド ラインから 3 つのスクリプトを実行する必要があります。
と
start_cron_example_workflow.php スクリプトはすぐに終了しますが、ディサイダー スクリプトとアクティビティ ワーカー スクリプトは手動で終了するまで実行を続けます。
ディサイダーとアクティビティワーカーは「永久に」ループし、これらを EB で実行しようとすると、私が問題を抱えています。
私の .ebextensions ディレクトリには、これらのファイルを実行するファイルがあります。
container_commands:
01background_task:
command: "php -f start_cron_example_activity_workers.php"
02background_task:
command: "php -f start_cron_example_workflow_workers.php"
しかし、次のエラー メッセージが表示されます。
エラー
アプリケーション バージョンのデプロイに失敗しました。
エラー 一部のインスタンスがコマンドに応答しませんでした。[i-a5417ed4] からの応答はありませんでした。
構成ファイルを使用してこれを行う方法はありますか? 単一障害点を導入せずに AWS EB でこれを機能させるにはどうすればよいですか?
ありがとうございました。