minio 预签名获取 url 403 SignatureDoesNotMatch

Gar*_*ary 6 containers go docker docker-compose minio

获取对象的预签名 url(由我的 golang 服务器端代码生成)失败,返回 403 (SignatureDoesNotMatch),但我从 minio 浏览器 (https:domain.com:9000/) 获取的预签名 url 按预期工作(可以从服务器)

这个问题存在于我的临时服务器中,其中有几个由 docker-compose 运行的服务:前端、restful api、mysql 和 minio,它们在隔离的容器中运行。

以下是 minio 服务的 docker-compose 配置:

  minio:
    container_name: minio
    image: minio/minio:RELEASE.2019-06-11T00-44-33Z
    volumes:
      - "./.minio/data:/data"
    #      - "./.minio/conf/minio.cnf:/root/.minio"
    ports:
      - "9000:9000"
    restart: always
    environment:
      MINIO_ACCESS_KEY: W2SPAEGFUKISFTZ53EW2
      MINIO_SECRET_KEY: +uzhExt04MPooPa+j+PBijzC7HOdrpJHFaQK7PSG
      TZ: Asia/Shanghai
    command: server /data
Run Code Online (Sandbox Code Playgroud)

当我在浏览器中访问预签名 url(由我的 golang 代码生成)时,我收到以下错误消息,但是,如果我使用从 minio 浏览器获取的预签名 url,它就可以工作(我可以下载我在 minio 服务器中上传的图像)

<Error>
<Code>SignatureDoesNotMatch</Code>
<Message>
The request signature we calculated does not match the signature you provided. Check your key and signing method.
</Message>
<Key>1NVUCVJPLyS2okhlqtENB47bmFy.JPG</Key>
<BucketName>picture</BucketName>
<Resource>/picture/1NVUCVJPLyS2okhlqtENB47bmFy.JPG</Resource>
<RequestId>15ADED649D847B74</RequestId>
<HostId>4b5e8cee-8cc3-466c-8fda-441ac2ca0d79</HostId>
</Error>
Run Code Online (Sandbox Code Playgroud)