Я использую boto3 для копирования зашифрованных снимков EBS из одного региона в другой, но при попытке скопировать я получаю Invalid presigned URL
сообщения.Я генерирую предварительно назначенный URL-адрес, используя клиентский метод boto3 generate_presigned_url
в исходной области, и вызываю функцию копирования в целевой области следующим образом:
uw2_client = non_prod.client(
'ec2',
region_name="us-west-2",
config=Config(signature_version='s3v4')
)
presigned_url = uw2_client.generate_presigned_url(
ClientMethod='copy_snapshot',
Params={
'SourceSnapshotId': og_snapshot_id, # Original snapshot ID
'SourceRegion': 'us-west-2',
'DestinationRegion': 'us-east-1'
# I also tried include all parameters from copy_snapshot.
# It didn't make a difference.
# 'Description': desc,
# 'KmsKeyId': 'alias/xva-nonprod-all-amicopykey',
# 'Encrypted': True,
}
)
Вот мой код для создания копии.
ue1_client = non_prod.client(
'ec2',
region_name="us-east-1",
config=Config(signature_version='s3v4')
)
response = ue1_client.copy_snapshot(
Description=desc,
KmsKeyId='alias/xva-nonprod-all-amicopykey', # Exists in us-east-1
Encrypted=True,
SourceSnapshotId=og_snapshot_id,
SourceRegion='us-west-2',
DestinationRegion='us-east-1',
PresignedUrl=pre_signed_url
)
Успешно возвращает заданный URL-адрес.Но если я попытаюсь использовать этот заранее заданный URL-адрес для копирования снимка, я получу ошибку неверного URL-адреса.Если я попытаюсь подтвердить URL:
r = requests.post(presigned_url)
print(r.status_code)
print(r.text)
, я получу:
<Response>
<Errors>
<Error>
<Code>AuthFailure</Code>
<Message>AWS was not able to validate the provided access credentials</Message>
</Error>
</Errors>
<RequestID>3189bb5b-54c9-4d11-ab4c-762cbea32d9a</RequestID>
</Response>
Вы могли бы подумать, что это повлечет за собой проблемы с моими учетными данными, но я не уверен, как... Это те же учетные данные, которые я использую для создания предварительно подписанного URL.И мой пользователь IAM имеет беспрепятственный доступ к EC2.
Я, очевидно, что-то здесь не так, но не могу понять, что это такое.Любое понимание будет оценено.
РЕДАКТИРОВАТЬ
Просто чтобы подтвердить, что это не проблема с разрешениями, я попробовал это с моей личной учетной записью, которая имеет доступ ко всему.По-прежнему появляется то же сообщение об ошибке.