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();
我刚刚开始在我的项目中使用 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();