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

Mat*_*bob 0 amazon-s3 aws-sdk aws-lambda

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

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

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

我已将 AmazonS3FullAccess 添加到 lambda_basic_execution 角色。

AmazonS3 s3Client = AmazonS3ClientBuilder.standard().build();
Run Code Online (Sandbox Code Playgroud)

也尝试过

AmazonS3 s3Client = AmazonS3ClientBuilder.defaultClient();
Run Code Online (Sandbox Code Playgroud)

然后打电话

S3Object s3object = s3Client.getObject(new GetObjectRequest(
                bucketName, keyName));
Run Code Online (Sandbox Code Playgroud)

存储桶名称是:

https://s3.amazonaws.com/<allAlphaLowerCaseBucketName>
Run Code Online (Sandbox Code Playgroud)

键名是:

<allAlphaLowerCaseKeyName>.csv
Run Code Online (Sandbox Code Playgroud)

任何帮助表示赞赏。

jen*_*ter 5

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

S3Object s3object = s3Client.getObject(
                      new GetObjectRequest(
                          <allAlphaLowerCaseBucketName>,
                          <allAlphaLowerCaseKeyName>.csv
                      )
                   );
Run Code Online (Sandbox Code Playgroud)