def create_s3_bucket(bucket_name, region):
s3_client = boto3.client('s3', region_name=region)
print(f"Attempting to create S3 bucket: '{bucket_name}' in region: '{region}'...")
if region == 'us-east-1':
s3_client.create_bucket(Bucket=bucket_name)
CreateBucketConfiguration={'LocationConstraint': region}
print(f"S3 bucket '{bucket_name}' created successfully in region '{region}'.")
except s3_client.exceptions.BucketAlreadyOwnedByYou:
print(f"S3 bucket '{bucket_name}' already exists and is owned by you.")
except s3_client.exceptions.BucketAlreadyExists:
print(f"Error: S3 bucket '{bucket_name}' already exists globally.")
print(f"Error creating S3 bucket '{bucket_name}': {e}")
def generate_unique_bucket_name(base_name):
Generates a globally unique bucket name by adding a timestamp and UUID suffix.
timestamp = datetime.datetime.now().strftime("%y%m%d")
unique_suffix = str(uuid.uuid4())[:8]
return f"{base_name}-{timestamp}-{unique_suffix}".lower()
if __name__ == "__main__":
my_region = 'ap-southeast-1'
my_unique_bucket_name = generate_unique_bucket_name(base_name)
create_s3_bucket(my_unique_bucket_name, my_region)