我正在使用AWS java sdk,需要删除触发AWS Lambda函数的CloudWatch规则。使用以下代码删除CloudWatch规则是成功的。但Lambda函数中存在引用,Lambda AWS控制台将CloudWatch规则显示为已删除,并显示“删除”图标以将其删除。任何人都知道如何使用Java SDK从Lambda函数中删除对CloudWatch规则的引用吗?
cloudWatchEvent.removeTargets(removeTargetsRequest);
cloudWatchEvent.deleteRule(deleteRequest);
答案 0 :(得分:0)
在删除触发器时,您也需要从Lambda策略中删除invoke:Lambda权限。如果您没有删除该权限,它将显示在Lambda控制台中。
如果您不知道与触发器关联的statement-id,请使用
提取lambda策略AWSLambda client = AWSLambdaClientBuilder.standard().build();
GetPolicyRequest request = new GetPolicyRequest().withFunctionName("myFunction").withQualifier("1");
GetPolicyResult response = client.getPolicy(request);
记下声明ID。
接下来,使用
删除此权限AWSLambda client = AWSLambdaClientBuilder.standard().build();
RemovePermissionRequest request = new RemovePermissionRequest().withFunctionName("myFunction").withStatementId("role-statement-id").withQualifier("1");
RemovePermissionResult response = client.removePermission(request);
此处的示例 - https://docs.aws.amazon.com/AWSJavaSDK/latest/javadoc/com/amazonaws/services/lambda/AWSLambda.html