gpt4 book ai didi

python - 使用 boto3 更改 s3 对象 CacheControl

转载 作者:行者123 更新时间:2023-12-05 06:27:54 27 4
gpt4 key购买 nike

我正在尝试更改已在 S3 中的文件的 CacheControl 属性。我发现我最好的选择是将此对象复制到更改其元数据的相同路径。代码非常简单:

    file_key = 'index.html'
s3_object = s3_resource.Object(bucket_name, file_key)
s3_object.copy_from(CopySource={'Bucket':bucket_name, 'Key':file_key},
CacheControl='no-cache',
MetadataDirective='REPLACE')

如果没有 MetadataDirective='REPLACE',此代码将无法工作,但它会使文件丢失所有其他元数据。我可以手动设置所有元数据,但这可能会在未来导致问题。

有没有一种方法可以更改一个元数据并保留所有其他元数据?

最佳答案

我也遇到了这个问题,并且能够从一些文档和其他人的解决方案中拼凑出一个解决方案。在不丢失现有元数据的情况下执行此操作的关键是从现有对象显式设置元数据:

bucket_name = "xxxxx"
key = "yyyyy"

s3 = boto3.resource("s3",
aws_access_key_id=AWS_ACCESS_KEY_ID,
aws_secret_access_key=AWS_SECRET_ACCESS_KEY,
region_name=AWS_REGION,
)
s3_object = s3.Object(bucket_name, key)
s3_object.copy_from(
CopySource={"Bucket": bucket_name, "Key": key},
CacheControl="max-age=86400",
Metadata=s3_object.metadata, # This copies existing metadata
MetadataDirective="REPLACE",
)

关于python - 使用 boto3 更改 s3 对象 CacheControl,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54886064/

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