如何使用aws s3api设置元数据?

时间:2016-03-27 07:39:58

标签: amazon-web-services amazon-s3 aws-cli

我正在尝试让我的CloudFront托管博客将/feed/atom/index.html重定向到/index.xml。我有以下脚本应该为我设置重定向标头:

#!/bin/sh

redirect() aws s3api copy-object                 \
   --copy-source blog.afoolishmanifesto.com$1    \
   --bucket blog.afoolishmanifesto.com --key $1  \
   --metadata x-amz-website-redirect-location=$2 \
   --metadata-directive REPLACE

redirect /feed/atom/index.html /index.xml

运行脚本后,我得到以下输出:

{
    "CopyObjectResult": {
        "LastModified": "2016-03-27T07:26:03.000Z", 
        "ETag": "\"40c27e3a5ea160c6695d7f34de8b4dea\""
    }
}

当我在S3的AWS控制台视图中刷新对象时,我没有看到相关对象的Website Redirect Location(或x-amz-website-redirect-location)元数据。我该怎么做才能确保正确配置重定向?

注意:我已尝试将元数据指定为JSON,据我所知,它没有任何区别。

更新:我仍然保留上述问题,因为它仍适用于元数据,但如果您尝试使用aws s3api创建重定向,则应使用--website-redirect-location选项,而不是--metadata

1 个答案:

答案 0 :(得分:1)

无法在存储桶中创建密钥/feed/atom/index.html,因此未创建任何元数据属性。相反,您应该创建feed/atom/index.html。我会修改它:

#!/bin/sh

redirect() aws s3api copy-object                 \
   --copy-source blog.afoolishmanifesto.com/$1    \
   --bucket blog.afoolishmanifesto.com --key $1  \
   --metadata x-amz-website-redirect-location=$2 \
   --metadata-directive REPLACE

redirect feed/atom/index.html /index.xml

在我的解决方案中,请注意/中的--copy-source以及重定向脚本的第一个参数缺少前导/