如何使用为现有aws lambda函数添加新触发器 Java SDK
?
我想补充一点 S3 trigger
.
我有一个程序,它可以将图像从一种格式转换成另一种格式。我有两个桶在第一,当我添加源图像在第二,我想得到结果。
任何例子都将不胜感激。
谢谢。
触发方式如下:
我试着去做,但没用:
final AWSLambda client = AWSLambdaClientBuilder.standard()
.withCredentials(credentials)
.build();
client.listFunctions().getFunctions()
.stream()
.filter(f -> f.getFunctionName().equals(FUNCTION_NAME))
.findFirst()
.ifPresent(lambda -> {
final AddPermissionRequest addPermissionRequest = new AddPermissionRequest();
addPermissionRequest.setStatementId("s3triggerId");
addPermissionRequest.withSourceArn("arn:aws:s3:::" + INPUT_BUCKET_NAME);
addPermissionRequest.setAction("lambda:InvokeFunction");
addPermissionRequest.setPrincipal("events.amazonaws.com");
addPermissionRequest.setFunctionName(lambda.getFunctionName());
AddPermissionResult addPermissionResult = client.addPermission(addPermissionRequest);
System.out.println("Trigger was added to lambda " + addPermissionResult.getStatement());
});
2条答案
按热度按时间jpfvwuh41#
您可以在控制台或通过sam进行操作。
7lrncoxx2#
对于aws java sdk v2:
您可以通过添加通知配置来添加触发器,例如:
putbucketnotificationconfiguration(PutbucketNotification配置)
您可以通过以下方式查看当前配置:
getbucketnotificationconfiguration配置
并从以下位置检查其他:https://sdk.amazonaws.com/java/api/latest/software/amazon/awssdk/services/s3/s3client.html
init s3client与region和credentials provider(在我的例子中,分别是region.us\u west\u 2和profilecredentials provider)。
从s3client为您的操作选择方法(操作的配置类型)(在我的例子中是putbucketnotificationconfiguration)。
使用bucketname和通知配置生成通知配置请求。
构建通知配置:(类型:topicconfiguration(sns)、queueconfiguration(sqs)、lambdafunctionconfiguration(lambda))在我的示例lambdafunctionconfiguration中。
使用arn和触发lambda函数的事件构建lambdafunctionconfiguration(在我的例子中arn:aws:lambda:us-west-2:12345678912:function:your-lambda和event.s3\u object\u created\u put;我分配一个事件,但您可以添加更多)。
另请阅读:https://docs.aws.amazon.com/amazons3/latest/dev/notificationhowto.html
对于本例: