Skip to content

Instantly share code, notes, and snippets.

@Lucs1590
Created July 5, 2021 00:47
Show Gist options
  • Save Lucs1590/338bd91e420695c4e418c7ecc608ea71 to your computer and use it in GitHub Desktop.
Save Lucs1590/338bd91e420695c4e418c7ecc608ea71 to your computer and use it in GitHub Desktop.
This is a repository to make tests with AWS S3 connection.
import boto3
import uuid
def create_bucket_name(bucket_prefix):
# The generated bucket name must be between 3 and 63 chars long
return ''.join([bucket_prefix, str(uuid.uuid4())])
def create_bucket(bucket_prefix, s3_connection):
session = boto3.session.Session()
current_region = session.region_name
bucket_name = create_bucket_name(bucket_prefix)
bucket_response = s3_connection.create_bucket(
Bucket=bucket_name)
print(bucket_name, current_region)
return bucket_name, bucket_response
def create_temp_file(size, file_name, file_content):
random_file_name = ''.join([str(uuid.uuid4().hex[:6]), file_name])
with open(random_file_name, 'w') as f:
f.write(str(file_content) * size)
return random_file_name
s3_client = boto3.client('s3')
s3_resource = boto3.resource('s3')
first_bucket_name, first_response = create_bucket(
bucket_prefix='firstpythonbucket', s3_connection=s3_client)
first_file_name = create_temp_file(300, 'firstfile.txt', 'f')
first_bucket = s3_resource.Bucket(name=first_bucket_name)
first_object = s3_resource.Object(
bucket_name=first_bucket_name, key=first_file_name)
first_bucket_again = first_object.Bucket()
# UPLOAD
s3_resource.meta.client.upload_file(
Filename=first_file_name, Bucket=first_bucket_name, Key=first_file_name)
second_file_name = create_temp_file(400, 'secondfile.txt', 's')
second_object = s3_resource.Object(first_bucket.name, second_file_name)
second_object.upload_file(second_file_name, ExtraArgs={'ACL': 'public-read'})
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment