![](/img/trans.png)
[英]add S3 trigger on a Lambda function with cloudformation yaml
[英]How do I add a Lambda Function with an S3 Trigger in CloudFormation?
到目前為止,我一直在使用CloudFormation YAML,並且發現它是全面的。 我在嘗試使用SAM / CloudFormation創建Lambda函數時遇到了麻煩,每當將對象添加到現有 S3存儲桶時都會觸發該Lambda函數。
到目前為止,我所看到的所有示例似乎都要求您在創建Lambda函數時,在同一CloudFormation腳本中創建存儲桶。 這對我而言不起作用,因為我們的設計目標是能夠使用CloudFormation將整個堆棧重新部署到不同的區域或AWS賬戶,並快速維護我們的應用程序。 S3存儲桶名稱必須是全局唯一的,因此,如果我在CloudFormation中創建存儲桶,則當我嘗試將其部署到其他區域/帳戶時,腳本將中斷。 我可以通過創建名稱名稱為帳戶名稱/區域的存儲桶來解決此問題,但是從存儲桶蔓延的角度來看,這並不理想。
那么,有沒有人有在CloudFormation中創建Lambda函數的解決方案,該解決方案是由將對象寫入現有 S3存儲桶觸發的?
謝謝!
據SAM團隊說 ,這是不可能的。 這是基礎CloudFormation服務無法做到的。
如果實現自定義資源,則可能有一種解決方法,該資源將觸發一個單獨的Lambda函數來修改現有存儲區並將其鏈接到您要部署的Lambda函數。
因為“實現自定義資源”不是很具體: 這是一個帶腳手架代碼的AWS github存儲庫,可以幫助編寫該代碼 ,然后在模板中聲明如下內容(其中LambdaToBucket
是您編寫的自定義函數)。 我發現您需要在該函數中配置兩件事:一是存儲桶上的存儲桶通知配置(說告訴Lambda有關更改),另一是該函數的Lambda許可(說來自S3的允許調用)。
Resources:
JoinLambdaToBucket:
Type: Custom::JoinLambdaToExistingBucket
Properties:
ServiceToken: !GetAtt LambdaToBucket.Arn
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.