# How to get started with AWS S3 CLI Commands

[The AWS Command Line](https://docs.aws.amazon.com/cli/latest/index.html) Interface is a unified tool that provides a consistent interface for interacting with all parts of AWS.  

This Blog explains frequently used concepts and commands for [S3 CLI](https://docs.aws.amazon.com/cli/latest/reference/s3/) Tasks. 
It is widely used to save time, and customize and automate S3 Storage Tasks.  
 
Let's Dive-In,  
- Install AWS CLI by following up [here](https://docs.aws.amazon.com/cli/latest/userguide/getting-started-install.html), as per your OS and Processor.
- Now, it’s time to configure the AWS profile. Use “AWS configure” 
It will need Admin User's (AdministratorAccess) AWS Access Key ID: and AWS Secret Access Key:  
(find your credentials under  AWS console > IAM > Users > Create/Choose your Admin User >  Under Security Credentials tab > Create Access Key (Securely Save this .cve file)
And put those key info in the prompt for "AWS configure" sign in on AWS CLI. Example,  
![screely-1665204869768.png](https://cdn.hashnode.com/res/hashnode/image/upload/v1665204883481/CV914yBZd.png align="left")
I am in, verified by "aws s3 ls"  command which listed available S3 buckets with its creation date and time.  

Now We will go to list all useful commands for **S3 CLI** which will be useful to save you time, and automate S3 Storage operations with customization options.  

Note : **Assume your local directory and Your unique S3 Bucket Names **respectively in below examples and screenshots.  

###  AWS S3 Copy : **aws s3 cp**  
Copy local file or S3 object to another S3 bucket or locally    

![screely-1666145945182.png](https://cdn.hashnode.com/res/hashnode/image/upload/v1666145962758/nyVjS3dTN.png align="left")

```
# Copying a local file to S3
aws s3 cp test.txt  s3://mybucket/test2.txt

# Copying a file from S3 to S3
aws s3 cp s3://mybucket/test.txt  s3://mybucket/test2.txt
# Copying an S3 object to a local file
aws s3 cp s3://mybucket/test.txt  G:\test2.txt
# Copying an S3 object from one bucket to another
aws s3 cp s3://mybucket/test.txt  s3://mybucket2/

# Setting the Access Control List (ACL) while copying S3 object
aws s3 cp s3://mybucket/test.txt s3://mybucket/test2.txt --acl public-read-write

# Recursively copying 
aws s3 cp s3://mybucket D:\testfolder --recursive
aws s3 cp D:\testfolder  s3://mybucket/ --recursive 
aws s3 cp s3://mybucket/ s3://mybucket2/ --recursive 

``` 

### AWS S3 List : **aws  s3  ls**  
List S3 objects and common prefixes under a prefix or all S3 buckets  
![screely-1666202507831.png](https://cdn.hashnode.com/res/hashnode/image/upload/v1666202540781/HgRPUJy8l.png align="left")

```
# Lists all of the buckets owned by the user
aws s3 ls
# Recursively list objects in a bucket
aws s3 ls s3://mybucket --recursive
# Recursively list objects in a bucket with human-readable
and summarize option 
aws s3 ls s3://mybucket --recursive --human-readable --summarize
``` 

### AWS S3 Move : **aws s3 mv **   
Move local file or S3 object to another S3 bucket or locally  
![screely-1666241546692.png](https://cdn.hashnode.com/res/hashnode/image/upload/v1666241558100/9fLBG7LhA.png align="left")
![screely-1666241950055.png](https://cdn.hashnode.com/res/hashnode/image/upload/v1666241969996/vNanvZi2D.png align="left")

```
# Moves single/multi s3 object/s to a specified bucket 
- Changing the name of the target bucket file optionally. 
aws s3 mv G:\test.txt  s3://mybucket/test2.txt
# Move From local folder objects to move to s3 bucket 
aws s3 mv G:\testfolder  s3://mybucket/test2.txt
# Move all Objects From one S3 Bucket to another S3 Bucket 
aws s3 mv s3://s3clibucket-1  s3://s3clibucket-2  --recursive
# Moves all files but exclude some file with specific extension
aws s3 mv G:\testfolder  s3://mybucket/ --recursive --exclude "*.jpg"
``` 

### Create an S3 buckets : **aws s3 mb**  
**mb (Make Bucket) command creates a bucket.**
![screely-1666242941267.png](https://cdn.hashnode.com/res/hashnode/image/upload/v1666242962665/4pTFZs6ZI.png align="left")

![screely-1666243171794.png](https://cdn.hashnode.com/res/hashnode/image/upload/v1666243183371/x-MKBT0s6.png align="left")
```
# Creates a bucket (Unique name in default region) 
aws s3 mb s3://myuniquenamebucket
# Create a s3 bucket in a specific Region
aws s3 mb s3://mybucket --region us-west-1
``` 
### Generate pre-sign URL for S3 Object:  
**aws s3 presign** 
![screely-1666243991892.png](https://cdn.hashnode.com/res/hashnode/image/upload/v1666244100997/3BlXDySLJ.png align="left")

```
# s3 presign url (default 3600 seconds)
aws s3 presign s3://s3clibucket-1/test1.txt
aws s3 presign s3://s3clibucket-2/test2.txt --expires-in 60
``` 

### To delete an S3 bucket: **aws s3 rb**
![screely-1666244720733.png](https://cdn.hashnode.com/res/hashnode/image/upload/v1666244984442/FqcgQeSQL.png align="left")
```
# Remove an empty bucket
aws s3 rb s3://mybucket
# Remove all the objects forcefully in the bucket and then remove
the bucket itself.
aws s3 rb s3://mybucket --force
``` 
### To delete S3 object: **aws s3 rm**
```
# Delete an object from S3 Bucket
aws s3 rm s3://mybucket/test2.txt
# Recursively deletes all objects under a specified bucket
aws s3 rm s3://mybucket --recursive
# Deletes all objects but excluding some objects
aws s3 rm s3://mybucket/ --recursive --exclude "*.jpg"
aws s3 rm s3://mybucket/ --recursive --exclude "another/*"
``` 
### S3 Static Website configuration for bucket:  
**aws s3 website**
```
# Configures a bucket name as a static website
aws s3 website s3://my-bucket/ --index-document
index.html --error-document error.html
``` 
### To Sync directories and S3 prefixes: 
**aws s3 sync **

```
# Syncs objects with S3 bucket to local directory
aws s3 sync G:\Testfolder  s3://mybucket

# Syncs files between two buckets in different regions
aws s3 sync s3://s3clibucket-1 s3://s3clibucket-2 --source-region us-west-2 --region us-east-1

# Syncs objects under a two different buckets
aws s3 sync s3://s3clibucket-1 s3://s3clibucket-2

# Sync but exclude objects with specific extensionor directory
aws s3 sync G:\Testfolder  s3://s3clibucket-1 --exclude "*.jpg"
aws s3 sync s3://s3clibucket-1/  G:\TestFolder --exclude "*another/*"
``` 

With this blog, I hope it clears out the starter concepts with AWS S3 CLI Commands and encouraged you to try it out yourself. 

Thank you for reading and/or following along with the Blog.

Happy Learning.

Like and Follow for more Azure and AWS Content.

Regards,  
[Jineshkumar Patel](https://jineshkumar.bio.link/)
