Chris Mendez in AWS, For Developers

Creating a subdomain redirect using AWS S3 and Rules

When you first create an AWS account, Amazon gives you a funky looking sign-in URL like this.

https://10203373.signin.aws.amazon.com/console

Thankfully AWS allows you to customize the URL in a human readable way.

https://acme.signin.aws.amazon.com/console

Sadly, I still can't remember a URL like this so I decided to create a subdomain redirect. Some people also prefer to call this a "subdomain forward".

By the end of this article, I will share how to create an even prettier looking redirect using a custom subdomain looks like this.

http://aws.acme.com

acme-signin-console


This blogy entry uses these three AWS services.
three-services


Step 1 - Get Your Sign-In Link

Go to your AWS IAM Dashboard and look for "IAM users sign-in link". I am going to change mine to be acme.

Step 2 - Create an S3 Bucket

Go to AWS S3 and create a new bucket. You MUST name it the short URL you intend to use it for. So for example, my bucket will be named aws.acme.com.

create-a-bucket

Step 3 - Turn Your S3 Bucket into a Host

S3 buckets are unique in that you can turn them into static hosts. It's like having a micro web server with it's own URL. You do this by first going to properties and clicking "Static Web Hosting".

go-to-properties

Type in index.html into the field Index document.

create-static-hosting

Next, pase this XML inside the textarea titled Redirection rules.
redirection-urles

<RoutingRules>
  <RoutingRule>
    <Redirect>
      <Protocol>https</Protocol>
      <HostName>replace-replace-this-with-your-name.signin.aws.amazon.com</HostName>
      <ReplaceKeyPrefixWith>console/</ReplaceKeyPrefixWith>
      <HttpRedirectCode>301</HttpRedirectCode>
    </Redirect>
  </RoutingRule>
</RoutingRules>

This is the configuration file that will create a permanent redirect. A few things to note:

  • AWS sign-in requires https.
  • Your hostname is the new sign-in link name you created.
  • Providing a 301 code means the redirect will be permanent.

Step 4 - Update your DNS with Route 53

I use AWS Route 53 to manage my DNS. If you use something like Cloudflare, skip to "Updating your DNS with Cloudflare".

A - Create a Record Set

First create a record set.
create-a-record

B - Create an A Record with an Alias

Route 53 is unique and without getting into too many details, you'll want create A record then check "Alias" = "Yes".

Within "Alias Target", you should see the S3 bucket you created.

create-a-alias-record

Step 5 - You're done.


Update your DNS with Cloudflare

If you don't use Route 53, you'll want to create a CNAME record instead of an A record. It's still pretty simple.

aws.cloudflare


Resources