Elastic Beanstalk 環境のワーカー層に定期的なタスクを追加し、追加されない定期的なタスクの問題をトラブルシューティングするにはどうすればよいですか?

最終更新日: 2022 年 6 月 24 日

AWS Elastic Beanstalk 環境のワーカー層に定期的なタスクを追加したいと考えています。

解決方法

定期的なタスクをワーカー層に追加する

Elastic Beanstalk 環境のワーカー層に定期的なタスクを追加するには、ソースコードのルートに cron.yaml ファイルを配置します。例:

version: 1
cron:
 - name: "schedule"
   url: "/schedule"
   schedule: "0 */12 * * *"

注: 前の例では、schedule 定期タスクは、タスクを記述する Amazon Simple Queue Service (Amazon SQS) メッセージを 12 時間ごとにキューの先頭に送信します。メッセージがキューを通過した後、タスクはインスタンスによって取得され、「/schedule」エンドポイントを HTTP POST します。

定期的なタスクがワーカー層に表示されない場合は、次の「定期的なタスクの問題をトラブルシューティングする」セクションの手順を実行します。

定期的なタスクに関する問題をトラブルシューティングする

1.    Elastic Beanstalk 環境のイベントストリームで、次のようなイベントを確認します。

Successfully loaded 1 scheduled tasks from cron.yaml

2.    /var/log/eb-*.log プラットフォームファイルで、次のようなログを確認します。

{"status":"SUCCESS","api_version":"1.0","results":[{"status":"SUCCESS","msg":"","returncode":0,"events":[{"msg":"Successfully loaded 1 scheduled tasks from cron.yaml.","severity":"INFO","timestamp":1562000593}]}]}

3.    /var/log/aws-sqsd/default.log ファイルで、Amazon SQS デーモンが実行中で、正しいキューをポーリングしていることを確認します。

Amazon SQS デーモンが正しく起動すると、次のようなログが表示されます。

2019-07-04T14:11:21Z init: initializing aws-sqsd 2.4 (2018-09-06)
2019-07-04T14:11:21Z pollers: start initializting poller timer...
2019-07-04T14:11:21Z pollers: start auto running poller...
2019-07-04T14:11:21Z start: polling https://sqs.us-west-2.amazonaws.com/111122223333/yourWorkerQueue

4.    /var/log/aws-sqsd/default.log ファイルで、Amazon SQS デーモンがポート 80http://localhost/ に対して送信する HTTP POST リクエストを確認します。リクエストは、デーモンがキュー項目をポーリングするときに送信されます。

その際、次のような出力が表示されます。

2019-07-05T13:54:52Z message: sent to http://localhost:80/

5.    メッセージが Amazon SQS キューに配信されていることを確認するには、ワーカー環境に関連付けられたキューのメトリクス NumberOfMessagesReceived を確認します。

6.    スケジュールされたタスクを手動で呼び出すには、次のコマンドを実行します。

curl -d param1=value1 -d param2=value2 -H "Content-Type: application/json" -X POST http://localhost/scheduled-task-path

-d (--data) フラグにより、定期的なタスクに渡そうとしているデータを保持することができます。

注: 定期的なタスクは、Amazon SQS FIFO (First-In-First-Out) キューを設定したワーカー環境では機能しません。


この記事はお役に立ちましたか?


請求に関するサポートまたは技術サポートが必要ですか?