<?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>DEV Community: Hiroko Nishimura</title>
    <description>The latest articles on DEV Community by Hiroko Nishimura (@hiro).</description>
    <link>https://dev.to/hiro</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%2F134468%2F401d3919-f9e7-4ee3-aa9c-5d425bca6cc7.jpeg</url>
      <title>DEV Community: Hiroko Nishimura</title>
      <link>https://dev.to/hiro</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/hiro"/>
    <language>en</language>
    <item>
      <title>Thank you so much for this great review of "AWS for Non-Engineers"!!</title>
      <dc:creator>Hiroko Nishimura</dc:creator>
      <pubDate>Wed, 01 Oct 2025 16:26:43 +0000</pubDate>
      <link>https://dev.to/hiro/thank-you-so-much-for-this-great-review-of-aws-for-non-engineers-3jd8</link>
      <guid>https://dev.to/hiro/thank-you-so-much-for-this-great-review-of-aws-for-non-engineers-3jd8</guid>
      <description>&lt;p&gt;

&lt;/p&gt;
&lt;div class="ltag__link--embedded"&gt;
  &lt;div class="crayons-story "&gt;
  &lt;a href="https://dev.to/starkydevs/book-review-aws-for-non-engineers-by-hiroko-nishimura-3998" class="crayons-story__hidden-navigation-link"&gt;Book Review: AWS for Non-Engineers by Hiroko Nishimura&lt;/a&gt;


  &lt;div class="crayons-story__body crayons-story__body-full_post"&gt;
    &lt;div class="crayons-story__top"&gt;
      &lt;div class="crayons-story__meta"&gt;
        &lt;div class="crayons-story__author-pic"&gt;

          &lt;a href="/starkydevs" class="crayons-avatar  crayons-avatar--l  "&gt;
            &lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F1897354%2F842e280f-505d-459f-993a-b6173749e288.png" alt="starkydevs profile" class="crayons-avatar__image"&gt;
          &lt;/a&gt;
        &lt;/div&gt;
        &lt;div&gt;
          &lt;div&gt;
            &lt;a href="/starkydevs" class="crayons-story__secondary fw-medium m:hidden"&gt;
              Starky Paulino
            &lt;/a&gt;
            &lt;div class="profile-preview-card relative mb-4 s:mb-0 fw-medium hidden m:inline-block"&gt;
              
                Starky Paulino
                
              
              &lt;div id="story-author-preview-content-1973475" class="profile-preview-card__content crayons-dropdown branded-7 p-4 pt-0"&gt;
                &lt;div class="gap-4 grid"&gt;
                  &lt;div class="-mt-4"&gt;
                    &lt;a href="/starkydevs" class="flex"&gt;
                      &lt;span class="crayons-avatar crayons-avatar--xl mr-2 shrink-0"&gt;
                        &lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F1897354%2F842e280f-505d-459f-993a-b6173749e288.png" class="crayons-avatar__image" alt=""&gt;
                      &lt;/span&gt;
                      &lt;span class="crayons-link crayons-subtitle-2 mt-5"&gt;Starky Paulino&lt;/span&gt;
                    &lt;/a&gt;
                  &lt;/div&gt;
                  &lt;div class="print-hidden"&gt;
                    
                      Follow
                    
                  &lt;/div&gt;
                  &lt;div class="author-preview-metadata-container"&gt;&lt;/div&gt;
                &lt;/div&gt;
              &lt;/div&gt;
            &lt;/div&gt;

          &lt;/div&gt;
          &lt;a href="https://dev.to/starkydevs/book-review-aws-for-non-engineers-by-hiroko-nishimura-3998" class="crayons-story__tertiary fs-xs"&gt;&lt;time&gt;Aug 26 '24&lt;/time&gt;&lt;span class="time-ago-indicator-initial-placeholder"&gt;&lt;/span&gt;&lt;/a&gt;
        &lt;/div&gt;
      &lt;/div&gt;

    &lt;/div&gt;

    &lt;div class="crayons-story__indention"&gt;
      &lt;h2 class="crayons-story__title crayons-story__title-full_post"&gt;
        &lt;a href="https://dev.to/starkydevs/book-review-aws-for-non-engineers-by-hiroko-nishimura-3998" id="article-link-1973475"&gt;
          Book Review: AWS for Non-Engineers by Hiroko Nishimura
        &lt;/a&gt;
      &lt;/h2&gt;
        &lt;div class="crayons-story__tags"&gt;
        &lt;/div&gt;
      &lt;div class="crayons-story__bottom"&gt;
        &lt;div class="crayons-story__details"&gt;
          &lt;a href="https://dev.to/starkydevs/book-review-aws-for-non-engineers-by-hiroko-nishimura-3998" class="crayons-btn crayons-btn--s crayons-btn--ghost crayons-btn--icon-left"&gt;
            &lt;div class="multiple_reactions_aggregate"&gt;
              &lt;span class="multiple_reactions_icons_container"&gt;
                  &lt;span class="crayons_icon_container"&gt;
                    &lt;img src="https://assets.dev.to/assets/sparkle-heart-5f9bee3767e18deb1bb725290cb151c25234768a0e9a2bd39370c382d02920cf.svg" width="18" height="18"&gt;
                  &lt;/span&gt;
              &lt;/span&gt;
              &lt;span class="aggregate_reactions_counter"&gt;1&lt;span class="hidden s:inline"&gt; reaction&lt;/span&gt;&lt;/span&gt;
            &lt;/div&gt;
          &lt;/a&gt;
            &lt;a href="https://dev.to/starkydevs/book-review-aws-for-non-engineers-by-hiroko-nishimura-3998#comments" class="crayons-btn crayons-btn--s crayons-btn--ghost crayons-btn--icon-left flex items-center"&gt;
              Comments


              &lt;span class="hidden s:inline"&gt;Add Comment&lt;/span&gt;
            &lt;/a&gt;
        &lt;/div&gt;
        &lt;div class="crayons-story__save"&gt;
          &lt;small class="crayons-story__tertiary fs-xs mr-2"&gt;
            5 min read
          &lt;/small&gt;
            
              &lt;span class="bm-initial"&gt;
                

              &lt;/span&gt;
              &lt;span class="bm-success"&gt;
                

              &lt;/span&gt;
            
        &lt;/div&gt;
      &lt;/div&gt;
    &lt;/div&gt;
  &lt;/div&gt;
&lt;/div&gt;

&lt;/div&gt;




</description>
      <category>aws</category>
      <category>beginners</category>
      <category>discuss</category>
    </item>
    <item>
      <title>Nevertheless, Hiro Thrived</title>
      <dc:creator>Hiroko Nishimura</dc:creator>
      <pubDate>Mon, 09 Mar 2020 03:28:51 +0000</pubDate>
      <link>https://dev.to/hiro/nevertheless-hiro-thrived-4l79</link>
      <guid>https://dev.to/hiro/nevertheless-hiro-thrived-4l79</guid>
      <description>&lt;h2&gt;
  
  
  Arteriovenous Malformation
&lt;/h2&gt;

&lt;p&gt;A month after my 21st birthday, I was diagnosed with a rare vascular disorder called "&lt;strong&gt;Arteriovenous Malformation&lt;/strong&gt;." Arteriovenous Malformation - or AVM for short - is a vascular (blood vessel) disorder that can occur in any part of the body with blood vessels. It makes your blood vessels look like a bird's nest, with overgrown blood vessels creating a "tumor" of vessels.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Fgrxu2na6avbd51zg7zpr.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Fgrxu2na6avbd51zg7zpr.png" alt="Mayo Clinic" width="800" height="376"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;a href="https://www.mayoclinic.org/diseases-conditions/brain-avm/symptoms-causes/syc-20350260"&gt;Mayo Clinic&lt;/a&gt;



&lt;p&gt;As a result, you may have too much or too little blood flow in that area of the body. And in the worst case scenario, the blood vessels, with their thinner-than-normal walls, can rupture. When this happens in the brain, it's called a &lt;strong&gt;Subarachnoid Hemorrhage (SAH)&lt;/strong&gt;.... Also more commonly known as &lt;strong&gt;Stroke&lt;/strong&gt;. And that's where my AVMs were. In the &lt;strong&gt;left frontal lobe&lt;/strong&gt; of my brain. &lt;/p&gt;

&lt;p&gt;As you can imagine, it was quite a shock. To be told the moment you became a "legal adult" that you harbored a ticking time bomb in your brain, which could rupture at any moment. There's no known cause, and no prevention. Many people don't even realize they have one and live to a ripe old age and pass away peacefully.&lt;/p&gt;

&lt;p&gt;In my case, I had a relatively un-peaceful &lt;strong&gt;grand mal seizure&lt;/strong&gt; before my 21st birthday, and after months of testing, finally got my diagnosis. Half a year later, I had a craniotomy to remove not one, but three AVMs from my brain (apparently they didn't realize I had 3 until they opened me up).&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2F516rywwq27m74svaeq9g.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2F516rywwq27m74svaeq9g.jpg" alt="Hiro with scars from brain surgery" width="640" height="640"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Brain Injury
&lt;/h2&gt;

&lt;p&gt;My senior year of college was a bit too dramatic and exciting, to say the least. As a result, I developed &lt;strong&gt;Acquired Brain Injury&lt;/strong&gt; that caused a whole slew of issues, like &lt;strong&gt;Executive Function Disorder&lt;/strong&gt;, &lt;strong&gt;Anxiety Disorder&lt;/strong&gt;, &lt;strong&gt;Panic Disorder&lt;/strong&gt;, &lt;strong&gt;Sleep Disorder&lt;/strong&gt;, and &lt;strong&gt;Non-Epileptic Seizure Disorder&lt;/strong&gt; (triggered by my Anxiety Disorder). I probably had more diagnoses in the first year or two after surgery, but I can't keep track of them all.&lt;/p&gt;

&lt;p&gt;Suddenly, I went from a student who could push out a 10 page paper overnight and get an A to someone with such severe Executive Function Disorder that I couldn't even watch a 5 minute YouTube video without getting distracted.  Reading journal articles was almost impossible, and so was organizing my process and thoughts enough to do assignments. Everything I took for granted as a life-long nerd and "Gifted" student was suddenly gone. And I was left scrambling to figure out who this "new me" was, and how to best deal with the situation.&lt;/p&gt;

&lt;p&gt;My short-term memory was shot. My anxiety was out of the roof. I couldn't prioritize tasks to save my life. Everything you should have learned as you were growing up was gone. &lt;/p&gt;

&lt;p&gt;And yet, I managed. I managed to accommodate my schooling and my life so that I can function relatively reasonably. I graduated from college, and finished a master's degree. Both my bachelor's and master's degrees were for Special Education. I had put what I was learning to use: I was my very own Special Education student who needed support and accommodation to access my schooling. And my student had not only graduated college, but gotten a master's degree, too!&lt;/p&gt;

&lt;h2&gt;
  
  
  "You'll never be able to work or become independent!"
&lt;/h2&gt;

&lt;p&gt;In my last year of school, there was a buzz around me that was getting louder and louder. Adults around me telling me that I'll never be independent because of my disabilities. I'll never work full-time. I'll never be able to move out of my parents' house, and they will have to take care of me for the rest of my life. At some point, it got too loud. And the moment I graduated, I packed a duffel bag, backpack, suitcase, and my pillow, and got on a one-way $15 bus to New York City. &lt;/p&gt;

&lt;p&gt;I knew everything adults around me were saying were true.  I could barely drive. I was working part time at an acupuncturist's office, which was comfortable, and the doctor kind. I was living with my parents, because I was still barely able to physically take care of myself, much less earn enough of a living to support myself. I knew everything they were saying were true... Back home.  So I left. I left the security, comfort, and insulated bubble of the suburb that I grew up in, and left for the capital of the world.&lt;/p&gt;

&lt;h2&gt;
  
  
  Life in New York City
&lt;/h2&gt;

&lt;p&gt;I of course didn't have a job. I had negotiated a sublet for half a year, and decided that if I didn't find a job in that half year, I will go home. But at least I would have tried and failed. I figured having tried and failed is much better than having never tried, and spending my whole life wondering what would have happened if I had just &lt;em&gt;tried&lt;/em&gt;.&lt;/p&gt;

&lt;p&gt;I worked 2 days a week as a babysitter to pay my rent and daily expenses while applying to every job listing I could get my hands on that were anywhere remotely related to my interests. I was looking for jobs that dealt with &lt;strong&gt;Disability Advocacy&lt;/strong&gt;. New York is the mecca of nonprofit organizations! But I soon learned that 1) they aren't looking, 2) even if they were, they weren't paying very much, and 3) you better have a &lt;em&gt;connection&lt;/em&gt;.&lt;/p&gt;

&lt;h2&gt;
  
  
  Beginning Career in Tech
&lt;/h2&gt;

