我想要一个存储桶策略,允许访问存储桶中的所有对象,并对存储桶本身执行操作,例如列出对象 (Action 是s3:*
)。
我使用了两个不同的资源名称来解决这个问题:一个用于arn:aws:s3 :::examplebucket/*
,另一个用于arn:aws:s3 :::examplebucket
。
有没有更好的方法可以做到这一点 - 有没有一种方式可以指定一个资源标识符,它涵盖了存储桶本身和其中包含的所有对象?
我想要一个存储桶策略,允许访问存储桶中的所有对象,并对存储桶本身执行操作,例如列出对象 (Action 是s3:*
)。
我使用了两个不同的资源名称来解决这个问题:一个用于arn:aws:s3 :::examplebucket/*
,另一个用于arn:aws:s3 :::examplebucket
。
有没有更好的方法可以做到这一点 - 有没有一种方式可以指定一个资源标识符,它涵盖了存储桶本身和其中包含的所有对象?
Bucket级别权限和Bucket内Object级别权限是分开的。因此,您必须授予两者权限。
幸运的是,您可以编写一个较短的版本来结合Bucket级别和Object级别的权限:
{
"Id": "BucketPolicy",
"Version": "2012-10-17",
"Statement": [
{
"Sid": "AllAccess",
"Action": "s3:*",
"Effect": "Allow",
"Resource": [
"arn:aws:s3:::my-bucket",
"arn:aws:s3:::my-bucket/*"
],
"Principal": "*"
}
]
}
{
"Version": "2012-10-17",
"Statement": [
{
"Sid": "Statement1",
"Effect": "Allow",
"Principal": "*",
"Action": "s3:*",
"Resource": "your_arn/*"
}
]
}