Java AWS SDK - 如何使用来自 Java API 的 IAM 配置文件上传文件

Java AWS SDK - How to upload file using IAM profile from Java API

我刚刚开始在我的项目中使用 AWS。我想编写一个将关键文件上传到 s3 存储桶的项目。我不想公开任何密钥,以便所有其他开发人员/用户可以访问上传的文档。请提供一些如何开始的指导。

我当前的实现:

 return new AmazonS3Client(new AWSCredentials() {
    @Override
    public String getAWSAccessKeyId() {
    return accessKey;
    }

   @Override
   public String getAWSSecretKey() {
     return accessKeySecret;
   }, clientConfiguration )

然后我使用amazonS3Client.putObject(putReq);上传文件。 因此,我在这里公开我的密钥,使其他同事能够 download/view 文件。任何人都可以使用它来 download/upload 来自 s3cmd、浏览器插件等的文件

阅读 AWS 文档后,我了解到我可以使用 EC2 实例并设置 IAM 配置文件。但是我不确定如何使用 java 代码。请提供一些 link 和示例

如果您的用户需要访问权限才能上传到 S3,那么他们将需要访问密钥,对此您无能为力。

不过,您可以为他们提供密钥,这些密钥有权将文件上传到 S3,但无权 read/download。因此,您将拥有一个具有 PutObject 权限的上传策略和一个具有 List/Get 权限的读取策略。

看看InstanceProfileCredentialsProviderclass。它从实例的元数据中获取 IAM 凭证(access/secret 密钥)。在具有允许访问 S3 的策略的 IAM 角色下启动您的实例。

AmazonS3 s3Client = AmazonS3ClientBuilder.standard() .withCredentials(new InstanceProfileCredentialsProvider()) .build();

Source reference