我有一个类似的政策
{
"Id":"Pid6",
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Action": "s3:PutObject",
"Action": "s3:GetObject",
"Action": "s3:ListBucket",
"Resource": [
"arn:aws:s3:::test-bucket",
"arn:aws:s3:::test-bucket/*"
]
}
]
}
我连接到 S3 存储桶的 Java 代码是
BasicAWSCredentials awsCreds = new BasicAWSCredentials("accessKey", "secretKey");
AmazonS3 s3Client = AmazonS3ClientBuilder.standard()
.withCredentials(new AWSStaticCredentialsProvider(awsCreds))
.withRegion(Regions.region).build();
s3Client.putObject( new PutObjectRequest( S3_BUCKET, s3Path, file )
.withCannedAcl( CannedAccessControlList.PublicRead ) );
我可以使用访问 key 和 secret key 连接到 s3...
如何使用策略连接到 s3 存储桶,而不需要使用 Java 进行基于 key 的访问。
我的意思是如何使用 policy.json
文件获取 s3Client
对象或 awsCreds
对象
最佳答案
如果您有一个在 EC2 实例上运行的应用程序,您可以将策略附加到 IAM 角色并将该角色分配给该实例。这样,您就不需要为应用程序指定凭据。
可以在启动期间从控制台或通过 AWS CLI 向 EC2 实例分配 IAM 角色
以下是 AWS 文档中的完整详细信息:http://docs.aws.amazon.com/AWSEC2/latest/UserGuide/iam-roles-for-amazon-ec2.html
We designed IAM roles so that your applications can securely make API requests from your instances, without requiring you to manage the security credentials that the applications use.
关于java - 如何通过 Java 使用没有 key 的策略连接到 S3 存储桶,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45026939/