Невозможно создать сегменты s3 в определенных c регионах - PullRequest
1 голос
/ 27 мая 2020

Я пытаюсь создать корзину s3 в каждом регионе в AWS с boto3 в python, но мне не удается создать корзину в 4 регионах (af-south-1, eu-south-1, ap-east-1 & me-south-1)

Мой python код:

def create_bucket(name, region):
    s3 = boto3.client('s3')
    s3.create_bucket(Bucket=name, CreateBucketConfiguration={'LocationConstraint': region})

и исключение, которое я получаю:

botocore.exceptions.ClientError: An error occurred (InvalidLocationConstraint) when calling the CreateBucket operation: The specified location-constraint is not valid

Я могу создавать корзины в этих регионах с веб-сайта aws, но для меня это не подходит, поэтому я попытался создать его непосредственно из остального API без boto3.

url: bucket-name .s3.amazon aws .com

body:

<?xml version="1.0" encoding="UTF-8"?>
<CreateBucketConfiguration xmlns="http://s3.amazonaws.com/doc/2006-03-01/">
   <LocationConstraint>eu-south-1</LocationConstraint>
</CreateBucketConfiguration>

но ответ был похож на исключение:

<?xml version="1.0" encoding="UTF-8"?>
<Error>
    <Code>InvalidLocationConstraint</Code>
    <Message>The specified location-constraint is not valid</Message>
    <LocationConstraint>eu-south-1</LocationConstraint>
    <RequestId>********</RequestId>
    <HostId>**************</HostId>
</Error>

Есть ли у кого-нибудь идеи почему я могу сделать это вручную с сайта, а не с python?

Ответы [ 2 ]

1 голос
/ 27 мая 2020

Регионы, в которых происходит сбой вашего кода, являются относительно новыми регионами, где вам нужно сначала зарегистрироваться, чтобы использовать их, см. Здесь Управление AWS Регионами

0 голосов
/ 05 августа 2020

Более новые AWS регионы поддерживают только региональные конечные точки. Таким образом, при создании сегментов в одном из этих регионов необходимо создать региональную конечную точку.

Поскольку я создавал сегменты в нескольких регионах, я установил конечную точку, создав новый экземпляр клиента для каждого региона. (Это было в Node.js, но все равно должно работать с boto3)

client = boto3.client('s3', region_name='region')

См. Ту же проблему на Node.js здесь

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...