AWS Developer Tools Blog
AWS Toolkit for Eclipse: Improved Support for Serverless Applications (Part 1 of 3)
I am happy to announce that the latest release of the AWS Toolkit for Eclipse includes a couple new enhancements for developing AWS Serverless Application Model (AWS SAM) applications. In this release, we added a new blueprint: rekognition.
In part 1 of this blog post, we describe and show with an animation what this blueprint does, and how to use the AWS Toolkit for Eclipse to create an application from it. In part 2, we’ll deploy the AWS SAM application to AWS CloudFormation. In part 3, we’ll check the result of the application and test the AWS Lambda function by using the AWS Explorer in the AWS Toolkit for Eclipse.
About the rekognition blueprint
The rekognition blueprint includes a Lambda function TagImage. This Lambda function automatically tags .jpg files uploaded to a specified HAQM S3 bucket by using the HAQM Rekognition service. It applies the top five confident tags recognized by the HAQM Rekognition service as the keys to the HAQM S3 object. It then applies the confident values as tag values, accordingly.
Create an application named rekognition-service from the rekognition blueprint.
This .gif animation shows the steps to create an application from the rekognition blueprint.
About the AWS SAM template
Here is the template snippet from the serverless.template in the project we just created for defining the Lambda function TagImage. Notice that this is a simplified configuration for this Lambda function. This is because during the deployment phase, the AWS Toolkit for Eclipse will fill in all other properties we needed. For a complete configuration set, see Deploying Lambda-based Applications in the AWS Lambda Developer Guide.
In this snippet, we grant the Lambda function permissions to access HAQM S3 and HAQM Rekognition. We also define a triggering event for the Lambda function when uploading .jpg files to the specified HAQM S3 bucket.
"TagImage": {
"Type": "AWS::Serverless::Function",
"Properties": {
"Handler": "TagImage",
"Policies": [
"HAQMS3FullAccess",
"HAQMRekognitionFullAccess"
],
"Events": {
"ProcessNewImage": {
"Type": "S3",
"Properties": {
"Bucket": {"Ref" : "ImageBucket"},
"Events": "s3:ObjectCreated:*",
"Filter": {
"S3Key": {
"Rules": [{"Name": "suffix", "Value": ".jpg"}]
}
}
}
}
}
}
}
How the Lambda function works
Here is a snippet from the Lambda function ImageTag. This Lambda function retrieves the HAQM S3 object from the S3Event. Then it calls the HAQM Rekognition service to detect labels with a confidence value of at least 77.
Image imageToTag = new Image().withS3Object(new S3Object().withName(objectKey).withBucket(bucketName));
// Call Rekognition to identify image labels
DetectLabelsRequest request = new DetectLabelsRequest()
.withImage(imageToTag)
.withMaxLabels(5)
.withMinConfidence(77F);
List<Label> labels = rekognitionClient.detectLabels(request).getLabels();
In part 2 of this blog post, we’ll deploy the newly created AWS SAM application to AWS. Then we’ll configure the parameters in the template during the deployment phase. Stay tuned!