从lambda访问s3存储桶时出错 - InvalidBucketName

时间:2017-07-08 16:16:54

标签: amazon-s3 aws-lambda aws-sdk

使用Java AWS SDK我已经创建了一个lambda函数来从s3存储桶中读取csv文件。我公开了这个存储桶,可以从任何浏览器轻松访问它和文件。 为了测试它,我正在使用lambda控制台上的测试按钮。我只是使用hello world test config输入模板 它失败了:

错误消息:指定的存储桶无效。 (服务:Amazon S3;状态代码:400;错误代码:InvalidBucketName;请求ID:XXXXXXXXXXXXXXX)

Lambda函数和s3存储桶位于同一区域(us-east-1)。

我已将AmazonS3FullAccess添加到lambda_basic_execution角色。

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

也尝试了

AmazonS3 s3Client = AmazonS3ClientBuilder.defaultClient();
然后是电话

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

bucketName是:

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

keyName是:

<allAlphaLowerCaseKeyName>.csv

感谢任何帮助。

1 个答案:

答案 0 :(得分:2)

存储桶名称不是存储桶的URL,而只是存储桶的实际名称。

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