Reputation: 615
How can I add new trigger for existing AWS Lambda function using Java SDK
?
I would like to add S3 trigger
.
I have program which converts an image from one format to another. I have two buckets in first, when I add source image in second I want to get result.
Any examples will be appreciated.
Thanks.
Trigger like this:
I try to do it, but it dosn't work:
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());
});
Upvotes: 1
Views: 1540
Reputation: 174
For aws java sdk v2:
You can add trigger by adding notification configuration such:
You can see your current configuration via:
And check other from: https://sdk.amazonaws.com/java/api/latest/software/amazon/awssdk/services/s3/S3Client.html
Also read: https://docs.aws.amazon.com/AmazonS3/latest/dev/NotificationHowTo.html
For this example:
S3lient s3Client = S3Client.builder()
.region(Region.US_WEST_2)
.credentialsProvider(ProfileCredentialsProvider.create())
.build();
s3Client.putBucketNotificationConfiguration(PutBucketNotificationConfigurationRequest.builder()
.bucket(BUCKET_NAME)
.notificationConfiguration(NotificationConfiguration.builder()
.lambdaFunctionConfigurations(LambdaFunctionConfiguration.builder()
.lambdaFunctionArn("arn:aws:lambda:us-west-2:12345678912:function:your-lambda")
.events(Event.S3_OBJECT_CREATED_PUT)
.build())
.build())
.build());
Upvotes: 1