<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>Forem: ash🇨🇦</title>
    <description>The latest articles on Forem by ash🇨🇦 (@ashtoronto).</description>
    <link>https://forem.com/ashtoronto</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F154210%2F58038f88-370d-47f4-baf0-7d448359e89e.jpeg</url>
      <title>Forem: ash🇨🇦</title>
      <link>https://forem.com/ashtoronto</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://forem.com/feed/ashtoronto"/>
    <language>en</language>
    <item>
      <title>First client contract - Need Help with Real Estate with RETs</title>
      <dc:creator>ash🇨🇦</dc:creator>
      <pubDate>Mon, 30 Sep 2019 18:48:30 +0000</pubDate>
      <link>https://forem.com/ashtoronto/first-client-contract-need-help-with-real-estate-with-rets-4la8</link>
      <guid>https://forem.com/ashtoronto/first-client-contract-need-help-with-real-estate-with-rets-4la8</guid>
      <description>&lt;h3&gt;
  
  
  How do I integrate RETs mls listings into my solution?
&lt;/h3&gt;

&lt;p&gt;I'm doing a contract for a Real-Estate company and basically have to integrate a solution to list all MLS real estate listings on a page. There are other specs as well but they aren't an issue. I'm building with RoR (with pg) and deploying with AWS elastic beanstalk (EC2). &lt;/p&gt;

&lt;p&gt;Initially I thought I was going to use a simple API endpoint which had some json data but this isn't available in the Real Estate industry. Instead I had to access the IDX solutions through which I have to use RETs, a database for MLS listings. However I'm so confused as to how I should integrate RETs and what it exactly is? &lt;/p&gt;

&lt;p&gt;If there are any Devs with Real Estate experience, can you please help me understand how to integrate this? &lt;/p&gt;

&lt;p&gt;I'm currently looking at alternatives like &lt;a href="https://simplyrets.com/"&gt;https://simplyrets.com/&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Thanks in Advance.   &lt;/p&gt;

</description>
      <category>help</category>
      <category>webdev</category>
    </item>
    <item>
      <title>AWS Static Website Hosting for beginners Part 2 Setting up a Domain</title>
      <dc:creator>ash🇨🇦</dc:creator>
      <pubDate>Mon, 16 Sep 2019 21:21:25 +0000</pubDate>
      <link>https://forem.com/exampro/aws-static-website-hosting-for-beginners-part-2-setting-up-a-domain-4jif</link>
      <guid>https://forem.com/exampro/aws-static-website-hosting-for-beginners-part-2-setting-up-a-domain-4jif</guid>
      <description>&lt;h3&gt;
  
  
  Register a Domain - Static Website Hosting Part 2
&lt;/h3&gt;

&lt;p&gt;This is part 2 of Static Website Hosting for beginners. In the first section we setup a basic website with a AWS generated url. In this section we will replace that URL with our own domain.  &lt;/p&gt;

&lt;p&gt;Checkout Part 1 if you haven't done so.&lt;/p&gt;


&lt;div class="ltag__link"&gt;
  &lt;a href="/exampro" class="ltag__link__link"&gt;
    &lt;div class="ltag__link__org__pic"&gt;
      &lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--u3BjsfYf--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://res.cloudinary.com/practicaldev/image/fetch/s--pI3gGaJR--/c_fill%2Cf_auto%2Cfl_progressive%2Ch_150%2Cq_auto%2Cw_150/https://dev-to-uploads.s3.amazonaws.com/uploads/organization/profile_image/626/cd978307-4684-4756-8cd3-74ada97b0c65.png" alt="ExamPro" width="150" height="150"&gt;
      &lt;div class="ltag__link__user__pic"&gt;
        &lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--ivnBf4ec--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://res.cloudinary.com/practicaldev/image/fetch/s--qO1JjcVy--/c_fill%2Cf_auto%2Cfl_progressive%2Ch_150%2Cq_auto%2Cw_150/https://dev-to-uploads.s3.amazonaws.com/uploads/user/profile_image/154210/58038f88-370d-47f4-baf0-7d448359e89e.jpeg" alt="" width="150" height="150"&gt;
      &lt;/div&gt;
    &lt;/div&gt;
  &lt;/a&gt;
  &lt;a href="/exampro/aws-static-website-hosting-for-beginners-5hl5" class="ltag__link__link"&gt;
    &lt;div class="ltag__link__content"&gt;
      &lt;h2&gt;AWS Static Website Hosting for beginners Part 1&lt;/h2&gt;
      &lt;h3&gt;ash🇨🇦 for ExamPro ・ May 19 '19&lt;/h3&gt;
      &lt;div class="ltag__link__taglist"&gt;
        &lt;span class="ltag__link__tag"&gt;#beginners&lt;/span&gt;
        &lt;span class="ltag__link__tag"&gt;#aws&lt;/span&gt;
        &lt;span class="ltag__link__tag"&gt;#career&lt;/span&gt;
        &lt;span class="ltag__link__tag"&gt;#webdev&lt;/span&gt;
      &lt;/div&gt;
    &lt;/div&gt;
  &lt;/a&gt;
&lt;/div&gt;


&lt;p&gt;To host your static site on AWS, the first thing you need to do is register a domain for it. This can be done in multiple different ways. "Registering" a domain basically means claiming ownership of it for a specified period of time.&lt;/p&gt;

&lt;p&gt;The bucket names we use must match the names of the website that we are going to be hosting. For example, to host your example.com website on Amazon S3, you would create a bucket named example.com. To host a website under &lt;a href="http://www.example.com"&gt;www.example.com&lt;/a&gt;, you would name the bucket &lt;a href="http://www.example.com"&gt;www.example.com&lt;/a&gt;. &lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;In the AWS console, dropdown the 'services' table and navigate to route 53 &lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--xUnTczM7--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://s3.amazonaws.com/exampro/workshops/swh/images/register-domain/1.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--xUnTczM7--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://s3.amazonaws.com/exampro/workshops/swh/images/register-domain/1.png" alt='""' width="800" height="451"&gt;&lt;/a&gt;&lt;/p&gt;




