When working with Amazon S3 (Elementary Storage Service), you're probably using the S3 web console to download, copy, or upload files to S3 buckets. Using the console is perfectly fine, that's what it was designed for, to begin with.
Peculiarly for admins who are used to more mouse-click than keyboard commands, the web console is probably the easiest. Notwithstanding, admins will somewhen see the need to perform majority file operations with Amazon S3, like an unattended file upload. The GUI is non the best tool for that.
For such automation requirements with Amazon Web Services, including Amazon S3, the AWS CLI tool provides admins with control-line options for managing Amazon S3 buckets and objects.
In this article, you will learn how to utilize the AWS CLI command-line tool to upload, copy, download, and synchronize files with Amazon S3. Yous volition also learn the basics of providing admission to your S3 saucepan and configure that access profile to piece of work with the AWS CLI tool.
Prerequisites
Since this a how-to article, in that location will exist examples and demonstrations in the succeeding sections. For you to follow along successfully, you lot will demand to run across several requirements.
An AWS account. If you don't have an existing AWS subscription, you lot tin sign upward for an AWS Free Tier.
An AWS S3 saucepan. Yous tin can utilise an existing bucket if you lot'd adopt. All the same, it is recommended to create an empty bucket instead. Please refer to Creating a bucket.
A Windows ten computer with at least Windows PowerShell five.1. In this article, PowerShell 7.0.2 will exist used.
The AWS CLI version 2 tool must be installed on your reckoner.
Local folders and files that you will upload or synchronize with Amazon S3
Preparing Your AWS S3 Admission
Suppose that yous already have the requirements in place. You'd think yous can already become and starting time operating AWS CLI with your S3 bucket. I mean, wouldn't it be nice if information technology were that simple?
For those of you who are just beginning to piece of work with Amazon S3 or AWS in full general, this section aims to assist y'all ready access to S3 and configure an AWS CLI contour.
The full documentation for creating an IAM user in AWS can be found in this link beneath. Creating an IAM User in Your AWS Account
Creating an IAM User with S3 Access Permission
When accessing AWS using the CLI, you lot volition need to create one or more than IAM users with enough access to the resources you intend to work with. In this section, you lot volition create an IAM user with access to Amazon S3.
To create an IAM user with access to Amazon S3, you showtime need to login to your AWS IAM console. Under the Access management grouping, click on Users. Adjacent, click on Add user.
Type in the IAM user'southward proper name yous are creating within the User name* box such as s3Admin. In the Admission type* selection, put a check on Programmatic access. So, click the Adjacent: Permissions push button.
Next, click on Attach existing policies direct. Then, search for the AmazonS3FullAccess policy name and put a check on it. When washed, click on Next: Tags.
Creating tags is optional in the Add tags folio, and you can just skip this and click on the Next: Review button.
In the Review page, you are presented with a summary of the new account being created. Click Create user.
Finally, once the user is created, you must copy the Access fundamental ID and the Secret admission key values and relieve them for later user. Note that this is the only time that you can meet these values.
Setting Up an AWS Profile On Your Computer
Now that you lot've created the IAM user with the advisable access to Amazon S3, the next footstep is to ready the AWS CLI profile on your computer.
This section assumes that yous already installed the AWS CLI version 2 tool equally required. For the profile creation, you will demand the post-obit information:
The Access key ID of the IAM user.
The Secret access primal associated with the IAM user.
The Default region proper noun is corresponding to the location of your AWS S3 bucket. You lot can check out the list of endpoints using this link. In this article, the AWS S3 bucket is located in the Asia Pacific (Sydney) region, and the corresponding endpoint is ap-southeast-2.
The default output format. Apply JSON for this.
To create the profile, open PowerShell, and type the command beneath and follow the prompts.
Enter the Admission cardinal ID, Surreptitious access key, Default region name, and default output name. Refer to the demonstration beneath.
Testing AWS CLI Access
Subsequently configuring the AWS CLI profile, you can confirm that the contour is working by running this command below in PowerShell.
The command above should list the Amazon S3 buckets that yous have in your account. The sit-in beneath shows the command in activeness. The result shows that listing of available S3 buckets indicates that the profile configuration was successful.
To learn nigh the AWS CLI commands specific to Amazon S3, y'all can visit the AWS CLI Command Reference S3 folio.
Managing Files in S3
With AWS CLI, typical file management operations tin can be done like upload files to S3, download files from S3, delete objects in S3, and copy S3 objects to another S3 location. It's all just a matter of knowing the right command, syntax, parameters, and options.
In the following sections, the environment used is consists of the following.
Ii S3 buckets, namely atasync1and atasync2. The screenshot below shows the existing S3 buckets in the Amazon S3 console.
Local directory and files located nether c:\sync.
Uploading Private Files to S3
When yous upload files to S3, you can upload one file at a time, or past uploading multiple files and folders recursively. Depending on your requirements, you lot may choose 1 over the other that y'all deem advisable.
To upload a file to S3, yous'll need to provide two arguments (source and destination) to the aws s3 cp command.
For example, to upload the file c:\sync\logs\log1.xml to the root of the atasync1 bucket, yous tin use the command beneath.
aws s3 cp c:\sync\logs\log1.xml s3://atasync1/
Note: S3 bucket names are e'er prefixed with S3:// when used with AWS CLI
Run the higher up command in PowerShell, but change the source and destination that fits your environment outset. The output should await similar to the demonstration below.
The demo above shows that the file named c:\sync\logs\log1.xml was uploaded without errors to the S3 destination s3://atasync1/.
Utilise the command below to list the objects at the root of the S3 saucepan.
Running the control above in PowerShell would consequence in a like output, as shown in the demo below. As you lot can see in the output beneath, the file log1.xml is present in the root of the S3 location.
Uploading Multiple Files and Folders to S3 Recursively
The previous section showed yous how to copy a single file to an S3 location. What if y'all need to upload multiple files from a folder and sub-folders? Surely y'all wouldn't want to run the aforementioned command multiple times for different filenames, right?
The aws s3 cp control has an option to procedure files and folders recursively, and this is the --recursive pick.
As an example, the directory c:\sync contains 166 objects (files and sub-folders).
Using the --recursive option, all the contents of the c:\sync binder will be uploaded to S3 while likewise retaining the folder structure. To exam, use the example lawmaking below, but brand sure to change the source and destination appropriate to your environment.
You'll notice from the code below, the source is c:\sync, and the destination is s3://atasync1/sync. The /sync key that follows the S3 bucket name indicates to AWS CLI to upload the files in the /sync folder in S3. If the /sync folder does not be in S3, it will be automatically created.
aws s3 cp c:\sync s3://atasync1/sync --recursive
The lawmaking above volition effect in the output, equally shown in the sit-in beneath.
Uploading Multiple Files and Folders to S3 Selectively
In some cases, uploading ALL types of files is non the best choice. Like, when you only need to upload files with specific file extensions (e.g., *.ps1). Some other two options available to the cp command is the --include and --exclude.
While using the command in the previous section includes all files in the recursive upload, the command below will include only the files that match *.ps1 file extension and exclude every other file from the upload.
The demonstration below shows how the code above works when executed.
Another example is if you lot want to include multiple different file extensions, you lot volition demand to specify the --include selection multiple times.
The example command below volition include just the *.csv and *.png files to the copy command.
Running the code above in PowerShell would present you with a similar result, equally shown below.
Downloading Objects from S3
Based on the examples you've learned in this section, you can also perform the copy operations in contrary. Meaning, you tin can download objects from the S3 bucket location to the local automobile.
Copying from S3 to local would require yous to switch the positions of the source and the destination. The source being the S3 location, and the destination is the local path, like the one shown beneath.
aws s3 cp s3://atasync1/sync c:\sync
Note that the same options used when uploading files to S3 are besides applicable when downloading objects from S3 to local. For instance, downloading all objects using the control below with the --recursive option.
aws s3 cp s3://atasync1/sync c:\sync --recursive
Copying Objects Between S3 Locations
Autonomously from uploading and downloading files and folders, using AWS CLI, you lot tin can also copy or motility files betwixt two S3 bucket locations.
You'll notice the control below using one S3 location every bit the source, and another S3 location as the destination.
aws s3 cp s3://atasync1/Log1.xml s3://atasync2/
The demonstration below shows you the source file beingness copied to another S3 location using the command to a higher place.
Synchronizing Files and Folders with S3
Yous've learned how to upload, download, and copy files in S3 using the AWS CLI commands so far. In this section, you'll learn about ane more than file operation command available in AWS CLI for S3, which is the sync command. The sync control only processes the updated, new, and deleted files.
There are some cases where you need to go along the contents of an S3 bucket updated and synchronized with a local directory on a server. For case, yous may have a requirement to proceed transaction logs on a server synchronized to S3 at an interval.
Using the command below, *.XML log files located under the c:\sync folder on the local server will be synced to the S3 location at s3://atasync1.
The sit-in below shows that after running the command above in PowerShell, all *.XML files were uploaded to the S3 destination s3://atasync1/.
Synchronizing New and Updated Files with S3
In this side by side example, information technology is assumed that the contents of the log file Log1.xml were modified. The sync command should pick up that modification and upload the changes done on the local file to S3, as shown in the demo below.
The control to employ is withal the same as the previous example.
As you can see from the output to a higher place, since only the file Log1.xml was changed locally, it was also the merely file synchronized to S3.
Synchronizing Deletions with S3
By default, the sync command does non process deletions. Whatever file deleted from the source location is non removed at the destination. Well, not unless you apply the --delete option.
In this next example, the file named Log5.xml has been deleted from the source. The control to synchronize the files volition be appended with the --delete pick, as shown in the lawmaking below.
When yous run the control above in PowerShell, the deleted file named Log5.xml should likewise be deleted at the destination S3 location. The sample result is shown below.
Summary
Amazon S3 is an excellent resource for storing files in the deject. With the apply of the AWS CLI tool, the way you utilize Amazon S3 is farther expanded and opens the opportunity to automate your processes.
In this article, you've learned how to use the AWS CLI tool to upload, download, and synchronize files and folders between local locations and S3 buckets. You've too learned that S3 buckets' contents can also be copied or moved to other S3 locations, also.
At that place can be many more use-case scenarios for using the AWS CLI tool to automate file management with Amazon S3. You can even try to combine information technology with PowerShell scripting and build your ain tools or modules that are reusable. It is up to y'all to find those opportunities and show off your skills.
Further Reading
What Is the AWS Control Line Interface?
What is Amazon S3?
How To Sync Local Files And Folders To AWS S3 With The AWS CLI
0 Response to "How To Upload File To Amazon Public Bucket S3"
Post a Comment