Невозможно создать ведро в s3 - PullRequest
0 голосов
/ 05 февраля 2019

Я пытаюсь создать корзину в моем s3 с USEast1 в качестве местоположения.

from boto.s3.connection import Location

mybucket = 'test-voip1'
conn = boto.connect_s3(aws_access_key_id, aws_secret_access_key)
if conn.lookup(mybucket) is None:
     conn.create_bucket(mybucket, location=Location.USEast1)
     # conn.create_bucket(mybucket)

При попытке запустить выдает ошибку атрибута

Traceback (most recent call last):
   File "s2t_amazon.py", line 146, in <module>
        conn.create_bucket(mybucket, location=Location.USEast1)
AttributeError: type object 'Location' has no attribute 'USEast1'

Я могу подключиться, чтобы создать соединение, и я могу создать корзину с USWest asместо нахождения.При установке boto я не получил никакой ошибки, но почему я получаю эту ошибку?

Даже я пытался с boto3,

session = boto3.Session(aws_access_key_id=aws_access_key_id, aws_secret_access_key=aws_secret_access_key)
s3 = session.resource('s3')
s3.create_bucket(Bucket='mybucket', CreateBucketConfiguration={'LocationConstraint': 'us-east-1'})

Я получаю похожую ошибку

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

как ее устранить?

, когда я пытаюсьпроверить расположение других ранее созданных сегментов в моем s3

bucket = conn.get_bucket('ml-vectors')
bucket.get_location()
>> ''

, это дает пустое значение, я не могу проверить, как в моем s3 создаются другие сегменты, созданные другими.

1 Ответ

0 голосов
/ 05 февраля 2019

Ошибка, которую вы получаете, может быть понята, если вы посмотрите на определение класса Location в AWS connection.py:

class Location(object):

DEFAULT = ''  # US Classic Region
EU = 'EU'  # Ireland
EUCentral1 = 'eu-central-1'  # Frankfurt
USWest = 'us-west-1'
USWest2 = 'us-west-2'
SAEast = 'sa-east-1'
APNortheast = 'ap-northeast-1'
APSoutheast = 'ap-southeast-1'
APSoutheast2 = 'ap-southeast-2'
CNNorth1 = 'cn-north-1'

Как вы можете видеть, USEast1 отсутствует.Решение этой проблемы можно найти в приведенной ниже цитате:

Согласно http://docs.aws.amazon.com/AmazonS3/latest/API/RESTBucketPUT.html: "Если вы создаете ведро в восточном регионе США (Северная Вирджиния)(us-east-1), вам не нужно указывать ограничение местоположения ".Другие регионы работают нормально.Я могу заняться этим.

Вы можете найти полное обсуждение на: https://github.com/elastic/elasticsearch/issues/16978

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