AddPermissionRequest addPermissionRequest = new AddPermissionRequest();
addPermissionRequest.setStatementId("12345ff"); //any unique string would go
addPermissionRequest.withSourceArn(ruleArn);
addPermissionRequest.setAction("lambda:InvokeFunction");
addPermissionRequest.setPrincipal("events.amazonaws.com");
addPermissionRequest.setFunctionName("name of your lambda function");
AWSLambdaAsyncClient lambdaClient = new AWSLambdaAsyncClient();
lambdaClient.withRegion(Regions.US_EAST_1); //region of your lambda's location
lambdaClient.addPermission(addPermissionRequest);
4 回答
我在这里遇到了同样的问题,我通过@Anvita Shukla解雇了这个问题 .
当我这样做时,这很好用:
并使用SDK
创建规则对象
创建目标对象
提出规则请求
提出目标请求
获取规则请求的响应对象以检索规则ARN
创建权限对象(有@Anvita Shukla说)并设置规则ARN
由lambda客户端对象添加权限
在aws lambda页面中,我可以看到我的lambdas与关联的触发器事件 . 在aws cloudwatch events页面中,我可以看到创建的规则 . 我用java语言写了这个 . 如果你想我可以分享代码 .
据我所知,目前无法通过SDK实现此功能,只能通过控制台或使用CLI将CloudWatch事件源添加到lambdas . 如果我错了,我很想知道什么是可能的,但这里的文档似乎同意 . http://docs.aws.amazon.com/lambda/latest/dg/with-scheduled-events.html
可以通过aws sdk添加事件源 . 我遇到了同样的问题,请参阅下面的代码作为使用java的解决方案 .
添加目标后,您需要调用lambda
add-permission
.那是(通过boto3对我来说):
创建lambda
创建规则
创建目标
用lambda arn调用lambda
add-permission
见boto3 documentation或cli doc .