AWS
Lambda関数が_Kinesis Firehose
_に対して操作を実行します。この関数はバックオフメカニズムを使用します。 (現時点では、計算時間を無駄にしていると思います)。
しかしとにかく、私のコードのある時点で、実行に失敗したいと思います。実行を停止するには、どのコマンドを使用する必要がありますか?
P.s.次のようなコマンドがあることがわかりました。
context.done()
context.succeed()
context.fail()
私はあなたに言わなければなりません、私はできませんでしたこれらのコマンドに関するドキュメントをAWS
ドキュメントで見つけてください。
これらのメソッドは、Node.js v0.10.42で最初に導入されたため、下位互換性のためにのみ使用できます。 NodeJSバージョン4. *または6. *を使用する場合。 callback()
関数を使用します。
チェック: Lambdaのコールバックパラメーターの使用 この関数を利用する方法の詳細については。
これが私の解決策です(おそらく完璧ではありませんが、私にとってはうまくいきます)
time.sleep(context.get_remaining_time_in_millis() / 1000)
コードはPythonですが、他の言語を使用して同じロジックを適用できると確信しています。アイデアは、「再試行」の残りの時間、ラムダ関数を「スリープ状態にする」ことです。
完全な例は次のようになります。
...
some code that processes logs from CloudWatch when my ECS container stops(job is finished)
...
# Send an email notification
sns_client = client('sns')
sns_client.publish(
TopicArn=sns_topic,
Subject="ECS task success detected for container",
Message=json.dumps(detail)
)
# Make sure it was send only once, therefore 'sleep'
# untill lambda stops 'retries'
time.sleep(context.get_remaining_time_in_millis() / 1000)
したがって、電子メールは1回だけ送信されます。お役に立てば幸いです。