我刚开始将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代码。请提供一些链接和示例
答案 0 :(得分:1)
查看InstanceProfileCredentialsProvider课程。它从实例的元数据中获取IAM凭证(访问/密钥)。在具有允许访问S3的策略的IAM角色下启动您的实例。
AmazonS3 s3Client = AmazonS3ClientBuilder.standard() .withCredentials(new InstanceProfileCredentialsProvider()) .build();
答案 1 :(得分:0)
如果您的用户需要上传到S3的权限,那么他们需要访问密钥,您无能为力。
您可以做的是给他们有权将文件上传到S3但没有读取/下载权限的密钥。因此,您将拥有具有PutObject权限的上载策略,以及具有List / Get权限的读取策略。