&lt;p&gt;Half a year and hundreds of resumes later, I had landed on a very random job that changed my life forever. My first full-time job (that paid less than minimum wage now) was a &lt;strong&gt;Junior IT Helpdesk Engineer&lt;/strong&gt; job. Never in my life did I think I would be working in a technical job. I was a &lt;em&gt;Special Education Teacher&lt;/em&gt;, for god's sake! But here I was, saying yes to a job I had 0 qualifications for, assuring myself that if it didn't work out, I'll just quit after the 3 month trial period and go back home.&lt;/p&gt;

&lt;p&gt;From there, I took a job as an &lt;strong&gt;IT Support Analyst&lt;/strong&gt; 10 months later, and 14 months later, moved on to a tech startup as a &lt;strong&gt;Technical Services Engineer&lt;/strong&gt;. My second job as an IT Support Analyst was extremely toxic, so I was very glad to have landed the TSE job. The team was great, the opportunities were great, and I began working with what I later began to understand as the &lt;strong&gt;~Cloud~&lt;/strong&gt;. Until then, most of what I worked with was legacy Windows Servers related infrastructure. At this tech startup, we were almost 100% committed to the Cloud, moving legacy equipment to the Cloud as well. And best of all, I was finally blessed with a team.&lt;/p&gt;

&lt;h2&gt;
  
  
  Rheumatoid Arthritis
&lt;/h2&gt;

&lt;p&gt;Everything wasn't great. The IT department was so understaffed that I quickly developed what was later diagnosed to be stress induced &lt;strong&gt;Rheumatoid Arthritis&lt;/strong&gt;.  It took me half a year to find a doctor that took me seriously and referred me to a Rheumatologist instead of a Psychologist. &lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Fzmexi40qy5po0k7otg49.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Fzmexi40qy5po0k7otg49.jpg" alt="Hiro's fingers, with swollen joints due to Rheumatoid Arthritis" width="800" height="800"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;My joints, ranging from my foot, elbow, shoulder, fingers, and even my jaw were affected, inflamed and locking up. I could barely get out of bed or open my bedroom door without tearing up in tears. Brushing my hair and changing into work clothes were enough to clench my teeth against the pain. &lt;/p&gt;

&lt;p&gt;And yet, I kept on working. As someone who was told that she can't work, I knew what privilege it was to have a job and be able to work. Besides, if I stopped working, I would lose my health insurance. And now was no time to lose my health insurance.&lt;/p&gt;

&lt;p&gt;After half a year of searching for answers, I finally received my diagnosis and a treatment plan. I've been on the chemotherapy pills for almost 3 years now, and they have been working great to keep most of my symptoms under control so that I can move around and work. The appointments and medications and blood tests cost me an arm and a leg, but I at least have a life.&lt;/p&gt;

&lt;h2&gt;
  
  
  Another Toxic Turn
&lt;/h2&gt;

&lt;p&gt;Two years into my tenure at the tech startup, almost everyone who was originally in my department were gone. The supportive community was no longer there, and the chain of command was replaced with people who were much more interested in the numbers and dollar signs than the employees.&lt;/p&gt;

&lt;p&gt;I lost the allies I had in my department, and after a year of stress and anxiety, where I developed insomnia and flare-ups of my arthritis, I finally "got the hint," and put in my notice. &lt;/p&gt;

&lt;h2&gt;
  
  
  Re-Launching as a Freepreneur
&lt;/h2&gt;

&lt;p&gt;Instead of finding another full-time job, I decided to really make changes in my life, and go &lt;strong&gt;freelance/self-employed&lt;/strong&gt;. The decision didn't come easily.  The "status quo" is to have a full-time job with full benefits until you're ready to retire, and then retire. As someone with multiple disabilities and acute health issues, I felt that perhaps I didn't have the luxury of "Working until I'm dead."  I needed to make a life change now, and it needed to make an impact.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2F9pumgeeht7cmkovxz848.jpeg" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2F9pumgeeht7cmkovxz848.jpeg" alt="Hiro recording at LinkedIn Learning HQ" width="800" height="600"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;For half a year before I quit, I had been working A LOT. I was working my full-time job, as well as creating courses for &lt;a href="https://linkedin-learning.pxf.io/azN2q"&gt;LinkedIn Learning&lt;/a&gt;. I was also babysitting, dogsiting, writing... Anything to bring in a few bucks here and there to pad my savings for pursuit of an "alternative" lifestyle. A lifestyle where I wasn't bound to the confines of "working full-time for the rest of my life and retiring at 75."&lt;/p&gt;

&lt;p&gt;As a result of a few years of conscious and deliberate saving and investing, I had a small nest egg to rely on if this "self-employment" business really flopped. And to tide me over until I found a full-time job, if needs be. I had also pared down my lifestyle to the point that if I didn't need to actively save more money, I could sustain myself on part-time work.&lt;/p&gt;

&lt;p&gt;In summer of 2019, I said "good bye" to my 3rd and final corporate job, and began my new career as a &lt;strong&gt;Technical Writer&lt;/strong&gt;, &lt;strong&gt;Technical Instructor&lt;/strong&gt;, and an Educational Consultant. &lt;/p&gt;

&lt;p&gt;I've been living this "part time work" with emphasis on my health for a little over half a year now.  After just a month of quitting corporate, 90% of my chronic pain were magically gone. My insomnia was almost immediately gone.&lt;/p&gt;

&lt;p&gt;After few months, I began actively exercising, and I'm feeling much, much better. I have also been blessed with amazing clients and work partners who have been actively supporting me through the transition, and I am also a proud Technical Instructor with four online courses hosted at LinkedIn Learning: &lt;strong&gt;&lt;a href="https://linkedin-learning.pxf.io/azN2q"&gt;Introduction to AWS for Non-Engineers 1~4&lt;/a&gt;&lt;/strong&gt;. &lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Fr9vg8xgp2o98woleuptz.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Fr9vg8xgp2o98woleuptz.jpg" alt="AWS Newbies" width="800" height="400"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;I also founded &lt;strong&gt;&lt;a href="https://cloudnewbies.com"&gt;Cloud Newbies&lt;/a&gt;&lt;/strong&gt;, a platform for "Cloud Newbies" and "Cloud Professionals" to mingle, ask questions about Cloud Computing, study for certifications together, and network. Exactly the kind of place &lt;em&gt;I&lt;/em&gt; was looking for when I first started looking into Cloud Computing.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;&lt;a href="https://awsnewbies.com"&gt;AWS Newbies&lt;/a&gt;&lt;/strong&gt;, my "first born child" is still going strong, and thanks to its existence and brand, I have been able to get many of my Technical Writing gigs.&lt;/p&gt;

&lt;h2&gt;
  
  
  Nevertheless, Hiro Thrived
&lt;/h2&gt;

&lt;p&gt;Once I recovered from my Brain Surgery, and began accommodating for my Brain Injury, "Surviving" wasn't enough for me. I wanted to &lt;em&gt;Thrive&lt;/em&gt;.  And I had to figure out how.&lt;/p&gt;

&lt;p&gt;There weren't any guidance. There weren't people who could tell me, "Oh, I've gone through what you've gone through. Here's what you should do!"&lt;/p&gt;

&lt;p&gt;Many of my achievements and accomplishments were product of "being at the right place at the right time." But even more important than being at the right place at the right time is the ability to say "WHY NOT!" and take the chance.  And I believe my ability today to work on contract and consulting gigs that I enjoy, and also make sure I get a 5 mile walk in every morning, and take every Monday and Friday off was a lot of luck, a lot of amazing people, and also a lot of taking charge and saying "Yes."&lt;/p&gt;

&lt;p&gt;Though the life I'm living now is very different from what I imagined going in to college, with dreams of becoming a Special Education Teacher, I love it. And though both the Tech Culture and my body has repeatedly caused pain and struggles, I am very glad to have all of the experiences and backgrounds that create "Me."&lt;/p&gt;

&lt;p&gt;I'm Hiro, I am a &lt;em&gt;disabled minority woman in tech&lt;/em&gt;, and &lt;strong&gt;Nevertheless, I am Thriving&lt;/strong&gt;.&lt;/p&gt;

</description>
      <category>wecoded</category>
    </item>
    <item>
      <title>Tips and Tricks for your first Tech Conference (AWS re:Invent)</title>
      <dc:creator>Hiroko Nishimura</dc:creator>
      <pubDate>Mon, 16 Dec 2019 21:41:22 +0000</pubDate>
      <link>https://dev.to/hiro/tips-and-tricks-for-your-first-tech-conference-aws-re-invent-2lam</link>
      <guid>https://dev.to/hiro/tips-and-tricks-for-your-first-tech-conference-aws-re-invent-2lam</guid>
      <description>&lt;p&gt;I attended &lt;strong&gt;AWS re:Invent&lt;/strong&gt; for the &lt;a rel="noreferrer noopener" href="https://hiroko.io/aws-reinvent-we-power-tech/"&gt;first time in 2019&lt;/a&gt;, and I had no idea what to expect, or how to pack.  But having spent a whole week in Vegas last week, I now know what I should and shouldn't pack for next time! Here are tips on what to pack and what to know for your first &lt;strong&gt;AWS re:Invent&lt;/strong&gt;!&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--JsTR_ISE--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://hiroko.io/wp-content/uploads/2019/12/reinventselfie800.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--JsTR_ISE--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://hiroko.io/wp-content/uploads/2019/12/reinventselfie800.jpg" alt="" width="800" height="600"&gt;&lt;/a&gt;&lt;em&gt;Selfie at check-in with my AWS re:Invent 2019 Hoodie!&lt;/em&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  This post was cross-posted from my blog: &lt;strong&gt;&lt;a href="https://hiroko.io/tips-for-first-aws-reinvent/"&gt;Tips for Your First re:Invent&lt;/a&gt;&lt;/strong&gt;
&lt;/h3&gt;

&lt;h2&gt;Packing 🎒 &lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;Pack a small, lightweight &lt;strong&gt;backpack&lt;/strong&gt; for daily use. It can even be a draw-string mesh bag! Something easily to transport when you're not using it, but very useful to keep both hands free and walk around crowded spaces.&lt;/li&gt;
&lt;li&gt;You don't need to pack enough &lt;strong&gt;shirts&lt;/strong&gt; for the whole week, because you'll get enough at the Expo Hall to last you a lifetime! (Ok, maybe not that many, but I promise you'll find 1 or 2 that you'll be ok with wearing in the later part of the week.)&lt;/li&gt;
&lt;li&gt;Pack a &lt;strong&gt;light jacket&lt;/strong&gt;! It's a desert, so it gets a tad chilly in the morning or night. (Though for re:Invent 2019, they gave us a sweater!)&lt;/li&gt;
&lt;li&gt;Wear comfortable &lt;strong&gt;walking shoes&lt;/strong&gt;. No, not the kinda-ok Vans or fancy heels or dress shoes. WALKING SHOES. I wore my pair of usually-pretty-comfy Vans, and I really regretted not wearing legitimate walking shoes. I was walking 6~8 miles a day! &lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Compression cubes&lt;/strong&gt; save the day! I finally bought some before this trip, and I was amazed at what they can do! It helps to compress the swag shirts, sweaters, and jackets they tend to give out for the trip home, too! There are tons of &lt;a rel="noreferrer noopener" href="https://amzn.to/38KbobM"&gt;&lt;strong&gt;compression cubes&lt;/strong&gt; available on Amazon&lt;/a&gt;, so I highly recommend checking them out before your next trip! I was &lt;em&gt;impressed&lt;/em&gt;!&lt;/li&gt;
&lt;li&gt;Pack a &lt;strong&gt;charging block&lt;/strong&gt; for your phone! You're going to be on the go for most of the week, so it'll be rare for you to be next to an outlet that you can sit by for half an hour as your phone charges. Make sure you have a portable charger to keep your phone alive all day! If you aren't sure which to buy, the &lt;strong&gt;&lt;a href="https://amzn.to/34r01SL" rel="noreferrer noopener"&gt;Anker&lt;/a&gt;&lt;/strong&gt; brand always has solid batteries!&lt;/li&gt;
&lt;li&gt;Pack a light, packable &lt;strong&gt;&lt;a rel="noreferrer noopener" href="https://amzn.to/38TCFZE"&gt;Duffel Bag&lt;/a&gt;&lt;/strong&gt;, and make sure you have an extra luggage tag. You'll definitely end up coming home with more things than you started out with, and the last thing you want to do is to have to go purchase a new piece of luggage just so you can take the loot home. I went to AWS re:Invent with a backpack and a rolling luggage.. No checked bags... I returned from re:Invent with a duffel, backpack, and a checked-in rolling baggage 🧳&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--i-jgbTCa--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://hiroko.io/wp-content/uploads/2019/12/duffel1.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--i-jgbTCa--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://hiroko.io/wp-content/uploads/2019/12/duffel1.jpg" alt="" width="800" height="600"&gt;&lt;/a&gt;&lt;em&gt;A duffel I received at the AWS Community Leaders event that came in handy when it was time to pack for home&lt;/em&gt; 😓 &lt;/p&gt;

