gpt4 book ai didi

amazon-web-services - AWS 事件规则不起作用

转载 作者:行者123 更新时间:2023-12-02 09:13:59 25 4
gpt4 key购买 nike

我有以下 CFN 事件规则,该规则应该启动 MyLambda。当我运行此 CFN 模板时,我可以看到规则是使用正确的间隔、正确的输入 json 创建的,并且它已启用。但它并没有启动。我没有看到 lambda 创建任何日志(我正在使用 print 语句)。

但是当我使用 UI 创建类似的规则(相同的配置等)时,它工作正常。我不确定我在这里缺少什么。

CWEventRule:
Type: "AWS::Events::Rule"
Properties:
Description: "Description"
Name: "CWEventRule"
ScheduleExpression: "rate(5 minutes)"
State: "ENABLED"
Targets:
-
Arn:
Fn::GetAtt:
- "MyLambda"
- "Arn"
Id: "MyLambda"
Input: "{\"jsonkey\":\"jsonvalue\"}"

更新了带有角色的 cfn 模板

CloudWatchEventRole:
Type: "AWS::IAM::Role"
Properties:
AssumeRolePolicyDocument:
Version: "2012-10-17"
Statement:
- Effect: "Allow"
Principal:
Service:
- !Sub lambda.amazonaws.com
- !Sub events.amazonaws.com
Action: "sts:AssumeRole"
Path: "/"
Policies:
- PolicyName: CloudWatchEventPolicy
PolicyDocument:
Version: '2012-10-17'
Statement:
- Effect: Allow
Action:
- "lambda:InvokeFunction"
Resource: "*"

CWEventRule:
Type: "AWS::Events::Rule"
Properties:
Description: "Description"
Name: "CWEventRule"
ScheduleExpression: "rate(5 minutes)"
State: "ENABLED"
RoleArn: !GetAtt [ CloudWatchEventRole, Arn ]
Targets:
-
Arn:
Fn::GetAtt:
- "MyLambda"
- "Arn"
Id: "MyLambda"
Input: "{\"jsonkey\":\"jsonvalue\"}"

最佳答案

您需要向事件授予调用 Lambda 权限。这可以通过创建 AWS::Lambda::Permission 资源来实现。

"PermissionInvokeLambdaRule": {
"Type": "AWS::Lambda::Permission",
"Properties": {
"FunctionName": { "Fn::GetAtt": ["MyLambdaResouce", "Arn"] },
"Action": "lambda:InvokeFunction",
"Principal": "events.amazonaws.com",
"SourceArn": { "Fn::GetAtt": ["MyEventsRuleResource", "Arn"] }
}
},

关于amazon-web-services - AWS 事件规则不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48896803/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com