问题描述
我正在使用 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 ...