Upload a file to S3 using boto3 python3 lib

How to upload a file from your computer to Amazon Web Services S3 using python3 and boto3.

Import boto3

import boto3

(pip3 install boto3 if not installed)

Set region and credentials

First we need to select the region where the bucket is placed and your account credentials.

  • You can find the region in the url, when you preview the desired bucket https://s3.console.aws.amazon.com/s3/buckets/vperezb/?region=us-east-1
    • In this case: region=us-east-1
  • Copy access and secret from https://console.aws.amazon.com/iam/home?#/security_credential
    • Security Credentials -> Access keys (access key ID and secret access key) -> Create New Access Key -> Show Access Key

Using Account credentials isn’t a good practise as they give full access to AWS resources http://docs.aws.amazon.com/IAM/latest/UserGuide/best-practices.html?icmpid=docs_iam_console

REGION = 'us-east-1'
ACCESS_KEY_ID = 'paste_here_your_key_id'
SECRET_ACCESS_KEY = 'paste_here_your_secret_access_key'

Select file to upload (computer)

PATH_IN_COMPUTER = 'path/in/computer/namefile.txt'

Select file destination (AWS S3)

BUCKET_NAME = 'vperezb'
KEY = 'path/in/s3/namefile.txt' # file path in S3 

Upload the file to S3

s3_resource = boto3.resource(
    's3', 
    region_name = REGION,
    aws_access_key_id = ACCESS_KEY_ID,
    aws_secret_access_key = SECRET_ACCESS_KEY
)

s3_resource.Bucket(BUCKET_NAME).put_object(Key = KEY, Body = open(PATH_IN_COMPUTER, 'rb'))

All togeather

import boto3

REGION = 'us-east-1'
ACCESS_KEY_ID = 'paste_here_your_key_id'
SECRET_ACCESS_KEY = 'paste_here_your_secret_access_key'

PATH_IN_COMPUTER = 'path/in/computer/namefile.txt'

BUCKET_NAME = 'vperezb'
KEY = 'path/in/s3/namefile.txt' # file path in S3 

s3_resource = boto3.resource(
    's3', 
    region_name = REGION,
    aws_access_key_id = ACCESS_KEY_ID,
    aws_secret_access_key = SECRET_ACCESS_KEY
)

s3_resource.Bucket(BUCKET_NAME).put_object(Key = KEY, Body = open(PATH_IN_COMPUTER, 'rb'))
Written on November 26, 2017