我正在尝试让我的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
。
答案 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
以及重定向脚本的第一个参数缺少前导/