&lt;p&gt;I actually recorded a "&lt;strong&gt;&lt;a rel="noreferrer noopener" href="https://www.youtube.com/watch?v=O1ww1fyGM7w"&gt;Packing for AWS re:Invent 2019&lt;/a&gt;&lt;/strong&gt;" video and uploaded it before I left, but there were definitely things I packed that I didn't need, and things I wish I'd brought, but didn't.&lt;/p&gt;

&lt;p&gt;&lt;iframe width="710" height="399" src="https://www.youtube.com/embed/O1ww1fyGM7w"&gt;
&lt;/iframe&gt;
&lt;/p&gt;
&lt;em&gt;Pack With Me! AWS re:Invent 2019 (Carry-On Luggage)&lt;/em&gt;



&lt;h2&gt;Eating 🍔 &lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;You get fed lunch, and a lot of venues and events have food or snacks. Keep yourself fed, because it's easy to miss meal times when you're roaming the Expo Hall or going to panels.&lt;/li&gt;
&lt;li&gt;Bring or buy snacks to munch on throughout the day. You'll be walking... A LOT. There are also snacks all over the convention venues for free at certain times. I'd sneak in a bite or two whenever possible to keep your caloric intake positive.&lt;/li&gt;
&lt;li&gt;Bring a light &lt;strong&gt;water bottle&lt;/strong&gt;. There are not as many places to refill your bottle as you think there would be for convention centers so large. Remember to hydrate 💦  If you forget to take water back to the hotel, at mine, they were selling bottles of water for $4 each... Yikes. At re:Invent 2019, they gave us a water bottle, but I don't think that's an annual thing. I would personally go with a &lt;strong&gt;&lt;a rel="noreferrer noopener" href="https://amzn.to/34pYcWq"&gt;Foldable Water Bottle&lt;/a&gt;&lt;/strong&gt; or a &lt;strong&gt;&lt;a rel="noreferrer noopener" href="https://amzn.to/36yuNuy"&gt;Collapsible Water Bottle&lt;/a&gt;&lt;/strong&gt; so you can slip it into your backpack when not in use without taking up too much space.&lt;/li&gt;
&lt;li&gt;I thought I would be spending A LOT on food over the week. In reality, yes. Food &lt;em&gt;is&lt;/em&gt; expensive in Vegas, but you have so many opportunities to eat for free that I only had to pay for few meals. Coffee, however, is another story, and oh boy. The prices on those puppies are more than Disney World of New York City...&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Recommendation: &lt;/strong&gt;If you can, go off the Strip! There is Chinatown close by with delicious food, and I had amazing Japanese and Vietnamese food. The price is much lower, too! &lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--xGpLrpTU--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://hiroko.io/wp-content/uploads/2019/12/vietnamese.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--xGpLrpTU--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://hiroko.io/wp-content/uploads/2019/12/vietnamese.jpg" alt="" width="800" height="600"&gt;&lt;/a&gt;&lt;em&gt;Delicious Vietnamese food I had at &lt;a rel="noreferrer noopener" href="https://www.yelp.com/biz/district-one-las-vegas"&gt;&lt;strong&gt;District One&lt;/strong&gt;&lt;/a&gt;&lt;/em&gt;&lt;/p&gt;

&lt;h2&gt;Transportation 🚘 &lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Free Shuttles&lt;/strong&gt; are &lt;em&gt;NOT&lt;/em&gt; available to all hotels! Only "campus venues" (aka: hotels where there are re:Invent events going on) have shuttle access. Make sure you check out the campus map beforehand to know where the closest shuttle is! I didn't realize a hotel with a shuttle was right next to my own, so I spent a lot of money on Uber! You can find the Shuttle schedules and routes here: &lt;strong&gt;&lt;a rel="noreferrer noopener" href="https://reinvent.awsevents.com/around/"&gt;AWS re:Invent Travel Options&lt;/a&gt;&lt;/strong&gt;.&lt;/li&gt;
&lt;li&gt;Make sure you have a &lt;strong&gt;ride-share app&lt;/strong&gt; downloaded just in case you are at a hotel without shuttles, or in case you want to go somewhere or come back late at night. Hopefully, you don't have to use it very often, but it's good to have at the palm of your hand.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;Other Stuff 📝 &lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;Print &lt;strong&gt;business cards&lt;/strong&gt;! I know, I know. You can just share your LinkedIn/Twitter/E-mail address! But there's something nice when you are all in a rush, and you can just hand them a card with your contact information on it so they can get back to you later!&lt;/li&gt;
&lt;li&gt;Be picky about the swag you accept! Chances are, no matter how choosey you are, once you get back to the hotel and go through your loot, or once you go home after the long week, you'll wonder why you bothered taking that really ugly shirt home. Prevent waste and just don't pick up things that you aren't sure you'll use or want!&lt;/li&gt;
&lt;li&gt;Also be picky about what events you attend! It's hard to say no when everyone's going, or it's a huge event like re:Play or Keynotes, but listen to your body! It's an extremely overwhelming week, and it's impossible to hit &lt;em&gt;everything&lt;/em&gt;. I missed a few major events (like re:Play), but I don't regret it one bit, because it allowed me to sleep, recharge, and get ready for the rest of the week!&lt;/li&gt;
&lt;li&gt;Get &lt;strong&gt;AWS Certified&lt;/strong&gt;! It doesn't really matter what certification it is - as a matter of fact, go get your &lt;strong&gt;&lt;a rel="noreferrer noopener" href="https://introtoaws.com"&gt;AWS Cloud Practitioner Certification&lt;/a&gt;&lt;/strong&gt; - I can help with that! If you have any active certification, you get special swag and ability to go into the &lt;strong&gt;AWS Certification Lounge&lt;/strong&gt; at most AWS events (including the Summits). This means you'll have food, drinks, and place to chill for a while as you charge your phone.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--K8Z7xG7U--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://hiroko.io/wp-content/uploads/2019/12/certified.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--K8Z7xG7U--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://hiroko.io/wp-content/uploads/2019/12/certified.jpg" alt="" width="800" height="600"&gt;&lt;/a&gt;&lt;em&gt;This year's swag from the &lt;strong&gt;AWS Certification Lounge&lt;/strong&gt; at re:Invent. &lt;/em&gt;&lt;/p&gt;

&lt;p&gt;I said no to a lot of swag, but in all, I received 1 Eddie Bauer winter jacket, 2 thin sports jackets, 1 sweater, 2 t-shirts, 1 water bottle, 1 charging block, 2 pairs of socks, 1 stuffed animal, 1 duffel bag, 1 pull-string backpack, 1 collapsible straw, and 2 hot sauces. Along with some miscellaneous small things like pins and stickers and thin books. &lt;/p&gt;

</description>
      <category>aws</category>
      <category>conference</category>
      <category>community</category>
      <category>developer</category>
    </item>
    <item>
      <title>AWS Cloud Career Training Programs from re:Invent 2019</title>
      <dc:creator>Hiroko Nishimura</dc:creator>
      <pubDate>Fri, 13 Dec 2019 15:54:31 +0000</pubDate>
      <link>https://dev.to/hiro/aws-cloud-career-training-programs-from-re-invent-2019-1n4f</link>
      <guid>https://dev.to/hiro/aws-cloud-career-training-programs-from-re-invent-2019-1n4f</guid>
      <description>&lt;p&gt;Last week, I spent a week in Las Vegas, attending &lt;strong&gt;AWS re:Invent 2019&lt;/strong&gt;.  I wrote a quick synopsis on how I, a bootstrapped freelancer, managed to make my way to the largest Cloud Conference in the world in a previous post: &lt;strong&gt;&lt;a href="https://hiroko.io/aws-reinvent-we-power-tech/"&gt;How I Attended AWS re:Invent 2019: #WePowerTech Grant&lt;/a&gt;&lt;/strong&gt;.  There is also a page on this blog that collects all of my &lt;strong&gt;AWS re:Invent&lt;/strong&gt; related posts &lt;strong&gt;&lt;a href="https://hiroko.io/aws-reinvent/"&gt;here&lt;/a&gt;&lt;/strong&gt;!&lt;/p&gt;

&lt;p&gt;As an &lt;strong&gt;educator&lt;/strong&gt; of multiple courses and founder of projects like &lt;strong&gt;&lt;a href="https://awsnewbies.com"&gt;awsnewbies&lt;/a&gt;&lt;/strong&gt;, career training and making technology accessible for people from &lt;em&gt;all&lt;/em&gt; backgrounds is a topic of great interest.  And I learned about a few organizations and initiatives that excited me, so I'm here to to share them with you!&lt;/p&gt;

&lt;blockquote&gt;If you haven't yet already, you can check out my online courses at &lt;strong&gt;LinkedIn Learning&lt;/strong&gt;: &lt;strong&gt;&lt;a href="https://introtoaws.com"&gt;"Introduction to AWS for Non-Engineers"&lt;/a&gt;&lt;/strong&gt;! It's a four-part video course series that will take you from &lt;em&gt;"What even IS the Cloud?"&lt;/em&gt; to understanding the fundamental principles of Cloud Computing and all of the core AWS Services and features! &lt;/blockquote&gt;

&lt;h4&gt;
  
  
  This post was cross-posted from my blog: &lt;a href="https://hiroko.io/aws-career-training-reinvent/"&gt;AWS Career Training Programs from re:Invent 2019!&lt;/a&gt;
&lt;/h4&gt;

&lt;blockquote&gt;You can also get a jump start with &lt;strong&gt;"&lt;a href="https://ebook.introtoaws.com"&gt;Intro to AWS for Newbies&lt;/a&gt;" &lt;/strong&gt;eBook, which will also start you from absolute ZERO to having your very own &lt;strong&gt;Amazon Web Services&lt;/strong&gt; account, knowing your way around it, and understanding the fundamentals of Cloud Concepts! For those of you exploring, &lt;strong&gt;&lt;a href="https://awsnewbies.com"&gt;awsnewbies&lt;/a&gt;&lt;/strong&gt; is my little corner of the web making AWS accessible to all new Cloud technologists!&lt;/blockquote&gt;

&lt;p&gt;Some of the programs and organizations I learned about at &lt;strong&gt;AWS re:Invent&lt;/strong&gt; &lt;strong&gt;2019 &lt;/strong&gt;were &lt;strong&gt;AWS Returners'&lt;/strong&gt;, &lt;strong&gt;AWS re/Start&lt;/strong&gt;, and &lt;strong&gt;Generation USA&lt;/strong&gt;. There are also multiple career training opportunities for &lt;strong&gt;Veterans&lt;/strong&gt;! I also learned about ways to begin working with Alexa Skills utilizing &lt;strong&gt;Alexa Skill Blueprints&lt;/strong&gt;, which allow you to build Alexa Skills with no coding!  Let's take a look!&lt;/p&gt;

&lt;h1&gt;
  
  
  ☁️  For Career Gaps ☁️
&lt;/h1&gt;

&lt;h3&gt;
  
  
  AWS Return to Work Program
&lt;/h3&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--x0O-SYnV--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://hiroko.io/wp-content/uploads/2019/12/returners.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--x0O-SYnV--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://hiroko.io/wp-content/uploads/2019/12/returners.jpg" alt="AWS Returners'" width="800" height="456"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;&lt;a href="https://www.amazon.jobs/en/landing_pages/AWS-returners"&gt;Amazon Web Services' Return to Work Program&lt;/a&gt;&lt;/strong&gt;, also known as &lt;strong&gt;&lt;a href="https://www.amazon.jobs/en/landing_pages/AWS-returners"&gt;AWS Returners'&lt;/a&gt;&lt;/strong&gt; is a permanent full-time program with enhanced on-boarding and support with career gaps of 2 years or more.  They are hiring across many functions such as Solutions Architecture, Customer Solutions Management, Business Development, and Technical Account Management.&lt;/p&gt;

&lt;p&gt;"Returners" will have a mentor who will coach assimilation challenges, and a hiring manager who will provide training support.  While there are not that many roles currently available in the program, I'd imagine they will begin expanding as the program matures!&lt;/p&gt;

&lt;h1&gt;
  
  
  ☁️  For Career Change ☁️
&lt;/h1&gt;

&lt;h3&gt;
  
  
  AWS re/Start
&lt;/h3&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--fDhwnsIw--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://hiroko.io/wp-content/uploads/2019/12/logo-aws-restart-2x.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--fDhwnsIw--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://hiroko.io/wp-content/uploads/2019/12/logo-aws-restart-2x.png" width="400" height="140"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;&lt;a rel="noreferrer noopener" href="https://aws.amazon.com/training/restart/"&gt;AWS re/Start&lt;/a&gt;&lt;/strong&gt; is a training and job placement program that began in the UK few years ago, and has finally made a landing in the US this past fall!  The program prepares unemployed and underemployed individuals for Cloud Computing related careers through classroom-based training.  This means that participants will be going to physical classrooms (imagine that!) to take part in this full-time, 12 weeks program.&lt;/p&gt;


