S3 重定向到带有 x-amz-website-redirect-location 标头的代码构建徽章



我想在我的 s3 存储桶中放置一个对象,该对象将重定向到我的代码构建徽章。

我得到带有以下命令的代码构建徽章:

CODEBUILD_BADGE_URL=$(
aws codebuild batch-get-projects 
--name Push 
--query "projects[0].badge.badgeRequestUrl" 
--output text 
)

接下来,我获得unknown.svg徽章,以防我的代码构建徽章 url 发生变化,并设置对象--metadata以配置website-redirect-location

我这样做的尝试是:

curl https://s3.amazonaws.com/codefactory-us-east-1-prod-default-build-badges/unknown.svg > ./badge.svg
aws s3 cp ./badge.svg s3://example.com/badge --metadata "Website-Redirect-Location=$CODEBUILD_BADGE_URL"

我还添加了此元数据,以防上述内容错误:

aws s3 cp ./badge.svg s3://example.com/badge --website-redirect $CODEBUILD_BADGE_URL

当我访问:http://example.com/badge 或 https://s3.amazonaws.com/example.com/badge 时,我只是得到unknown.svg徽章。

该请求具有以下响应标头:

x-amz-meta-website-redirect-location: https://codebuild.us-east-1.amazonaws.com/badges?uuid=eyJlbmlong%3D&branch=master
x-amz-request-id: D83EBREQUESTID
x-amz-website-redirect-location: https://codebuild.us-east-1.amazonaws.com/badges?uuid=eyJlbmlong%3D&branch=master

和 200 响应代码。

我的 example.com 存储桶属性Static website hosting配置为Bucket hosting

如何将此对象配置为重定向到所需的代码构建 URL?这是解决此类问题的合理方法吗?

等待一天左右后它起作用了,我只需要:

aws s3 cp ./badge.svg s3://example.com/badge --metadata "Website-Redirect-Location=$CODEBUILD_BADGE_URL"

无需--website-redirect