Notes and anecdotes

Techstuff rambling

Boto3 – copying and creating files + cloudfront invalidations

A 1-2-3 on Python3 boto3 package with my most common operations

Copy objet between two S3 buckets
s3 = boto3.client('s3')
copy_source = {
    'Bucket': 'my-bucket-1',
    'Key': 'index.html'
}
s3.copy_object(
    CopySource=copy_source, 
    Bucket='my-bucket-2', 
    Key='index.html'
)
Upload file to S3 bucket
s3 = boto3.resource('s3')
bucket = s3.Bucket(AWS_BUCKET_NAME)
f = open(file['path'], 'rb')

bucket.put_object(
    ACL='public-read',
    ContentType='application/json',
    ContentEncoding='utf-8',
    Key=filename,
    Body=f,
)
Create Cloudfront invalidation

Remember that / before each file name

files = ["/index.html"]
cloudfront = boto3.client('cloudfront')
cloudfront.create_invalidation(
    DistributionId='IADF1234567',
    InvalidationBatch={
        'Paths': {
            'Quantity': len(files),
            'Items': ['/{}'.format(f) for f in files]
        },
        'CallerReference': 'my-references-{}'.format(datetime.now())
    }
)
List S3 bucket content
s3 = boto3.client('s3')
files = [
    x['Key']
    for x in s3.list_objects(Bucket='my-bucket')['Contents']
]
AWSpython

tomfa • 2017-10-31


Previous Post