&lt;blockquote class="ltag__twitter-tweet"&gt;
      &lt;div class="ltag__twitter-tweet__media"&gt;
        &lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--WVbkjHlc--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://pbs.twimg.com/media/C19jAQlXcAI3gVB.jpg" alt="unknown tweet media content"&gt;
      &lt;/div&gt;

  &lt;div class="ltag__twitter-tweet__main"&gt;
    &lt;div class="ltag__twitter-tweet__header"&gt;
      &lt;img class="ltag__twitter-tweet__profile-image" src="https://res.cloudinary.com/practicaldev/image/fetch/s--0ecspPbK--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://pbs.twimg.com/profile_images/907881675304181760/_ftIQb3v_normal.jpg" alt="AWS UK &amp;amp; Ireland profile image"&gt;
      &lt;div class="ltag__twitter-tweet__full-name"&gt;
        AWS UK &amp;amp; Ireland
      &lt;/div&gt;
      &lt;div class="ltag__twitter-tweet__username"&gt;
        @aws_uki
      &lt;/div&gt;
      &lt;div class="ltag__twitter-tweet__twitter-logo"&gt;
        &lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--ir1kO05j--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev.to/assets/twitter-f95605061196010f91e64806688390eb1a4dbc9e913682e043eb8b1e06ca484f.svg" alt="twitter logo"&gt;
      &lt;/div&gt;
    &lt;/div&gt;
    &lt;div class="ltag__twitter-tweet__body"&gt;
      Announcing AWS re:Start, a new training and job placement programme. Learn more: &lt;a href="https://t.co/PghlIY8n3A"&gt;aws-restart.com&lt;/a&gt; 
    &lt;/div&gt;
    &lt;div class="ltag__twitter-tweet__date"&gt;
      09:54 AM - 12 Jan 2017
    &lt;/div&gt;


    &lt;div class="ltag__twitter-tweet__actions"&gt;
      &lt;a href="https://twitter.com/intent/tweet?in_reply_to=819482551064662016" class="ltag__twitter-tweet__actions__button"&gt;
        &lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--fFnoeFxk--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev.to/assets/twitter-reply-action-238fe0a37991706a6880ed13941c3efd6b371e4aefe288fe8e0db85250708bc4.svg" alt="Twitter reply action"&gt;
      &lt;/a&gt;
      &lt;a href="https://twitter.com/intent/retweet?tweet_id=819482551064662016" class="ltag__twitter-tweet__actions__button"&gt;
        &lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--k6dcrOn8--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev.to/assets/twitter-retweet-action-632c83532a4e7de573c5c08dbb090ee18b348b13e2793175fea914827bc42046.svg" alt="Twitter retweet action"&gt;
      &lt;/a&gt;
      &lt;a href="https://twitter.com/intent/like?tweet_id=819482551064662016" class="ltag__twitter-tweet__actions__button"&gt;
        &lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--SRQc9lOp--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev.to/assets/twitter-like-action-1ea89f4b87c7d37465b0eb78d51fcb7fe6c03a089805d7ea014ba71365be5171.svg" alt="Twitter like action"&gt;
      &lt;/a&gt;
    &lt;/div&gt;
  &lt;/div&gt;
&lt;/blockquote&gt;


&lt;p&gt;This &lt;strong&gt;FREE&lt;/strong&gt; program also provides resume and interview coaching to prepare for the transition into the workplace, and partners with potential employers interested in hiring junior cloud practitioners.&lt;/p&gt;

&lt;p&gt;To qualify, the candidate must have:
&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Full-time availability for 12 weeks to attend training&lt;/li&gt;
&lt;li&gt;Ability to start a full-time job after course completion&lt;/li&gt;
&lt;li&gt;Excitement to launch a career in cloud computing&lt;/li&gt;
&lt;li&gt;High school diploma or GED equivalent&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The &lt;a href="https://aws.amazon.com/blogs/apn/aws-re-start-creates-new-career-paths-in-cloud-computing-for-non-traditional-job-candidates/"&gt;first cohort of 25 students in Atlanta, Dallas, and Miami&lt;/a&gt; finished up their course study and went into employment in August, 2019.  I can't wait to see how this program grows!&lt;/p&gt;

&lt;h3&gt;
  
  
  Generation USA
&lt;/h3&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s---q6yoWXE--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://hiroko.io/wp-content/uploads/2019/12/generation.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s---q6yoWXE--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://hiroko.io/wp-content/uploads/2019/12/generation.jpg" width="800" height="450"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;I've been told that currently, the &lt;strong&gt;AWS re/Start&lt;/strong&gt; program sources candidates from a partner non-profit, called &lt;strong&gt;&lt;a href="https://usa.generation.org/"&gt;Generation USA&lt;/a&gt;&lt;/strong&gt;.  Generation USA is a nonprofit that helps prepare underemployed and unemployed young people for the workforce by training them for entry-level jobs.&lt;/p&gt;

&lt;p&gt;The program spans many major cities, and some smaller ones, and provides job training for Cloud Support, Construction, Hospitality, Restaurant Service Associate, Machine Operator, Banker, and many more positions.&lt;/p&gt;

&lt;p&gt;You can apply for the AWS re/Start program by going to Generation USA's website, and clicking on the "Cloud Support" program. It seems like currently, it's available in Atlanta, Dallas, Miami, and New York City, though I have strong hopes that it'll expand rapidly!&lt;/p&gt;

&lt;h1&gt;
  
  
  ☁️  For Veterans ☁️
&lt;/h1&gt;

&lt;h3&gt;
  
  
  Amazon Technical Apprenticeship
&lt;/h3&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--8DKmvjZs--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://hiroko.io/wp-content/uploads/2019/12/veterans.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--8DKmvjZs--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://hiroko.io/wp-content/uploads/2019/12/veterans.jpg" width="800" height="267"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;The &lt;strong&gt;&lt;a href="https://aws.amazon.com/careers/military/"&gt;Amazon Technical Apprenticeship&lt;/a&gt;&lt;/strong&gt; creates pathways to careers in Cloud Computing for military Veterans, keeping to the promise Amazon made in 2016 to hire and train military veterans and spouses. Their skill gap training and apprenticeship programs help transitioning service members and spouses develop AWS software department, support, or data center operations roles.&lt;/p&gt;

&lt;h3&gt;
  
  
  AWS Educate for Veterans
&lt;/h3&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--HysGbSqL--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://hiroko.io/wp-content/uploads/2019/12/veteraneducate.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--HysGbSqL--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://hiroko.io/wp-content/uploads/2019/12/veteraneducate.jpg" width="800" height="453"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;&lt;a href="https://aws.amazon.com/education/awseducate/veterans/" rel="noreferrer noopener"&gt;AWS Educate&lt;/a&gt;&lt;/strong&gt; provides U.S. Veterans credits and training to help them choose their desired cloud career with personalized career training path that includes content, knowledge checks, and badging.  Veterans may also be eligible for certification exam reimbursement!  &lt;strong&gt;AWS Educate&lt;/strong&gt; supports 10,000 US Veterans, transitioning military personnel, and their spouses to pursue jobs in Cloud Computing.&lt;/p&gt;

&lt;h1&gt;
  
  
  ☁️  For Learning ☁️
&lt;/h1&gt;

&lt;h3&gt;
  
  
  Amazon Alexa Skill Blueprints - Build No Code Alexa Skills
&lt;/h3&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--m5sF58sH--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://hiroko.io/wp-content/uploads/2019/12/alexa.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--m5sF58sH--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://hiroko.io/wp-content/uploads/2019/12/alexa.jpg" width="800" height="489"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;It's not really an overstatement to say that I screamed "WHAT?!" in middle of the Expo Hall when I learned about &lt;strong&gt;&lt;a href="https://blueprints.amazon.com/"&gt;Amazon Alexa Skills Blueprints&lt;/a&gt;&lt;/strong&gt;.  It is a &lt;strong&gt;no-code&lt;/strong&gt; way to create simple &lt;strong&gt;Alexa Skills&lt;/strong&gt;, and begin learning about how to create web apps. While you won't be coding any skills, you'll begin to understand how you create programs that respond to you in certain ways.&lt;/p&gt;

&lt;p&gt;It's simple to get started. You pick a "Blueprint," fill in the blanks, and use, share, or publish your new Alexa Skill!  You can even publish it on the Alexa Skills Store for other US-based customers to discover and use!  There are new Skill Blueprints &lt;a href="https://developer.amazon.com/blogs/alexa/post/9c7792fd-271d-4eac-a850-6257704142e4/now-anyone-can-use-alexa-skill-blueprints-to-create-and-publish-an-alexa-skill-in-minutes-with-no-coding-required-and-new-blueprints-for-content-creators-bloggers-and-organizations"&gt;built specifically for content creators, bloggers, and organizations&lt;/a&gt; to help reach audiences using Alexa.&lt;/p&gt;

&lt;p&gt;You, too, can become an "&lt;strong&gt;Alexa Skill Developer&lt;/strong&gt;"... Without writing a single line of code! How cool is that??&lt;/p&gt;

&lt;h3&gt;
  
  
  AWS Educate
&lt;/h3&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--YpWVOCkk--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://hiroko.io/wp-content/uploads/2019/12/awseducate.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--YpWVOCkk--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://hiroko.io/wp-content/uploads/2019/12/awseducate.jpg" width="880" height="329"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;&lt;a href="https://aws.amazon.com/education/awseducate/"&gt;AWS Educate&lt;/a&gt;&lt;/strong&gt; provides academic gateway for the next generation of IT and Cloud professionals by providing resources to students and educators around the globe to learn about Cloud Computing.  It hosts hundreds of thousands of students from more than 2,400 institutions, and provides resources for institutions, educators, and students. (I mentioned this program previously with its arm specifically curated for Veterans and spouses.)&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;AWS Educate&lt;/strong&gt; also has a &lt;em&gt;job board&lt;/em&gt; that helps students apply for thousands of cloud jobs and internships from Amazon and other companies around the globe.  Students and educators are eligible for &lt;strong&gt;FREE&lt;/strong&gt; AWS Credits, training, curated content, and collaboration tools.&lt;/p&gt;

&lt;h1&gt;
  
  
  ☁️  Any to Add? ☁️
&lt;/h1&gt;

&lt;p&gt;Did you learn about any other career training/placement programs and resources while at re:Invent? Or are you aware of any other programs, especially catered towards under-represented or marginalized groups of people? I'd LOVE to know so I can add them to this list! Please let me know in the comments! 😊 &lt;/p&gt;

&lt;blockquote&gt;Remember, you can find all of my &lt;strong&gt;AWS re:Invent 2019&lt;/strong&gt; related posts here: &lt;strong&gt;&lt;a href="https://hiroko.io/aws-reinvent/"&gt;https://hiroko.io/aws-reinvent/&lt;/a&gt;&lt;/strong&gt;
&lt;/blockquote&gt;

</description>
      <category>career</category>
      <category>aws</category>
      <category>diversity</category>
      <category>inclusion</category>
    </item>
    <item>
      <title>How I Attended AWS re:Invent 2019 for Free</title>
      <dc:creator>Hiroko Nishimura</dc:creator>
      <pubDate>Tue, 10 Dec 2019 23:27:00 +0000</pubDate>
      <link>https://dev.to/hiro/how-i-attended-aws-re-invent-2019-for-free-2eg5</link>
      <guid>https://dev.to/hiro/how-i-attended-aws-re-invent-2019-for-free-2eg5</guid>
      <description>&lt;p&gt;During the first week of December, I attended &lt;strong&gt;AWS re:Invent 2019&lt;/strong&gt;, Amazon Web Services’ annual tech conference hosted in Las Vegas. This year, it hosted 65,000 attendees from all around the world! There are countless events, keynotes, sessions, and product announcements over the course of the week, alongside concerts, DeepRacer tournaments, and wing-eating contests.&lt;/p&gt;

&lt;p&gt;This year’s re:Play concert event featured Anderson .Paak, as well as A-Trak, Jamestown Revival, Jen Lasher, Miya Folick, and STS9! (Sorry to say, I don’t recognize even a single artist in this list… Woops.) There were 4k and 8k races, pop-up playgrounds, ping pong tournaments, and philanthropy activities.&lt;br&gt;
&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--b7imzDsf--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://hiroko.io/wp-content/uploads/2019/12/reInvent-2019.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--b7imzDsf--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://hiroko.io/wp-content/uploads/2019/12/reInvent-2019.jpg" width="789" height="447"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;All in all, it’s a tornado of a week, jam packed with events, announcements, and networking for cloud-enthusiasts around the world. &lt;/p&gt;

&lt;h3&gt;
  
  
  This post was cross-posted from my blog: &lt;a href="https://hiroko.io/aws-reinvent-we-power-tech/"&gt;How I Attended AWS re:Invent 2019: #WePowerTech Grant&lt;/a&gt;
&lt;/h3&gt;

&lt;p&gt;If you know anything about AWS re:Invent, you might know something else about it: It’s &lt;em&gt;BLOODY EXPENSIVE&lt;/em&gt;.&lt;/p&gt;

&lt;p&gt;The full conference pass was $1,800 for 2019, and that doesn’t even begin to include the other costs associated with booking a stay at one of the largest conferences in the world. Hotels, flights, and ground transportation all make a hefty dent in your wallet, not to mention the overpriced food and drinks available everywhere. Without a corporate backing from your employer, it’s almost impossible to afford the conference or the trip.&lt;/p&gt;