&lt;ul&gt;
&lt;li&gt;&lt;p&gt;If you don't already have a domain name you can purchase one directly from here &lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Type in a domain name of your choice and choose a TLD (top-level-domain) e.g .com&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Check to view availability of the domain&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Different TLD's have different costs associated with them e.g .com vs .ninja&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--mDiL-mYa--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://s3.amazonaws.com/exampro/workshops/swh/images/register-domain/3.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--mDiL-mYa--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://s3.amazonaws.com/exampro/workshops/swh/images/register-domain/3.png" alt='""' width="800" height="431"&gt;&lt;/a&gt;&lt;/p&gt;




&lt;ul&gt;
&lt;li&gt;&lt;p&gt;Once you've found an available domain that you like, add it to your Route 53 cart and click "Continue"&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Follow the next few steps and complete your purchase of the domain.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--HI7keJ7S--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://s3.amazonaws.com/exampro/workshops/swh/images/register-domain/4.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--HI7keJ7S--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://s3.amazonaws.com/exampro/workshops/swh/images/register-domain/4.png" alt='""' width="800" height="433"&gt;&lt;/a&gt;&lt;/p&gt;




&lt;ul&gt;
&lt;li&gt;It should now be listed in your route 53 console list&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Alternative: Importing from a third party domain-provider
&lt;/h3&gt;

&lt;p&gt;If you were like me and got a domain from freenom.com or any other third party domain-provider, do the following: &lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--MGr4nMj---/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://s3.amazonaws.com/exampro/workshops/swh/images/register-domain/8.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--MGr4nMj---/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://s3.amazonaws.com/exampro/workshops/swh/images/register-domain/8.png" alt="" width="800" height="449"&gt;&lt;/a&gt;&lt;/p&gt;




&lt;ul&gt;
&lt;li&gt;&lt;p&gt;Go to Route 53 and select "create a new hosted zone"&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;In the form field, enter the domain name you own e.g "yourDomain.com"&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Leave the "Type" as public and create&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;




&lt;ul&gt;
&lt;li&gt;Open up your new hosted zone and copy your Name server values &lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--tOrpEo5f--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://s3.amazonaws.com/exampro/workshops/swh/images/register-domain/9.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--tOrpEo5f--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://s3.amazonaws.com/exampro/workshops/swh/images/register-domain/9.png" alt="" width="800" height="411"&gt;&lt;/a&gt;&lt;/p&gt;




&lt;ul&gt;
&lt;li&gt;Paste your name server values within the domain providers custom name server settings so that the DNS resolution can be passed in AWS hosted zone&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--VMHkN27o--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://s3.amazonaws.com/exampro/workshops/swh/images/register-domain/10.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--VMHkN27o--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://s3.amazonaws.com/exampro/workshops/swh/images/register-domain/10.png" alt="" width="800" height="453"&gt;&lt;/a&gt;&lt;/p&gt;




&lt;h3&gt;
  
  
  Create a Wildcard Certificate
&lt;/h3&gt;

&lt;p&gt;We now need to setup a SSL certificate so that our domain is secure and verified &lt;/p&gt;




&lt;ul&gt;
&lt;li&gt;In the AWS console search for "ACM", stands for: AWS Certificate Manager. This is where all your SSL certificates are going to be maintained.&lt;/li&gt;
&lt;/ul&gt;




&lt;ul&gt;
&lt;li&gt;Click "Request a Certificate"&lt;/li&gt;
&lt;/ul&gt;




&lt;ul&gt;
&lt;li&gt;On the subsequent page select "Request a Public Certificate"&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--X0JUjqWR--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://s3.amazonaws.com/exampro/workshops/swh/images/wildcard-acm/req-a-cert.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--X0JUjqWR--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://s3.amazonaws.com/exampro/workshops/swh/images/wildcard-acm/req-a-cert.png" alt="" width="800" height="430"&gt;&lt;/a&gt;&lt;/p&gt;




&lt;ul&gt;
&lt;li&gt;&lt;p&gt;In the domain name text field, we are going to enter a wildcard domain. Enter your newly purchased domain name but add&lt;br&gt;
&lt;br&gt;
&lt;code&gt;*.&lt;/code&gt;&lt;br&gt;
&lt;br&gt;
at the front e.g *.silver-stack-solutions.com &lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Wildcards handle subdomains for you. This means that&lt;br&gt;
&lt;br&gt;
&lt;code&gt;www.&lt;/code&gt;&lt;br&gt;
&lt;br&gt;
will be handled as part of the wildcard for our domain&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Tip: Using the "add another domain" button, you can add protect multiple domain addresses to a single ACM. Wildcards only protect your domain name and any prefix placed before it. They don'y actually protect the naked domain e.g silver-stack-solutions.com is not protected but &lt;a href="http://www.silver-stack-solutions.com"&gt;www.silver-stack-solutions.com&lt;/a&gt; is. We will get more in to this concept later on in the tutorial series, specifically when we handle redirects. &lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;




&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--trUpTFP3--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://s3.amazonaws.com/exampro/workshops/swh/images/wildcard-acm/acm-add-domain-name.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--trUpTFP3--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://s3.amazonaws.com/exampro/workshops/swh/images/wildcard-acm/acm-add-domain-name.png" alt="" width="800" height="441"&gt;&lt;/a&gt;&lt;/p&gt;




&lt;ul&gt;
&lt;li&gt;Click "Next"&lt;/li&gt;
&lt;/ul&gt;




&lt;ul&gt;
&lt;li&gt;You will now be on a page showing two options. Checkmark the "DNS validation"&lt;/li&gt;
&lt;/ul&gt;




&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--OYxD6Ox5--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://s3.amazonaws.com/exampro/workshops/swh/images/wildcard-acm/dns-validation.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--OYxD6Ox5--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://s3.amazonaws.com/exampro/workshops/swh/images/wildcard-acm/dns-validation.png" alt="" width="800" height="433"&gt;&lt;/a&gt;&lt;/p&gt;




