Amazon web services 如何为使用CloudFormation模板创建的AWS Lambda函数添加触发器?
我正在尝试根据以下示例从CloudFormation模板创建lambda函数: 从这个链接可以看出: 无法为lambda函数添加触发器(如S3上载触发器) 在编写模板时是否有指定触发器的变通方法?您需要在S3存储桶定义中添加一个触发器。但是,这将导致循环依赖,其中S3 bucket引用Lambda函数,Lambda函数引用S3 bucketAmazon web services 如何为使用CloudFormation模板创建的AWS Lambda函数添加触发器?,amazon-web-services,amazon-s3,aws-lambda,Amazon Web Services,Amazon S3,Aws Lambda,我正在尝试根据以下示例从CloudFormation模板创建lambda函数: 从这个链接可以看出: 无法为lambda函数添加触发器(如S3上载触发器) 在编写模板时是否有指定触发器的变通方法?您需要在S3存储桶定义中添加一个触发器。但是,这将导致循环依赖,其中S3 bucket引用Lambda函数,Lambda函数引用S3 bucket 为了避免这种循环依赖,创建所有资源(包括S3 bucket和Lambda函数),而不指定通知配置。然后,在创建堆栈后,使用更新模板,然后更新堆栈。您可以
为了避免这种循环依赖,创建所有资源(包括S3 bucket和Lambda函数),而不指定通知配置。然后,在创建堆栈后,使用更新模板,然后更新堆栈。您可以使用cloudwatch规则触发lambda函数:
AWSTemplateFormatVersion: '2010-09-09'
Resources:
MyCloudWatchRule:
Type: "AWS::Events::Rule"
Properties:
Description: "Rule to trigger lambda"
Name: "MyCloudWatchRule"
EventPattern: <Provide Valid JSON Event pattern>
State: "ENABLED"
Targets:
- Arn: "arn:aws:lambda:us-west-2:12345678:function:MyLambdaFunction"
Id: "1234567-acvd-awse-kllpk-123456789"
AWSTemplateFormatVersion:'2010-09-09'
资源:
MyCloudWatchRule:
类型:“AWS::Events::Rule”
特性:
描述:“触发lambda的规则”
名称:“MyCloudWatchRule”
事件模式:
状态:“已启用”
目标:
-Arn:“Arn:aws:lambda:us-west-2:12345678:函数:MyLambdaFunction”
Id:“1234567-acvd-awse-kllpk-123456789”
参考:
- 已经有一段时间了,所以我想你已经解决了这个问题,但我会投入我的2美分来帮助别人
对于这类事情,最好使用SAM(无服务器应用程序模型)。因此,请使用
AWS::Serverless::Function
而不是AWS::Lambda::Function
在其中,您可以指定一个接受以下可能值的EventSource
:
- S3
- 社交网站
- 运动
- 发电机
- SQS
- 原料药
- 时间表
- CloudWatchEvent
- CloudWatchLogs
- 物联网规则
- 亚历克斯基尔
- 白兰地
- HttpApi
如今,亚马逊解决了这个问题:
只需像示例中那样创建Lambda权限。Lambda函数可以由多个AWS资源触发,如S3、SNS、SQS、API等。在
我建议您使用,它可以让您超级快速地创建和配置Lambda函数,还可以选择触发它的方式。或者可以使用
DependsOn
或者添加等待时间。添加链接被删除时的示例总是很好:)