S3 使用 x-amz-website-redirect-location header 重定向到代码构建徽章

S3 redirect to codebuild badge with x-amz-website-redirect-location header

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

我通过以下命令获得代码构建徽章:

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

接下来,我获取 unknown.svg 徽章以防我的代码构建徽章 url 更改并设置 object --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 or https://s3.amazonaws.com/example.com/badge 时,我刚得到 unknown.svg 徽章。

请求有以下响应headers:

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

我如何配置此 object 以改为重定向到所需的代码构建 url?这是解决此类问题的合理方法吗?

等了一天左右就成功了,我只需要:

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

不需要--website-redirect