&lt;ul&gt;
&lt;li&gt;Carry on and click "Review"&lt;/li&gt;
&lt;/ul&gt;




&lt;ul&gt;
&lt;li&gt;On the last set-up page click "Confirm and Request" after skimming over your details&lt;/li&gt;
&lt;/ul&gt;




&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--22I9oWAF--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://s3.amazonaws.com/exampro/workshops/swh/images/wildcard-acm/review.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--22I9oWAF--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://s3.amazonaws.com/exampro/workshops/swh/images/wildcard-acm/review.png" alt="" width="800" height="433"&gt;&lt;/a&gt;&lt;/p&gt;




&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--l1l_kC8W--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://s3.amazonaws.com/exampro/workshops/swh/images/wildcard-acm/req-in-progress.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--l1l_kC8W--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://s3.amazonaws.com/exampro/workshops/swh/images/wildcard-acm/req-in-progress.png" alt="" width="800" height="432"&gt;&lt;/a&gt;&lt;/p&gt;




&lt;ul&gt;
&lt;li&gt;You should now have your wildcard domain listed in your ACM console that is pending validation&lt;/li&gt;
&lt;/ul&gt;




&lt;h3&gt;
  
  
  Verify Ownership of Domain Certificate
&lt;/h3&gt;




&lt;ul&gt;
&lt;li&gt;&lt;p&gt;From your ACM console select your certificate and expand it by clicking on the dropdown arrow&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;You should see a big blue button saying "Create Record in Route 53", click it&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Each record contains information about how you want to route traffic for one domain (such as example.com) or subdomain (such as &lt;a href="http://www.example.com"&gt;www.example.com&lt;/a&gt; or test.example.com). Records are stored in the hosted zone for your domain.&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--c4EfbsJX--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://s3.amazonaws.com/exampro/workshops/swh/images/verify-acm/1.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--c4EfbsJX--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://s3.amazonaws.com/exampro/workshops/swh/images/verify-acm/1.png" alt="" width="800" height="490"&gt;&lt;/a&gt;&lt;/p&gt;




&lt;ul&gt;
&lt;li&gt;&lt;p&gt;A modal will open showing you details of your DNS record for domain validation&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Simply click "Create" &lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--KeTnCLCg--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://s3.amazonaws.com/exampro/workshops/swh/images/verify-acm/2.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--KeTnCLCg--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://s3.amazonaws.com/exampro/workshops/swh/images/verify-acm/2.png" alt="" width="800" height="282"&gt;&lt;/a&gt;&lt;/p&gt;




&lt;ul&gt;
&lt;li&gt;&lt;p&gt;Wait patiently as this may take a little while&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;By the end of it, you should have an issued ACM for your domain. It should be listed in your ACM console as status: "issued"&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Repeat the process a second time and issue a second ACM except this time, don't make it a wildcard, just use the bare naked domain i.e yourDomain.com (or if you have already don so by adding another domain to your existing certificate, skip this step)&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;




&lt;ul&gt;
&lt;li&gt;Having the wildcard ACM certificate is essential for our next step in CloudFront distribution&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  &lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--jZzerDrm--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://s3.amazonaws.com/exampro/workshops/swh/images/verify-acm/5.png" alt="" width="800" height="427"&gt;
&lt;/h2&gt;

&lt;h3&gt;
  
  
  Create a CloudFront Distribution
&lt;/h3&gt;

&lt;p&gt;This will do two things: make your website load fast anywhere in the world and allow you to use HTTPS, the secure version of HTTP. Just like S3 is organised into "buckets", CloudFront is organised into "distributions". You need to create a distribution for your website and point it at your S3 bucket, so that it can use the contents of your S3 bucket.&lt;/p&gt;




&lt;ul&gt;
&lt;li&gt;Navigate to CloudFront &lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--RwpaCnTl--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://s3.amazonaws.com/exampro/workshops/swh/images/cloudfront/create-distribution/1.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--RwpaCnTl--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://s3.amazonaws.com/exampro/workshops/swh/images/cloudfront/create-distribution/1.png" alt="" width="800" height="494"&gt;&lt;/a&gt;&lt;/p&gt;




&lt;ul&gt;
&lt;li&gt;Click on the "Create Distribution" button to get started, and select that you want a Web distribution, instead of RTMP.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--u5UITbWa--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://s3.amazonaws.com/exampro/workshops/swh/images/cloudfront/create-distribution/2.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--u5UITbWa--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://s3.amazonaws.com/exampro/workshops/swh/images/cloudfront/create-distribution/2.png" alt="" width="800" height="458"&gt;&lt;/a&gt;&lt;/p&gt;




&lt;ul&gt;
&lt;li&gt;&lt;p&gt;You should now see a long form with multiple configuration options.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Select the dropdown for "Origin Domain Name".&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;You should see your S3 buckets listed. Do NOT select any of these&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--62svbbpU--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://s3.amazonaws.com/exampro/workshops/swh/images/cloudfront/create-distribution/3.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--62svbbpU--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://s3.amazonaws.com/exampro/workshops/swh/images/cloudfront/create-distribution/3.png" alt="" width="800" height="511"&gt;&lt;/a&gt;&lt;/p&gt;




&lt;ul&gt;
&lt;li&gt;Instead you will need to copy the endpoint of your S3 bucket, located in the S3 properties tab under static web hosting&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--aXf1R9iI--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://s3.amazonaws.com/exampro/workshops/swh/images/cloudfront/create-distribution/4.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--aXf1R9iI--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://s3.amazonaws.com/exampro/workshops/swh/images/cloudfront/create-distribution/4.png" alt="" width="800" height="916"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;Find the endpoint URL in the "Static Website Hosting" section of the properties and paste that into the "Origin Default Name" field. Remove the "http://" from the front of the endpoint. The origin ID text field will auto generate your S3 bucket name in the text field.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;In the "Viewer protocol policy" options, checkmark the "Redirect HTTP to HTTPS"&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--da7LLLC6--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://s3.amazonaws.com/exampro/workshops/swh/images/cloudfront/create-distribution/5.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--da7LLLC6--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://s3.amazonaws.com/exampro/workshops/swh/images/cloudfront/create-distribution/5.png" alt="" width="800" height="517"&gt;&lt;/a&gt;&lt;/p&gt;




