This post is linked to from the AWS: Deep Dive Project
This post covers how to upload and download files from Amazon's S3 using Python. Setup is done from the web UI.
Go to the AWS S3 page.
Click on "+ Create Bucket" and fill out the form. For access, choose Block all public access. For the rest of the options, the defaults are fine.
IAM stands for Identity and Access Management.
From the left nav-bar, go to policies. The default policies don't grant programmatic access, so you need to make a new one.
For admin rights, I just used the visual policy builder and granted it access to everything. I'll come back and update this guide with how to lock that down later.
Go to the groups on the left. Either make a new one or edit an existing one.
Under Permissions, click Attach Policy. If you want, you can also add
AmazonS3FullAccess
to see the difference between the two.
On the left nav-bar, go to Users > Add User. Or edit a user that exists. Fill in the wizard and assign the group.
Python needs boto3 installed to interact with AWS.
pip install boto3
import boto3
# Fill in the key and key id, or read them from stdin/file/whatever
key_id = ''
key = ''
# Create the authenticated s3 client
session = boto3.Session(aws_access_key_id=key_id, aws_secret_access_key=key)
client = session.client('s3')
# Define the file/object
filename = '/example/file/path'
bucket_name = 'my_bucket'
key = 'my_key'
# Upload Example
client.upload_file(filename, bucket_name, key)
# Download Example
client.download_file(bucket_name, object_name, path)