[英]How to Trigger an aws lambda every 5th and 5+1th minute
我是 aws 的新手,正在尝试找出问题。 我必须创建一个 lambda,它应该每 5 分钟和 (5+1) 分钟触发一次。
我正在使用事件桥并创建了两个规则。 第一个工作正常但第二个规则没有。 请在下面找到一些示例代码。 任何的意见都将会有帮助。
Rule.Builder.create(stack.getStack(), id + "QueueEventsRuleN")
.ruleName("my-rule-n-" + stack.getParameter(EParameter.APP_NAME).getValueAsString()
+ "-" + stack.getParameter(EParameter.TARGET_ENVIRONMENT).getValueAsString() + "-cdk" + stack.getDeploymentSuffix())
.description("schedule events to trigger Lambda every "+n+" minutes")
.schedule(Schedule.expression("rate("+n+" minutes)"))
.targets(singletonList(LambdaFunction.Builder.create(function).build()))
.build();
int scheduleTime = n+1;
Rule.Builder.create(stack.getStack(), id + "QueueEventsRuleNPlusOne")
.ruleName("my-rule-n-plus-one" + stack.getParameter(EParameter.APP_NAME).getValueAsString()
+ "-" + stack.getParameter(EParameter.TARGET_ENVIRONMENT).getValueAsString() + "-cdk" + stack.getDeploymentSuffix())
.description("schedule events to trigger Lambda every "+scheduleTime+" minutes")
.schedule(Schedule.expression("rate("+scheduleTime+" minutes)"))
.targets(singletonList(LambdaFunction.Builder.create(function).build()))
.build();
从问题来看,您能够成功创建规则,唯一的问题是 lambda 没有被事件桥触发。
从 AWS cli 添加 lambda 权限
aws lambda add-permission \ --function-name {your-lambda-function-name} \ --statement-id {anything-random-alhanumeric} \ --action 'lambda:InvokeFunction' \ --principal events.amazonaws.com \ --source-arn arn:aws:events:*:{aws-account-id}:rule/*.
用实际数据替换 {} 信息。 它将允许从您的 AWS 账户中的任何规则触发 lambda。
请参阅 AWS 文档,了解深入指南
https://aws.amazon.com/premiumsupport/knowledge-center/eventbridge-lambda-not-triggered/
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.