&lt;ul&gt;
&lt;li&gt;&lt;p&gt;The next field we need to fill out is "Alternate Domain Names (CNAMEs)" &lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Enter your domain name into the CNAME field, for example, "&lt;a href="http://www.ashwinkhanna.tk"&gt;www.ashwinkhanna.tk&lt;/a&gt;"&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;This should match your bucket name&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Below the CNAME we need to link it with the appropriate ACM certificate, checkmark the "Custom SSL certificate" option&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;A dropdown with all your ACM certificates will be listed, choose the appropriate certificate. If your CNAME has &lt;a href="http://www"&gt;www&lt;/a&gt;. then you should select the wildcard ACM we generated in the last section.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;In the dropdown text field, select your newly created public wildcard certificate &lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--b2UAxn9n--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://s3.amazonaws.com/exampro/workshops/swh/images/cloudfront/create-distribution/6.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--b2UAxn9n--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://s3.amazonaws.com/exampro/workshops/swh/images/cloudfront/create-distribution/6.png" alt="" width="800" height="451"&gt;&lt;/a&gt;&lt;/p&gt;




&lt;ul&gt;
&lt;li&gt;&lt;p&gt;Scroll further down the form and find the "Default Root Object" field and enter "index.html"&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Click "Create Distribution"&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--Xv5KHro1--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://s3.amazonaws.com/exampro/workshops/swh/images/cloudfront/create-distribution/7.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--Xv5KHro1--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://s3.amazonaws.com/exampro/workshops/swh/images/cloudfront/create-distribution/7.png" alt="" width="800" height="475"&gt;&lt;/a&gt;&lt;/p&gt;




&lt;ul&gt;
&lt;li&gt;Go back to your CloudFront console. You should now see the distribution status in progress. The deployment can take anywhere from 5 to 20 mins, just be patient.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--Xv5KHro1--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://s3.amazonaws.com/exampro/workshops/swh/images/cloudfront/create-distribution/7.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--Xv5KHro1--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://s3.amazonaws.com/exampro/workshops/swh/images/cloudfront/create-distribution/7.png" alt="" width="800" height="475"&gt;&lt;/a&gt;&lt;/p&gt;




&lt;ul&gt;
&lt;li&gt;Once the progress is completed, the distribution status should be "enabled&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--Il_imk_o--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://s3.amazonaws.com/exampro/workshops/swh/images/cloudfront/create-distribution/9.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--Il_imk_o--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://s3.amazonaws.com/exampro/workshops/swh/images/cloudfront/create-distribution/9.png" alt="" width="800" height="258"&gt;&lt;/a&gt;&lt;/p&gt;




&lt;h3&gt;
  
  
  Point Domain to CloudFront
&lt;/h3&gt;




&lt;ul&gt;
&lt;li&gt;Navigate back to Route 53 and select hosted zone&lt;/li&gt;
&lt;/ul&gt;




&lt;ul&gt;
&lt;li&gt;We need to add a new record set to point to CloudFront&lt;/li&gt;
&lt;li&gt;Click on "Create Record Set"&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--LZqJYhaO--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://s3.amazonaws.com/exampro/workshops/swh/images/cloudfront/point-route53-cloudfront/1.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--LZqJYhaO--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://s3.amazonaws.com/exampro/workshops/swh/images/cloudfront/point-route53-cloudfront/1.png" alt="" width="800" height="487"&gt;&lt;/a&gt;&lt;/p&gt;




&lt;ul&gt;
&lt;li&gt;&lt;p&gt;In the "Name" text field set our domain with prefix www&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;In the "Type" dropdown field select "A-iPv4 address"&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;There's an "Alias" field below with two options&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Select "Yes" &lt;/li&gt;
&lt;li&gt;This will cause the "Alias Target" field to appear&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;
&lt;li&gt;

&lt;p&gt;Over here we need to paste in the cloudfront domain name, it will end with a .net&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;To find the cloudfront domain name, go to the CloudFront console and click into your newly listed distribution, you should be taken to the details page. Copy your domain name field from here and paste it into the"Alias target"&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--Wm1WS4a8--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://s3.amazonaws.com/exampro/workshops/swh/images/cloudfront/point-route53-cloudfront/3.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--Wm1WS4a8--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://s3.amazonaws.com/exampro/workshops/swh/images/cloudfront/point-route53-cloudfront/3.png" alt="" width="800" height="484"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt; "Create" the new record&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--bKQf1DYy--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://s3.amazonaws.com/exampro/workshops/swh/images/cloudfront/point-route53-cloudfront/2.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--bKQf1DYy--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://s3.amazonaws.com/exampro/workshops/swh/images/cloudfront/point-route53-cloudfront/2.png" alt="" width="800" height="481"&gt;&lt;/a&gt;&lt;/p&gt;




&lt;ul&gt;
&lt;li&gt;&lt;p&gt;This may take a little while to create because DNS uses a technique called caching to avoid overloading the system&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Enter in your domain into your web browser&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;It should open up your website with "https://" at the start of the URL&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--a_CvTk1p--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://s3.amazonaws.com/exampro/workshops/swh/images/cloudfront/point-route53-cloudfront/4.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--a_CvTk1p--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://s3.amazonaws.com/exampro/workshops/swh/images/cloudfront/point-route53-cloudfront/4.png" alt="" width="800" height="444"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Notice that the URL is now our domain and not the old one generated for us by AWS&lt;/li&gt;
&lt;/ul&gt;




&lt;h3&gt;
  
  
  Conclusion
&lt;/h3&gt;




