Cloudformationを使用して一連のラムダを作成してみました。ラムダが作成されたらトリガーされるようにします。さまざまなブログでs3
またはsns
へのトリガーを作成するのを見ましたが、一度作成されたらlambda
をトリガーするオプションはないようです。オプションはありますか?
はい、可能です。以下にいくつかのオプションを示します。
手動 SNSトピックの作成 。 AWS::SNS::Subscription
を、ラムダ関数を Endpoint
として、SNSトピックを TopicArn
。スタックの作成/更新で、このSNSトピックに送信されるスタックイベント通知を構成します。
--notification-arns
AWS CLI または他のAWS SDK。)カスタムリソース を追加して、作成時に呼び出されるLambda関数を参照します。
DependsOn
属性 を追加します関数が呼び出される前に、確認するリソースを参照するカスタムリソースが最初に作成されます。CREATE_IN_PROGRESS
のままでLambda関数を呼び出します。DELETE_FAILED
状態でスタックする可能性があります。Lambda関数参照を Stack Output に追加してから、スタック作成を実行し、その後Lambda関数を手動で呼び出す簡単なスクリプトを記述します。
同様の回避策を探している人向け。
CloudWatchは、「CreateStack」、「UpdateStack」、「DeleteStack」であるCloudFormationのAPI呼び出しをキャプチャできます。「Create_complete」や「Complete_Rollback」などのスタック状態はキャプチャできません。
回避策はSNSです。スタックは通知をSNSに送信でき(スタック作成時の事前設定)、SNSはラムダのトリガーを選択できますが、特定の状態を選択することはできません。したがって、ラムダ関数は、イベントの「メッセージ」コンテンツのどの状態を見つけるために仕事を引き受けます。みんな、コーディングだけ。
SNSトピックに通知するオプションがあり、トピックをリッスンするラムダを作成できるため、ワークフローはCloudformation launch-> SNS Topic-> Lambdaになります。
次のテンプレートは、ラムダを呼び出す必要があります。
「InvokeLambda」:{「タイプ」:「カスタム:: InvokeLambda」、「バージョン」:「1.0」、「プロパティ」:{「ServiceToken」:{「Fn :: GetAtt」:[「InitFunction」、「Arn」] }}}、