&lt;p&gt;In my hotel, I saw bottles of water being sold for $4! What is this, Walt Disney World?! Where are my Mickey ears?! 🐭&lt;/p&gt;

&lt;h1&gt;
  
  
  We Power Tech at AWS
&lt;/h1&gt;

&lt;p&gt;Anyways, I digress. I was able to attend AWS re:Invent 2019 almost completely free (other than a checked bag and few Uber rides) thanks to a brand new scholarship program called &lt;strong&gt;We Power Tech Grant&lt;/strong&gt;.&lt;/p&gt;

&lt;blockquote&gt;At AWS, we believe the future of tech is every color, gender, belief, origin, and community. The future of tech is accessible, flexible, and inclusive. We all have a long way to go before realizing this future. Join We Power Tech to meet allies and leaders who are powering the future. Build skills, get engaged with the community, and inspire the next generation. &lt;/blockquote&gt;

&lt;p&gt;For few years, &lt;strong&gt;We Power Tech&lt;/strong&gt; had been sponsoring many diversity and inclusion related panels and events at re:Invent. I attended a few, and really enjoyed the content and breath of fresh air, talking about extremely important topics of how to better integrate marginalized and under-represented populations to make tech better.&lt;/p&gt;

&lt;h3&gt;
  
  
  After all, better represented the technologists creating innovation, the more creative, inclusive, and innovative the products will be!
&lt;/h3&gt;

&lt;p&gt;This year, they went a step further and hosted their first scholarship grant that allowed technologists early in their careers from diverse backgrounds and countries around the world attend re:Invent where they would otherwise have been unable to.&lt;/p&gt;

&lt;blockquote&gt;One way of supporting a future of tech that is diverse, inclusive, and accessible is through our We Power Tech grant, which is geared toward underrepresented technologists who are in the first five years of their career. The grant includes registration to re:Invent 2019, travel, and hotel accommodations.&lt;/blockquote&gt;

&lt;h1&gt;
  
  
  We Power Tech Grant
&lt;/h1&gt;

&lt;p&gt;Thanks to the &lt;strong&gt;We Power Tech Grant&lt;/strong&gt;, I was able to attend AWS re:Invent 2019 with my travel, hotel, and registration accommodated for. I can’t even begin to tell you how amazing that is, as a small-time freelancer trying to find her way in the ocean. The amount of money it would have cost me to attend re:Invent otherwise would have bankrupted my teeny tiny business of one!&lt;/p&gt;

&lt;p&gt;For people like me, and many others, it is practically impossible to even dream about attending AWS re:Invent because of its prohibitive costs. Some large companies will pay for you to attend large conferences, but generally, perks like that are for the select few. The people at my previous employers who attended conferences were managers or high-level independent contributors, and little fish like myself would never have had the opportunity to attend such an expensive conference!&lt;/p&gt;

&lt;h1&gt;
  
  
  Created an Ecosystem of Small, Ambitious “Newbies”
&lt;/h1&gt;

&lt;p&gt;Beyond the financial support, the We Power Tech Grant made my very first re:Invent experience from a potential disaster into something much more manageable.&lt;/p&gt;

&lt;h1&gt;
  
  
  We Power Tech Grant Recipients
&lt;/h1&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--vIDzeQdc--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://hiroko.io/wp-content/uploads/2019/12/0.jpeg" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--vIDzeQdc--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://hiroko.io/wp-content/uploads/2019/12/0.jpeg" width="880" height="660"&gt;&lt;/a&gt;&lt;br&gt;
Attending a tech conference of 65,000 attendees in an unfamiliar city with almost no friends attending (re: prohibitive costs for most people) meant that without the networking events and receptions that We Power Tech provided for its grant recipients, I would not have been able to find “my people.” The people I could look for in sea of faces when I attended We Power Tech panels or events, and people I could bump into and recognize when walking through the Expo Hall.&lt;/p&gt;

&lt;p&gt;Another thing that was awesome was that whenever we met a leader at We Power Tech panels or receptions, when I introduced myself, they said, “Oh yeah! I read your application! We read every single application!” It’s such a genuine way to touch us, who are very often made to feel “unimportant” because of our minority status.&lt;/p&gt;

&lt;p&gt;I met so many fellow grantees who are doing amazing things in all parts of the world, and I am so thankful for We Power Tech Grant for bringing us together.&lt;/p&gt;

&lt;h1&gt;
  
  
  AWS Community Leadership Grant
&lt;/h1&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--IiUgMpTW--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://hiroko.io/wp-content/uploads/2019/12/0-1.jpeg" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--IiUgMpTW--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://hiroko.io/wp-content/uploads/2019/12/0-1.jpeg" width="880" height="454"&gt;&lt;/a&gt;&lt;br&gt;
Aside from the We Power Tech Grant scholarship, I was also invited to events for AWS Community Leaders. While there were many familiar faces from the We Power Tech Grantee receptions, there were also many more senior people coming from all over the world. I got to meet more senior members of the community in smaller scale in these events as well, which was great way to learn about ways people were creating and managing user groups around the globe, and trying to make diversity and inclusion one of the topics of importance.&lt;/p&gt;

&lt;p&gt;I was also asked to volunteer at the AWS User Groups Booth at the Expo Hall, which I felt would be a little awkward, but ended up being a great way to tell my friends and followers where I would be peddling stickers for few hours a day! I met a lot of people there, too, and had the opportunity to “forget” about the chaos of the week and just socialize with other attendees.&lt;/p&gt;

&lt;h1&gt;
  
  
  We Power Tech Booth
&lt;/h1&gt;

&lt;p&gt;There was a rather large We Power Tech booth close to the entrance of the Expo Hall, which was great. I hope a lot of people stopped by to learn about the initiative, and maybe got interested! They were doing interviews to talk about how people decided to make career transition into tech, and while I didn’t get to take part in it, I’m looking forward to seeing what the finished product will be.&lt;/p&gt;

&lt;blockquote&gt;Remember, you can find all of my &lt;strong&gt;AWS re:Invent 2019&lt;/strong&gt; related posts here: &lt;strong&gt;&lt;a href="https://bhiroko.io/aws-reinvent/"&gt;https://hiroko.io/aws-reinvent/&lt;/a&gt;&lt;/strong&gt;
&lt;/blockquote&gt;

</description>
      <category>career</category>
      <category>aws</category>
      <category>diversity</category>
      <category>inclusion</category>
    </item>
    <item>
      <title>Introduction to AWS Reserved Instances</title>
      <dc:creator>Hiroko Nishimura</dc:creator>
      <pubDate>Wed, 06 Nov 2019 16:46:45 +0000</pubDate>
      <link>https://dev.to/cloudforecast/introduction-to-aws-reserved-instances-1e6f</link>
      <guid>https://dev.to/cloudforecast/introduction-to-aws-reserved-instances-1e6f</guid>
      <description>&lt;p&gt;There is nothing I love more than saving money (except maybe delicious food). And I don’t know too many people who don’t love saving money, not to mention making the accounting department happy!&lt;/p&gt;

&lt;p&gt;Today, I’m here to introduce a way to save money on AWS that is often feared because of its perceived (or actual) complexity. It’s called “&lt;strong&gt;Reserved Instances (RI)&lt;/strong&gt;,” and it’s available for many popular AWS services such as Amazon EC2, Amazon RDS, Amazon Elasticsearch, Amazon ElastiCache, Amazon DynamoDB, and Amazon Redshift, etc.&lt;/p&gt;

&lt;h1&gt;
  
  
  What are AWS Reserved Instances?
&lt;/h1&gt;

&lt;p&gt;You might remember buying coupons on Groupon for 50% off a $100 meal at a local restaurant for a frugal date night. In both cases, in exchange for making a commitment and paying in advance, you’ve locked in a deal for a discounted rate.&lt;/p&gt;

&lt;p&gt;AWS &lt;strong&gt;Reserved Instances (RI)&lt;/strong&gt; work in similar ways, allowing you to pay steeply discounted rates, compared to paying hourly. For Amazon EC2, AWS’s virtual server service, you could save up to 75% off hourly rates by using Reserved Instances!&lt;/p&gt;

&lt;p&gt;Capacity reservations using Reserved Instances are available with Amazon EC2, Amazon RDS, Amazon Elasticsearch, Amazon ElastiCache, and Amazon Redshift.&lt;/p&gt;

&lt;h1&gt;
  
  
  Why Would I buy AWS Reserved Instances?
&lt;/h1&gt;

&lt;p&gt;There are many moving parts in how much resource capacities you need for your products or services. It’s hard to guess what the demands will be for specific AWS resources, especially at product launch. You don’t want to commit to too little… or too much for any of your resources. The allure of Cloud Computing platforms like Amazon Web Services is that you can use as much… or as little as you want, month to month, and you will only be billed for what you use.&lt;/p&gt;

&lt;p&gt;So why would you want to reserve capacities with AWS Reserved Instances? Doesn’t that go against the “On-Demand” feature of Cloud Computing?&lt;/p&gt;

&lt;p&gt;You’re absolutely right.&lt;/p&gt;

&lt;p&gt;By purchasing AWS Reserved Instances, you are committing to pay discounted prices in advance, which is a little like purchasing that physical server for your on-premises data center before you start a new project. However, unlike physical servers, doing so allows you to save a lot of money… As long as you are utilizing the Reserved Instances beyond their “break even point.”&lt;/p&gt;

&lt;p&gt;The “break even point” is the point at which the savings from reserving the instance is realized. If you bought a “$200 for $100” voucher for your favorite Italian restaurant, your “break even point” is eating at least $100 worth of food so that you get your money’s worth. Beyond that, you’re saving money.&lt;/p&gt;

&lt;p&gt;As your products mature, you might begin seeing patterns for resource usage. You might find that every month, you are using a certain amount of compute resources with your Amazon EC2 instances. Or you might find that your database usage is fairly consistent month to month up to a certain point, and feel ready to commit to reserving that amount of Amazon Redshift resources upfront.&lt;/p&gt;

&lt;p&gt;When you establish predictable resource usage for certain services, it might be time to consider paying upfront to make capacity reservations to save big.&lt;/p&gt;

&lt;h1&gt;
  
  
  What are my Options with AWS Reserved Instances?
&lt;/h1&gt;

&lt;h3&gt;
  
  
  Reservation Area: Regional or Availability Zone
&lt;/h3&gt;

&lt;p&gt;There are two ways to make reservations for EC2 Reserved Instances: Regional and Zonal. &lt;strong&gt;Regional Reserved Instances&lt;/strong&gt; are purchased for a whole Region, and provide Availability Zone flexibility. &lt;strong&gt;Zonal Reserved Instances&lt;/strong&gt; are assigned to a specific Availability Zone, and cannot be moved from one Availability Zone to another. (Remember: a Region includes multiple Availability Zones.)&lt;/p&gt;

&lt;h3&gt;
  
  
  Terms: 1 or 3 Years
&lt;/h3&gt;

&lt;p&gt;You can make capacity reservation for a term of 1 or 3 years. This means that you are committing to purchase certain amount of capacity for 1 or 3 years, and then paying for it upfront. In exchange, you will be able to purchase the capacity for substantially lower prices than if you purchased them On-Demand. As you might expect, purchasing a 3 year term offers bigger discounts.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--rEtIJy7f--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://thepracticaldev.s3.amazonaws.com/i/gr3qlkvzhidy0uj2qnmn.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--rEtIJy7f--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://thepracticaldev.s3.amazonaws.com/i/gr3qlkvzhidy0uj2qnmn.jpg" alt="AWS Reserved Instances Terms"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  Types: Standard and Convertible
&lt;/h3&gt;

&lt;p&gt;There are two types of Reserved Instances: Standard, and Convertible. &lt;strong&gt;Standard Reserved Instances&lt;/strong&gt; have some modifiable features after purchase, like instance size, but you cannot change the instance family. With &lt;strong&gt;Convertible Reserved Instance&lt;/strong&gt;, you can exchange the instance with another Convertible Reserved Instance with new attributes like instance family, type, and platform. You can also modify some attributes.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--xmxH5x8E--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://thepracticaldev.s3.amazonaws.com/i/thdxehsjl4lsgot6wvc0.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--xmxH5x8E--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://thepracticaldev.s3.amazonaws.com/i/thdxehsjl4lsgot6wvc0.png" alt="AWS Reserved Instances Types"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;With Standard RI, you can modify but not exchange, and with Convertible RI, you can both modify and exchange features. As you might expect, Standard RIs are cheaper than Convertible RIs, but lack the flexibility, which may be detrimental depending on the situation.&lt;/p&gt;

&lt;p&gt;There are four &lt;strong&gt;attributes&lt;/strong&gt; that affect pricing with Reserved Instances on EC2s. They are &lt;strong&gt;instance types&lt;/strong&gt;, &lt;strong&gt;platform&lt;/strong&gt;, &lt;strong&gt;scope&lt;/strong&gt;, and &lt;strong&gt;tenancy&lt;/strong&gt;. You can think of these attributes like features on a server like the operating system running.&lt;/p&gt;

