Java AWS SDK - 如何使用Java API中的IAM配置文件上载文件

时间:2016-10-13 12:36:04

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

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

我目前的实施:

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

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

然后我使用amazonS3Client.putObject(putReq);上传文件。 所以,在这里,我公开了我的密钥,使其他同事能够下载/查看文件。任何人都可以使用它从s3cmd,浏览器插件等下载/上传文件。

在阅读AWS文档时,我知道我可以使用EC2实例并设置IAM配置文件。我不知道如何处理java代码。请提供一些链接和示例

2 个答案:

答案 0 :(得分:1)

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

  

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

Source reference

答案 1 :(得分:0)

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

您可以做的是给他们有权将文件上传到S3但没有读取/下载权限的密钥。因此,您将拥有具有PutObject权限的上载策略,以及具有List / Get权限的读取策略。