Learn about Amazon S3 (Simple Storage Service), creating a bucket in AWS S3 and then hosting static website or static contents in the storage area.

Table of Contents

What is AWS S3
Static Website Hosting with AWS S3

What is AWS S3

The Amazon S3 is a easy-to-use object store and one of the oldest services on AWS platform. Amazon S3 is an acronym for Amazon Simple Storage Service. It’s a typical web service that enables us to store and retrieve data via an API reachable over HTTPS. The service offers unlimited storage space and stores your data in a highly available and durable and secured way.

In S3 we can store any kind of data, such as images, documents, and binaries, as long as the size of a single object doesn’t exceed 5 TB.

Key terminologies of AWS S3

  1. Bucket – A bucket is a container for objects stored in Amazon S3. Every S3 object is contained in a bucket. Buckets form the top-level namespace for Amazon S3, and bucket names are global. This essentially means that Bucket names should be unique across all AWS accounts.
  2. Objects – Objects are the entities or files stored in S3 buckets. An object can be any kind of data in any format. Objects can range in size from 0 bytes up to 5TB, and a single
    bucket can store an unlimited number of objects. This means that a single bucket can store virtually unlimited amount of data.
  3. Keys – Every object stored in an S3 bucket is identified by a unique identifier called a key.
  4. Object URL – As S3 is a cloud system, each object is accessible over internet with a unique URL. Generally the URL structure is like this: https://<region>.s3.amazonaws.com/<bucket>

S3 Storage Classes

Amazon S3 has below storage class which customers can choose –

  • Standard is designed for general-purpose data needing high performance and low latency.
  • Standard-IA is for less frequently accessed data.
  • RRS offers lower redundancy at lower cost for easily reproduced data.

Static Website Hosting with AWS S3

Create AWS account

Before starting this exercise we need to register ourselves with the AWS free tier account. AWS provides this type of access for 1 year to do the practice on different services. It is very straight forward and to do that you need to follow this link https://aws.amazon.com/ and need to click on “Create an AWS Account” button in top right corner of the home page itself.

Give required registration details. It will ask for some credit card, feel free to provide your own, AWS will not bill unless you have tried the services that does not falls under free tier.

AWS Free Tier
AWS Free Tier

Open AWS Console

Once you have registered and received the credentials, you need to login to the AWS console and after login the console will look like

AWS Console After Login
AWS Console After Login

Open S3 Console

Go to S3 console by clicking on the respective link from the storage section. The S3 console will look like below. Please note that AWS frequently update their portal, so the actual view may be little bit different from given image. But the overall functionalities should be same.

AWS S3 Console Home
AWS S3 Console Home

Create a bucket on AWS S3

Now click on the create a bucket in the S3 console, and enter a bucket name. Please note that the bucket name is unique in the overall AWS platform, so you might face some error message like bucket already exists if you enter a duplicate bucket name that is already created in AWS by someone before. So, choose bucket name efficiently to avoid this. You can follow official AWS S3 bucket policy for more details.

Creating S3 Bucket
Creating S3 Bucket

Once you are able to create the bucket, it will come in the middle of the screen like below.

S3 Bucket Created
S3 Bucket Created

Now click on the bucket name and you will go to the bucket details page.

S3 Bucket Details Screen
S3 Bucket Details Screen

Upload Static Files to S3 Bucket

For demo purpose, we will create a sample HTML file and will upload in S3 and will access it from internet. This is the upload screen once we click on the Upload button.

Upload File of AWS S3
Upload File of AWS S3

I have created one html file index.html and uploaded in the S3. This only contains some static text. The content of the page is very simple as below. Feel free to use any static content such as CSS files, images or browser scripts.

<!DOCTYPE html>
<html>
<head>
<meta charset="ISO-8859-1">
<title>Insert title here</title>
</head>
<body>
	<h2>Hi, Welcome to AWS S3 world!!!</h2>
</body>
</html>

After uploading the screen will look like this.

File Uploaded on S3
File Uploaded on S3

Test the Uploaded File

Now we will try to access the HTML file from internet. To do that first we need to know the address of this page. We need to go to the details of the object by clicking on the link of the object. The details screen will look like below.

Uploaded File Details with URL
Uploaded File Details with URL

Now click on the link in a separate tab and you can expect one 403 forbidden error. As in AWS everything is private and secure by default. Now we need to set permission to enable the public access of this file to the outside world.

Access Denied Error
Access Denied Error

Enable Public Access to Objects

Now in order to make this file accessible to the outside world, we need to make this file public.

It is also very simple, just click on Make public button in the top to make this file public, so that everyone can access this from outside world. Once we have make this link public, let’s again try to access this from a separate tab to see if it is accessible.

AWS S3 File Accessed From Internet
AWS S3 File Accessed From Internet

Congratulations !!! You have successfully set up our first static website in S3 by just clicking on couple of buttons.

Please feel free to give your comment if you face any difficulty here, we will be happy to look into the problem.

Happy Learning !!