‹Error› ‹Code› AuthorizationHeaderMalformed ‹/Code›

Я использую лямбда для изменения некоторых файлов csv из ведра s3 и записи их в другое ведро s3 с помощью AWS Javascript SDK. Сегменты для getObject и putObject находятся в разных регионах. Лямбда находится в том же регионе, что и сегменты назначения. Но в измененных файлах в целевых сегментах есть эта ошибка.

AuthorizationHeaderMalformedНеправильный заголовок авторизации; регион «us-восток-1» неправильный; ожидая "нас-запад-2" нас-запад-2.

Когда исходный и целевой сегменты находятся в одном регионе, я получаю соответствующие измененные файлы.

Какие изменения мне нужно сделать, чтобы эта работа работала, когда исходный и целевой сегменты находятся в разных регионах.

Спасибо


person sxp    schedule 25.05.2021    source источник


Ответы (1)


Служба 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 ...
person Azize    schedule 26.05.2021