Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

How to create a s3 bucket using Boto3?

Tags:

I want to enable cloudtrail logs for my account and so need to create an s3 bucket.I wanted to automate this task using Boto3.Currently I am using the following script

sess = Session(aws_access_key_id=tmp_access_key,                    aws_secret_access_key=tmp_secret_key, aws_session_token=security_token)   s3_conn_boto3 = sess.client(service_name='s3', region_name=region)    bucket = s3_conn_boto3.create_bucket(Bucket=access_log_bucket_name,                                                      CreateBucketConfiguration={'LocationConstraint':'us-east-1'},                                                      ACL='authenticated-read',..). 

I am new to Boto3 so I don't have much knowledge regarding usage of other parameters like GrantWrite,GrantWriteACP etc..

Please help me provide some code snippet regarding create s3 bucket and enabled cloudtrail logs in it.

Thanks

like image 426
tom Avatar asked Jun 27 '15 18:06

tom


1 Answers

Go through the following documentation

http://boto3.readthedocs.io/en/latest/guide/migrations3.html

Creating the Connection

Boto 3 has both low-level clients and higher-level resources. For Amazon S3, the higher-level resources are the most similar to Boto 2.x's s3 module:

Boto 2.x import boto

s3_connection = boto.connect_s3() 

Boto 3

import boto3  s3 = boto3.resource('s3') 

Creating a Bucket

Creating a bucket in Boto 2 and Boto 3 is very similar, except that in Boto 3 all action parameters must be passed via keyword arguments and a bucket configuration must be specified manually:

Boto 2.x

s3_connection.create_bucket('mybucket')  s3_connection.create_bucket('mybucket', location=Location.USWest) 

Boto 3

s3.create_bucket(Bucket='mybucket')  s3.create_bucket(Bucket='mybucket', CreateBucketConfiguration={     'LocationConstraint': 'us-west-1'}) 

Storing Data

Storing data from a file, stream, or string is easy:

Boto 2.x

from boto.s3.key import Key  key = Key('hello.txt')  key.set_contents_from_file('/tmp/hello.txt') 

Boto 3

s3.Object('mybucket', 'hello.txt').put(Body=open('/tmp/hello.txt', 'rb')) 
like image 101
Vaibhav Walke Avatar answered Sep 21 '22 23:09

Vaibhav Walke