我想将文件上传到 S3,而不使用来自 AWS
服务器的访问 key 和 key 。 AWS key 应作为默认值。但是,在服务器中运行以下命令,我可以在不提供任何访问权限和 key 的情况下访问它。
aws s3 cp somefile.txt s3://somebucket/
从 Java 代码无法访问,因为它无法加载凭据。 下面是我的代码。
AmazonS3 s3client = new AmazonS3Client(new DefaultAWSCredentialsProviderChain());
最佳答案
当您尝试从 EC2 实例连接到 S3 存储桶时,您可以使用以下 Java 代码获取 s3client
实例。
AmazonS3 s3Client = AmazonS3ClientBuilder.standard()
.withCredentials(new InstanceProfileCredentialsProvider(false))
.build();
这是推荐的方式,因为应用程序不需要在属性文件中维护访问 key 。
- 应创建 IAM 角色并为其提供 S3 访问权限 角色。请参阅下面的示例政策。
- 应将 IAM 角色分配给 EC2 实例
IAM 角色的示例策略:-
{
"Action": ["s3:PutObject",
"s3:ListBucket",
"s3:GetObject",
"s3:DeleteObject"],
"Resource": ["arn:aws:s3:::yourBucketName",
"arn:aws:s3:::yourBucketName/*"],
"Effect": "Allow",
"Sid": "AllowBucketLinux"
}
关于java - 在 Java 中没有访问权限和 key 的 AWS S3 上传,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44062813/