使用 Boto3 和 Python 如何制作文件夹 Public
Using Boto3 and Python How Make a Folder Public
我想创建一个名为 img
的文件夹,该文件夹已存在于我的私人存储桶 public 中。我正在使用 Boto3。我只想使用脚本使这个文件夹 public 而不是其他任何东西..
这就是我目前连接到存储桶的方式以及我已经达到了多远....
ACCESS_KEY_ID = 'xxxxx'
ACCESS_KEY_SECRET = 'xxxx'
bucket_name = 'mybucket'
sourceDir = "../../docs/buildHTML/html/"
destDir = ''
r = boto3.setup_default_session(region_name='eu-west-1')
s3 = boto3.resource('s3', aws_access_key_id=ACCESS_KEY_ID, aws_secret_access_key=ACCESS_KEY_SECRET)
bucket = s3.Bucket(bucket_name)
所以我有了水桶,这很管用。我现在如何使文件夹 img
已经存在 public?
您需要向存储桶添加策略,如下所示:
{
"Version":"2012-10-17",
"Statement":[
{
"Sid":"PublicReadImages",
"Effect":"Allow",
"Principal": "*",
"Action":["s3:GetObject"],
"Resource":["arn:aws:s3:::mybucket/abc/img/*"]
}
]
}
您可以通过 AWS 控制台或任何 SDK 执行此操作。在 boto3 中,我认为你是这样做的:
bucket = s3.Bucket(bucket_name)
response = bucket.put(
Policy = '<policy string here>'
)
我想创建一个名为 img
的文件夹,该文件夹已存在于我的私人存储桶 public 中。我正在使用 Boto3。我只想使用脚本使这个文件夹 public 而不是其他任何东西..
这就是我目前连接到存储桶的方式以及我已经达到了多远....
ACCESS_KEY_ID = 'xxxxx'
ACCESS_KEY_SECRET = 'xxxx'
bucket_name = 'mybucket'
sourceDir = "../../docs/buildHTML/html/"
destDir = ''
r = boto3.setup_default_session(region_name='eu-west-1')
s3 = boto3.resource('s3', aws_access_key_id=ACCESS_KEY_ID, aws_secret_access_key=ACCESS_KEY_SECRET)
bucket = s3.Bucket(bucket_name)
所以我有了水桶,这很管用。我现在如何使文件夹 img
已经存在 public?
您需要向存储桶添加策略,如下所示:
{
"Version":"2012-10-17",
"Statement":[
{
"Sid":"PublicReadImages",
"Effect":"Allow",
"Principal": "*",
"Action":["s3:GetObject"],
"Resource":["arn:aws:s3:::mybucket/abc/img/*"]
}
]
}
您可以通过 AWS 控制台或任何 SDK 执行此操作。在 boto3 中,我认为你是这样做的:
bucket = s3.Bucket(bucket_name)
response = bucket.put(
Policy = '<policy string here>'
)