Aws lambda 允许云监视调用无服务器lambda
我的Aws lambda 允许云监视调用无服务器lambda,aws-lambda,serverless-framework,aws-serverless,Aws Lambda,Serverless Framework,Aws Serverless,我的serverless.yml中有一个lambda函数。看起来是这样的: functions: clean: handler: app.run events: - schedule: rate(2 hours) { "Sid":"AWSEvents_rule_name_test", "Effect":"Allow", "Principal":{ "Service":"events.a
serverless.yml
中有一个lambda函数。看起来是这样的:
functions:
clean:
handler: app.run
events:
- schedule: rate(2 hours)
{
"Sid":"AWSEvents_rule_name_test",
"Effect":"Allow",
"Principal":{
"Service":"events.amazonaws.com"
},
"Action":"lambda:InvokeFunction",
"Resource":"arn:aws:lambda:eu-central-1:<account_id>:function:<lambda_name>",
"Condition":{
"ArnLike":{
"AWS:SourceArn":"arn:aws:events:eu-central-1:<account_id>:rule/<rule_name>"
}
}
}
它工作得很好,开箱即用的lambda每2小时就会接到一次电话。当我在AWS控制台中添加新的规则
并将新创建的lambda设置为目标时,它也可以工作。AWS控制台和无服务器框架都在后台创建了策略,该策略events.amazonaws.com
服务可以调用该特定功能。该政策在某种程度上如下所示:
functions:
clean:
handler: app.run
events:
- schedule: rate(2 hours)
{
"Sid":"AWSEvents_rule_name_test",
"Effect":"Allow",
"Principal":{
"Service":"events.amazonaws.com"
},
"Action":"lambda:InvokeFunction",
"Resource":"arn:aws:lambda:eu-central-1:<account_id>:function:<lambda_name>",
"Condition":{
"ArnLike":{
"AWS:SourceArn":"arn:aws:events:eu-central-1:<account_id>:rule/<rule_name>"
}
}
}
尽管它显示出不起作用,而且我的lambda从未被编程创建的规则调用过,直到我添加了显式SourceArn,它将一个规则映射到一个特定函数。我也通过三个步骤进行编程:
1.创建规则。
2.创建目标。
3.创建权限
对于删除,我需要按相反的顺序进行。我没有发现这(不允许通配符)是错误还是故意行为。是的,您可以使用通配符“*”使其通用