is this a good way to get bucket name and key name from amazon sqs queue
ObjectMapper mapper = new ObjectMapper();
Map<String, Object> messageMap = mapper.readValue(message, Map.class);
ArrayList records = (ArrayList) messageMap.get("Records");
LinkedHashMap firstRec = (LinkedHashMap) records.get(0);
LinkedHashMap s3 = (LinkedHashMap) firstRec.get("s3");
LinkedHashMap object = (LinkedHashMap) s3.get("object");
String keyName = (String) object.get("key");//the actual object that's been uploaded
LinkedHashMap bucket = (LinkedHashMap) s3.get("bucket");
String name = (String) bucket.get("name");//the bucket name
Here is an example from AWS S3 Event notification using Lambda function in Java:
public Object handleRequest(S3Event input, Context context) {
AmazonS3Client s3Client = new AmazonS3Client(new DefaultAWSCredentialsProviderChain());
for (S3EventNotificationRecord record : input.getRecords()) {
String s3Key = record.getS3().getObject().getKey();
String s3Bucket = record.getS3().getBucket().getName();
// retrieve s3 object
S3Object object = s3Client.getObject(new GetObjectRequest(s3Bucket, s3Key));
InputStream objectData = object.getObjectContent();
...
}
return "success";}