Testing
Testing

Reputation: 1

Python (Boto/tinys3) Upload file to AWS S3 bucket subdirectory

conn = tinys3.Connection(S3_ACCESS_KEY,S3_SECRET_KEY)
f = open('sample.zip','rb')
conn.upload('sample.zip',f,bucketname)

I can upload the file to my bucket (test) via the code above, but I want to upload it directly to test/images/example. I am open to moving over to boto, but I can't seem to import boto.s3 in my environment.

I have looked through How to upload a file to directory in S3 bucket using boto but none of the tinys3 examples show this.

Upvotes: 0

Views: 3480

Answers (2)

Hafizur Rahman
Hafizur Rahman

Reputation: 2370

The following worked for me

from boto3.s3.transfer import S3Transfer
from boto3 import client


client_obj = client('s3',
                   aws_access_key_id='my_aws_access_key_id',
                aws_secret_access_key='my_aws_secret_access_key')
transfer = S3Transfer(client_obj)
transfer.upload_file(src_file,
                     'my_s3_bucket_name',
                     dst_file,
                     extra_args={'ContentType': "application/zip"})

Upvotes: 0

John Rotenstein
John Rotenstein

Reputation: 270089

import boto3

client = boto3.client('s3', region_name='ap-southeast-2')

client.upload_file('/tmp/foo.txt', 'my-bucket', 'test/images/example/foo.txt')

Upvotes: 4

Related Questions