Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

How to upload a file to directory in S3 bucket using boto

I want to copy a file in s3 bucket using python.

Ex : I have bucket name = test. And in the bucket, I have 2 folders name "dump" & "input". Now I want to copy a file from local directory to S3 "dump" folder using python... Can anyone help me?

like image 810
Dheeraj Gundra Avatar asked Feb 26 '13 09:02

Dheeraj Gundra


2 Answers

Try this...

import boto import boto.s3 import sys from boto.s3.key import Key  AWS_ACCESS_KEY_ID = '' AWS_SECRET_ACCESS_KEY = ''  bucket_name = AWS_ACCESS_KEY_ID.lower() + '-dump' conn = boto.connect_s3(AWS_ACCESS_KEY_ID,         AWS_SECRET_ACCESS_KEY)   bucket = conn.create_bucket(bucket_name,     location=boto.s3.connection.Location.DEFAULT)  testfile = "replace this with an actual filename" print 'Uploading %s to Amazon S3 bucket %s' % \    (testfile, bucket_name)  def percent_cb(complete, total):     sys.stdout.write('.')     sys.stdout.flush()   k = Key(bucket) k.key = 'my test file' k.set_contents_from_filename(testfile,     cb=percent_cb, num_cb=10) 

[UPDATE] I am not a pythonist, so thanks for the heads up about the import statements. Also, I'd not recommend placing credentials inside your own source code. If you are running this inside AWS use IAM Credentials with Instance Profiles (http://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_use_switch-role-ec2_instance-profiles.html), and to keep the same behaviour in your Dev/Test environment, use something like Hologram from AdRoll (https://github.com/AdRoll/hologram)

like image 171
Felipe Garcia Avatar answered Oct 11 '22 13:10

Felipe Garcia


import boto3  s3 = boto3.resource('s3') BUCKET = "test"  s3.Bucket(BUCKET).upload_file("your/local/file", "dump/file") 
like image 31
Boris Avatar answered Oct 11 '22 13:10

Boris