1

シナリオ - 作業を分割して複数の他のラムダ(作業者)に与えるマスターラムダがあります。最初のラムダは、他のラムダを非同期に反復して呼び出しますラムダが別のラムダを呼び出し、同時実行のしきい値が1000になる

生まれているラムダの数が1000を超える場合、失敗しますか?

2つのラムダの間にSNSがありますか?SNSが再試行するようにしますか?

または、メッセージをキューに入れ、キューのポーリングを開始するために「X」個のワーカlambdaの通知を送信するという、より複雑なアプローチですか?

良い方法がありますか?

答えて

0

はい、プロデューサとコンシューマ間のデカップリングが必要です。最も明白な方法は、SNSトピックに1000個のメッセージを作成させ、必要な消費者の数をAWSが処理できるようにすることです(コンシューマーラムダを再利用できる可能性があります)。他の方法には、DynamoDBに挿入されたレコードからのトリガが含まれます。

あなたはリスナーがSQSキューからメッセージをプルする場合は、ラムダの数がである場合は、CloudWatchの(毎分最大1つのトリガー)

0

を行うことができ、それらを自分でトリガする必要があります産んだりするのは1000以上です。Qn:失敗しますか?

はいそれは失敗します。しかし、は、AWSカスタマーサポートをリクエストすることにより、地域に基づいてn個のデフォルト制限(1000)を増やすことができます。

http://docs.aws.amazon.com/lambda/latest/dg/limits.html

http://docs.aws.amazon.com/lambda/latest/dg/concurrent-executions.html

私はあなたの正確な要件について確認していません。あなたの必要条件に基づいてを作る必要があります。には1000ラムダの産卵が必要です。

私の提案は

提案1以下である: - AWSのステップ関数で

AWSのステップ関数

あなたは、ステートマシンの言語を使用して、マスターからのあなたの子供のラムダを呼び出すことができます。あなたのマスターラムダがどのように呼び出されたかに基づいています(例:Cloudwatchルール、トリガー)。

https://aws.amazon.com/step-functions/

https://states-language.net/spec.html

提案2: - - :より多くの情報後藤マスターラムダから

AWS ECSコンテナ

SQSにメッセージを送信します。子プログラムをECSコンテナサービスとして起動します。プログラムでは、SQSメッセージを消費し、ビジネスロジックを解決できます。

http://docs.aws.amazon.com/AmazonECS/latest/developerguide/ecs_services.html

関連する問題