gpt4 book ai didi

python - 为什么我的 Amazon S3 key 权限不固定?

转载 作者:太空狗 更新时间:2023-10-30 01:43:02 25 4
gpt4 key购买 nike

我正在使用 Python 库 boto 连接到 Amazon S3 并为静态网站创建存储桶和 key 。我的键和值是动态生成的,因此我以编程方式而不是通过 Web 界面执行此操作(它使用 Web 界面工作)。我的代码目前看起来像这样:

import boto
from boto.s3.connection import S3Connection
from boto.s3.key import Key

conn = S3Connection(AWS_ACCESS_KEY_ID, AWS_SECRET_ACCESS_KEY)
bucket = conn.create_bucket(BUCKET_NAME)
bucket.configure_website('index.html', 'error.html')
bucket.set_acl('public-read')

for template in ['index.html', 'contact-us.html', 'cart.html', 'checkout.html']:
k = Key(bucket)
k.key = key
k.set_acl('public-read')
k.set_metadata('Content-Type', 'text/html')
k.set_contents_from_string(get_page_contents(template))

我在使用这段代码时遇到了各种错误和问题。当 key 已经存在并且我使用此代码更新它们时,我会将每个 key 的 ACL 设置为 public-read,但在浏览器中查看文件时仍然会出现 403 forbidden 错误.

我尝试删除所有 key 以从头开始重新创建它们,现在我得到了一个 NoSuchKey 异常。显然 key 不存在,因为我正在尝试创建它。

我是不是用错了方法?是否有不同的方法来创建 key 而不是更新 key ?当权限不固定时,我是否遇到了某种竞争条件?

最佳答案

我仍然不完全确定为什么上面的代码不起作用,但我发现了一种不同的(或更新的?)语法来创建 key 。操作顺序似乎也有一些影响。这就是我想出的方法:

conn = S3Connection(AWS_ACCESS_KEY_ID, AWS_SECRET_ACCESS_KEY)
bucket = conn.create_bucket(store.domain_name)
bucket.set_acl('public-read')
bucket.configure_website('index.html', 'error.html')

for template in ['index.html', 'contact-us.html', 'cart.html', 'checkout.html']:
k = bucket.new_key(template)
k.set_metadata('Content-Type', 'text/html')
k.set_contents_from_string(get_page_contents(template))
k.set_acl('public-read') #doing this last seems to be important for some reason

关于python - 为什么我的 Amazon S3 key 权限不固定?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8651070/

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