【问题标题】:Not able to put object in S3 bucket when it does not have public access当对象没有公共访问权限时,无法将对象放入 S3 存储桶中
【发布时间】:2019-10-30 18:19:38
【问题描述】:

我正在尝试将对象写入我的 aws 帐户中的 s3 存储桶,但它失败并出现以下错误。

com.amazonaws.services.s3.model.AmazonS3Exception:访问被拒绝(服务:Amazon S3;状态代码:403;错误代码:AccessDenied;请求 ID:34399CEF4B28B50D;S3 扩展请求 ID:

我尝试以完全访问权限公开存储桶,然后我可以对其进行写入。

我编写的将对象写入 S3 存储桶的代码:

......

private final AmazonS3 amazonS3Client;

........

  final PutObjectRequest putObjectRequest = new PutObjectRequest(bucketName, s3Key, stream,
                                                                           metadata);
            amazonS3Client.putObject(putObjectRequest);
            final URL url = amazonS3Client.getUrl(bucketName, s3Key);

我正在构建我的 S3 客户端:

@Configuration
public class AWSConfig {

    @Bean
    public AmazonS3 amazonS3Client() {
        String awsRegion = System.getenv("AWS_REGION");
        if (StringUtils.isBlank(awsRegion)) {
            awsRegion = Regions.getCurrentRegion().getName();
        }
        return AmazonS3ClientBuilder.standard()
                                    .withCredentials(new DefaultAWSCredentialsProviderChain())
                                    .withRegion(awsRegion)
                                    .build();
    }
}

如果我遗漏了什么,请建议我,我该如何解决上述错误。

【问题讨论】:

  • 我已经找到了解决方案。问题是我试图调用 put 对象请求的 java 服务无权访问 s3 存储桶。为了解决这个问题,我为运行我的服务的实例添加了访问解决问题的 s3 存储桶的权限。

标签: java amazon-web-services amazon-s3 aws-sdk


【解决方案1】:

你不见了Access Keys (Access Key ID and Secret Access Key)

目前它仅在您将存储桶设置为公开时才有效,因为您没有提供任何访问密钥。

访问密钥最好与 API 密钥相比较,后者提供了一种访问 AWS 中私有数据的安全方式。

你需要:

.withCredentials(new AWSStaticCredentialsProvider(new BasicAWSCredentials(ACCESSKEY, SECRETKEY)));

查看官方文档,了解如何generate/obtain他们。

【讨论】:

  • 感谢@ThomasVdBerge 的回复。我正在使用 DefaultAWSCredentialsProviderChain,它从 env 获取访问密钥。
【解决方案2】:

确保以下选项为“关闭”

s3--> mybucket --> 权限 --> 阻止所有公共访问 -->> 关闭

【讨论】:

    【解决方案3】:

    我已经找到了解决方案。问题是我试图调用 put 对象请求的 java 服务无权访问 s3 存储桶。为了解决这个问题,我为运行我的服务的实例添加了访问解决问题的 s3 存储桶的权限。

    【讨论】:

      猜你喜欢
      • 2019-07-14
      • 1970-01-01
      • 1970-01-01
      • 2019-02-08
      • 1970-01-01
      • 2020-01-14
      • 2020-05-20
      • 1970-01-01
      • 2012-06-22
      相关资源
      最近更新 更多