2016-09-04 11 views
0

AWSインフラストラクチャ上でAWS SQSキューを読み込んでプロセスを実行するプロセスをデーモンとして実行したいとします。AWSインフラストラクチャのデーモンとしてプロセスを実行

私の最初のアプローチは、ECSコンテナサービスに展開されたドッカーコンテナを使用することです。だから私はwhile true loopになり、数秒間眠っている。これを使用して、処理間のスリープ時間を制御できます。そのため、SQSキューがいっぱいになると、スリープ時間を短縮できます。だから

私はAWS Lambdaをcronジョブとしてスケジュールすることは可能ですが、私はcron時間(sqsサイズの応答の減少または増加)を制御できません。

AWSラムダのアプローチは簡単で、「任意の」インフラストラクチャは必要ありませんが、柔軟性は低くなります。 誰かが別のアプローチを知っていますか?

+1

あなたはラムダスケジューラのものを使うことができます。ラムダハンドラの中では、SQSに20個のメッセージを尋ねることができます(私はそれが一度に得ることができる最大だと思います)。それが完了する前に20のメッセージをすべて取得した場合、aws-sdk(AWS.Lambda.invoke(context.functionName))を使用して自身を再呼び出しします。 20未満のメッセージがあった場合、メッセージを処理した後に正常に終了します。 – idbehold

答えて

0

AWS Lambdaがフードの下でcronスケジューリングを処理する方法(https://docs.aws.amazon.com/lambda/latest/dg/with-scheduled-events.htmlおよびhttp://docs.aws.amazon.com/AmazonCloudWatch/latest/events/RunLambdaSchedule.htmlを参照)を見ると、ラムダをトリガーしてラムダ自体から変更するCloudwatchイベントを見つけることができます。ラムダとクラウドウォッチイベント用のプログラムAPIのドキュメントはかなり限られているので、あなた自身で多くのことを理解する必要があります。

すべての場合、あなた自身のコンテナを実行するよりも簡単なアプローチではありませんが、ライブラリのすべてをパッケージ化することに傷つくことはありません。

関連する問題