我正在使用AWS Clouwatch Event Rule调用基于Cron Schedule的python lambda函数,该函数运行良好,现在我可以使用AWS Cloudformation将参数从cloudwatch传递给此lambda函数甚至规则吗?您能指导一下吗? 请在下面查看我的cfn模板:
Step1 : parameter.Schedule=cron(0 21 ? * * *)
Step 2: "Schedule": {
"Description": "Schedule for the Lambda function (cron or rate)",
"Type": "String"
},
Step 3: "funcInvokeRule": {
"Type": "AWS::Events::Rule",
"Properties": {
"ScheduleExpression": {"Ref": "Schedule"},
"Targets": [{
"Id": "funcScheduler",
"Arn": {"Fn::GetAtt": ["Function","Arn"]}
}]
}
},
答案 0 :(得分:1)
在AWS docs之后,您的cloudformation资源可能很简单:
Resources:
EventRule:
Type: AWS::Events::Rule
Properties:
Name: {EVENTNAME}
Description: "ScheduledRule"
ScheduleExpression: cron(0 21 ? * * *)
State: "ENABLED"
RoleArn: {ROLE}
用您自己的值替换名称和 RoleArn 。
注意:名称不是必需的参数,但确实有助于标识您的资源。但是,根据文档,如果您替换cloudformation模板中的资源,则会指定一个新名称。
如果您还打算在lambda using severless中使用cloudformation,那么我个人将通过权限将规则附加到lambda,这样,您最多可以在规则上附加5个触发器,而无需修改规则目标每次。例如
Lambda:
Type: AWS::Serverless::Function
Properties:
FunctionName:{LAMBDANAME}
Description: {Description}
Role: {Role}
Handler: {FileName}.lambda_handler
Runtime: {x}
CodeUri: {ObjectPath}
MemorySize: {x}
Timeout: {x}
Lambdatrigger:
Type: AWS::Lambda::Permission
Properties:
FunctionName: !Ref Lambda
Action: lambda:InvokeFunction
Principal: events.amazonaws.com
SourceArn: !Ref EventRule
答案 1 :(得分:0)
Target
的{{1}}属性类型具有Input参数:
传递给目标的有效JSON文本。如果使用此属性,则事件文本本身中的任何内容都不会传递到目标。
还有InputTransformer,您可以使用它来转换现有输入,例如,向其添加额外的值。
使您能够基于某些事件数据向目标提供自定义输入的设置。您可以从事件中提取一个或多个键值对,然后使用该数据将自定义输入发送到目标。