Boto3 -Basics and S3 samples
Tags: aws, python, boto3, s3
Published: 2023-12-25 15:17:10

Boto3 is the Amazon Web Services (AWS) Software Development Kit (SDK) for Python, which allows Python developers to write software that makes use of services like Amazon S3 and Amazon EC2. You can find the latest, most up to date, documentation at our [doc site](https://boto3.amazonaws.com/v1/documentation/api/latest/index.html), including a list of services that are supported

**Install Boto3**
Install the latest Boto3 release via pip:

```
pip install boto3
```
**Configuration**
Before you are using Boto3, you need to setup authentication credentials for your AWS account using either the IAM Console or the AWS CLI. 
Make sure you are having IAM User with the access key and secret access key then use the following to configure the credentials

```
aws configure
```
By default, the credentials are stored in the location ~/.aws/credentials


```
[default]
aws_access_key_id = YOUR_ACCESS_KEY
aws_secret_access_key = YOUR_SECRET_KEY
region=eu-west-1
```
**Using Boto3**

To use Boto3, you must first import it and indicate which service or services you’re going to use:

```
import boto3

# Let's use Amazon S3
s3 = boto3.resource('s3')
```

**1.Create AWS S3 bucket**  
```
##File name : s3_create.py

import boto3
s3_client = boto3.client('s3')
## Create bucket
response = s3_client.create_bucket(
    Bucket='srini-letterkenny-newyear-2024',
    CreateBucketConfiguration={
        'LocationConstraint': 'eu-west-1'
    }
)
print(response)

```
Response of create AWS S3 bucket

```
PS C:\Desktop>python3 s3_create.py
{'ResponseMetadata': {'RequestId': '58PB5DVWCMRF82J6', 'HostId': 'Gia0WMrN5EjiYUGPfVh4xszSTdJYrgRcEY4P4GW+nFJdvs7GVPL7m8FNwFtmnCogIvBXN9AU6Zs=', 'HTTPStatusCode': 200, 'HTTPHeaders': {'x-amz-id-2': 'Gia0WMrN5EjiYUGPfVh4xszSTdJYrgRcEY4P4GW+nFJdvs7GVPL7m8FNwFtmnCogIvBXN9AU6Zs=', 'x-amz-request-id': '58PB5DVWCMRF82J6', 'date': 'Mon, 25 Dec 2023 14:30:41 GMT', 'location': 'http://srini-letterkenny-newyear-2024.s3.amazonaws.com/', 'server': 'AmazonS3', 'content-length': '0'}, 'RetryAttempts': 0}, 'Location': 'http://srini-letterkenny-newyear-2024.s3.amazonaws.com/'}
```
**2.List AWS S3 buckets**

```
##File name : s3_list.py
import boto3
s3_client = boto3.client('s3')

# List the buckets
for bucket in s3_client.list_buckets()["Buckets"]:
    print(bucket['Name'])
```

Response of List AWS S3 bucket

```
PS C:\Desktop> python3 s3_list.py
srini-letterkenny-christmas-2023
```
**3.Delete AWS S3 bucket**
- All objects (including all object versions and delete markers) in the bucket must be deleted before the bucket itself can be deleted.
- You must have the s3:DeleteBucket permission on the specified bucket in a policy.
```
##File name : s3_delete.py

import boto3
s3_client = boto3.client('s3')

response = s3_client.delete_bucket(
    Bucket='srini-letterkenny-newyear-2024',
)

print(response)
```

```
PS C:\Desktop> python3 s3_delete.py
{'ResponseMetadata': {'RequestId': 'K7FP3Y1BR7N6BE01', 'HostId': 'EdI1Uzn4xM7WpJCoFnOnPJDqqAMmL51QBedTg6RRmwSzKVy+Vr1QXQYbyT+xPDSgacAe9HLzZJU=', 'HTTPStatusCode': 204, 'HTTPHeaders': {'x-amz-id-2': 'EdI1Uzn4xM7WpJCoFnOnPJDqqAMmL51QBedTg6RRmwSzKVy+Vr1QXQYbyT+xPDSgacAe9HLzZJU=', 'x-amz-request-id': 'K7FP3Y1BR7N6BE01', 'date': 'Mon, 25 Dec 2023 14:29:02 GMT', 'server': 'AmazonS3'}, 'RetryAttempts': 0}}
```

4.Download files from S3 bucket

```
##File Name: s3_download.py

import boto3
s3_client = boto3.client('s3')
bucket_name = "srini-letterkenny-christmas-2023"
file_name   = "automation.docx"
download_path = "C:\\Terraform\\automation.docx"
s3_client.download_file(bucket_name, file_name, download_path)

```
```
PS C:\Desktop> python3 s3_download.py
```
**Note:** Change the parameters based on the aws s3 bucket, filename and download path.

bucket_name = Name of the bucket from where you wanted to download the files
file_name   = Name of the file, you wanted to download
download_path = local path of the system where you wanted to download the files from S3 bucket.

**5. Upload files to S3 bucket (upload_file)**
Upload a file to an S3 object

```
##File Name: s3_upload.py
import boto3
s3_client = boto3.client('s3')
bucket_name = "srini-letterkenny-christmas-2023"
file_name   = "C:\\Terraform\\Cert.pdf"
upload_file= "PlatinumCert.pdf"
s3_client.upload_file(file_name, bucket_name, upload_file)
```

```
PS C:\Desktop> python3 s3_upload.py
```

**File uploaded in S3 bucket**
![Image description](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/z69m0x7pzhpte0g8cip4.png)




References: https://boto3.amazonaws.com/v1/documentation/api/latest/reference/services/s3.html

**Conclusion** : Discussed about AWS Boto3 SDK and written some programs using Python 3 + Boto3

If you like my blogs, please like and any suggestion give comments and follow me in dev.to and linked in https://www.linkedin.com/in/srinivasuluparanduru/