Failing to create s3 buckets in specific regions

喜夏-厌秋 提交于 2020-08-09 09:14:30

问题


I'm trying to create an s3 bucket in every region in AWS with boto3 in python but I'm failing to create a bucket in 4 regions (af-south-1, eu-south-1, ap-east-1 & me-south-1)

My python code:

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

and the exception I get:

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

I can create buckets in these regions from the aws website but it is not good for me, so I tried to do create it directly from the rest API without boto3.

url: bucket-name.s3.amazonaws.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>

but the response was similar to the exception:

<?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>

Does anyone have an idea why I can do it manually from the site but not from python?


回答1:


The regions your code fails in are relativly new regions, where you need to opt-in first to use them, see here Managing AWS Regions




回答2:


Newer AWS regions only support regional endpoints. Thus, if creating buckets in one of those regions, a regional endpoint needs to be created.

Since I was creating buckets in multiple regions, I set the endpoint by creating a new instance of the client for each region. (This was in Node.js, but should still work with boto3)

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

See the same problem on Node.js here



来源:https://stackoverflow.com/questions/62045094/failing-to-create-s3-buckets-in-specific-regions

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!