<Error><Code>AuthorizationHeaderMalformed</Code>

问题描述

我正在使用 lambda 修改 s3 存储桶中的一些 csv 文件,并使用 AWS Javascript SDK 将其写入不同的 s3 存储桶。 getobject 和 putObject 的存储桶位于不同的区域。 lambda 与目标存储区位于同一区域。但是目标bucket中修改后的文件里面有这个错误

AuthorizationHeaderMalformed授权标头格式错误; 'us-east-1' 区域是错误的;期待“us-west-2”us-west-2。

只要源存储桶和目标存储桶在同一区域,我就会得到正确的修改文件

当源存储桶和目标存储桶位于不同区域时,我需要进行哪些更改才能使此功能正常工作。

谢谢

解决方法

S3 服务是全球性的,但存储桶本身是区域性的,这意味着当您需要使用存储桶时,您需要使用存储桶所在的相同区域来执行。

如果我理解正确,您的源存储桶在 us-west-2 中,而您的目标存储桶在 us-east-1 中。

所以你需要这样使用:

s3_source = boto3.client('s3',region_name='us-west-2')
... your logic to get and handle the file ...

s3_destination = boto3.client('s3',region_name='us-east-1')
... your logic to write the file ...