&lt;h3&gt;
  
  
  Payment: All Upfront, Partial Upfront, or No Upfront
&lt;/h3&gt;

&lt;p&gt;There are also different ways to pay for the Reserved Instances. You can pay for everything &lt;strong&gt;upfront&lt;/strong&gt;, &lt;strong&gt;partially upfront&lt;/strong&gt;, or &lt;strong&gt;nothing upfront&lt;/strong&gt;. The more you pay upfront, the less you have to pay. And whatever you didn’t pay upfront, you will be paying in monthly installments.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--6TnkFPnC--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://thepracticaldev.s3.amazonaws.com/i/89k3937ddpbd8ubcoear.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--6TnkFPnC--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://thepracticaldev.s3.amazonaws.com/i/89k3937ddpbd8ubcoear.jpg" alt="AWS Reserved Instances Payment Options"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;No upfront reservation might seem counter-intuitive. Isn’t it the same as On-Demand? The reason why it’s different from On-Demand is because you are committing to a term of 1 or 3 years, even though you are paying monthly. So you are still eligible for discounts (though not as much as paying all or partially upfront) because you’ve made a reservation commitment. It’s worth noting though, that even if you don’t end up using up your RIs, you still have to pay for it.&lt;/p&gt;

&lt;p&gt;Have multiple AWS accounts in your organization? No problem! Your Reserved Instances can “float” across all of your linked accounts.&lt;/p&gt;

&lt;p&gt;You can link multiple AWS accounts using a feature in AWS called &lt;strong&gt;Consolidated Billing&lt;/strong&gt;, and doing so allows you to utilize many resources and discounts as though all of the accounts are “one” big account! Thankfully, Reserved Instances are one of the resources that can be utilized across all linked accounts.&lt;/p&gt;

&lt;h1&gt;
  
  
  How Do I Buy AWS Reserved Instances?
&lt;/h1&gt;

&lt;p&gt;You can purchase your Reserved Instances using &lt;strong&gt;AWS Management Console&lt;/strong&gt; or &lt;strong&gt;API tools&lt;/strong&gt;. For example, to purchase Reserved Instances for EC2, you can log into your AWS management Console, navigate to the EC2 section, and find “Reserved Instances” on the left navigation pane to purchase.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--6DWgNu7g--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://thepracticaldev.s3.amazonaws.com/i/z0og9b15rol9xyxrrvn2.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--6DWgNu7g--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://thepracticaldev.s3.amazonaws.com/i/z0og9b15rol9xyxrrvn2.jpg" alt="Purchase AWS Reserved Instances"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;In the process, you might find even further discounted capacities from 3rd party sellers! Third party sellers are people or companies like you or me, who bought Reserved Instances, but later found that they no longer need them. You don’t have to worry about the quality of the instance you will be buying either; all Reserved Instances sold by 3rd party sellers are legitimate and identical to what you would get if you bought them directly from AWS.&lt;/p&gt;

&lt;p&gt;This also means that if you bought more capacity than you need, you also have the option of selling on the Reserved Instance Marketplace as a 3rd party seller to potentially mitigate the financial losses. This feature is important, because purchases of AWS Reserved Instances are non-refundable. However, keep in mind that Convertible Reserved Instances cannot be resold in the &lt;strong&gt;Marketplace&lt;/strong&gt;.&lt;/p&gt;

&lt;h1&gt;
  
  
  Considering Utilizing AWS Reserved Instances?
&lt;/h1&gt;

&lt;p&gt;Unfortunately, your work is not done once you click that “buy” button on your Reserved Instances. You need to actively monitor them to make sure you are utilizing them to their fullest potential. What’s the “break-even point” of each RI? Are you hitting it, or are you way off the mark? Thankfully, there’s a service that can help you monitor all that and send you daily reports, called &lt;a href="https://www.cloudforecast.io/"&gt;CloudForecast&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;CloudForecast can help you &lt;a href="https://www.cloudforecast.io/blog/AWS-Reserved-Instances-Weekly-Report/"&gt;monitor Reserved Instances utilization and expiration&lt;/a&gt; so your capacity reservations don’t go to waste! You can get daily reports in multiple channels like email, Slack, and PagerDuty, written in languages easy to understand!&lt;/p&gt;

&lt;p&gt;Take the guesswork out of your Reserved Instances utilization by giving &lt;a href="https://www.cloudforecast.io/"&gt;CloudForecast&lt;/a&gt; a try… And your to-do lists and accounting department will thank you!&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;This post was originally published on &lt;a href="https://www.cloudforecast.io/blog/Introduction-to-AWS-Reserved-Instances/"&gt;CloudForecast Blog&lt;/a&gt;!&lt;/strong&gt;&lt;/p&gt;

</description>
      <category>aws</category>
      <category>reservedinstances</category>
      <category>amazonwebservices</category>
    </item>
    <item>
      <title>Simple API Calls with Python</title>
      <dc:creator>Hiroko Nishimura</dc:creator>
      <pubDate>Sun, 10 Mar 2019 04:44:00 +0000</pubDate>
      <link>https://dev.to/hiro/learning-api-for-newbies-day-1-294</link>
      <guid>https://dev.to/hiro/learning-api-for-newbies-day-1-294</guid>
      <description>&lt;h1&gt;
  
  
  Learning API from Zero
&lt;/h1&gt;

&lt;p&gt;I am in the process of wrapping my head around the "concept" of API.  For Day 1 of my API studying, I learned about &lt;em&gt;venv&lt;/em&gt;, &lt;em&gt;SQLite&lt;/em&gt;, &lt;em&gt;Flask&lt;/em&gt;, and how to make basic API &lt;code&gt;GET&lt;/code&gt; requests with a help of a Twitter friend.&lt;/p&gt;

&lt;p&gt;I am using a Mac with Terminal for this exercise.&lt;/p&gt;

&lt;h1&gt;
  
  
  Installing Virtual Environment (venv)
&lt;/h1&gt;

&lt;p&gt;&lt;em&gt;VENV&lt;/em&gt; is a lightweight virtual environment for Python that can be installed into a directory (folder) on your computer where you can essentially "run a server" to run Python without the environment impacting the rest of your computer. (Kind of like a little server "living" inside one specific folder you create?)&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;$ pip install virtualenv // installs the Virtual Environment
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h1&gt;
  
  
  Create Virtual Environment
&lt;/h1&gt;

&lt;p&gt;I created a new folder on my Desktop and installed &lt;em&gt;Python&lt;/em&gt; and &lt;em&gt;Pip&lt;/em&gt; into the said folder using venv.  &lt;/p&gt;

&lt;p&gt;&lt;em&gt;Pip&lt;/em&gt; is a package installer for Python, and should come with Python if installed from their official website.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;$ cd Desktop // go to Desktop
$ mkdir new_folder // create a new folder on Desktop called new_folder
$ cd new_folder // change directory ("go into") the folder new_folder
$ virtualenv venv // installs Python and Pip into new_folder
$ source venv/bin/activate // activates Virtual Environment
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h1&gt;
  
  
  Install Flask &amp;amp; JSONify
&lt;/h1&gt;

&lt;p&gt;I installed &lt;em&gt;Flask&lt;/em&gt;, &lt;em&gt;Flask-SQLAlchemy&lt;/em&gt;, &lt;em&gt;Flask-RESTful&lt;/em&gt;, and &lt;em&gt;JSONify&lt;/em&gt;, as specified by &lt;a href="https://www.codementor.io/sagaragarwal94/building-a-basic-restful-api-in-python-58k02xsiq" rel="noopener noreferrer"&gt;this tutorial&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Flask&lt;/em&gt; is a &lt;a href="http://flask.pocoo.org/" rel="noopener noreferrer"&gt;Python Web Framework&lt;/a&gt;, and &lt;em&gt;JSONify&lt;/em&gt; is a &lt;a href="https://github.com/kushalpandya/JSONify" rel="noopener noreferrer"&gt;minimal HTML-form to JSON to HTML-form converting plugin for jQuery&lt;/a&gt;.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;$ pip install flask flask-jsonpify flask-sqlalchemy flask-restful
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h1&gt;
  
  
  Download a Sample Database
&lt;/h1&gt;

&lt;p&gt;I downloaded a sample SQLite database from SQLite Tutorial &lt;a href="http://www.sqlitetutorial.net/sqlite-sample-database/" rel="noopener noreferrer"&gt;HERE&lt;/a&gt;, and saved it in my folder on my Desktop that I created earlier (&lt;code&gt;new_folder&lt;/code&gt;).&lt;/p&gt;

&lt;p&gt;Unzip the folder and you should get a &lt;code&gt;.db&lt;/code&gt; file.  In this case, the file was named &lt;code&gt;chinook.db&lt;/code&gt;. &lt;/p&gt;

&lt;h1&gt;
  
  
  Create a Python Script
&lt;/h1&gt;

&lt;p&gt;You can create a new file in Terminal:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;$ touch server.py // creates file server.py in current folder
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;You can use an IDE to edit the Python file, or you can edit it directly in Terminal by opening the file:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;$ nano server.py // opens server.py in Terminal
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;To begin, you can copy and paste the script provided by the &lt;a href="https://www.codementor.io/sagaragarwal94/building-a-basic-restful-api-in-python-58k02xsiq" rel="noopener noreferrer"&gt;tutorial referenced above&lt;/a&gt;.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight python"&gt;&lt;code&gt;&lt;span class="kn"&gt;from&lt;/span&gt; &lt;span class="n"&gt;flask&lt;/span&gt; &lt;span class="kn"&gt;import&lt;/span&gt; &lt;span class="n"&gt;Flask&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;request&lt;/span&gt;
&lt;span class="kn"&gt;from&lt;/span&gt; &lt;span class="n"&gt;flask_restful&lt;/span&gt; &lt;span class="kn"&gt;import&lt;/span&gt; &lt;span class="n"&gt;Resource&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;Api&lt;/span&gt;
&lt;span class="kn"&gt;from&lt;/span&gt; &lt;span class="n"&gt;sqlalchemy&lt;/span&gt; &lt;span class="kn"&gt;import&lt;/span&gt; &lt;span class="n"&gt;create_engine&lt;/span&gt;
&lt;span class="kn"&gt;from&lt;/span&gt; &lt;span class="n"&gt;json&lt;/span&gt; &lt;span class="kn"&gt;import&lt;/span&gt; &lt;span class="n"&gt;dumps&lt;/span&gt;
&lt;span class="kn"&gt;from&lt;/span&gt; &lt;span class="n"&gt;flask_jsonpify&lt;/span&gt; &lt;span class="kn"&gt;import&lt;/span&gt; &lt;span class="n"&gt;jsonify&lt;/span&gt;

&lt;span class="n"&gt;db_connect&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nf"&gt;create_engine&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="s"&gt;sqlite:///chinook.db&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="n"&gt;app&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nc"&gt;Flask&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;__name__&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="n"&gt;api&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nc"&gt;Api&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;app&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;

&lt;span class="k"&gt;class&lt;/span&gt; &lt;span class="nc"&gt;Employees&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;Resource&lt;/span&gt;&lt;span class="p"&gt;):&lt;/span&gt;
    &lt;span class="k"&gt;def&lt;/span&gt; &lt;span class="nf"&gt;get&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;self&lt;/span&gt;&lt;span class="p"&gt;):&lt;/span&gt;
        &lt;span class="n"&gt;conn&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;db_connect&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;connect&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt; &lt;span class="c1"&gt;# connect to database
&lt;/span&gt;        &lt;span class="n"&gt;query&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;conn&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;execute&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;select * from employees&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="c1"&gt;# This line performs query and returns json result
&lt;/span&gt;        &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="s"&gt;employees&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="n"&gt;i&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="mi"&gt;0&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt; &lt;span class="k"&gt;for&lt;/span&gt; &lt;span class="n"&gt;i&lt;/span&gt; &lt;span class="ow"&gt;in&lt;/span&gt; &lt;span class="n"&gt;query&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;cursor&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;fetchall&lt;/span&gt;&lt;span class="p"&gt;()]}&lt;/span&gt; &lt;span class="c1"&gt;# Fetches first column that is Employee ID
&lt;/span&gt;
&lt;span class="k"&gt;class&lt;/span&gt; &lt;span class="nc"&gt;Tracks&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;Resource&lt;/span&gt;&lt;span class="p"&gt;):&lt;/span&gt;
    &lt;span class="k"&gt;def&lt;/span&gt; &lt;span class="nf"&gt;get&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;self&lt;/span&gt;&lt;span class="p"&gt;):&lt;/span&gt;
        &lt;span class="n"&gt;conn&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;db_connect&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;connect&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt;
        &lt;span class="n"&gt;query&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;conn&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;execute&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;select trackid, name, composer, unitprice from tracks;&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
        &lt;span class="n"&gt;result&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="s"&gt;data&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="nf"&gt;dict&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nf"&gt;zip&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nf"&gt;tuple &lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;query&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;keys&lt;/span&gt;&lt;span class="p"&gt;())&lt;/span&gt; &lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="n"&gt;i&lt;/span&gt;&lt;span class="p"&gt;))&lt;/span&gt; &lt;span class="k"&gt;for&lt;/span&gt; &lt;span class="n"&gt;i&lt;/span&gt; &lt;span class="ow"&gt;in&lt;/span&gt; &lt;span class="n"&gt;query&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;cursor&lt;/span&gt;&lt;span class="p"&gt;]}&lt;/span&gt;
        &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="nf"&gt;jsonify&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;result&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;

