在 amazon s3 boto bucket 中设置特定权限
Setting specific permission in amazon s3 boto bucket
我在该存储桶中有一个名为 'ben-bucket' 的存储桶,我有多个文件。
我希望能够为每个文件设置权限 URL。
我不太确定,但我假设我是否想要 URL 存储桶中的每个文件。
我的URL会是这样吗?
https://ben-bucket.s3.amazonaws.com/<file_name>
基本上,我想设置 public 访问 URL。我该怎么做?
我试过了,但没用
bucket = s3.Bucket('ben-bucket').Object('db.sqlite')
bucket.BucketAcl('public-read')
print bucket_acl
提供的代码。 db.sqlite 是我的存储桶中的文件之一 ben-bucket 代码不起作用。我希望能够访问以下 URL publicly
https://ben-bucket.s3.amazonaws.com/db.sqlite
我提供的代码没有设置 public-read 的权限。
默认情况下,Amazon S3 中的所有对象都是私有的。然后您可以添加权限,以便人们可以访问您的对象。这可以通过以下方式完成:
- 访问控制列表对单个对象的权限
- 存储桶策略,根据路径、IP 地址、引荐来源网址等授予广泛的访问权限
- 向具有 AWS 凭证的用户授予权限的 IAM 用户和组
- 预签名 URL
如果您希望授予 public 访问整个存储桶的权限,最简单的选择是像这样创建一个 存储桶策略 (来自 Bucket Policy Examples] :
{
"Version":"2012-10-17",
"Statement":[
{
"Sid":"AddPerm",
"Effect":"Allow",
"Principal": "*",
"Action":["s3:GetObject"],
"Resource":["arn:aws:s3:::MY-BUCKET/*"]
}
]
}
如果您只想授予 public 对 子目录 存储桶内的访问权限,请使用:
{
"Version":"2012-10-17",
"Statement":[
{
"Sid":"AddPerm",
"Effect":"Allow",
"Principal": "*",
"Action":["s3:GetObject"],
"Resource":["arn:aws:s3:::MY-BUCKET/PATH/*"]
}
]
}
是的,您还可以为每个单独的文件设置权限。代码为:
import boto3
s3 = boto3.resource('s3')
object = s3.Bucket('ben-bucket').Object('db.sqlite')
object.Acl().put(ACL='public-read')
我在该存储桶中有一个名为 'ben-bucket' 的存储桶,我有多个文件。 我希望能够为每个文件设置权限 URL。 我不太确定,但我假设我是否想要 URL 存储桶中的每个文件。 我的URL会是这样吗?
https://ben-bucket.s3.amazonaws.com/<file_name>
基本上,我想设置 public 访问 URL。我该怎么做? 我试过了,但没用
bucket = s3.Bucket('ben-bucket').Object('db.sqlite')
bucket.BucketAcl('public-read')
print bucket_acl
提供的代码。 db.sqlite 是我的存储桶中的文件之一 ben-bucket 代码不起作用。我希望能够访问以下 URL publicly
https://ben-bucket.s3.amazonaws.com/db.sqlite
我提供的代码没有设置 public-read 的权限。
默认情况下,Amazon S3 中的所有对象都是私有的。然后您可以添加权限,以便人们可以访问您的对象。这可以通过以下方式完成:
- 访问控制列表对单个对象的权限
- 存储桶策略,根据路径、IP 地址、引荐来源网址等授予广泛的访问权限
- 向具有 AWS 凭证的用户授予权限的 IAM 用户和组
- 预签名 URL
如果您希望授予 public 访问整个存储桶的权限,最简单的选择是像这样创建一个 存储桶策略 (来自 Bucket Policy Examples] :
{
"Version":"2012-10-17",
"Statement":[
{
"Sid":"AddPerm",
"Effect":"Allow",
"Principal": "*",
"Action":["s3:GetObject"],
"Resource":["arn:aws:s3:::MY-BUCKET/*"]
}
]
}
如果您只想授予 public 对 子目录 存储桶内的访问权限,请使用:
{
"Version":"2012-10-17",
"Statement":[
{
"Sid":"AddPerm",
"Effect":"Allow",
"Principal": "*",
"Action":["s3:GetObject"],
"Resource":["arn:aws:s3:::MY-BUCKET/PATH/*"]
}
]
}
是的,您还可以为每个单独的文件设置权限。代码为:
import boto3
s3 = boto3.resource('s3')
object = s3.Bucket('ben-bucket').Object('db.sqlite')
object.Acl().put(ACL='public-read')