Когда я пытаюсь создать корзину S3 в python3, я получаю ошибку «Bucket Already Exists».Даже если я попытаюсь использовать диковинное имя корзины, которое, конечно, не существует.
Это код:
import boto3
# Create an S3 client
s3 = boto3.client('s3')
bucket_name = input("Enter a bucket name: ")
s3.create_bucket(Bucket='bucket_name')
Но я получаю имя корзины, уже существует ошибка, независимо от того, какое имя явведите:
PS C:\Users\tdunphy\Desktop\important_folders\git\aws_scripts\python\virtualenvs3\boto3> python3 .\aws_s3_create_bucket.py
Enter a bucket name: company-timd-test-3
Traceback (most recent call last):
File ".\aws_s3_create_bucket.py", line 9, in <module>
s3.create_bucket(Bucket='bucket_name')
File "C:\Users\tdunphy\AppData\Local\Programs\Python\Python37-32\lib\site-packages\botocore\client.py", line 357, in _api_call
return self._make_api_call(operation_name, kwargs)
File "C:\Users\tdunphy\AppData\Local\Programs\Python\Python37-32\lib\site-packages\botocore\client.py", line 661, in _make_api_call
raise error_class(parsed_response, operation_name)
botocore.errorfactory.BucketAlreadyExists: An error occurred
(BucketAlreadyExists) when calling the CreateBucket operation: The requested bucket name is not available. The bucket namespace is shared by all users of the system. Please select a different name and try again
Имя корзины, которое я пробовал, было: company-timd-test3
Но если я жестко закодирую имя корзины s3 в программе, примерно так:
import boto3
# Create an S3 client
s3 = boto3.client('s3')
#bucket_name = input("Enter a bucket name: ")
s3.create_bucket(Bucket='company-timd-test3')
Это работает, и ведро создано:
aws s3 ls --profile=nonprod | findstr "company*"
2019-02-25 14:00:16 company-timd-test3
Что на самом деле не так и как я могу исправить эту проблему?