&lt;span class="k"&gt;class&lt;/span&gt; &lt;span class="nc"&gt;Employees_Name&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;Resource&lt;/span&gt;&lt;span class="p"&gt;):&lt;/span&gt;
    &lt;span class="k"&gt;def&lt;/span&gt; &lt;span class="nf"&gt;get&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;self&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;employee_id&lt;/span&gt;&lt;span class="p"&gt;):&lt;/span&gt;
        &lt;span class="n"&gt;conn&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;db_connect&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;connect&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt;
        &lt;span class="n"&gt;query&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;conn&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;execute&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;select * from employees where EmployeeId =%d &lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;  &lt;span class="o"&gt;%&lt;/span&gt;&lt;span class="nf"&gt;int&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;employee_id&lt;/span&gt;&lt;span class="p"&gt;))&lt;/span&gt;
        &lt;span class="n"&gt;result&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="s"&gt;data&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="nf"&gt;dict&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nf"&gt;zip&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nf"&gt;tuple &lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;query&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;keys&lt;/span&gt;&lt;span class="p"&gt;())&lt;/span&gt; &lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="n"&gt;i&lt;/span&gt;&lt;span class="p"&gt;))&lt;/span&gt; &lt;span class="k"&gt;for&lt;/span&gt; &lt;span class="n"&gt;i&lt;/span&gt; &lt;span class="ow"&gt;in&lt;/span&gt; &lt;span class="n"&gt;query&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;cursor&lt;/span&gt;&lt;span class="p"&gt;]}&lt;/span&gt;
        &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="nf"&gt;jsonify&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;result&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;


&lt;span class="n"&gt;api&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;add_resource&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;Employees&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="s"&gt;/employees&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="c1"&gt;# Route_1
&lt;/span&gt;&lt;span class="n"&gt;api&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;add_resource&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;Tracks&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="s"&gt;/tracks&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="c1"&gt;# Route_2
&lt;/span&gt;&lt;span class="n"&gt;api&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;add_resource&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;Employees_Name&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="s"&gt;/employees/&amp;lt;employee_id&amp;gt;&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="c1"&gt;# Route_3
&lt;/span&gt;

&lt;span class="k"&gt;if&lt;/span&gt; &lt;span class="n"&gt;__name__&lt;/span&gt; &lt;span class="o"&gt;==&lt;/span&gt; &lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="s"&gt;__main__&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
     &lt;span class="n"&gt;app&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;run&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;port&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="s"&gt;5002&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;

&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;(When I used it, we couldn't get it to run properly unless I changed &lt;code&gt;from flask.ext.jsonpify import jsonify&lt;/code&gt; to &lt;code&gt;from flask_jsonpify import jsonify&lt;/code&gt; so I've changed it in the script above, but try both if one doesn't work.)&lt;/p&gt;

&lt;p&gt;Exit and save the file.  You can reopen &lt;code&gt;server.py&lt;/code&gt; with &lt;code&gt;nano server.py&lt;/code&gt; to confirm that your changes took hold.&lt;/p&gt;

&lt;h1&gt;
  
  
  Run Python
&lt;/h1&gt;

&lt;p&gt;I found out that I could "run" a tiny Flask server right on my computer using venv and make API calls and run queries! I will be running &lt;code&gt;server.py&lt;/code&gt; that we just created earlier.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;$ python server.py // runs server.py
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;This command returns the following:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt; * Serving Flask app "server" (lazy loading)
 * Environment: production
   WARNING: Do not use the development server in a production environment.
   Use a production WSGI server instead.
 * Debug mode: off
 * Running on http://127.0.0.1:5002/ (Press CTRL+C to quit)
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;So now, the little server is puttering about in &lt;code&gt;http://127.0.0.1&lt;/code&gt;.  And the database (&lt;code&gt;chinook.db&lt;/code&gt;) is also puttering about in port &lt;code&gt;5002&lt;/code&gt; as was specified in &lt;code&gt;server.py&lt;/code&gt;.&lt;/p&gt;

&lt;h1&gt;
  
  
  Make API Calls
&lt;/h1&gt;

&lt;p&gt;We created 3 resources with the script in &lt;code&gt;server.py&lt;/code&gt;.  They are &lt;code&gt;Employees,&lt;/code&gt; &lt;code&gt;Tracks&lt;/code&gt;, and &lt;code&gt;Employees_Name&lt;/code&gt;.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight python"&gt;&lt;code&gt;&lt;span class="k"&gt;class&lt;/span&gt; &lt;span class="nc"&gt;Employees_Name&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;Resource&lt;/span&gt;&lt;span class="p"&gt;):&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;For each, we also specified how each Route is accessed:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight python"&gt;&lt;code&gt;&lt;span class="n"&gt;api&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;add_resource&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;Employees&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="s"&gt;/employees&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="c1"&gt;# Route_1
&lt;/span&gt;&lt;span class="n"&gt;api&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;add_resource&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;Tracks&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="s"&gt;/tracks&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="c1"&gt;# Route_2
&lt;/span&gt;&lt;span class="n"&gt;api&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;add_resource&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;Employees_Name&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="s"&gt;/employees/&amp;lt;employee_id&amp;gt;&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="c1"&gt;# Route_3
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;So to make the API call, we can open a browser and type in the server IP address and the path specified in &lt;code&gt;server.py&lt;/code&gt;: &lt;code&gt;http://127.0.0.1:5002/employees&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;When I accessed that "URL," the JSON-ified &lt;code&gt;GET&lt;/code&gt; request loaded:&lt;br&gt;
&lt;a href="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fmeqibl433tdn94azctrx.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fmeqibl433tdn94azctrx.png" alt="GET Request" width="589" height="116"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;On the server side, I have a &lt;code&gt;GET&lt;/code&gt; request log of the same information:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight python"&gt;&lt;code&gt;&lt;span class="mf"&gt;127.0&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="mf"&gt;0.1&lt;/span&gt; &lt;span class="o"&gt;-&lt;/span&gt; &lt;span class="o"&gt;-&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="mi"&gt;09&lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="n"&gt;Mar&lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="mi"&gt;2019&lt;/span&gt; &lt;span class="mi"&gt;21&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="mi"&gt;42&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="mi"&gt;29&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;GET /employees HTTP/1.1&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt; &lt;span class="mi"&gt;200&lt;/span&gt; &lt;span class="o"&gt;-&lt;/span&gt;
&lt;span class="mf"&gt;127.0&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="mf"&gt;0.1&lt;/span&gt; &lt;span class="o"&gt;-&lt;/span&gt; &lt;span class="o"&gt;-&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="mi"&gt;09&lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="n"&gt;Mar&lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="mi"&gt;2019&lt;/span&gt; &lt;span class="mi"&gt;21&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="mi"&gt;42&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="mi"&gt;29&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;GET /robots.txt?1552185749512 HTTP/1.1&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt; &lt;span class="mi"&gt;404&lt;/span&gt; &lt;span class="o"&gt;-&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;I had made a &lt;code&gt;GET&lt;/code&gt; call to this resource in &lt;code&gt;server.py&lt;/code&gt;:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight python"&gt;&lt;code&gt;&lt;span class="k"&gt;class&lt;/span&gt; &lt;span class="nc"&gt;Employees&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;Resource&lt;/span&gt;&lt;span class="p"&gt;):&lt;/span&gt;
    &lt;span class="k"&gt;def&lt;/span&gt; &lt;span class="nf"&gt;get&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;self&lt;/span&gt;&lt;span class="p"&gt;):&lt;/span&gt;
        &lt;span class="n"&gt;conn&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;db_connect&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;connect&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt; &lt;span class="c1"&gt;# connect to database
&lt;/span&gt;        &lt;span class="n"&gt;query&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;conn&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;execute&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;select * from employees&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="c1"&gt;# This line performs query and returns json result
&lt;/span&gt;        &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="s"&gt;employees&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="n"&gt;i&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="mi"&gt;0&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt; &lt;span class="k"&gt;for&lt;/span&gt; &lt;span class="n"&gt;i&lt;/span&gt; &lt;span class="ow"&gt;in&lt;/span&gt; &lt;span class="n"&gt;query&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;cursor&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;fetchall&lt;/span&gt;&lt;span class="p"&gt;()]}&lt;/span&gt; &lt;span class="c1"&gt;# Fetches first column that is Employee ID
&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Similar things happen when you try the other 2 resources created: &lt;code&gt;Tracks&lt;/code&gt; and &lt;code&gt;Employees_Name&lt;/code&gt;.&lt;/p&gt;

&lt;p&gt;For &lt;code&gt;Employees_Name&lt;/code&gt;, the URL that we specified is &lt;code&gt;/employees/&amp;lt;employee_id&amp;gt;&lt;/code&gt;.  This means that to make the &lt;code&gt;GET&lt;/code&gt; request for this specific resource, you choose the Employee ID that you want to request information from (I chose 5), and you would go to &lt;code&gt;http://127.0.0.1:5002/employees/5&lt;/code&gt;.&lt;/p&gt;

&lt;p&gt;The requested information about Employee ID #5 will load on your browser.&lt;/p&gt;

&lt;h2&gt;
  
  
  CRUD
&lt;/h2&gt;

&lt;p&gt;&lt;em&gt;CRUD&lt;/em&gt; stands for &lt;em&gt;Create, Read, Update, Delete&lt;/em&gt;.  With API, you can make four different types of calls: &lt;code&gt;GET&lt;/code&gt;, &lt;code&gt;PUT&lt;/code&gt;, &lt;code&gt;POST&lt;/code&gt;, and &lt;code&gt;DELETE&lt;/code&gt;, which corresponds with the CRUD functions.  You should be able to &lt;code&gt;GET&lt;/code&gt; or &lt;em&gt;Create&lt;/em&gt;, &lt;code&gt;PUT&lt;/code&gt; or &lt;em&gt;Read&lt;/em&gt;, &lt;code&gt;POST&lt;/code&gt; or &lt;em&gt;Update&lt;/em&gt;, and &lt;code&gt;Delete&lt;/code&gt; (self explanatory!) resources.&lt;/p&gt;

&lt;h1&gt;
  
  
  Day 1
&lt;/h1&gt;

&lt;p&gt;For a few hours' worth of learning, I think I got through quite a lot of content! Much thanks to a Twitter friend who led me through the whole process! Otherwise I would've been stuck at step 1, completely lost.&lt;/p&gt;

&lt;h1&gt;
  
  
  Articles/Tutorials
&lt;/h1&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://www.codementor.io/sagaragarwal94/building-a-basic-restful-api-in-python-58k02xsiq" rel="noopener noreferrer"&gt;Building a Basic RestFul API in Python&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://codeburst.io/this-is-how-easy-it-is-to-create-a-rest-api-8a25122ab1f3" rel="noopener noreferrer"&gt;This is how easy it is to create a REST API&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://docs.python-guide.org/dev/virtualenvs/" rel="noopener noreferrer"&gt;Pipenv &amp;amp; Virtual Environments&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.fullstackpython.com/flask.html" rel="noopener noreferrer"&gt;Why is Flask a good web framework of choice?&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.codecademy.com/articles/what-is-crud" rel="noopener noreferrer"&gt;What is CRUD?&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h1&gt;
  
  
  Resources
&lt;/h1&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="http://flask.pocoo.org/" rel="noopener noreferrer"&gt;Flask&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="http://flask-sqlalchemy.pocoo.org/" rel="noopener noreferrer"&gt;Flask-SQLAlchemy&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://sqlite.org" rel="noopener noreferrer"&gt;SQLite&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://pypi.org/" rel="noopener noreferrer"&gt;Python Package Index&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://docs.python.org/3/library/venv.html" rel="noopener noreferrer"&gt;venv&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

</description>
      <category>api</category>
      <category>python</category>
      <category>flask</category>
      <category>explainlikeimfive</category>
    </item>
    <item>
      <title>Setting Up a Static Website on AWS S3 for Newbies</title>
      <dc:creator>Hiroko Nishimura</dc:creator>
      <pubDate>Mon, 25 Feb 2019 17:34:50 +0000</pubDate>
      <link>https://dev.to/hiro/setting-up-a-static-website-on-aws-s3-for-newbies-1kmc</link>
      <guid>https://dev.to/hiro/setting-up-a-static-website-on-aws-s3-for-newbies-1kmc</guid>
      <description>&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--wumeUvWt--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://thepracticaldev.s3.amazonaws.com/i/ek2v4re17ini1nfk7ydj.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--wumeUvWt--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://thepracticaldev.s3.amazonaws.com/i/ek2v4re17ini1nfk7ydj.png" alt="Setting Up a Static Website on AWS S3 for Newbies"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Originally published at &lt;a href="https://awsnewbies.com/s3-website-route-53-cloudfront/"&gt;AWS Newbies&lt;/a&gt;&lt;/strong&gt;.&lt;/p&gt;




