【问题标题】:S3 web page redirect: can't set x-amz-website-redirect-location propertyS3 网页重定向:无法设置 x-amz-website-redirect-location 属性
【发布时间】:2017-04-29 05:18:10
【问题描述】:

我想对 S3 网页使用重定向。 AWS Configuring a Web Page Redirect 文档说要设置 x-amz-website-redirect-location 属性,但这似乎无法设置。如果我尝试设置密钥,S3 会在密钥前面加上 x-amz-meta-(使其成为 user-defined metadata),并且修改后的密钥不会导致重定向。

我使用 aws CLI 设置元数据:

 aws s3api copy-object --copy-source static.righto.com/zero \
--bucket static.righto.com --key bar \
--metadata x-amz-website-redirect-location=http://righto.com/bar \
--metadata-directive REPLACE

但是当我查看 S3 控制台时,元数据名称已加前缀,重定向被忽略。

如果我使用 Python API,也会发生同样的事情:

s3.Bucket('static.righto.com').put_object(Key=src, Body='',
  Metadata={'x-amz-website-redirect-location': dst})

如果我尝试在 S3 控制台中设置 x-amz-website-redirect-location 元数据键,则会收到错误消息“用户定义的元数据键必须以 x-amz-meta- 开头。”

x-amz-website-redirect-location 是否不受支持?

如果我在控制台中设置“网站重定向位置”元数据然后重定向工作,那么问题不是this answer 中的重定向端点问题。但我不能在 API 中使用“网站重定向位置”作为元数据键。

【问题讨论】:

    标签: amazon-web-services redirect amazon-s3


    【解决方案1】:

    使用--website-redirect-location <value>

    http://docs.aws.amazon.com/cli/latest/reference/s3api/copy-object.html

    x-amz-website-redirect-location 不是 user 元数据 (x-amz-meta-*),这是 --metadata 选项的用途。

    【讨论】:

    • 我很困惑我是否只需要设置它(以及使用什么命令,复制?例如,我没有复制我的网站构建文件夹,它已经创建)或者我是否需要路由 规则)
    • @PositiveGuy OP 正在使用他在存储桶中创建并命名为 zero 的空(0 字节)对象,并将添加的元数据复制到他想要重定向的位置。此功能和路由规则之间存在一些重叠。这取决于您要完成的任务、在多少地方以及是否涉及模式。
    • 对于boto,您可以查看此链接:https://www.designingforthefuture.com/boto3 基本上,您必须这样做S3.put_object(Bucket=<bkt-name>, Key=<k-name>, Body='', WebsiteRedirectLocation='http://example.com')
    • 对于那些试图使用 Java SDK 解决这个问题的人:stackoverflow.com/a/61920902/2162886
    • 对于使用 aws s3 cp 的任何人,请改用标志 --website-redirect
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-05-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-01-13
    相关资源
    最近更新 更多