read/write 的 aws 策略到存储桶中的文件
aws policy for read/write to a file within a bucket
我有以下 s3 结构:
桶名:测试桶
文件:test.json
我有以下 aws 政策:
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Action": "s3:PutObject",
"Action": "s3:GetObject",
"Action": "s3:DeleteObject",
"Action": "s3:ListBucket",
"Resource": "arn:aws:s3:::test-bucket"
}
]
}
并且此策略附加到访问密钥为 123 的用户。
当我尝试使用 sdk 在测试桶中放入或获取 test.json 时:
BasicAWSCredentials awsCreds = new BasicAWSCredentials("123", "secretKeyId");
s3Client = AmazonS3ClientBuilder.standard()
.withCredentials(new AWSStaticCredentialsProvider(awsCreds))
.withRegion("US-EAST-1")
.build();
s3Client.putObject(new PutObjectRequest("test-bucket", "test.json", file));
这会导致访问被拒绝的问题。
如果我将策略的资源更改为
"Resource": "*"
然后就可以了。我只想确保我放入的资源格式正确。出了什么问题?
您需要让亚马逊知道,除了您的存储桶之外,您还想访问存储桶中的内容。
因此更改资源:
"Resource": "arn:aws:s3:::test-bucket"
类似于:
"Resource": [
"arn:aws:s3:::test-bucket",
"arn:aws:s3:::test-bucket/*"
]
我有以下 s3 结构:
桶名:测试桶
文件:test.json
我有以下 aws 政策:
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Action": "s3:PutObject",
"Action": "s3:GetObject",
"Action": "s3:DeleteObject",
"Action": "s3:ListBucket",
"Resource": "arn:aws:s3:::test-bucket"
}
]
}
并且此策略附加到访问密钥为 123 的用户。
当我尝试使用 sdk 在测试桶中放入或获取 test.json 时:
BasicAWSCredentials awsCreds = new BasicAWSCredentials("123", "secretKeyId");
s3Client = AmazonS3ClientBuilder.standard()
.withCredentials(new AWSStaticCredentialsProvider(awsCreds))
.withRegion("US-EAST-1")
.build();
s3Client.putObject(new PutObjectRequest("test-bucket", "test.json", file));
这会导致访问被拒绝的问题。
如果我将策略的资源更改为
"Resource": "*"
然后就可以了。我只想确保我放入的资源格式正确。出了什么问题?
您需要让亚马逊知道,除了您的存储桶之外,您还想访问存储桶中的内容。
因此更改资源:
"Resource": "arn:aws:s3:::test-bucket"
类似于:
"Resource": [
"arn:aws:s3:::test-bucket",
"arn:aws:s3:::test-bucket/*"
]