&lt;p&gt;Here, we’ll set up a static website (think &lt;em&gt;HTML&lt;/em&gt; and &lt;em&gt;CSS&lt;/em&gt; and no moving parts) hosted on &lt;strong&gt;Amazon Web Services (AWS)&lt;/strong&gt; &lt;strong&gt;S3&lt;/strong&gt;, which can be accessed by your own domain, at &lt;em&gt;domain.com&lt;/em&gt;, protected with SSL (think &lt;em&gt;https://&lt;/em&gt; instead of &lt;em&gt;http://&lt;/em&gt;).&lt;/p&gt;

&lt;p&gt;Anyone who types in &lt;em&gt;domain.com&lt;/em&gt; on their browser will be forwarded to &lt;em&gt;&lt;a href="https://www.domain.com"&gt;https://www.domain.com&lt;/a&gt;&lt;/em&gt; so that you can have that fancy “Your connection is secure” lock!&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--eivT7Ikd--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://thepracticaldev.s3.amazonaws.com/i/2n67ywwb9r39hhl5ryiz.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--eivT7Ikd--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://thepracticaldev.s3.amazonaws.com/i/2n67ywwb9r39hhl5ryiz.jpg" alt="SSL Secured!"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;If you are completely new to AWS, I recommend you take a look at the &lt;a href="https://awsnewbies.com/intro-to-aws-ebook/"&gt;Intro to AWS for Newbies eBook&lt;/a&gt; before you embark on this.  If you just want to figure out how to create that static website, read on!&lt;/p&gt;

&lt;p&gt;We will go over setting up the website where the domain name is registered through &lt;strong&gt;Route 53&lt;/strong&gt;, AWS's Domain Name Registrar.&lt;/p&gt;




&lt;h1&gt;
  
  
  Setting up Website with domain registered at Route 53
&lt;/h1&gt;

&lt;h2&gt;
  
  
  Purchase domain in question using Route 53
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;Go to &lt;strong&gt;Route 53&lt;/strong&gt; and purchase a new domain for $12 by following the prompts&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Request SSL certificate from AWS Certificate Manager (ACM)
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;Go to &lt;strong&gt;AWS Certificate Manager (ACM)&lt;/strong&gt; and request a certificate for &lt;em&gt;&lt;a href="http://www.domain.com"&gt;www.domain.com&lt;/a&gt;&lt;/em&gt;
&lt;/li&gt;
&lt;li&gt;Include &lt;em&gt;domain.com&lt;/em&gt; as another domain to protect with the same certification&lt;/li&gt;
&lt;li&gt;Select DNS Validation and validate via “Create record in Route 53“&lt;/li&gt;
&lt;li&gt;Confirm after 30 minutes or so that validation was completed&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Create the website in S3
&lt;/h2&gt;

&lt;p&gt;I went over how you can upload a static website on &lt;strong&gt;S3&lt;/strong&gt; here: &lt;a href="https://awsnewbies.com/static-website-s3/"&gt;How to host a Static Website with S3&lt;/a&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Go into S3 and create 2 buckets: &lt;em&gt;domain.com&lt;/em&gt; and &lt;em&gt;&lt;a href="http://www.domain.com"&gt;www.domain.com&lt;/a&gt;&lt;/em&gt;
&lt;/li&gt;
&lt;li&gt;Set &lt;em&gt;domain.com&lt;/em&gt; S3 bucket to redirect to &lt;em&gt;&lt;a href="http://www.domain.com"&gt;www.domain.com&lt;/a&gt;&lt;/em&gt;
&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--It-UocwZ--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://thepracticaldev.s3.amazonaws.com/i/5dbkzym668665z3muu3o.png" alt="Static Website Hosting: Redirect"&gt;
&lt;/li&gt;
&lt;li&gt;Protocol should be set to &lt;em&gt;https&lt;/em&gt;
&lt;/li&gt;
&lt;li&gt;The website will be hosted in the &lt;em&gt;&lt;a href="http://www.domain.com"&gt;www.domain.com&lt;/a&gt;&lt;/em&gt; &lt;strong&gt;S3&lt;/strong&gt; bucket&lt;/li&gt;
&lt;li&gt;In the &lt;em&gt;&lt;a href="http://www.domain.com"&gt;www.domain.com&lt;/a&gt;&lt;/em&gt; bucket, set &lt;strong&gt;Bucket Policy&lt;/strong&gt; to &lt;a href="https://docs.aws.amazon.com/AmazonS3/latest/dev/WebsiteAccessPermissionsReqd.html"&gt;THIS&lt;/a&gt;:
&lt;/li&gt;
&lt;/ul&gt;

&lt;div class="highlight"&gt;&lt;pre class="highlight plaintext"&gt;&lt;code&gt;{
    "Version":"2012-10-17",
    "Statement":[
        {
            "Sid":"PublicReadGetObject",
            "Effect":"Allow",
            "Principal": "*",
            "Action":["s3:GetObject"],
            "Resource":["arn:aws:s3:::www.domain.com/*"]
        }
    ]
}
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;



&lt;p&gt;Here’s AWS’s documentation on how this would work: &lt;a href="https://docs.aws.amazon.com/AmazonS3/latest/dev/website-hosting-custom-domain-walkthrough.html"&gt;Setting up a Static Website using Custom Domain&lt;/a&gt;.&lt;/p&gt;

&lt;h2&gt;
  
  
  Create new CloudFront Distributions
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--IudQxRhS--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://thepracticaldev.s3.amazonaws.com/i/hjnr85k8mo1748e4dn5r.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--IudQxRhS--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://thepracticaldev.s3.amazonaws.com/i/hjnr85k8mo1748e4dn5r.png" alt="CloudFront Distribution Setup"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  Create CloudFront Distribution for &lt;em&gt;domain.com&lt;/em&gt;
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;Go to CloudFront and create a new distribution&lt;/li&gt;
&lt;li&gt;Choose &lt;em&gt;“Web”&lt;/em&gt; for delivery method&lt;/li&gt;
&lt;li&gt;Get the Endpoint URL for &lt;em&gt;domain.com&lt;/em&gt; S3 bucket to set as &lt;strong&gt;Origin Domain Name&lt;/strong&gt; instead of the bucket from the dropdown menu&lt;/li&gt;
&lt;li&gt;Go to… &lt;strong&gt;S3 -&amp;gt; Bucket Name -&amp;gt; Properties -&amp;gt; Static website hosting&lt;/strong&gt;

&lt;ul&gt;
&lt;li&gt;Looks something like: &lt;em&gt;&lt;a href="http://xyzwxyz-12rdklfj3e-us-east-1.s3-website-us-east-1.amazonaws.com"&gt;http://xyzwxyz-12rdklfj3e-us-east-1.s3-website-us-east-1.amazonaws.com&lt;/a&gt;&lt;/em&gt;
&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--kiTkaOQ9--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://thepracticaldev.s3.amazonaws.com/i/vwroxu9ifoi34eq865h9.png" alt="Static Website Hosting on S3"&gt;
&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;
&lt;li&gt;Set the SSL cert to the certificate just verified with &lt;strong&gt;ACM&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;Make all &lt;em&gt;HTTP&lt;/em&gt; redirect to &lt;em&gt;HTTPS&lt;/em&gt;
&lt;/li&gt;
&lt;li&gt;Enter &lt;em&gt;domain.com&lt;/em&gt; as &lt;strong&gt;CNAME&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;Leave everything else as default&lt;/li&gt;
&lt;li&gt;This will also take a while to go through&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Create another CloudFront distribution for &lt;em&gt;&lt;a href="http://www.domain.com"&gt;www.domain.com&lt;/a&gt;&lt;/em&gt; with same settings
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;Enter &lt;em&gt;&lt;a href="http://www.domain.com"&gt;www.domain.com&lt;/a&gt;&lt;/em&gt; as CNAME&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Here’s AWS’s documentation on how to create this distribution: &lt;a href="https://docs.aws.amazon.com/AmazonS3/latest/dev/website-hosting-cloudfront-walkthrough.html"&gt;Speed Up Your Website with Amazon CloudFront&lt;/a&gt;.&lt;/p&gt;

&lt;h1&gt;
  
  
  Create A records in Route 53
&lt;/h1&gt;

&lt;p&gt;Go back to &lt;strong&gt;Route 53&lt;/strong&gt; and create &lt;strong&gt;A Records&lt;/strong&gt; to point to the new &lt;strong&gt;CloudFront&lt;/strong&gt; distributions.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Create &lt;strong&gt;A record&lt;/strong&gt; for &lt;em&gt;domain.com&lt;/em&gt; and point it to the &lt;strong&gt;CloudFront&lt;/strong&gt; distribution for &lt;em&gt;domain.com&lt;/em&gt;
&lt;/li&gt;
&lt;li&gt;Create &lt;strong&gt;A record&lt;/strong&gt; for &lt;em&gt;&lt;a href="http://www.domain.com"&gt;www.domain.com&lt;/a&gt;&lt;/em&gt; and point it to the &lt;strong&gt;CloudFront&lt;/strong&gt; distribution for &lt;em&gt;&lt;a href="http://www.domain.com"&gt;www.domain.com&lt;/a&gt;&lt;/em&gt;
&lt;/li&gt;
&lt;li&gt;Both can be found in the dropdown under &lt;em&gt;“alias”&lt;/em&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Here’s AWS’s documentation on how this works: &lt;a href="https://docs.aws.amazon.com/Route53/latest/DeveloperGuide/migrate-dns-domain-in-use.html"&gt;Using Route 53 for DNS&lt;/a&gt;.&lt;/p&gt;

&lt;h1&gt;
  
  
  What Does the Architecture Look Like?
&lt;/h1&gt;

&lt;p&gt;I was streaming this setup on &lt;a href="https://www.twitch.tv/hirokotech"&gt;Twitch&lt;/a&gt;, and I realized it’ll be nice to have a diagram of the architecture of what we’re building!&lt;/p&gt;

&lt;p&gt;We’ve set up 2 sets of &lt;strong&gt;CloudFront&lt;/strong&gt; distributions and &lt;strong&gt;S3&lt;/strong&gt; buckets to route all different kinds of traffic to all eventually end up at &lt;em&gt;&lt;a href="https://www.domain.com"&gt;https://www.domain.com&lt;/a&gt;&lt;/em&gt;.&lt;/p&gt;

&lt;p&gt;Below, you can see how the redirects are working for all different ways someone might try to access your website using different combinations of &lt;em&gt;www.&lt;/em&gt;, &lt;em&gt;http://&lt;/em&gt; and &lt;em&gt;https://&lt;/em&gt;.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--VDjQPBzt--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://thepracticaldev.s3.amazonaws.com/i/lv44s0u5r8tmmw3phl90.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--VDjQPBzt--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://thepracticaldev.s3.amazonaws.com/i/lv44s0u5r8tmmw3phl90.jpg" alt="Architecture of Static Website on AWS"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h1&gt;
  
  
  That's It!
&lt;/h1&gt;

&lt;p&gt;And that's it! The whole process should take 30 minutes to 1 hour (mostly because it takes time for these things to load. This was originally published on my &lt;strong&gt;Introduction to AWS&lt;/strong&gt; website, &lt;a href="https://awsnewbies.com"&gt;&lt;strong&gt;AWS Newbies&lt;/strong&gt;&lt;/a&gt;.  You can read the original &lt;a href="https://awsnewbies.com/s3-website-route-53-cloudfront/"&gt;HERE&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;If you are interested in other introductory Cloud Computing and AWS documentations and resources, here are some of my other projects:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;a href="https://www.lynda.com/courtwise-tutorials/Introduction-AWS-Non-Engineers-1-Cloud-Concepts/808676-2.html"&gt;Introduction to AWS for Non-Engineers: 1 Cloud Concepts&lt;/a&gt; | Video Course on &lt;a href="https://www.lynda.com/courtwise-tutorials/Introduction-AWS-Non-Engineers-1-Cloud-Concepts/808676-2.html"&gt;Lynda.com&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://awsnewbies.com/intro-to-aws-ebook/"&gt;Intro to AWS for Newbies&lt;/a&gt; | eBook on &lt;a href="https://awsnewbies.com"&gt;awsnewbies.com&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://awsnewbies.com/intro-to-aws/"&gt;Intro to AWS for Newbies&lt;/a&gt; | &lt;em&gt;Free&lt;/em&gt; Newsletter Course on &lt;a href="https://awsnewbies.com"&gt;awsnewbies.com&lt;/a&gt;
&lt;/li&gt;
&lt;/ul&gt;

</description>
      <category>aws</category>
      <category>cloudcomputing</category>
      <category>amazonwebservices</category>
      <category>explainlikeimfive</category>
    </item>
  </channel>
</rss>