&lt;p&gt;I hope this tutorial was helpful to readers and expanded on the content of my first tutorial. In future I plan to also add tutorials on file transfer protocols to upload files to S3 using the AWS cli and Cloudfront cache invalidation. &lt;/p&gt;




</description>
      <category>beginners</category>
      <category>aws</category>
      <category>career</category>
      <category>webdev</category>
    </item>
    <item>
      <title>AWS Static Website Hosting for beginners Part 1</title>
      <dc:creator>ash🇨🇦</dc:creator>
      <pubDate>Sun, 19 May 2019 17:37:47 +0000</pubDate>
      <link>https://forem.com/exampro/aws-static-website-hosting-for-beginners-5hl5</link>
      <guid>https://forem.com/exampro/aws-static-website-hosting-for-beginners-5hl5</guid>
      <description>&lt;p&gt;Here's a quick guide to setup up a static website using AWS simple storage service (S3). This is the first part of a longer tutorial I'm working on (check it out at in the &lt;a href="https://www.exampro.co/"&gt;exampro&lt;/a&gt; workshops section.&lt;/p&gt;

&lt;p&gt;By the end of this short guide, you'll be set up with a live website that is referenced by an amazon generated URL. &lt;/p&gt;

&lt;p&gt;A great application for this tutorial is using it as a professional web resume. If you're job seeking in the webdev market, this is a great way to demonstrate to employers that you have exposure to AWS services. If you're into AWS you can use this guide as a hands-on lab to familiarise yourself with the console and build confidence.&lt;/p&gt;

&lt;h3&gt;
  
  
  Creating an S3 bucket
&lt;/h3&gt;

&lt;p&gt;Our first task in creating a static website is to set-up our S3 bucket. We can use the bucket to store files, images, audio recordings, etc. but in this tutorial we will use it to store our websites project files and then render them into the browser.&lt;/p&gt;




&lt;p&gt;Have a static template on hand. I've picked the following. Make sure you have an index.html and an error.html file in the root directory. Add some type of error message into the error.html file.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--3KKyutwY--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://s3.amazonaws.com/exampro/workshops/swh/images/static-website-hosting/bucket-policy/1.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--3KKyutwY--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://s3.amazonaws.com/exampro/workshops/swh/images/static-website-hosting/bucket-policy/1.png" alt='"File structure"' width="800" height="397"&gt;&lt;/a&gt;&lt;/p&gt;




&lt;ul&gt;
&lt;li&gt;Navigate to the S3 management console&lt;/li&gt;
&lt;li&gt;Click on the services dropdown tab in the top left corner&lt;/li&gt;
&lt;/ul&gt;




&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--D-n-2vtO--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://s3.amazonaws.com/exampro/workshops/swh/images/static-website-hosting/bucket-policy/2.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--D-n-2vtO--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://s3.amazonaws.com/exampro/workshops/swh/images/static-website-hosting/bucket-policy/2.png" alt="" width="800" height="453"&gt;&lt;/a&gt;&lt;/p&gt;




&lt;ul&gt;
&lt;li&gt;Type S3 into the search bar and select it from the search results&lt;/li&gt;
&lt;/ul&gt;




&lt;ul&gt;
&lt;li&gt;This should now open the S3 console page:&lt;/li&gt;
&lt;/ul&gt;




&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--uVLi3SvG--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://s3.amazonaws.com/exampro/workshops/swh/images/static-website-hosting/bucket-policy/3.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--uVLi3SvG--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://s3.amazonaws.com/exampro/workshops/swh/images/static-website-hosting/bucket-policy/3.png" alt="" width="800" height="434"&gt;&lt;/a&gt;&lt;/p&gt;




&lt;ul&gt;
&lt;li&gt;Go ahead and “Create bucket”&lt;/li&gt;
&lt;/ul&gt;




&lt;ul&gt;
&lt;li&gt;&lt;p&gt;Enter a bucket name. This will be used as your unique URL generated by AWS. Each bucket name must be unique because this is the URL associated with your website.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Add "&lt;a href="http://www."&gt;www.&lt;/a&gt;" to the beginning and ".com" (or whatever the suffix of your domain is) to the end of your bucket name. &lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--cES96Xhl--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://s3.amazonaws.com/exampro/workshops/swh/images/static-website-hosting/bucket-policy/4.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--cES96Xhl--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://s3.amazonaws.com/exampro/workshops/swh/images/static-website-hosting/bucket-policy/4.png" alt="" width="800" height="471"&gt;&lt;/a&gt;&lt;/p&gt;




&lt;ul&gt;
&lt;li&gt;Leave the configure options blank and hit "Next"&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--b9omN-1H--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://s3.amazonaws.com/exampro/workshops/swh/images/static-website-hosting/bucket-policy/5.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--b9omN-1H--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://s3.amazonaws.com/exampro/workshops/swh/images/static-website-hosting/bucket-policy/5.png" alt="" width="800" height="473"&gt;&lt;/a&gt;&lt;/p&gt;




&lt;ul&gt;
&lt;li&gt;&lt;p&gt;Uncheck both options under “Manage public bucket policies”&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Leave the ACL (access control list) options check marked&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--n7pQFaAl--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://s3.amazonaws.com/exampro/workshops/swh/images/static-website-hosting/bucket-policy/6.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--n7pQFaAl--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://s3.amazonaws.com/exampro/workshops/swh/images/static-website-hosting/bucket-policy/6.png" alt="" width="800" height="473"&gt;&lt;/a&gt;&lt;/p&gt;




&lt;ul&gt;
&lt;li&gt;Your review page now looks like this. Hit “Create Bucket”&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--VsEaWthK--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://s3.amazonaws.com/exampro/workshops/swh/images/static-website-hosting/bucket-policy/7.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--VsEaWthK--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://s3.amazonaws.com/exampro/workshops/swh/images/static-website-hosting/bucket-policy/7.png" alt="" width="800" height="474"&gt;&lt;/a&gt;&lt;/p&gt;




&lt;ul&gt;
&lt;li&gt;You will now have your domain/ bucket name listed under your S3 bucket list.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--85tCwxAi--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://s3.amazonaws.com/exampro/workshops/swh/images/static-website-hosting/bucket-policy/8.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--85tCwxAi--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://s3.amazonaws.com/exampro/workshops/swh/images/static-website-hosting/bucket-policy/8.png" alt="" width="800" height="404"&gt;&lt;/a&gt;&lt;/p&gt;




&lt;h3&gt;
  
  
  Enable Static Web Hosting
&lt;/h3&gt;

&lt;p&gt;We have our bucket listed in our S3 console. Notice that it is not set to public. We have to alter the bucket permissions and properties to make this happen.&lt;/p&gt;




&lt;ul&gt;
&lt;li&gt;Click into your newly created bucket name which should now be listed under S3 buckets and select the properties tab &lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--fdwJz4Mi--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://s3.amazonaws.com/exampro/workshops/swh/images/static-website-hosting/create-s3-bucket/1.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--fdwJz4Mi--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://s3.amazonaws.com/exampro/workshops/swh/images/static-website-hosting/create-s3-bucket/1.png" alt='""' width="800" height="407"&gt;&lt;/a&gt;&lt;/p&gt;




&lt;ul&gt;
&lt;li&gt;Click on the “Static website hosting” option which at the moment is disabled, we need to enable it&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--CAm9LbDE--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://s3.amazonaws.com/exampro/workshops/swh/images/static-website-hosting/create-s3-bucket/1.5.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--CAm9LbDE--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://s3.amazonaws.com/exampro/workshops/swh/images/static-website-hosting/create-s3-bucket/1.5.png" alt='""' width="800" height="270"&gt;&lt;/a&gt;&lt;/p&gt;




&lt;ul&gt;
&lt;li&gt;A modal should open after selecting “Static website hosting”.

&lt;ul&gt;
&lt;li&gt;Checkmark the “Use this bucket to host a website” option.&lt;/li&gt;
&lt;li&gt;Then fill in the index and error inputs with “index.html” and "error.html"&lt;/li&gt;
&lt;li&gt;Save the changes&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--dWsQ0YHU--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://s3.amazonaws.com/exampro/workshops/swh/images/static-website-hosting/create-s3-bucket/3.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--dWsQ0YHU--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://s3.amazonaws.com/exampro/workshops/swh/images/static-website-hosting/create-s3-bucket/3.png" alt='""' width="800" height="912"&gt;&lt;/a&gt;&lt;/p&gt;




&lt;ul&gt;
&lt;li&gt;In your overview properties tab, it should now show "Static website hosting" as enabled

&lt;ul&gt;
&lt;li&gt;We have officially set-up our bucket for static web hosting&lt;/li&gt;
&lt;li&gt;Next we need to set up “permissions” to allow read access to our files&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--yjZjxZWX--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://s3.amazonaws.com/exampro/workshops/swh/images/static-website-hosting/create-s3-bucket/4.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--yjZjxZWX--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://s3.amazonaws.com/exampro/workshops/swh/images/static-website-hosting/create-s3-bucket/4.png" alt='""' width="800" height="301"&gt;&lt;/a&gt;&lt;/p&gt;




&lt;h3&gt;
  
  
  Bucket policy
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;Select the “Permissions” tab, located beside properties.&lt;/li&gt;
&lt;li&gt;Then within permissions, choose the Bucket policy tab.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--gu6Am9LG--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://s3.amazonaws.com/exampro/workshops/swh/images/static-website-hosting/set-static-web-hosting/1.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--gu6Am9LG--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://s3.amazonaws.com/exampro/workshops/swh/images/static-website-hosting/set-static-web-hosting/1.png" alt='""' width="800" height="457"&gt;&lt;/a&gt;&lt;/p&gt;




&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;Within the bucket policy editor, paste the following lines of code&lt;/p&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;{
  "Version": "2012-10-17",
  "Statement": [
  {
    "Sid": "AllowPublicReadAccess",
    "Effect": "Allow",
    "Principal": "*",
    "Action": [
    "s3:GetObject"
    ],
    "Resource": [
    "arn:aws:s3:::www.silver-stack-solutions.com/*"
    ]
  }
  ]
}
&lt;/code&gt;&lt;/pre&gt;
&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Replace “www.silver-stack-solutions.com” with your own bucket name and "Save"&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;




&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--Rym98LhY--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://s3.amazonaws.com/exampro/workshops/swh/images/static-website-hosting/set-static-web-hosting/2.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--Rym98LhY--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://s3.amazonaws.com/exampro/workshops/swh/images/static-website-hosting/set-static-web-hosting/2.png" alt='""' width="800" height="446"&gt;&lt;/a&gt;&lt;/p&gt;




&lt;ul&gt;
&lt;li&gt;&lt;p&gt;It’s normal that you get a warning message: “You’ve given public access to your bucket”. This allows read access to our index.html file&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Navigate back to the S3 console. Your AWS S3 console should list your bucket as "Public" now&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--obqrQJg7--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://s3.amazonaws.com/exampro/workshops/swh/images/static-website-hosting/set-static-web-hosting/3.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--obqrQJg7--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://s3.amazonaws.com/exampro/workshops/swh/images/static-website-hosting/set-static-web-hosting/3.png" alt='""' width="800" height="446"&gt;&lt;/a&gt;&lt;/p&gt;




&lt;h3&gt;
  
  
  Upload content
&lt;/h3&gt;




&lt;ul&gt;
&lt;li&gt;Click back into your S3 bucket and select the “upload option”&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--GCKWDHXj--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://s3.amazonaws.com/exampro/workshops/swh/images/static-website-hosting/upload-content/1.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--GCKWDHXj--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://s3.amazonaws.com/exampro/workshops/swh/images/static-website-hosting/upload-content/1.png" alt='"upload"' width="800" height="422"&gt;&lt;/a&gt;&lt;/p&gt;




&lt;ul&gt;
&lt;li&gt;Drag and drop your project files and upload them&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--za1aJr6---/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://s3.amazonaws.com/exampro/workshops/swh/images/static-website-hosting/upload-content/2.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--za1aJr6---/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://s3.amazonaws.com/exampro/workshops/swh/images/static-website-hosting/upload-content/2.png" alt='"upload"' width="800" height="482"&gt;&lt;/a&gt;&lt;/p&gt;




&lt;ul&gt;
&lt;li&gt;Once finished, your project files should be in your bucket&lt;/li&gt;
&lt;/ul&gt;




&lt;h3&gt;
  
  
  View website
&lt;/h3&gt;

&lt;p&gt;We've completed setting up our bucket and giving it permissions. We can now access our content from the web browser.&lt;/p&gt;




&lt;ul&gt;
&lt;li&gt;Navigate into your S3 bucket 

&lt;ul&gt;
&lt;li&gt;Click into your index.html file&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--VgngFZsM--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://s3.amazonaws.com/exampro/workshops/swh/images/static-website-hosting/view-website/1.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--VgngFZsM--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://s3.amazonaws.com/exampro/workshops/swh/images/static-website-hosting/view-website/1.png" alt='""' width="800" height="483"&gt;&lt;/a&gt;&lt;/p&gt;




&lt;ul&gt;
&lt;li&gt;Notice this URL, it is the endpoint for your static website. Go ahead and click into it.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--W-vfdmLc--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://s3.amazonaws.com/exampro/workshops/swh/images/static-website-hosting/view-website/2.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--W-vfdmLc--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://s3.amazonaws.com/exampro/workshops/swh/images/static-website-hosting/view-website/2.png" alt='""' width="800" height="481"&gt;&lt;/a&gt;&lt;/p&gt;




&lt;ul&gt;
&lt;li&gt;&lt;p&gt;The object URL is affiliated to your bucket name but generated as an AWS resource URL. We can change this by importing a pre-purchased domain name or buying one directly from aws route53 (not covered here). &lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;If everything went well, you should be able to view your newly created website. If you encountered any problems, you will be directed to the error.html file.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--L0Se0XeZ--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://s3.amazonaws.com/exampro/workshops/swh/images/static-website-hosting/view-website/3.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--L0Se0XeZ--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://s3.amazonaws.com/exampro/workshops/swh/images/static-website-hosting/view-website/3.png" alt='""' width="800" height="385"&gt;&lt;/a&gt;&lt;/p&gt;




&lt;h3&gt;
  
  
  Conclusion
&lt;/h3&gt;




&lt;p&gt;I hope this tutorial was helpful to readers. It's my first tutorial post to dev.to so if you followed along let me know how I did.  &lt;/p&gt;




&lt;p&gt;If you liked this article, check out another ExamPro article by our UX Engineer Karan. It's also his first post so share some encouragement:&lt;br&gt;&lt;br&gt;
&lt;/p&gt;
&lt;div class="ltag__link"&gt;
  &lt;a href="/exampro" class="ltag__link__link"&gt;
    &lt;div class="ltag__link__org__pic"&gt;
      &lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--u3BjsfYf--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://res.cloudinary.com/practicaldev/image/fetch/s--pI3gGaJR--/c_fill%2Cf_auto%2Cfl_progressive%2Ch_150%2Cq_auto%2Cw_150/https://dev-to-uploads.s3.amazonaws.com/uploads/organization/profile_image/626/cd978307-4684-4756-8cd3-74ada97b0c65.png" alt="ExamPro" width="150" height="150"&gt;
      &lt;div class="ltag__link__user__pic"&gt;
        &lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--mtwHCVdZ--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://res.cloudinary.com/practicaldev/image/fetch/s--Pxfaba0o--/c_fill%2Cf_auto%2Cfl_progressive%2Ch_150%2Cq_auto%2Cw_150/https://dev-to-uploads.s3.amazonaws.com/uploads/user/profile_image/156154/ce150b0d-920e-4bfa-8811-5f283f160e1b.jpeg" alt="" width="150" height="150"&gt;
      &lt;/div&gt;
    &lt;/div&gt;
  &lt;/a&gt;
  &lt;a href="/exampro/aws-free-ui-kit-on-adobe-xd-496h" class="ltag__link__link"&gt;
    &lt;div class="ltag__link__content"&gt;
      &lt;h2&gt;AWS Quickly Build Architectural Diagrams on Adobe XD&lt;/h2&gt;
      &lt;h3&gt;Karan Balaji 🇨🇦 for ExamPro ・ May 20 '19&lt;/h3&gt;
      &lt;div class="ltag__link__taglist"&gt;
        &lt;span class="ltag__link__tag"&gt;#aws&lt;/span&gt;
        &lt;span class="ltag__link__tag"&gt;#tutorial&lt;/span&gt;
        &lt;span class="ltag__link__tag"&gt;#productivity&lt;/span&gt;
        &lt;span class="ltag__link__tag"&gt;#webdev&lt;/span&gt;
      &lt;/div&gt;
    &lt;/div&gt;
  &lt;/a&gt;
&lt;/div&gt;





&lt;p&gt;Part 2 is about setting up your own Domain&lt;/p&gt;


&lt;div class="ltag__link"&gt;
  &lt;a href="/exampro" class="ltag__link__link"&gt;
    &lt;div class="ltag__link__org__pic"&gt;
      &lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--u3BjsfYf--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://res.cloudinary.com/practicaldev/image/fetch/s--pI3gGaJR--/c_fill%2Cf_auto%2Cfl_progressive%2Ch_150%2Cq_auto%2Cw_150/https://dev-to-uploads.s3.amazonaws.com/uploads/organization/profile_image/626/cd978307-4684-4756-8cd3-74ada97b0c65.png" alt="ExamPro" width="150" height="150"&gt;
      &lt;div class="ltag__link__user__pic"&gt;
        &lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--ivnBf4ec--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://res.cloudinary.com/practicaldev/image/fetch/s--qO1JjcVy--/c_fill%2Cf_auto%2Cfl_progressive%2Ch_150%2Cq_auto%2Cw_150/https://dev-to-uploads.s3.amazonaws.com/uploads/user/profile_image/154210/58038f88-370d-47f4-baf0-7d448359e89e.jpeg" alt="" width="150" height="150"&gt;
      &lt;/div&gt;
    &lt;/div&gt;
  &lt;/a&gt;
  &lt;a href="/exampro/aws-static-website-hosting-for-beginners-part-2-setting-up-a-domain-4jif" class="ltag__link__link"&gt;
    &lt;div class="ltag__link__content"&gt;
      &lt;h2&gt;AWS Static Website Hosting for beginners Part 2 Setting up a Domain&lt;/h2&gt;
      &lt;h3&gt;ash🇨🇦 for ExamPro ・ Sep 16 '19&lt;/h3&gt;
      &lt;div class="ltag__link__taglist"&gt;
        &lt;span class="ltag__link__tag"&gt;#beginners&lt;/span&gt;
        &lt;span class="ltag__link__tag"&gt;#aws&lt;/span&gt;
        &lt;span class="ltag__link__tag"&gt;#career&lt;/span&gt;
        &lt;span class="ltag__link__tag"&gt;#webdev&lt;/span&gt;
      &lt;/div&gt;
    &lt;/div&gt;
  &lt;/a&gt;
&lt;/div&gt;


</description>
      <category>beginners</category>
      <category>aws</category>
      <category>career</category>
      <category>webdev</category>
    </item>
    <item>
      <title>6 months after graduating Lighthouse Labs, a reflection on full stack developer bootcamp</title>
      <dc:creator>ash🇨🇦</dc:creator>
      <pubDate>Thu, 11 Apr 2019 17:45:23 +0000</pubDate>
      <link>https://forem.com/ashtoronto/6-months-after-graduating-lighthouse-labs-a-reflection-on-full-stack-developer-bootcamp-3d0a</link>
      <guid>https://forem.com/ashtoronto/6-months-after-graduating-lighthouse-labs-a-reflection-on-full-stack-developer-bootcamp-3d0a</guid>
      <description>&lt;h2&gt;
  
  
  Why did I want to join?
&lt;/h2&gt;

&lt;p&gt;A little about myself, I came from a non-tech background. I didn't know basic html/css, nor did I know how to operate a terminal. I had experience in the start-up industry and mostly in business development. Like a lot of people, I wanted a career change and the ability to innovate all my cool start-up ideas.  &lt;/p&gt;

&lt;p&gt;At the time, I was working overseas and came to Toronto specifically to take this course and find myself a relevant job in full-stack web development. I found it to be a challenging 14 week course that tested my ability to learn and implement. &lt;/p&gt;

&lt;h2&gt;
  
  
  Reality vs Expectation
&lt;/h2&gt;

&lt;p&gt;Before my first lecture, I was expected to have knowledge of github (version control) and basic html/css and Javascript. The bottom line is that you need to be able to teach yourself or you won't be getting much value from a bootcamp.&lt;/p&gt;

&lt;p&gt;Many of the things that I learnt over the course of 14 weeks made me feel competent as someone who can code and build a web app. I was introduced to postgres, react and express which quickly became my goto tools for full-stack development. &lt;/p&gt;

&lt;p&gt;However as soon I graduated and started job seeking and going through coding challenges, everything changed. It was soul crushing searching for a job where you compete against university certified engineers or developers with years of experience. Every job had vastly different tech stacks and my goto tools started becoming rusty as I had to allocate time in learning the technologies relevant for the job.&lt;/p&gt;

&lt;p&gt;The biggest shock to me though was my lack of competency in devops and the need for it at most full-stack jobs. A lot of what I had learned at bootcamp was geared towards building apps for the development environment but I wasn't taught enough to actually be able to deliver and maintain a scalable and production level solution. I had limited exposure to both heroku and aws, which I feel in hindsight are fundamentals.   &lt;/p&gt;

&lt;h3&gt;
  
  
  Getting a job vs reality
&lt;/h3&gt;

&lt;p&gt;I was told that I would be getting a job within 3 months of graduating. Didn't happen that way. Just because you know how things work doesn't make you qualified to do the job. 14 weeks doesn't make you a web developer, it's an unrealistic target for most people. &lt;/p&gt;

&lt;p&gt;I was put in touch with multiple employers but most of the time the issues were very similar. The employers had unrealistic expectations from bootcamp grads. I remember I was once sent for an interview with a company that had a "wheel of fortune" type app. The problem was that they weren't even interested in hiring a web developer, they wanted someone for IOS. So there was a mismatch in networking which was super frustrating at times.&lt;/p&gt;

&lt;p&gt;Most of the jobs that I applied for outside the bootcamp network, felt like I was punching well above my weight. One such example was when I applied and got interviewed by IBM, hardest coding interview I did, they ended up going for an engineering grad for the full-stack position. I would say of the 19 people who were part of my bootcamp class, 4 dropped out, 3 got jobs right after graduating, the rest had to really struggle to find their feet and not everyone got a job in full-stack development.  &lt;/p&gt;

&lt;h2&gt;
  
  
  Was it worth it?
&lt;/h2&gt;

&lt;p&gt;Absolutely! It cost me time and money ($8K CAD) but I did get enough knowledge and hands on experience to get involved in the industry.&lt;/p&gt;

&lt;p&gt;The networking aspect of the bootcamp was excellent despite mismatching me most of the time. I ended up leveraging the network I built at Lighthouse Labs and continue to rely on it today. Through the bootcamps network, I ended up meeting a ton of interesting people and finally got working for ExamPro, in a very cool hybrid role.&lt;/p&gt;

&lt;p&gt;Those devops skills that I lacked in bootcamp are precisely what I get to work on and learn daily. 6 months after graduating, I realised most of what you learn will be through work experience and networking. The benefit of a bootcamp is only to help get you a foot in the door. &lt;/p&gt;

</description>
      <category>beginners</category>
      <category>career</category>
      <category>webdev</category>
      <category>discuss</category>
    </item>
  </channel>
</rss>
