0
votes

Using Java AWS SDK I've created a lambda function to read a csv file from an s3 bucket. I've made the bucket public and can access it and the file easily from any browser. To test it, I'm using the test button on the lambda console. I'm just using the hello world test config input template.
It fails with:

Error Message: The specified bucket is not valid. (Service: Amazon S3; Status Code: 400; Error Code: InvalidBucketName; Request ID: XXXXXXXXXXXXXXX)

Lambda function and s3 bucket are in the same region (us-east-1).

I've added AmazonS3FullAccess to lambda_basic_execution role.

AmazonS3 s3Client = AmazonS3ClientBuilder.standard().build();

also tried

AmazonS3 s3Client = AmazonS3ClientBuilder.defaultClient();

then the call

S3Object s3object = s3Client.getObject(new GetObjectRequest(
                bucketName, keyName));

bucketName is:

https://s3.amazonaws.com/<allAlphaLowerCaseBucketName>

keyName is:

<allAlphaLowerCaseKeyName>.csv

Any help is appreciated.

1

1 Answers

4
votes

The bucket name is not the URL to the bucket, but only the actual name of your bucket.

S3Object s3object = s3Client.getObject(
                      new GetObjectRequest(
                          <allAlphaLowerCaseBucketName>,
                          <allAlphaLowerCaseKeyName>.csv
                      )
                   );