首页 > 解决方案 > S3 使用 x-amz-website-redirect-location 标头重定向到 codebuild 徽章

问题描述

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

我使用以下命令获得 codebuild 徽章:

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

接下来,unknown.svg如果我的 codebuild 徽章 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/badgehttps://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.

如何配置此对象以重定向到所需的 codebuild url?这是解决此类问题的合理方法吗?

标签: amazon-web-servicesredirectsvgamazon-s3http-status-code-302

解决方案


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

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

不需要--website-redirect


推荐阅读