繁体   English   中英

如何每 5 分钟和 5+1 分钟触发一次 aws lambda

[英]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 没有被事件桥触发。

Lambda 权限(触发器)

检查目标 lambda 是否有权从事件桥中触发。 默认情况下,如果您创建规则并从控制台添加目标,AWS 控制台会为您添加 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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM