2016-12-27 82 views
8

創建lambda觸發器我嘗試使用cloudformation創建一組lambda。我希望一旦創建lambda就會觸發它。我在各種博客上看到創建了觸發器s3sns,但似乎沒有一個選項可以在創建lambda後觸發。任何選項?是否有可能從CloudFormation模板

回答

11

是的,這是可能的。以下是幾種選擇:

  1. 手動create an SNS Topic。使用lambda函數作爲Endpoint,將SNS主題作爲TopicArn添加AWS::SNS::Subscription到您的堆棧。在堆棧創建/更新時,配置要發送到此SNS主題的堆棧事件通知。

    • (見Setting AWS CloudFormation Stack Options的文檔瞭解如何使用AWS控制檯創建你的籌碼,或者創建/更新使用AWS CLI或其他AWS SDK您的堆棧使用等效選項像--notification-arns時,要做到這一點。)
  2. 添加Custom Resource引用Lambda函數,它將在創建時調用函數。爲了完成自定義資源創建(並且不會導致堆棧中的回滾),您需要修改Lambda函數以支持CloudFormation請求/響應格式(請參閱Custom Resource Reference)。還要注意,該函數也將在堆棧刪除時再次被調用,並且這也將需要處理。

  3. 將Lambda函數引用添加到Stack Output,然後編寫一個執行堆棧創建的簡單腳本,然後手動調用Lambda函數。

+0

請參閱此以通過SAM創建SNS主題http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-sns-topic.html。 –

+0

https://stackoverflow.com/questions/45553456/defining-tables-views-and-indexes-in-aws-cloudformation/45574936#45574936 –

+0

有趣的參考(使用無服務器框架)(2):https:// github .COM /無服務器/無服務器/問題/ 4483 – vincent

0

您可以選擇通知SNS主題,並且您可以構建一個監聽該主題的lambda,因此工作流程將爲:Cloudformation啓動 - > SNS主題 - > Lambda。

+0

我可以通過SNS從cloudformation創建通知我的lambda?我基本上希望我的lambda在我的cloudformation狀態更改爲CREATE_COMPLETE的那一刻運行。 – ZZzzZZzz

1

對於誰正在尋找類似的解決方法。

CloudWatch能夠捕獲CloudFormation(即「CreateStack」,「UpdateStack」和「DeleteStack」)的API調用,諸如「Create_complete」或「Complete_Rollback」之類的堆棧狀態不可檢測,這意味着此類狀態更改無法觸發lambda。

解決方法是SNS,堆棧能夠向SNS發送通知(在創建堆棧時提前設置),SNS可以選擇觸發lambda,但是,您不能選擇特定狀態。所以,lambda函數需要找出事件的「消息」內容中的狀態。每個人,只是編碼。

相關問題