gpt4 book ai didi

python - 在 amazon s3 boto bucket 中设置特定权限

转载 作者:太空狗 更新时间:2023-10-30 00:48:15 25 4
gpt4 key购买 nike

我在该存储桶中有一个名为“ben-bucket”的存储桶,我有多个文件。我希望能够为每个文件 URL 设置权限。我不太确定,但我假设我是否想要存储桶中每个文件的 URL。我的网址会是这样吗?

https://ben-bucket.s3.amazonaws.com/<file_name>

基本上,我想设置对该 URL 的公共(public)访问权限。我该怎么做?我试过了,但没用

    bucket = s3.Bucket('ben-bucket').Object('db.sqlite')
bucket.BucketAcl('public-read')
print bucket_acl

提供的代码。 db.sqlite 是我的存储桶 ben-bucket 中的文件之一代码不起作用。我希望能够公开访问以下 URL

https://ben-bucket.s3.amazonaws.com/db.sqlite

我提供的代码没有设置公开阅读的权限。

最佳答案

默认情况下,Amazon S3 中的所有对象都是私有(private)的。然后您可以添加权限,以便人们可以访问您的对象。这可以通过以下方式完成:

  • 访问控制列表对单个对象的权限
  • Bucket Policy,根据路径、IP 地址、引荐来源网址等授予广泛的访问权限
  • IAM 用户和组向具有 AWS 凭证的用户授予权限
  • 预签名 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')

引用:Boto3 S3 access controls

关于python - 在 amazon s3 boto bucket 中设置特定权限,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40518642/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com