gsutil rsync Google 使用 AWS S3 400 ExcessHeaderValues 存储

gsutil rsync Google Store with AWS S3 400 ExcessHeaderValues

我正在尝试同步两个存储桶,一个在 Google 存储中,第二个在 S3 中,为此我正在使用 gsutil。我的boto配置如下:

[Credentials]

gs_access_key_id = XXXX
gs_secret_access_key = XXX

aws_access_key_id = XXX
aws_secret_access_key = XXX

[s3]
host = s3.eu-central-1.amazonaws.com
use-sigv4 = True

我的问题是,使用此配置,即使从 Google 存储同步到本地文件夹也不起作用!

gsutil -m rsync -r gs://some-bucket ./localfolder/

失败并出现以下错误:

BadRequestException: 400 ExcessHeaderValues
<?xml version='1.0' encoding='UTF-8'?>
<Error>
  <Code>ExcessHeaderValues</Code>
  <Message>Multiple HTTP header values where one was expected.</Message>
  <Details>Requests cannot specify both x-amz and x-goog headers</Details>
</Error>

当我删除 boto 配置中的 S3 部分时,从 Google 存储到本地文件夹的同步工作正常,但到 S3 存储桶的同步失败并出现错误:

BadRequestException: 400 InvalidRequest
<?xml version="1.0" encoding="UTF-8"?>
<Error>
  <Code>InvalidRequest</Code>
  <Message>The authorization mechanism you have provided is not supported. Please use AWS4-HMAC-SHA256.</Message>
  <RequestId>XXX</RequestId>
  <HostId>XXX</HostId>
</Error>

有什么帮助吗?我搜索了很多类似的问题,但没有找到任何东西。

问题是由 use-sigv4 = True 属性 引起的!删除它解决了我的问题。