<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>Forem: Jason Paul</title>
    <description>The latest articles on Forem by Jason Paul (@linuxtekcanada).</description>
    <link>https://forem.com/linuxtekcanada</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%2F917567%2Fe0dcb46f-2ac1-4a14-af6e-0f405f7fd729.jpeg</url>
      <title>Forem: Jason Paul</title>
      <link>https://forem.com/linuxtekcanada</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://forem.com/feed/linuxtekcanada"/>
    <language>en</language>
    <item>
      <title>AWS Summit Toronto 2024 Survival Guide</title>
      <dc:creator>Jason Paul</dc:creator>
      <pubDate>Mon, 09 Sep 2024 21:15:48 +0000</pubDate>
      <link>https://forem.com/aws-builders/aws-summit-toronto-2024-survival-guide-3fp4</link>
      <guid>https://forem.com/aws-builders/aws-summit-toronto-2024-survival-guide-3fp4</guid>
      <description>&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fwww.linuxtek.ca%2Fwp-content%2Fuploads%2F2024%2F09%2Fawssummittoronto.jpeg" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fwww.linuxtek.ca%2Fwp-content%2Fuploads%2F2024%2F09%2Fawssummittoronto.jpeg" alt=""&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;Introduction&lt;/h2&gt;

&lt;p&gt;As this will be my third year attending AWS Summit, I wanted to share some information, resources, and some recommendations that will help make your visit to Toronto a bit easier.&lt;br&gt;&lt;br&gt;I &lt;a href="https://www.linuxtek.ca/2022/06/23/aws-summit-toronto-2022/" rel="noopener noreferrer"&gt;first attended&lt;/a&gt; AWS Summit Toronto in 2022. I had just switched to a team that was supporting a SaaS application fully built on AWS, and I was fortunate enough to be able to go. I was able to meet a number of connections from LinkedIn, and a few of the community members that I had met through training courses and communities. &lt;br&gt;&lt;/p&gt;

&lt;p&gt;As a side note, I believe this was the first time I had heard about the &lt;a href="https://aws.amazon.com/developer/community/community-builders/" rel="noopener noreferrer"&gt;AWS Community Builders Program&lt;/a&gt; from &lt;a href="https://www.linkedin.com/in/augustovaldivia/" rel="noopener noreferrer"&gt;Augusto Valdivia&lt;/a&gt;, who was wearing one of the T-Shirts. As a new user to AWS, hearing about the program and the free conference was eye opening, and I jumped right in. I &lt;a href="https://www.linuxtek.ca/2022/08/16/aws-community-builder-program/" rel="noopener noreferrer"&gt;joined the AWS Community Builders program&lt;/a&gt; a few months later, and it's been an absolute game changer for me.&lt;br&gt;&lt;/p&gt;

&lt;h2&gt;Unofficial Discord&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fwww.linuxtek.ca%2Fwp-content%2Fuploads%2F2024%2F09%2Fdiscordlogo.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fwww.linuxtek.ca%2Fwp-content%2Fuploads%2F2024%2F09%2Fdiscordlogo.png" alt=""&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;To facilitate an easy way to network and share information during the conference, I've created a temporary Discord community.&lt;br&gt;&lt;br&gt;&lt;strong&gt;You can join &lt;a href="https://discord.gg/KSfq7AbMjx" rel="noopener noreferrer"&gt;using this invite link&lt;/a&gt;&lt;/strong&gt;.&lt;br&gt;&lt;/p&gt;

&lt;h2&gt;Travel and Transit&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fwww.linuxtek.ca%2Fwp-content%2Fuploads%2F2024%2F09%2Fttcgo-1024x576.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fwww.linuxtek.ca%2Fwp-content%2Fuploads%2F2024%2F09%2Fttcgo-1024x576.png" alt=""&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://www.mtccc.com/locations/getting-here/" rel="noopener noreferrer"&gt;MTCC - How To Get Here&lt;/a&gt;&lt;br&gt;&lt;br&gt;Driving and parking in Toronto can be a stressful, expensive, and tiring exercise. If you have the option, I would recommend parking at your hotel, or a &lt;a href="https://www.gotransit.com/en/free-parking-at-go-stations" rel="noopener noreferrer"&gt;free GO station parking lot&lt;/a&gt;, taking the &lt;a href="https://www.gotransit.com/en" rel="noopener noreferrer"&gt;GO Train&lt;/a&gt; or &lt;a href="https://www.ttc.ca/routes-and-schedules" rel="noopener noreferrer"&gt;TTC Subway&lt;/a&gt; into Union Station, then walking to the convention centre. It's maybe a 5 minute walk - just head towards the &lt;a href="https://www.cntower.ca/" rel="noopener noreferrer"&gt;CN Tower&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;If you are driving, there is an &lt;a href="https://www.mtccc.com/locations/getting-here/?tab=parking" rel="noopener noreferrer"&gt;MTCC parking garage&lt;/a&gt;, or you can park at a &lt;a href="https://parking.greenp.com/" rel="noopener noreferrer"&gt;Green P Parking Lot&lt;/a&gt; nearby.&lt;/p&gt;

&lt;p&gt;If you are flying in from the Toronto Pearson Airport (YYZ), you can take the &lt;a href="https://www.upexpress.com/en" rel="noopener noreferrer"&gt;UP Express&lt;/a&gt; directly to Union Station.&lt;/p&gt;

&lt;h2&gt;Arrival and Registration&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fwww.linuxtek.ca%2Fwp-content%2Fuploads%2F2024%2F09%2Fmtcc-south-entrance.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fwww.linuxtek.ca%2Fwp-content%2Fuploads%2F2024%2F09%2Fmtcc-south-entrance.png" alt=""&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://aws.amazon.com/events/summits/toronto/" rel="noopener noreferrer"&gt;AWS Summit Toronto 2024&lt;/a&gt; will be at the &lt;a href="https://www.mtccc.com/single-event/aws-partner-summit-toronto/" rel="noopener noreferrer"&gt;Metro Toronto Convention Centre&lt;/a&gt; (MTCC) South Building. &lt;br&gt;You can access it through the &lt;a href="https://www.toronto.ca/explore-enjoy/visitor-toronto/path-torontos-downtown-pedestrian-walkway/" rel="noopener noreferrer"&gt;PATH Network&lt;/a&gt; from Union Station, or from the &lt;a href="https://www.marriott.com/en-us/hotels/yyzdl-delta-hotels-toronto/overview/" rel="noopener noreferrer"&gt;Delta Hotel&lt;/a&gt;. The direct entrance is off Lower Simcoe St and Bremner Blvd. Just walk across from the Delta Hotel. Here is the &lt;a href="https://maps.app.goo.gl/owmQdRbPA8Gi319j7" rel="noopener noreferrer"&gt;Google Maps view&lt;/a&gt;:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fwww.linuxtek.ca%2Fwp-content%2Fuploads%2F2024%2F09%2FScreenshot-from-2024-09-09-14-52-48-1024x594.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fwww.linuxtek.ca%2Fwp-content%2Fuploads%2F2024%2F09%2FScreenshot-from-2024-09-09-14-52-48-1024x594.png" alt=""&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;You can access the MTCC from the North building on Front Street, however you'll be walking quite a bit up a few floors via escalators and various walkways to get to the South building.  It would be faster to go directly if possible.&lt;br&gt;&lt;br&gt;Once inside, there will be signage directing you to the registration area where you can pick up your badge. &lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fwww.linuxtek.ca%2Fwp-content%2Fuploads%2F2024%2F09%2FScreenshot-from-2024-09-09-15-00-54.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fwww.linuxtek.ca%2Fwp-content%2Fuploads%2F2024%2F09%2FScreenshot-from-2024-09-09-15-00-54.png" alt=""&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;I would recommend going early to pick up your badge if possible, as the line can get quite long. If you are able to pick up your badge the day before on September 10 between 10AM - 7PM, you can get $25 in AWS credits or some free swag. In previous years, your badge would be scanable so you can register at booths for communications, contests, and swag.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fwww.linuxtek.ca%2Fwp-content%2Fuploads%2F2024%2F09%2Faws-summit-registration-799x1024.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fwww.linuxtek.ca%2Fwp-content%2Fuploads%2F2024%2F09%2Faws-summit-registration-799x1024.png" alt=""&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;You should get an email a few days before the conference to "Prepare for Badge Pickup", with a QR code to scan.  Have your physical government-issued photo ID ready to show.&lt;/p&gt;

&lt;h2&gt;Agenda&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fwww.linuxtek.ca%2Fwp-content%2Fuploads%2F2024%2F09%2Faws-summit-agenda.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fwww.linuxtek.ca%2Fwp-content%2Fuploads%2F2024%2F09%2Faws-summit-agenda.png" alt=""&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Above is the high level overview of the Summit. There are a lot of labs and sessions going on throughout the day, and it can be a bit overwhelming.  There is usually electronic signage that should make this easier, but if you want to plan ahead, you can review the &lt;a href="https://aws.amazon.com/events/summits/toronto/agenda/" rel="noopener noreferrer"&gt;session catalog&lt;/a&gt; on the AWS page. &lt;br&gt;&lt;br&gt;Even better would be to download the AWS Events application for &lt;a href="https://play.google.com/store/apps/details?id=com.mobiquityinc.awsevents&amp;amp;hl=en_CA&amp;amp;gl=US&amp;amp;pli=1" rel="noopener noreferrer"&gt;Android&lt;/a&gt; or &lt;a href="https://apps.apple.com/us/app/aws-events/id1457242918" rel="noopener noreferrer"&gt;iPhone&lt;/a&gt;, and build your schedule with it.  It's quite good, and will let you have a calendar view of all of the sessions you select, as well as access other features during the conference, such as maps, surveys and contests.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fwww.linuxtek.ca%2Fwp-content%2Fuploads%2F2024%2F09%2Fdevchat2024.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fwww.linuxtek.ca%2Fwp-content%2Fuploads%2F2024%2F09%2Fdevchat2024.png" alt=""&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;On top of the more formal presentation sessions, there will also be Dev Chat sessions in the theatre, presented by AWS Community Builders and other AWS Community members. Come check it out!&lt;br&gt;&lt;/p&gt;

&lt;h2&gt;Networking and Questions&lt;/h2&gt;

&lt;p&gt;Outside attending keynotes and the more formal presentations, make sure to leave some time to wander around the Expo area and visit the vendor booths.  It's a good opportunity to check out the products, ask questions, get names of contacts to reach out to, or maybe score a nice piece of swag.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fwww.linuxtek.ca%2Fwp-content%2Fuploads%2F2024%2F09%2Faws_sign-1024x576.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fwww.linuxtek.ca%2Fwp-content%2Fuploads%2F2024%2F09%2Faws_sign-1024x576.jpg" alt=""&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Visit the &lt;strong&gt;AWS Village&lt;/strong&gt; area, and find someone to chat about one of those burning questions you have.  They also frequently have extra AWS credit vouchers they can give out.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fwww.linuxtek.ca%2Fwp-content%2Fuploads%2F2024%2F09%2Fawscommunitybuilders-1024x536.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fwww.linuxtek.ca%2Fwp-content%2Fuploads%2F2024%2F09%2Fawscommunitybuilders-1024x536.png" alt=""&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;The AWS Community Lounge is also a great place to talk to other AWS users, discover local meetups, and chat with other community members.  &lt;br&gt;&lt;strong&gt;I'll be helping out in the lounge from 3:00 - 4:00 PM, so come by and we can chat!&lt;/strong&gt;&lt;br&gt;&lt;/p&gt;

&lt;h2&gt;Food and Drink&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fwww.linuxtek.ca%2Fwp-content%2Fuploads%2F2024%2F09%2Fawssummit-2023-lunch-576x1024.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fwww.linuxtek.ca%2Fwp-content%2Fuploads%2F2024%2F09%2Fawssummit-2023-lunch-576x1024.jpg" alt=""&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Refreshments like coffee, tea, and water should be available at kiosks in the Expo area throughout the day, starting at 8AM.&lt;/p&gt;

&lt;p&gt;Lunch will start at 12:00PM.  I would &lt;strong&gt;highly recommend&lt;/strong&gt; leaving the keynote a bit early to avoid the rush, so you can grab some food. Last year there was not enough meals, and they ran out in only 10 minutes.  Typically there have been various meal boxes with different proteins, or vegetarian/halal. There is usually soda and other drinks available as well.&lt;/p&gt;

&lt;p&gt;If you aren't able to get lunch during this time, there are a lot of food places within easy walking distance outside of the convention centre.&lt;br&gt;&lt;/p&gt;

&lt;h2&gt;Socializing and After Parties&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fwww.linuxtek.ca%2Fwp-content%2Fuploads%2F2024%2F09%2Faws_community_group_photo-1024x768.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fwww.linuxtek.ca%2Fwp-content%2Fuploads%2F2024%2F09%2Faws_community_group_photo-1024x768.jpg" alt=""&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;AWS Summit is a great place to meet other AWS users, industry leaders, and a great opportunity to network.  Don't be afraid to strike up conversations while waiting in line, having lunch or coffee, or in the Expo area.&lt;/p&gt;

&lt;p&gt;There will be an official networking reception, usually in the Expo area, from 5:00PM - 6:00PM.  There is typically bar service with beer, wine, and non-alcoholic beverages.&lt;/p&gt;

&lt;p&gt;After the conference, many companies will have sponsored after parties nearby. You can usually find out about them when you chat with the company at the booth, and some of them will be posted on social media. If you're a customer, AWS Partner, or just in the know, you'll be able to register and get an invite. Reach out to your account manager if they're sponsoring the Summit and have a booth.&lt;/p&gt;

&lt;h2&gt;Tips&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fwww.linuxtek.ca%2Fwp-content%2Fuploads%2F2024%2F09%2FPXL_20220623_195211994-1024x576.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fwww.linuxtek.ca%2Fwp-content%2Fuploads%2F2024%2F09%2FPXL_20220623_195211994-1024x576.jpg" alt=""&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;If you will be attending any of the Spotlight or Self-Paced Labs, do bring your own laptop as you will need it to follow along.&lt;/li&gt;



&lt;li&gt;A phone battery pack and an extra phone/laptop charger are a good idea to make sure you're not scrambling to find an outlet.&lt;/li&gt;



&lt;li&gt;Set up the AWS Events app on your phone to set up your agenda for the day and know where to go.&lt;/li&gt;



&lt;li&gt;Leave the keynote early to grab lunch and beat the rush. Last year they ran out of food.&lt;/li&gt;



&lt;li&gt;Bring a travel mug for water/coffee/tea - they will have free kiosks to refill. There will be other drinks during lunch, and during the networking reception.&lt;/li&gt;



&lt;li&gt;Bring a backpack for holding swag and your laptop.&lt;/li&gt;



&lt;li&gt;Plan to spend some time in the Expo area and visit the booths to do some networking.&lt;/li&gt;



&lt;li&gt;Talk with the AWS employees at their booth area - usually they'll give away free AWS credits.&lt;/li&gt;



&lt;li&gt;There are usually sponsored after-parties with food and free drinks. Register for a couple and you can tour around between them a bit.&lt;/li&gt;



&lt;li&gt;Don't forget to take a photo with the giant AWS sign!
&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;Resources&lt;/h2&gt;

&lt;p&gt;AWS Summit Toronto 2024:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://aws.amazon.com/events/summits/toronto/agenda/" rel="noopener noreferrer"&gt;AWS Summit Toronto Agenda Website&lt;/a&gt;&lt;/li&gt;



&lt;li&gt;&lt;a href="https://aws.amazon.com/events/summits/toronto/faqs/" rel="noopener noreferrer"&gt;AWS Summit Toronto 2024 FAQ&lt;/a&gt;&lt;/li&gt;



&lt;li&gt;&lt;a href="https://pages.awscloud.com/rs/112-TZM-766/images/2024_TORSummit_AttendeeGuideTechnicalBuilders.pdf" rel="noopener noreferrer"&gt;AWS Summit Technical Builders Guide (quick reference PDF)&lt;/a&gt;&lt;/li&gt;



&lt;li&gt;&lt;a href="https://pages.awscloud.com/rs/112-TZM-766/images/2024_TORSummit_AttendeeGuideBusinessLeaders.pdf" rel="noopener noreferrer"&gt;AWS Summit Business Leaders Guide (quick reference PDF)&lt;/a&gt;&lt;/li&gt;



&lt;li&gt;&lt;a href="https://apps.apple.com/us/app/aws-events/id1457242918" rel="noopener noreferrer"&gt;AWS Events Application - iPhone&lt;/a&gt;&lt;/li&gt;



&lt;li&gt;&lt;a href="https://play.google.com/store/apps/details?id=com.mobiquityinc.awsevents&amp;amp;hl=en_CA&amp;amp;gl=US&amp;amp;pli=1" rel="noopener noreferrer"&gt;AWS Events Application - Android&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Transit and Location:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://pathmap.ca/" rel="noopener noreferrer"&gt;PATHMAP - Path Network Mapping Application&lt;/a&gt;&lt;/li&gt;



&lt;li&gt;&lt;a href="https://www.toronto.ca/wp-content/uploads/2021/03/8d9e-path-map-feb-2021.pdf" rel="noopener noreferrer"&gt;PATH Network Map PDF&lt;/a&gt;&lt;/li&gt;



&lt;li&gt;&lt;a href="https://www.mtccc.com/find-my-space/" rel="noopener noreferrer"&gt;Metro Toronto Convention Centre (MTCC) Floor Plans&lt;/a&gt;&lt;/li&gt;



&lt;li&gt;&lt;a href="https://www.mtccc.com/locations/getting-here/?tab=parking" rel="noopener noreferrer"&gt;MTCC Direct Parking&lt;/a&gt;&lt;/li&gt;



&lt;li&gt;&lt;a href="https://www.mtccc.com/imap/MTCC_CompletePlanner_FEB2023-web-aoda_RE.pdf" rel="noopener noreferrer"&gt;MTCC Detailed Planner PDF&lt;/a&gt;&lt;/li&gt;



&lt;li&gt;&lt;a href="https://www.upexpress.com/en" rel="noopener noreferrer"&gt;UP Express - Direct Train from Pearson Airport&lt;/a&gt;&lt;/li&gt;



&lt;li&gt;&lt;a href="https://parking.greenp.com/" rel="noopener noreferrer"&gt;Green P - Toronto City Parking&lt;/a&gt;&lt;/li&gt;



&lt;li&gt;&lt;a href="https://www.ttc.ca/" rel="noopener noreferrer"&gt;TTC - Toronto Train/Bus Service&lt;/a&gt;&lt;/li&gt;



&lt;li&gt;&lt;a href="https://www.gotransit.com/en" rel="noopener noreferrer"&gt;Go Transit - Inter-city Bus/Train&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;Photos&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://www.linuxtek.ca/2024/05/10/aws-community-builders-year-3-renewal-and-reflection/#Photos" rel="noopener noreferrer"&gt;AWS Summit Toronto - June 2023&lt;/a&gt;&lt;/li&gt;



&lt;li&gt;
&lt;a href="https://www.linuxtek.ca/2022/06/23/aws-summit-toronto-2022/#Event_Gallery" rel="noopener noreferrer"&gt;AWS Summit Toronto - June 2022&lt;/a&gt; &lt;/li&gt;
&lt;/ul&gt;

</description>
    </item>
    <item>
      <title>AWS New Voices - Lessons Learned</title>
      <dc:creator>Jason Paul</dc:creator>
      <pubDate>Tue, 16 Apr 2024 15:10:00 +0000</pubDate>
      <link>https://forem.com/linuxtekcanada/aws-new-voices-lessons-learned-3jl6</link>
      <guid>https://forem.com/linuxtekcanada/aws-new-voices-lessons-learned-3jl6</guid>
      <description>&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--V13-B-gf--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://www.linuxtek.ca/wp-content/uploads/2024/04/AWS-New-Voices-Jason-Paul.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--V13-B-gf--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://www.linuxtek.ca/wp-content/uploads/2024/04/AWS-New-Voices-Jason-Paul.jpg" alt="" width="720" height="556"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;Introduction&lt;/h2&gt;

&lt;p&gt;For the past few weeks, I've been participating in a weekly session to improve my public speaking skills, put on by the &lt;a href="https://aws.amazon.com/developer/community/community-builders/"&gt;AWS Community Builders&lt;/a&gt; community. &lt;strong&gt;AWS New Voices&lt;/strong&gt; is a live, virtual training for those less-experienced in giving technical talks at events and meetups, but would like to begin doing so. The training was 5 weeks, and met once per week for 90 minutes.&lt;/p&gt;

&lt;p&gt;It was a great experience, getting tips and feedback on practice speaking engagements. We had full group sessions, and usually split into smaller breakout rooms to go through some exercises. It was incredibly positive and energizing. Special thanks to &lt;a href="https://www.linkedin.com/in/markpergola/"&gt;Mark Pergola&lt;/a&gt; from AWS for organizing and facilitating, and &lt;a href="https://www.linkedin.com/in/meridith/"&gt;Meridith Grundei&lt;/a&gt; from &lt;a href="https://www.grundeicoaching.com/"&gt;Grundei Coaching&lt;/a&gt; for all of the lessons and amazing energy!&lt;/p&gt;

&lt;p&gt;As part of the program, as we progressed from week to week, we used the tips to build a 5 minute presentation to fine tune and ultimately present to an audience at a public event.&lt;/p&gt;

&lt;p&gt;I've been tuning my presentations using the tips from the training, and recently graduated from the program.  I had done a larger presentation to a local group using the methods learned in the sessions:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://www.linuxtek.ca/2024/03/08/kwlug-presentation-march-2024-introduction-to-truenas-scale"&gt;https://www.linuxtek.ca/2024/03/08/kwlug-presentation-march-2024-introduction-to-truenas-scale&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;I'll be presenting my 5 minute presentation in May, and I'll post it on the site, hopefully with a recording, for feedback.&lt;/p&gt;

&lt;p&gt;In this article, I'd like to share some of the tips we learned throughout the sessions for others to use to improve their public speaking.&lt;/p&gt;

&lt;h2&gt;Week 1 - Speaker Confidence and Establishing Your Talk&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--7Vxl2UyU--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://www.linuxtek.ca/wp-content/uploads/2024/04/audience-1024x539.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--7Vxl2UyU--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://www.linuxtek.ca/wp-content/uploads/2024/04/audience-1024x539.png" alt="" width="800" height="421"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;First, we discussed starting by brainstorming for the presentation by identifying the following:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Who is your audience?  What do they know already?  What don't they know?  What do they need to know?&lt;/li&gt;



&lt;li&gt;What is your end in mind? What outcome do you want? What do you want your audience to think, feel, or do after they've heard your message?&lt;/li&gt;



&lt;li&gt;What are the three "NEED TO KNOWS" that lead to your end in mind?&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;The presentation will be based on this information, and should be tailored for the audience. We took the first week to define this, to start planning our presentation.&lt;/p&gt;

&lt;h2&gt;Week 2 - Storytelling and Hooks&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--_bLprqij--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://www.linuxtek.ca/wp-content/uploads/2024/04/fish-hook.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--_bLprqij--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://www.linuxtek.ca/wp-content/uploads/2024/04/fish-hook.png" alt="" width="600" height="402"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;For the second week, we went over our work from the previous week in smaller breakout groups.&lt;/p&gt;

&lt;p&gt;We also talked about ways to "hook" the audience during the introduction, to capture their attention and keep them engaged for the content you will be going over. This gives a good first impression at the start of your presentation, and you typically have only about 30 seconds to do it.&lt;/p&gt;

&lt;p&gt;A good hook should be:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Brief&lt;/strong&gt; - you only have about 30 seconds to capture the audiences' attention&lt;/li&gt;



&lt;li&gt;
&lt;strong&gt;Catchy&lt;/strong&gt; - you want to make sure it jumps out and the audience finds it interesting&lt;/li&gt;



&lt;li&gt;
&lt;strong&gt;Well-Rehearsed&lt;/strong&gt; - First impressions count, and you only get one shot at this, so make sure to practice&lt;/li&gt;



&lt;li&gt;
&lt;strong&gt;Pertinent to your topic&lt;/strong&gt; - The hook should lead into your presentation, otherwise you risk losing your audience&lt;/li&gt;



&lt;li&gt;
&lt;strong&gt;Avoid dry and conventional hooks&lt;/strong&gt; - Again, you want to make sure to grab the audiences' attention, so don't start with something that will make them tune out&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Some examples of ways to hook your audience are:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Storytelling &lt;/strong&gt;- Beginning with a captivating story that relates to your topic&lt;/li&gt;



&lt;li&gt;
&lt;strong&gt;Startling Statistic&lt;/strong&gt; - Sharing a surprising or thought-provoking statistic&lt;/li&gt;



&lt;li&gt;
&lt;strong&gt;Bold Statement or Question&lt;/strong&gt; - Open with one of these to get the audience to think&lt;/li&gt;



&lt;li&gt;
&lt;strong&gt;Engaging Visual or Prop&lt;/strong&gt; - Capture the audience's attention by using a striking visual or prop&lt;/li&gt;



&lt;li&gt;
&lt;strong&gt;Quotation&lt;/strong&gt; - Start with a compelling quote from a renounced figure or expert&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;As part of building our presentation, we also went over some other sections to think about for crafting our introduction:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Your Hook (all mentioned above)&lt;/li&gt;



&lt;li&gt;Who you are for credibility?  Why should the audience listen to you?&lt;/li&gt;



&lt;li&gt;What will your audience gain from your presentation?&lt;/li&gt;



&lt;li&gt;Why is your presentation important for your audience?&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;At the end of the presentation, you also want to have a &lt;strong&gt;Call To Action&lt;/strong&gt; - one specific thing you want your audience to do after they walk away from your presentation.  This could be going to a website, do some further research, take a certification program, or try a product or service.  &lt;br&gt;&lt;br&gt;This should be clear and simple. If you want them to scan a QR code, save a web link, or fill out a survey, give clear instruction on what you want the audience to do, and give them time to do it.&lt;/p&gt;

&lt;h2&gt;Week 3 - Adding Visuals&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--mc1ip9dF--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://www.linuxtek.ca/wp-content/uploads/2024/04/do-dont-key-words-1-1-980x490-1.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--mc1ip9dF--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://www.linuxtek.ca/wp-content/uploads/2024/04/do-dont-key-words-1-1-980x490-1.png" alt="" width="800" height="400"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;In the past, I was absolutely guilty of creating presentations with the above problem.  I would load my slides with text, and read off of them.  This is overwhelming to the audience, and makes it hard for them to follow along.  &lt;/p&gt;

&lt;p&gt;&lt;span&gt;The audience should be focused on listening to what you have to say, not trying to process everything on the slides.&lt;/span&gt;&lt;/p&gt;

&lt;p&gt;In Week 3, we talked about some ways to use visuals in the presentation effectively.  A lot of this was how to choose visuals to support the message.  We used the &lt;strong&gt;F.O.C.U.S.&lt;/strong&gt; acronym:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;F - Frame&lt;/strong&gt; - Introduce the slide's purpose and how it fits into your overall message&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;O - Orient&lt;/strong&gt; - Guide the audience's attention to the key elements of the slide.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;C - Clarity&lt;/strong&gt; - Each slide is clear and straightforward, with minimal text and clear visuals&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;U - Use Visuals&lt;/strong&gt; - Employ charts, images, props, and diagrams instead of text&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;S - Simplify&lt;/strong&gt; - Focus on the core message of each slide&lt;/p&gt;

&lt;p&gt;Some ways to guide the audience's attention on a slide is to animate the slide to reveal and introduce the information gradually, so you don't overwhelm them, and allow them to process the visuals separately.  You can also circle or highlight the part of a complex diagram to get their focus, and then discuss it.  If you are trying to direct their attention to something that requires action, like scanning a QR code, let the audience know clearly, and pause and wait to give them time to do so.&lt;/p&gt;





&lt;h2&gt;Week 4 - Putting It Together&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--hUHrluWv--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://www.linuxtek.ca/wp-content/uploads/2024/04/Practice-1024x400-1.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--hUHrluWv--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://www.linuxtek.ca/wp-content/uploads/2024/04/Practice-1024x400-1.jpg" alt="" width="800" height="313"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;In Week 4, we put everything together and did a practice run of our presentation to a small breakout group. This was great, as we had time to get feedback from the group to improve our presentation, and also rehearse it with a time check to make sure we weren't going over.&lt;/p&gt;

&lt;p&gt;For some of the things to consider for the presentation:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Imagine your presentation as a gift to your audience.&lt;/li&gt;



&lt;li&gt;What unique value or takeaway do you hope to give them?&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;Week 5 - Final Rehearsal&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--bXIcI4QR--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://www.linuxtek.ca/wp-content/uploads/2024/04/stagepresentation.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--bXIcI4QR--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://www.linuxtek.ca/wp-content/uploads/2024/04/stagepresentation.jpg" alt="" width="752" height="365"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;In Week 5, we did a final run of our 5 minute presentation both in breakout groups, and a few of us to the entire cohort. We really focused on ensuring the breakdown of the presentation was timed properly:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;0.5 Minutes - Introduction and Hook&lt;/li&gt;



&lt;li&gt;0.5 Minutes - Introduce Yourself, Credibility&lt;/li&gt;



&lt;li&gt;3 Minutes - Slides/Talk&lt;/li&gt;



&lt;li&gt;0.5 - Key Takeaways&lt;/li&gt;



&lt;li&gt;0.5 Minutes - Call To Action&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;Conclusion&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--tpWVqRie--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://www.linuxtek.ca/wp-content/uploads/2024/04/thankyou-1024x683.jpeg" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--tpWVqRie--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://www.linuxtek.ca/wp-content/uploads/2024/04/thankyou-1024x683.jpeg" alt="" width="800" height="534"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;I'm really happy I was able to take part in this program, and thankful that it was offered by the AWS Community Builders group. I really feel that the sessions have helped improve my presentations and confidence for public speaking, and I'll be putting these tips to good use.&lt;/p&gt;

&lt;p&gt;I'm also happy I was able to connect with so many passionate individuals and get to know them a bit better in the breakout sessions.  &lt;/p&gt;

&lt;p&gt;The positive energy, presentation feedback, encouragement, and insights were all invaluable.  And of course, since we started and ended most sessions this, I'll have to end with collective...&lt;/p&gt;

&lt;p&gt;👋👋👋 JAZZ HANDS 👋👋👋&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--e7rV5xJ7--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://www.linuxtek.ca/wp-content/uploads/2024/04/jazzhands-1024x591.jpeg" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--e7rV5xJ7--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://www.linuxtek.ca/wp-content/uploads/2024/04/jazzhands-1024x591.jpeg" alt="" width="800" height="462"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;Resources&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://grundeicoaching.com/"&gt;Grundei Coaching&lt;/a&gt;&lt;/li&gt;



&lt;li&gt;&lt;a href="https://blog.thenounproject.com/the-golden-rules-of-presentation-design/"&gt;The Golden Rules of Presentation Design&lt;/a&gt;&lt;/li&gt;



&lt;li&gt;&lt;a href="https://aws.amazon.com/developer/community/community-builders/"&gt;AWS Community Builders&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

</description>
      <category>publicspeaking</category>
      <category>awscommunitybuilders</category>
    </item>
    <item>
      <title>AWS To Provide Free Data Transfer Out To Internet</title>
      <dc:creator>Jason Paul</dc:creator>
      <pubDate>Thu, 07 Mar 2024 02:11:37 +0000</pubDate>
      <link>https://forem.com/aws-builders/aws-to-provide-free-data-transfer-out-to-internet-4beo</link>
      <guid>https://forem.com/aws-builders/aws-to-provide-free-data-transfer-out-to-internet-4beo</guid>
      <description>&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--ogu-rwtn--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://www.linuxtek.ca/wp-content/uploads/2024/03/snowmobile.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--ogu-rwtn--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://www.linuxtek.ca/wp-content/uploads/2024/03/snowmobile.png" alt="" width="700" height="382"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;Introduction&lt;/h2&gt;

&lt;p&gt;A few days ago, AWS announced in a &lt;a href="https://aws.amazon.com/blogs/aws/free-data-transfer-out-to-internet-when-moving-out-of-aws/"&gt;blog post&lt;/a&gt; that they would be providing free DTO (Data Transfer Out) of AWS, when moving data to another cloud provider or to an on-premises data center. This is a pretty big deal, because one of the common concerns from companies looking to adopt the cloud, is the expense of moving their data out, causing vendor lock-in.&lt;/p&gt;

&lt;p&gt;In this article, we will explore details on transferring data in and out of AWS, some of the more recent regulatory changes, and the potential business impact.&lt;/p&gt;

&lt;h2&gt;Updates&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;Update: 03/17/2024&lt;/strong&gt; - On March 13, 2024, Microsoft announced that Azure would be following suit and allowing free egress for customers leaving Azure when taking their data out of the Azure infrastructure via the internet to switch to another cloud provider or an on-premises data center.  This would be on top of the first 100GB/month free egress data already provided.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://azure.microsoft.com/en-us/updates/now-available-free-data-transfer-out-to-internet-when-leaving-azure/"&gt;Azure Announcement Post&lt;/a&gt;&lt;/li&gt;



&lt;li&gt;&lt;a href="https://techcrunch.com/2024/03/14/after-aws-and-google-microsoft-says-its-removing-azure-egress-data-transfer-fees-but-with-caveats/"&gt;TechCrunch News Article&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Update: 03/26/2024&lt;/strong&gt; - It was pointed out that AWS Snowmobile is no longer available.  Recently, the &lt;a href="https://aws.amazon.com/snowmobile"&gt;web page for the service&lt;/a&gt; has been removed, and redirects to the AWS Snowball page. I received confirmation from AWS that the service was discontinued, and was provided with this statement:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;AWS is always innovating on behalf of customers, which means we must sometimes make the decision to pivot when we believe our resources should be invested elsewhere to better serve customers. For that reason, we no longer offer AWS Snowmobile.&lt;/p&gt;
&lt;/blockquote&gt;



&lt;h2&gt;Data Transfer In&lt;/h2&gt;

&lt;p&gt;Typically, there is no charge for inbound data transfer to AWS.  The challenge becomes how to get the data into AWS quickly and efficiently.&lt;/p&gt;

&lt;p&gt;If a small amount of data needs to be transferred, it can be uploaded directly via the internet, for example to an S3 bucket.&lt;/p&gt;

&lt;p&gt;For larger datasets, or to set up a larger job to connect between an on-premises data center and AWS, the two most common options are &lt;a href="https://docs.aws.amazon.com/vpn/latest/s2svpn/VPC_VPN.html"&gt;Site-to-Site VPN&lt;/a&gt; and &lt;a href="https://aws.amazon.com/directconnect/"&gt;Direct Connect&lt;/a&gt;, both which come with a cost.  &lt;a href="https://aws.amazon.com/datasync/"&gt;AWS DataSync&lt;/a&gt; can also be set up to copy between on-premises and AWS, to automate moving data to a number of AWS services.&lt;/p&gt;

&lt;p&gt;For extremely large datasets that cannot be transferred over the internet, or in an environment where there is no consistent network connectivity, the &lt;a href="https://docs.aws.amazon.com/snowball/"&gt;AWS Snow Family&lt;/a&gt; is available.  This allows for some edge computing to collect and process data, and move it to the AWS cloud by physically shipping the device to AWS.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://aws.amazon.com/snowcone/"&gt;AWS Snowcone&lt;/a&gt; has an HDD and SSD device type, which can transfer 8-14TB of data securely on a device small enough to put in a backpack.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--ubEUCbIY--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://www.linuxtek.ca/wp-content/uploads/2024/03/snowcone_jb_sticker_1.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--ubEUCbIY--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://www.linuxtek.ca/wp-content/uploads/2024/03/snowcone_jb_sticker_1.jpg" alt="" width="800" height="529"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://aws.amazon.com/snowball/"&gt;AWS Snowball&lt;/a&gt; has a &lt;a href="https://docs.aws.amazon.com/snowball/latest/developer-guide/device-differences.html"&gt;number of devices optimized&lt;/a&gt; for edge computing and data transfer.  The service allows you to order a ruggedized device that can hold multiple terrabytes to petabytes of data, to transfer to AWS. &lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--lviT_IQV--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://www.linuxtek.ca/wp-content/uploads/2024/03/SnowballEdgeAppliance.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--lviT_IQV--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://www.linuxtek.ca/wp-content/uploads/2024/03/SnowballEdgeAppliance.png" alt="" width="540" height="637"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;You would set up a &lt;a href="https://docs.aws.amazon.com/snowball/latest/developer-guide/jobs.html"&gt;Snowball Edge Job&lt;/a&gt; to define how to import the data into S3. Once the data is copied to the Snowball, it can be shipped back to the proper AWS datacenter to be uploaded and complete the job.&lt;/p&gt;

&lt;p&gt;If you have extremely large amounts of data to transfer, such as hundreds of petabytes or into exabytes, &lt;a href="https://aws.amazon.com/snowmobile/"&gt;AWS Snowmobile&lt;/a&gt; can move up to 100PB at once via a ruggedized shipping container. The ruggedized shipping container is tamper-resistant, water-resistant, temperature controlled, and GPS-tracked.  The service was &lt;a href="https://aws.amazon.com/blogs/aws/aws-snowmobile-move-exabytes-of-data-to-the-cloud-in-weeks/"&gt;announced in 2016&lt;/a&gt;, and one of the trucks shown during a presentation that year at AWS re-Invent:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://www.youtube.com/watch?v=8vQmTZTq7nw"&gt;https://www.youtube.com/watch?v=8vQmTZTq7nw&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;For all of the above methods, the charges would be for the method of data transfer, but the actual data transfer into AWS would cost $0.00/GB.&lt;br&gt;&lt;br&gt;This CNBC piece details all of the AWS Snow family options in much more detail:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://www.youtube.com/watch?v=H3_ZqnqLyVo"&gt;https://www.youtube.com/watch?v=H3_ZqnqLyVo&lt;/a&gt;&lt;/p&gt;



&lt;h2&gt;Data Transfer Out&lt;/h2&gt;

&lt;p&gt;Many of the methods for transferring data into AWS can also be used to transfer data out.  The catch is that until recently, you would also be charged per GB of data transferred out.  For example, see this &lt;a href="https://aws.amazon.com/blogs/aws/aws-data-transfer-prices-reduced/"&gt;AWS blog post&lt;/a&gt; from 2010, when outbound data transfer prices were reduced.  Companies would pay $0.08 - $0.15 per GB transferred out per month.  This would mean that for companies that have extremely large data sets in AWS, getting that data out would be prohibitively expensive, which could lead to some companies being locked into the platform.&lt;/p&gt;

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

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--LlEpTV8t--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://www.linuxtek.ca/wp-content/uploads/2024/03/AWSDataTransferOut.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--LlEpTV8t--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://www.linuxtek.ca/wp-content/uploads/2024/03/AWSDataTransferOut.png" alt="" width="800" height="639"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;The example above is for data transfer from EC2 out to the internet, and is available on the &lt;a href="https://aws.amazon.com/ec2/pricing/on-demand/#Data_Transfer"&gt;pricing page&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;In 2021, AWS &lt;a href="https://aws.amazon.com/blogs/aws/aws-free-tier-data-transfer-expansion-100-gb-from-regions-and-1-tb-from-amazon-cloudfront-per-month/"&gt;increased the free tier&lt;/a&gt; to make the first 100GB of data per month transferred out to the internet free.&lt;/p&gt;

&lt;h2&gt;Changing The Game&lt;/h2&gt;

&lt;p&gt;In January 2024, Google Cloud &lt;a href="https://cloud.google.com/blog/products/networking/eliminating-data-transfer-fees-when-migrating-off-google-cloud"&gt;announced in a blog post&lt;/a&gt; that they would be eliminating data transfer fees when moving off Google Cloud. This would allow customers to use Google Cloud without having to worry about a gigantic cloud exit data transfer bill.  Customers do have to &lt;a href="https://cloud.google.com/exit-cloud"&gt;apply for free data transfer&lt;/a&gt; when exiting Google Cloud, but knowing the policy definitely could be reassuring.&lt;/p&gt;

&lt;p&gt;Since 2022, the European Union has been revising &lt;a href="https://www.eu-data-act.com/"&gt;The European Data Act&lt;/a&gt;, and the &lt;a href="https://eur-lex.europa.eu/legal-content/EN/TXT/?uri=CELEX%3A32023R2854&amp;amp;qid=1704709568425"&gt;final text&lt;/a&gt; was published in December 2023.  The European Data Act will become fully effective in September 2025.  The act specifies:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;The Data Act also improves the conditions under which businesses and consumers can use cloud and edge services in the EU. It becomes easier to move data and applications (from private photo archives to entire business administrations) from one provider to another without incurring any costs, because of new contractual obligations that the proposal presents for cloud providers, and a new standardisation framework for data and cloud interoperability.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Part of the text includes a provision for a self-regulatory code of conduct for facilitating the switching of data processing services and the porting of data.  Many Cloud providers have signed on to the &lt;a href="https://swipo.eu/"&gt;SWIPO&lt;/a&gt; (Switching Cloud Providers and Porting Data) group, including members of the Cloud Infrastructure Services Providers In Europe (&lt;a href="https://cispe.cloud/"&gt;CISPE&lt;/a&gt;).  &lt;/p&gt;

&lt;p&gt;In the &lt;a href="https://aws.amazon.com/blogs/aws/free-data-transfer-out-to-internet-when-moving-out-of-aws/"&gt;most recent blog article&lt;/a&gt; from AWS, they refer to the waiver on data transfer following the direction set by the European Data Act, and being available to all AWS customers around the world, and from any AWS region.&lt;/p&gt;

&lt;p&gt;Interestingly, &lt;a href="https://swipo.eu/uncategorized/press-release-bpdelivery-gigas-microsoft-and-netalia-have-declared-adherence-to-a-swipo-code-of-conduct-2/"&gt;Microsoft has declared adherence&lt;/a&gt; to a SWIPO Code of Conduct, but the &lt;a href="https://azure.microsoft.com/en-us/pricing/details/bandwidth/"&gt;pricing details&lt;/a&gt; for Microsoft Azure still indicate the first 100GB of Internet Egress is free, but charged per GB after that.  I was not able to find an exception policy when exiting their cloud to another provider or moving back to on-premises.  It will be interesting to see if they follow suit with their competitors.&lt;/p&gt;



&lt;h2&gt;Conclusion&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--ShQLwd2U--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://www.linuxtek.ca/wp-content/uploads/2024/03/DataTransfer.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--ShQLwd2U--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://www.linuxtek.ca/wp-content/uploads/2024/03/DataTransfer.png" alt="" width="623" height="391"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;It appears that the European Data Act is working to level the playing field among cloud providers, and making it less costly for companies to port their data out, removing one of the barriers that would cause "lock-in" with specific providers.  It will be interesting to see how other cloud providers and services react to the new pricing and upcoming regulations, and if they will follow suit.&lt;/p&gt;

&lt;h2&gt;Resources&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://aws.amazon.com/blogs/aws/free-data-transfer-out-to-internet-when-moving-out-of-aws/"&gt;AWS Blog Post - Free data transfer out to internet when moving out of AWS&lt;/a&gt;&lt;/li&gt;



&lt;li&gt;&lt;a href="https://aws.amazon.com/blogs/aws/introducing-aws-snowcone-small-lightweight-edge-storage-and-processing/"&gt;AWS Blog Post - Introducing AWS Snowball&lt;/a&gt;&lt;/li&gt;



&lt;li&gt;&lt;a href="https://aws.amazon.com/getting-started/projects/migrate-petabyte-scale-data/faq/"&gt;AWS FAQ - Migrate Petabyte Scale Data&lt;/a&gt;&lt;/li&gt;



&lt;li&gt;&lt;a href="https://aws.amazon.com/snowmobile/faqs/"&gt;AWS Snowmobile FAQ&lt;/a&gt;&lt;/li&gt;



&lt;li&gt;&lt;a href="https://www.eu-data-act.com/"&gt;European Data Act&lt;/a&gt;&lt;/li&gt;



&lt;li&gt;&lt;a href="https://swipo.eu/"&gt;SWIPO (Switching Cloud Providers and Porting Data) Stakeholder Group&lt;/a&gt;&lt;/li&gt;



&lt;li&gt;&lt;a href="https://cispe.cloud/"&gt;Cloud Infrastructure Services Providers in Europe&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

</description>
    </item>
    <item>
      <title>AWS Training and Certification Promotion Roundup - Feb 2023</title>
      <dc:creator>Jason Paul</dc:creator>
      <pubDate>Thu, 02 Feb 2023 02:39:45 +0000</pubDate>
      <link>https://forem.com/aws-builders/aws-training-and-certification-promotion-roundup-feb-2023-58ce</link>
      <guid>https://forem.com/aws-builders/aws-training-and-certification-promotion-roundup-feb-2023-58ce</guid>
      <description>&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fwww.linuxtek.ca%2Fwp-content%2Fuploads%2F2023%2F02%2Fawstrainingcert-1.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fwww.linuxtek.ca%2Fwp-content%2Fuploads%2F2023%2F02%2Fawstrainingcert-1.png" alt="" width="598" height="180"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;Introduction&lt;/h2&gt;

&lt;p&gt;There are a number of current promotions around AWS training and certification that include free training, discount vouchers on exams, and other resources.  These are typically hard to find in one place, and you either have to hear about it through social media, or comb through some of the update documents to find them.  I will be summarizing the current promotions and adding to this article as I find more.&lt;/p&gt;

&lt;p&gt;Obviously this is not an AWS curated list of resources.  It is just a collection of available resources that I came across and decided to share.  If you find similar offerings, please leave a comment or contact me, and I'll do my best to add them where appropriate.&lt;/p&gt;

&lt;h2&gt;AWS Certified Cloud Practitioner - Foundational&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fwww.linuxtek.ca%2Fwp-content%2Fuploads%2F2023%2F02%2Fcloudpractitioner-1.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fwww.linuxtek.ca%2Fwp-content%2Fuploads%2F2023%2F02%2Fcloudpractitioner-1.png" alt="" width="300" height="300"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://pages.awscloud.com/EMEA-TRAINCERT-event-OE-GetCert-CPE_EN-20230210-reg-event.html" rel="noopener noreferrer"&gt;&lt;strong&gt;Signup Link&lt;/strong&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;The virtual event is on &lt;strong&gt;Friday, February 10, 2023 | 09:00 AM - 10:30 AM GMT&lt;/strong&gt;, so this is more for those in the UK/Europe.  If you attend the exam readiness webinar, you can get a voucher for a 50% discount off the exam:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fwww.linuxtek.ca%2Fwp-content%2Fuploads%2F2023%2F02%2FScreenshot_20230201-081626-2-1024x529.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fwww.linuxtek.ca%2Fwp-content%2Fuploads%2F2023%2F02%2FScreenshot_20230201-081626-2-1024x529.png" alt="" width="800" height="413"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;The webinar will cover:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Understanding the exam structure and question types&lt;/li&gt;



&lt;li&gt;Interpreting the concepts being tested by an exam question&lt;/li&gt;



&lt;li&gt;Allocating your time studying for the exam&lt;/li&gt;
&lt;/ul&gt;



&lt;p&gt;If you will be preparing for this exam, I would also recommend reviewing the recordings on Twitch from the &lt;a href="https://pages.awscloud.com/GLOBAL-other-T2-Traincert-Twitch-AWS-Power-Hour-CP-2022.html" rel="noopener noreferrer"&gt;AWS Power Hour: Cloud Practitioner&lt;/a&gt; series from 2022.  All of the episode recordings and resources are available at this link.&lt;/p&gt;

&lt;h2&gt;AWS Certified Solutions Architect - Associate&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fwww.linuxtek.ca%2Fwp-content%2Fuploads%2F2023%2F02%2Faws-saa.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fwww.linuxtek.ca%2Fwp-content%2Fuploads%2F2023%2F02%2Faws-saa.png" alt="" width="300" height="300"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;From this &lt;a href="https://aws.amazon.com/blogs/training-and-certification/new-courses-and-updates-from-aws-training-and-certification-in-january-2023/" rel="noopener noreferrer"&gt;blog post&lt;/a&gt; from January 31, 2023, there are a number of training resources mentioned.  The &lt;a href="https://explore.skillbuilder.aws/learn/public/learning_plan/view/1044/solutions-architect-learning-plan" rel="noopener noreferrer"&gt;Solutions Architect Learning Plan&lt;/a&gt; is a free AWS Skillbuilder course which is designed to help Cloud Architects and Solutions Architects design solutions on AWS using best practices.  This Learning Plan can also help prepare you for the AWS Certified Solutions Architect - Associate and AWS Certified Solutions Architect - Professional certification exams.  &lt;/p&gt;

&lt;p&gt;For a limited time, the first 1,000 learners who pass the assessment can earn a 50% discounted certification voucher for the &lt;a href="https://aws.amazon.com/certification/certified-solutions-architect-associate/" rel="noopener noreferrer"&gt;AWS Certified Solutions Architect – Associate&lt;/a&gt; exam.&lt;/p&gt;

&lt;p&gt;If you are preparing for this exam, I would recommend reviewing the recent &lt;a href="https://pages.awscloud.com/GLOBAL-other-T2-Traincert-Twitch-AWS-Power-Hour-Architecting-2022.html" rel="noopener noreferrer"&gt;AWS Power Hour: Architecting&lt;/a&gt; series that was broadcast on Twitch.  It was specifically designed for those preparing for the &lt;a href="https://aws.amazon.com/certification/certified-solutions-architect-associate/" rel="noopener noreferrer"&gt;AWS Certified Solutions Architect – Associate&lt;/a&gt; (SAA-C03) exam.&lt;/p&gt;

&lt;h2&gt;AWS Certified Solutions Architect/DevOps Engineer - Professional&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fwww.linuxtek.ca%2Fwp-content%2Fuploads%2F2023%2F02%2Faws-sapro.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fwww.linuxtek.ca%2Fwp-content%2Fuploads%2F2023%2F02%2Faws-sapro.png" alt="" width="300" height="300"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Currently, there is a &lt;a href="https://pages.awscloud.com/GLOBAL-ln-GC-TrainCert-Professional-Certification-Challenge-Registration-2023.html" rel="noopener noreferrer"&gt;AWS Certified: Professional Challenge&lt;/a&gt; available until April 28, 2023.  By registering, you can get a 50% discount voucher for the &lt;a href="https://aws.amazon.com/certification/certified-solutions-architect-professional/" rel="noopener noreferrer"&gt;AWS Certified Solutions Architect - Professional&lt;/a&gt;, or &lt;a href="https://aws.amazon.com/certification/certified-devops-engineer-professional/" rel="noopener noreferrer"&gt;AWS Certified DevOps Engineer - Professional&lt;/a&gt; exam.&lt;/p&gt;

&lt;p&gt;There is also a free Skillbuilder course - &lt;a href="https://explore.skillbuilder.aws/learn/course/external/view/elearning/14951/exam-prep-aws-certified-solutions-architect-professional-sap-c02" rel="noopener noreferrer"&gt;Exam Prep: AWS Certified Solutions Architect – Professional&lt;/a&gt;.  This is a free five-hour intermediate digital course designed for individuals preparing for the AWS Certified Solutions Architect – Professional exam.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fwww.linuxtek.ca%2Fwp-content%2Fuploads%2F2023%2F02%2FScreenshot_2023-02-01_21-27-39.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fwww.linuxtek.ca%2Fwp-content%2Fuploads%2F2023%2F02%2FScreenshot_2023-02-01_21-27-39.png" alt="" width="459" height="280"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;The new AWS &lt;a href="https://pages.awscloud.com/GLOBAL-other-T2-AWS-Power-Hour-Architecting-Pro-2023-reg.html" rel="noopener noreferrer"&gt;Power Hour: Architecting Pro&lt;/a&gt; streams start on February 13, 2023, and will focus on material for the AWS Certified Solutions Architect – Professional (SAP-C02) exam.  You can &lt;a href="https://pages.awscloud.com/GLOBAL-other-T2-AWS-Power-Hour-Architecting-Pro-2023-interest.html" rel="noopener noreferrer"&gt;register here&lt;/a&gt; to be emailed updates, reminders, and resources.&lt;/p&gt;

</description>
      <category>crypto</category>
      <category>cryptocurrency</category>
      <category>blockchain</category>
      <category>web3</category>
    </item>
    <item>
      <title>Self-Hosting Bitwarden On AWS</title>
      <dc:creator>Jason Paul</dc:creator>
      <pubDate>Tue, 03 Jan 2023 21:52:29 +0000</pubDate>
      <link>https://forem.com/aws-builders/self-hosting-bitwarden-on-aws-1ndp</link>
      <guid>https://forem.com/aws-builders/self-hosting-bitwarden-on-aws-1ndp</guid>
      <description>&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--zHzGv4jT--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://www.linuxtek.ca/wp-content/uploads/2023/01/bitwardenaws.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--zHzGv4jT--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://www.linuxtek.ca/wp-content/uploads/2023/01/bitwardenaws.png" alt="" width="880" height="880"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://github.com/linuxtek-canada/Projects/tree/main/bitwarden-aws"&gt;&lt;strong&gt;Quick Start - Github Project&lt;/strong&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;Introduction&lt;/h2&gt;

&lt;p&gt;I've used LastPass for quite a few years now as my primary password storage service.  I randomly generate most of the passwords for websites, and I don't even know what most of them are, so I depend on my LastPass Vault quite heavily.  &lt;/p&gt;

&lt;p&gt;I am using Multi-Factor Authentication, and even paid for LastPass Premium for a while so I could &lt;a href="https://www.lastpass.com/yubico"&gt;use a Yubikey&lt;/a&gt; for access.  After doing this for a while, I switched to using Google Authenticator for MFA.  It concerns me that while MFA can be added as a layer to access the LastPass vault using the browser plugin or app, there is no extra encryption on the Vault itself.  That means that if the data ever got stolen, the MFA layers would be useless, and only the master password would need to be cracked to access the passwords and other Vault data.&lt;/p&gt;

&lt;p&gt;In December 2022, LastPass &lt;a href="https://blog.lastpass.com/2022/12/notice-of-recent-security-incident/"&gt;released details&lt;/a&gt; around a recent security incident from August 2022, where an unauthorized third party gained access to backups of production data, including vault data.  While the vaults are encrypted and secured with 256-bit AES encryption, the master password can be brute-forced to decrypt the vault.  This &lt;a href="https://en.wikipedia.org/wiki/LastPass#Security_incidents"&gt;isn't the first security incident&lt;/a&gt; suffered by LastPass, but it is very concerning to me in this case that vault data was stolen.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://www.linkedin.com/in/lawrencesystems/"&gt;Tom Lawrence&lt;/a&gt; from &lt;a href="https://lawrencesystems.com/"&gt;Lawrence Systems&lt;/a&gt; posted a number of YouTube videos on the topic, which drew my attention to the urgency of the problem.  I would highly recommend watching this video for more details:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://youtu.be/x2K2h6W4pTw"&gt;https://youtu.be/x2K2h6W4pTw&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;Considering Alternate Password Managers&lt;/h2&gt;

&lt;p&gt;I had been considering moving to a self-hosted password manager for a while, but this latest security incident prompted me to take more urgent action to do so, and rotate all of my site passwords in the process.&lt;/p&gt;

&lt;p&gt;I've used &lt;a href="https://1password.com/"&gt;1Password&lt;/a&gt; for work, and it didn't seem too bad, but it isn't an open source platform, and doesn't look like it can be self hosted.  There is a &lt;a href="https://survey.1password.com/self-host/"&gt;survey you can submit&lt;/a&gt; to them on the topic, if this is something you'd like them to do.&lt;/p&gt;

&lt;p&gt;I also looked at &lt;a href="https://keepass.info/"&gt;KeePass Password Safe&lt;/a&gt; and &lt;a href="https://keepassxc.org/"&gt;KeePassXC&lt;/a&gt;, which are open source.  KeePassXC does have a browser plugin, but the password database is stored as a file, which makes it trickier to maintain as it would need to be manually synchronized between computers.  Other products like Bitwarden and VaultWarden run as a full server, and have browser plugins and phone applications that can talk to it.&lt;/p&gt;

&lt;p&gt;Tom also did a separate video on this topic:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://youtu.be/46aiqnEHOVU"&gt;https://youtu.be/46aiqnEHOVU&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;I considered using &lt;a href="https://github.com/dani-garcia/vaultwarden"&gt;VaultWarden&lt;/a&gt;, which is a free, alternative implementation of Bitwarden written in Rust, but the fact that Bitwarden is run through a number of Docker containers appeals to me, and I can dedicate the resources in my homelab, or in AWS, to run it.  Bitwarden also has a number of other features that appeal to me, and supporting the original project also seemed to make sense.  Using Bitwarden also would maintain the best compatibility with browser plugins and mobile applications.&lt;/p&gt;

&lt;h2&gt;Setting Up The AWS Environment&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--rJ4T4FBM--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://www.linuxtek.ca/wp-content/uploads/2023/01/terraformaws-1024x614.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--rJ4T4FBM--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://www.linuxtek.ca/wp-content/uploads/2023/01/terraformaws-1024x614.png" alt="" width="880" height="528"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Now that I had decided on setting up Bitwarden, I had to build an AWS environment to run it on.  I decided to do this in Terraform, as it lets me document Infrastructure-as-Code, and makes it easy to set up and tear down.  I've put all of the code needed with instructions and minimal tweaks in this &lt;a href="https://github.com/linuxtek-canada/Projects/tree/main/bitwarden-aws"&gt;Github project folder&lt;/a&gt; for others to use as well, if it is helpful.&lt;/p&gt;

&lt;p&gt;Most of the AWS environment setup is pretty generic.  The real configuration is in the &lt;a href="https://github.com/linuxtek-canada/Projects/blob/main/bitwarden-aws/terraform/userdata.sh"&gt;userdata.sh&lt;/a&gt; file which provisions the EC2 instance after Terraform brings it up.  I considered doing some of this work with Ansible using a &lt;a href="https://developer.hashicorp.com/terraform/language/resources/provisioners/remote-exec"&gt;remote-exec provisioner&lt;/a&gt;, but this is really only as a last resort and using the &lt;a href="https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/user-data.html"&gt;User Data to run Linux commands&lt;/a&gt; after launch is supported by, and recommended for Amazon EC2.&lt;/p&gt;

&lt;p&gt;I chose not to automate the Bitwarden installation itself, as there is a bit of a chicken and egg situation regarding the prerequisites for installing Bitwarden.  More on that later.&lt;/p&gt;

&lt;h2&gt;Bitwarden Prerequisites&lt;/h2&gt;

&lt;p&gt;One of the &lt;a href="https://bitwarden.com/help/install-on-premise-linux/"&gt;requirements for installing&lt;/a&gt; Bitwarden is a domain name with DNS records.  This could be created in &lt;a href="https://aws.amazon.com/route53/"&gt;Amazon Route 53&lt;/a&gt; if you are creating a new domain or subdomain already managed in AWS.  I am using &lt;a href="https://www.cloudflare.com"&gt;CloudFlare&lt;/a&gt; for DNS for this domain, so I had to create an A record for Bitwarden to use, pointing to the public IP address of the EC2 instance created by Terraform:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--JL4S0wwb--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://www.linuxtek.ca/wp-content/uploads/2023/01/cloudflare-ar-1024x225.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--JL4S0wwb--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://www.linuxtek.ca/wp-content/uploads/2023/01/cloudflare-ar-1024x225.png" alt="" width="880" height="193"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;I also needed an SMTP Server for Bitwarden to use to send email verification links.  For this purpose, using an external SMTP server is easier than setting up your own mail server.  &lt;a href="https://support.google.com/a/answer/176600?hl=en"&gt;GMail has options&lt;/a&gt; to use their SMTP servers with authentication, but for this test, I decided to use &lt;a href="https://aws.amazon.com/ses/"&gt;Amazon Simple Email Service&lt;/a&gt; (SES).  In order to send email from the linuxtek.ca domain, I needed to add the domain as a &lt;a href="https://docs.aws.amazon.com/ses/latest/dg/creating-identities.html"&gt;verified identity&lt;/a&gt;.  I used the &lt;a href="https://docs.aws.amazon.com/ses/latest/dg/send-email-authentication-dkim-easy.html"&gt;Easy DomainKeys Identified Mail&lt;/a&gt; (DKIM) wizard, and added the required CNAME, MX, and TXT DNS records in CloudFlare:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--TLWNk5Ct--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://www.linuxtek.ca/wp-content/uploads/2023/01/cloudflare-dkim-1024x154.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--TLWNk5Ct--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://www.linuxtek.ca/wp-content/uploads/2023/01/cloudflare-dkim-1024x154.png" alt="" width="880" height="132"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Shortly after this was done, SES was able to verify the identity successfully.  I also added my personal email address I would be testing with under verified identities, as by default, the Amazon SES account &lt;a href="https://docs.aws.amazon.com/ses/latest/dg/request-production-access.html"&gt;is in a sandbox&lt;/a&gt;, and is only able to send email to verified addresses.  If you will be using this in production, you will need to submit a support case to Amazon in order to move to production.  For the purposes of this test, this was not necessary.&lt;/p&gt;

&lt;p&gt;In order to authenticate with Amazon's SMTP server, I also needed to create an SMTP username and password.  This can be done under &lt;strong&gt;Amazon SES &amp;gt; SMTP Settings&lt;/strong&gt;, and basically creates an IAM user which only has access to write to SES.  Make sure to write down the username and password as they are not available after creation.  Also pro tip - the IAM username is different from the SMTP username, so make sure to record both.&lt;/p&gt;

&lt;h2&gt;Installing Bitwarden&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://www.linkedin.com/in/lawrencesystems/"&gt;Tom Lawrence&lt;/a&gt; has done a great video on installing Self-Hosted Bitwarden, and if you want a good walkthrough I'd recommend giving it a view:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://youtu.be/SSLGa0LjTrA"&gt;https://youtu.be/SSLGa0LjTrA&lt;/a&gt;&lt;/p&gt;



&lt;p&gt;The &lt;a href="https://bitwarden.com/help/install-on-premise-linux/"&gt;Bitwarden installation documentation&lt;/a&gt; for on-premise Linux installation is also very easy to follow, and a recommended read.&lt;/p&gt;

&lt;p&gt;I will go through the steps I performed, as some of the installation steps like creating the bitwarden user are taken care of by Terraform.&lt;/p&gt;

&lt;p&gt;I SSH'd into the AWS EC2 instance as the &lt;code&gt;admin&lt;/code&gt; user, using the keypair that was inserted into the machine as part of the setup.&lt;/p&gt;

&lt;p&gt;Once logged in, I switched to the Bitwarden user using &lt;code&gt;sudo su bitwarden&lt;/code&gt;.  If you want you can specify a password for this user to log in directy, but I prefer to use my keypair and only use the &lt;code&gt;admin&lt;/code&gt; user.&lt;/p&gt;

&lt;p&gt;In the &lt;code&gt;/opt/bitwarden&lt;/code&gt; directory, the bitwarden.sh file is already present, so I ran that using &lt;code&gt;./bitwarden.sh install&lt;/code&gt;.&lt;/p&gt;

&lt;p&gt;I entered the domain name that I had created in CloudFlare:  &lt;code&gt;bitwarden.linuxtek.ca&lt;/code&gt;.&lt;/p&gt;

&lt;p&gt;For this test, I wanted to use a Let's Encrypt SSL certificate, so I said "yes" on the next prompt, and entered my personal email address to send expiration reminders to.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--rB3Bi3pI--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://www.linuxtek.ca/wp-content/uploads/2023/01/bitwarden-install1.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--rB3Bi3pI--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://www.linuxtek.ca/wp-content/uploads/2023/01/bitwarden-install1.png" alt="" width="880" height="354"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;When prompted, I entered &lt;code&gt;linuxtek-vault&lt;/code&gt; for the name of the Bitwarden database.  After this, the installer pulled down all of the required Docker containers.  I then entered my Bitwarden Installation ID and Key, which I generated at &lt;a href="https://bitwarden.com/host/"&gt;this link&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--vFlnJs9L--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://www.linuxtek.ca/wp-content/uploads/2023/01/bitwarden-install2.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--vFlnJs9L--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://www.linuxtek.ca/wp-content/uploads/2023/01/bitwarden-install2.png" alt="" width="867" height="286"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;After entering this, the installer generated some encryption keys, and completed the install.&lt;/p&gt;

&lt;p&gt;I then modified the &lt;code&gt;global.override.env&lt;/code&gt; file in &lt;code&gt;/opt/bitwarden/bwdata/env&lt;/code&gt; to configure these lines:&lt;/p&gt;



&lt;pre&gt;&lt;code&gt;globalSettings__mail__replyToEmail=no-reply@bitwarden.linuxtek.ca
globalSettings__mail__smtp__host=REPLACE
globalSettings__mail__smtp__port=587
globalSettings__mail__smtp__ssl=false
globalSettings__mail__smtp__username=REPLACE
globalSettings__mail__smtp__password=REPLACE
globalSettings__disableUserRegistration=false
globalSettings__hibpApiKey=REPLACE
adminSettings__admins=&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;In my case, I added the SMTP endpoint address for Amazon SES, from the &lt;strong&gt;Amazon SES &amp;gt; SMTP Settings&lt;/strong&gt; page.  I used SMTP port 587, and specified to use SSL.  I entered in the SMTP username and password I generated and recorded when generating my SMTP credentials.  For this test, I left &lt;code&gt;disableUserRegistration=false&lt;/code&gt; to allow registration, but once I was set up, I would disable that.  For &lt;code&gt;adminSettings__admins&lt;/code&gt;, I put in my personal email address.&lt;/p&gt;

&lt;p&gt;Once I finished editing the file, as per the installation guide, I switched back to &lt;code&gt;/opt/bitwarden&lt;/code&gt;, and  ran an &lt;code&gt;./bitwarden.sh rebuild&lt;/code&gt; and &lt;code&gt;./bitwarden.sh restart&lt;/code&gt; to ensure the settings took effect.  Many of the Docker containers were pulled down, extracted, and started; so it took a few minutes to completely start up.  I also ran &lt;code&gt;./bitwarden.sh updateself&lt;/code&gt; and &lt;code&gt;./bitwarden.sh update&lt;/code&gt; to make sure I had the latest builds.&lt;/p&gt;

&lt;p&gt;Once complete, I was able to run &lt;code&gt;docker ps&lt;/code&gt; to see all of the containers running:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--1TgWLbnI--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://www.linuxtek.ca/wp-content/uploads/2023/01/bitwarden-install3-1-1024x231.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--1TgWLbnI--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://www.linuxtek.ca/wp-content/uploads/2023/01/bitwarden-install3-1-1024x231.png" alt="" width="880" height="199"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;And by visiting the domain name I had set, I was presented with the Bitwarden login screen:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s---VdIsSnM--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://www.linuxtek.ca/wp-content/uploads/2023/01/Screenshot_2023-01-03_16-15-12.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s---VdIsSnM--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://www.linuxtek.ca/wp-content/uploads/2023/01/Screenshot_2023-01-03_16-15-12.png" alt="" width="487" height="533"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;After creating an account with my personal email address, I logged into the Vault and saw the account would need to be verified via email address:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--rFYDcqrg--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://www.linuxtek.ca/wp-content/uploads/2023/01/Screenshot_2023-01-03_16-16-46.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--rFYDcqrg--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://www.linuxtek.ca/wp-content/uploads/2023/01/Screenshot_2023-01-03_16-16-46.png" alt="" width="233" height="187"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Clicking the "Send email" button successfully sent a verification email via Amazon SES to my personal email.  Once I clicked the link, I entered my credentials again, and the account was verified, and I had full access to all features:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--nhpk7Jim--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://www.linuxtek.ca/wp-content/uploads/2023/01/Screenshot_2023-01-03_16-23-56-1024x634.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--nhpk7Jim--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://www.linuxtek.ca/wp-content/uploads/2023/01/Screenshot_2023-01-03_16-23-56-1024x634.png" alt="" width="880" height="545"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;After testing, I ran a &lt;code&gt;terraform destroy&lt;/code&gt; on the environment, and removed all of the DNS records from CloudFlare, to prevent any abuse of my account (just a heads up for anyone looking to exploit the system).&lt;/p&gt;

&lt;h2&gt;Troubleshooting&lt;/h2&gt;

&lt;p&gt;I did run into a few issues while setting this up initially, mostly around the Amazon SES configuration.  Mainly this was due to using the IAM username as the SMTP username, and they are not the same.  Definitely make sure you record both once you set up the credentials.&lt;/p&gt;

&lt;p&gt;To troubleshoot the verification email, use the logs under &lt;code&gt;/opt/bitwarden/bwdata/logs/api/Api&lt;/code&gt;.  The errors were fairly clear when there I had an SMTP configuration issue.  &lt;/p&gt;

&lt;p&gt;Also, be sure to do a &lt;code&gt;./bitwarden.sh rebuild&lt;/code&gt; and &lt;code&gt;./bitwarden.sh restart&lt;/code&gt; any time you make changes to the Bitwarden configuration, to ensure the settings are applied.&lt;/p&gt;

&lt;p&gt;Also, when using SES, keep in mind that in Sandbox mode, you won't be able to send to any emails to addresses not in your verification list.  Initially I thought I would need to switch to a Production mode to test, but all I needed to do was verify that email address ahead of time.  Thanks to &lt;strong&gt;Traian Ciobanu&lt;/strong&gt; for the help troubleshooting this.&lt;/p&gt;

&lt;h2&gt;Conclusion&lt;/h2&gt;

&lt;p&gt;When I initially decided to set Bitwarden up to self host in AWS, I had ideas to share the service with my family.  Eventually I decided it was too much of a risk to keep the server open on the internet, and locking it down would be costly and complex.  Instead, I will be hosting a Bitwarden server in my homelab behind my firewall, and access it using VPN if needed, to avoid having to open ports.  &lt;/p&gt;

&lt;p&gt;Hopefully the resources and information in this article can help others who are looking to self host, and you can decide if hosting in AWS makes sense for you.  &lt;/p&gt;

</description>
    </item>
    <item>
      <title>Amazon Lightsail Free Credits Draw</title>
      <dc:creator>Jason Paul</dc:creator>
      <pubDate>Mon, 17 Oct 2022 20:17:21 +0000</pubDate>
      <link>https://forem.com/aws-builders/amazon-lightsail-free-credits-draw-267</link>
      <guid>https://forem.com/aws-builders/amazon-lightsail-free-credits-draw-267</guid>
      <description>&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--Wf7xDDaG--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://www.linuxtek.ca/wp-content/uploads/2022/10/amazon_lightsail_logo.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--Wf7xDDaG--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://www.linuxtek.ca/wp-content/uploads/2022/10/amazon_lightsail_logo.png" alt="" width="800" height="450"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;Editor's Note&lt;/h2&gt;

&lt;p&gt;This article was originally published on &lt;a href="http://www.linuxtek.ca"&gt;www.linuxtek.ca&lt;/a&gt; and some of the links and references will refer back to that site.&lt;/p&gt;

&lt;h2&gt;Introduction&lt;/h2&gt;

&lt;p&gt;I've been exploring the &lt;a href="https://aws.amazon.com/lightsail/"&gt;Amazon Lightsail&lt;/a&gt; services recently through these previous articles:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://www.linuxtek.ca/2022/09/18/migrating-wordpress-from-gcp-to-aws/"&gt;Migrating Wordpress from GCP to AWS&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.linuxtek.ca/2022/10/14/testing-lightsail-containers-with-minecraft/"&gt;Testing Lightsail Containers with Minecraft&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;As part of the research, I've been fortunate enough to speak with a number of resources through my contacts in the &lt;a href="https://aws.amazon.com/developer/community/community-builders/"&gt;AWS Community Builders Program&lt;/a&gt;.  I've been provided two codes for $50 of credits for Amazon Lightsail services, and I want to pass them on to you, dear reader!  &lt;/p&gt;

&lt;p&gt;If you're hosting workloads on Amazon Lightsail, or want to try some of them out, then this is the draw for you.&lt;/p&gt;

&lt;h2&gt;The Draw&lt;/h2&gt;

&lt;p&gt;You can enter the draw at [removed]&lt;br&gt;&lt;/p&gt;

&lt;p&gt;Good luck, and I hope the winners build something cool with these credits.  I'd love to hear about it!&lt;/p&gt;

&lt;h2&gt;Update - November 1&lt;/h2&gt;

&lt;p&gt;Congratulations to our two winners!  I used a dice roller to randomly choose two winners, and have emailed them the codes.&lt;/p&gt;

</description>
      <category>aws</category>
      <category>lightsail</category>
      <category>giveaway</category>
    </item>
    <item>
      <title>Testing Lightsail Containers with Minecraft</title>
      <dc:creator>Jason Paul</dc:creator>
      <pubDate>Mon, 17 Oct 2022 20:14:03 +0000</pubDate>
      <link>https://forem.com/aws-builders/testing-lightsail-containers-with-minecraft-2cgg</link>
      <guid>https://forem.com/aws-builders/testing-lightsail-containers-with-minecraft-2cgg</guid>
      <description>&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--nAN6QAdB--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://www.linuxtek.ca/wp-content/uploads/2022/10/lightsailcontainer.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--nAN6QAdB--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://www.linuxtek.ca/wp-content/uploads/2022/10/lightsailcontainer.png" alt="" width="495" height="136"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;Editor's Note&lt;/h2&gt;

&lt;p&gt;This article was originally published on &lt;a href="http://www.linuxtek.ca"&gt;www.linuxtek.ca&lt;/a&gt; and some of the links and references will refer back to that site.&lt;/p&gt;

&lt;h2&gt;Introduction&lt;/h2&gt;

&lt;p&gt;After my &lt;a href="https://www.linuxtek.ca/2022/09/18/migrating-wordpress-from-gcp-to-aws/"&gt;previous article&lt;/a&gt; where I used Amazon Lightsail to migrate my blog to an Amazon Lightsail VPS (Virtual Private Server) instance, I decided to try out the &lt;a href="https://lightsail.aws.amazon.com/ls/docs/en_us/articles/amazon-lightsail-container-services"&gt;Lightsail Container Service&lt;/a&gt; to see if it was similarly easy to use.  &lt;/p&gt;

&lt;p&gt;The use case here would be that in some cases for testing a service in a Docker container, it would be easier to deploy it on a service like Lightsail, rather than spinning up an entire environment using AWS &lt;a href="https://aws.amazon.com/ecs/"&gt;Elastic Container Service&lt;/a&gt;, or &lt;a href="https://aws.amazon.com/eks"&gt;Elastic Kubernetes Service&lt;/a&gt;.  While both of these services can use &lt;a href="https://aws.amazon.com/fargate/"&gt;AWS Fargate&lt;/a&gt; for serverless container workloads, there is a lot more infrastructure that needs to be built in order to run the container.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://lightsail.aws.amazon.com/ls/docs/en_us/articles/amazon-lightsail-container-services"&gt;Amazon Lightsail Container Service&lt;/a&gt; provides an easy way to run your containers in the cloud, and is ideal for simple workloads.&lt;/p&gt;

&lt;h2&gt;Lightsail Container Service Details&lt;/h2&gt;

&lt;p&gt;Before getting started, it's important to understand how the service is designed.&lt;/p&gt;

&lt;p&gt;While Lightsail provides a simplified deployment method, it's important to understand that under the hood, the service is powered by many of the other AWS services, such as &lt;a href="https://aws.amazon.com/ec2/"&gt;Amazon Elastic Compute Cloud (Amazon EC2)&lt;/a&gt;, &lt;a href="https://aws.amazon.com/rds/"&gt;Amazon Relational Database Service (RDS)&lt;/a&gt;, &lt;a href="https://docs.aws.amazon.com/elasticloadbalancing/latest/application/introduction.html"&gt;Application Load Balancer&lt;/a&gt;, etc.  For more details see this &lt;a href="https://aws.amazon.com/blogs/aws/lightsail-containers-an-easy-way-to-run-your-containers-in-the-cloud/"&gt;blog post&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;Within a Lightsail Container Service, there are multiple nodes running the containers, and a load balancer.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--1n04Ne6O--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://www.linuxtek.ca/wp-content/uploads/2022/10/amazon-lightsail-container-service-diagram.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--1n04Ne6O--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://www.linuxtek.ca/wp-content/uploads/2022/10/amazon-lightsail-container-service-diagram.png" alt="" width="518" height="602"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;The &lt;strong&gt;Scale&lt;/strong&gt; and &lt;strong&gt;Power&lt;/strong&gt; are both capacity parameters that can be set when creating the container service.  The scale specifies the number of compute nodes in your container service, and the power specifies the memory and vCPUs of each node in your service.&lt;/p&gt;

&lt;p&gt;These values can be &lt;a href="https://lightsail.aws.amazon.com/ls/docs/en_us/articles/amazon-lightsail-changing-container-service-capacity"&gt;changed dynamically&lt;/a&gt; in the Lightsail console after the initial creation without any downtime, allowing to adjust for over/under-provisioning.&lt;/p&gt;

&lt;h2&gt;Running Minecraft&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--ZfVEIw2J--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://www.linuxtek.ca/wp-content/uploads/2022/10/minecraftlogo-1024x373.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--ZfVEIw2J--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://www.linuxtek.ca/wp-content/uploads/2022/10/minecraftlogo-1024x373.png" alt="" width="880" height="321"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Minecraft is a good test for a service like Lightsail, as it will put some stress on the service.  Althought it's not quite load testing, when logging onto a Minecraft server, you can immediately tell if the service is struggling by looking at statistics like CPU and memory usage, latency/lag, and any errors in the Minecraft console CLI.&lt;/p&gt;

&lt;p&gt;I've written a number of articles on how to set up Minecraft on a server, including &lt;a href="https://www.linuxtek.ca/2022/01/30/build-a-fully-functional-minecraft-server-in-less-than-10-minutes-with-ansible/"&gt;automating the install using Ansible&lt;/a&gt;.  For testing Minecraft as a Docker container, I will be using the &lt;a href="https://hub.docker.com/r/itzg/minecraft-server"&gt;itzg/minecraft-server&lt;/a&gt; Docker image, as it is already built and well maintained.  More information can be found on the &lt;a href="https://hub.docker.com/r/itzg/minecraft-server"&gt;Docker Hub&lt;/a&gt; page, and &lt;a href="https://github.com/itzg/docker-minecraft-server/blob/master/README.md"&gt;Github&lt;/a&gt;.&lt;/p&gt;

&lt;h2&gt;Setting Up Lightsail&lt;/h2&gt;

&lt;p&gt;In the &lt;a href="http://console.aws.amazon.com/"&gt;AWS Console&lt;/a&gt;, you can search the services for Lightsail, or go directly to the &lt;a href="https://lightsail.aws.amazon.com/"&gt;Amazon Lightsail Console&lt;/a&gt;.  Once there, click on Containers:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--3sWKGI5i--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://www.linuxtek.ca/wp-content/uploads/2022/10/Screenshot_2022-10-14_15-48-20.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--3sWKGI5i--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://www.linuxtek.ca/wp-content/uploads/2022/10/Screenshot_2022-10-14_15-48-20.png" alt="" width="880" height="576"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Click the "Create Container Service" button, and go through the menus to set up the container service:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Location - We will leave the default as us-east-1.&lt;/li&gt;
&lt;li&gt;Container Service Capacity - As Minecraft needs a decent amount of RAM to run, we will choose Md (Medium) size for 2GB RAM and 1vCPU.  The Docker container will try to use 1GB for Minecraft by default, so smaller sizes would not be recommended.&lt;/li&gt;
&lt;li&gt;Scale - Since everything is self-contained, we will only choose x1 instance to run.&lt;/li&gt;
&lt;li&gt;Deployment - Click the &lt;strong&gt;+Set Up Deployment&lt;/strong&gt; button and choose &lt;strong&gt;Specify a custom deployment&lt;/strong&gt;.&lt;ul&gt;
&lt;li&gt;Container Name - Set this to &lt;strong&gt;minecraft-container&lt;/strong&gt;.&lt;/li&gt;
&lt;li&gt;Image - As the image is already located on Docker Hub, we can enter &lt;strong&gt;itzg/minecraft-server&lt;/strong&gt; as the image to pull from the registry.&lt;/li&gt;
&lt;li&gt;Environment Variables - As per the &lt;strong&gt;itzg/minecraft-server&lt;/strong&gt; &lt;a href="https://github.com/itzg/docker-minecraft-server/blob/master/README.md"&gt;documentation&lt;/a&gt;, we can auto accept the EULA for Minecraft during setup by setting &lt;code&gt;EULA: TRUE&lt;/code&gt;.  We will add Key = EULA, Value = TRUE to ensure this is set automatically.&lt;/li&gt;
&lt;li&gt;Open Ports - Minecraft typically allows users to connect on TCP Port 25565, so we will open this port.  &lt;/li&gt;
&lt;li&gt;Public Endpoint - Leave this unselected for now.  More on this later.&lt;/li&gt;
&lt;li&gt;Under the "Identify Your Service" section, we will name the service &lt;strong&gt;minecraft-service&lt;/strong&gt;.&lt;/li&gt;
&lt;/ul&gt;


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

&lt;p&gt;Once complete, the settings should look like this:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--CoDzqHff--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://www.linuxtek.ca/wp-content/uploads/2022/10/Screenshot_2022-10-14_18-45-14.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--CoDzqHff--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://www.linuxtek.ca/wp-content/uploads/2022/10/Screenshot_2022-10-14_18-45-14.png" alt="" width="664" height="984"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Review the &lt;strong&gt;Summary&lt;/strong&gt; section and be aware of the cost of the container service:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--63KlZnP6--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://www.linuxtek.ca/wp-content/uploads/2022/10/Screenshot_2022-10-14_16-00-52.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--63KlZnP6--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://www.linuxtek.ca/wp-content/uploads/2022/10/Screenshot_2022-10-14_16-00-52.png" alt="" width="663" height="198"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;As we will be temporarily testing, this shouldn't incur a large monthly charge.   However, be aware that you are charged for your container service whether it's enabled or disabled, and whether it has a deployment or not. &lt;strong&gt;&lt;span&gt;You must delete your container service to stop being charged for it.&lt;/span&gt;&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Click the &lt;strong&gt;Create Container Service&lt;/strong&gt; button once everything is filled out:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--QzRCeX97--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://www.linuxtek.ca/wp-content/uploads/2022/10/Screenshot_2022-10-14_16-02-35.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--QzRCeX97--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://www.linuxtek.ca/wp-content/uploads/2022/10/Screenshot_2022-10-14_16-02-35.png" alt="" width="355" height="78"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;It may take a few minutes for the service and deployment to load.  Once the service is available, you can click on &lt;strong&gt;Deployments&lt;/strong&gt;, and &lt;strong&gt;Open Log&lt;/strong&gt; to see the progress as the container starts up:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--xJGBkZot--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://www.linuxtek.ca/wp-content/uploads/2022/10/Screenshot_2022-10-14_16-33-01-1.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--xJGBkZot--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://www.linuxtek.ca/wp-content/uploads/2022/10/Screenshot_2022-10-14_16-33-01-1.png" alt="" width="880" height="586"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;The &lt;strong&gt;Logs&lt;/strong&gt; screen will show the progress as the Docker container is initialized, and the Minecraft server is launched:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s---jbAaUyu--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://www.linuxtek.ca/wp-content/uploads/2022/10/Screenshot_2022-10-14_16-57-33.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s---jbAaUyu--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://www.linuxtek.ca/wp-content/uploads/2022/10/Screenshot_2022-10-14_16-57-33.png" alt="" width="754" height="179"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Wait until the Minecraft world completes generating.  It should look like this when complete:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--8CQ5En-z--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://www.linuxtek.ca/wp-content/uploads/2022/10/Screenshot_2022-10-14_17-06-35.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--8CQ5En-z--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://www.linuxtek.ca/wp-content/uploads/2022/10/Screenshot_2022-10-14_17-06-35.png" alt="" width="578" height="271"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;Connecting to the Minecraft Server&lt;/h2&gt;

&lt;p&gt;The Minecraft server is now running, but we haven't set a public endpoint to connect into the container service via the internet, so there is no way to connect.  Unfortunately, there is a limitation of Lightsail Containers where the public endpoint can only be HTTP or HTTPS, due to the way the Application Load Balancer is set up.  &lt;a href="https://lightsail.aws.amazon.com/ls/docs/en_us/articles/amazon-lightsail-container-services#container-services-endpoints-domains"&gt;This article&lt;/a&gt; confirms the limitation:&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;The public endpoint of Lightsail container services supports HTTPS only, and it does not support TCP or UDP traffic. &lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;I did test trying to find a way around this, such as using an NGINX Reverse Proxy to stream the traffic via an open HTTP/HTTPS port to the internal port 25565.  &lt;a href="https://github.com/vollborn/minecraft-nginx-reverse-proxy"&gt;This project&lt;/a&gt; seemed promising and was designed for a similar function, and when tested locally, would forward the traffic on an HTTP port on to the Minecraft server and allow a client to connect.&lt;/p&gt;

&lt;p&gt;Unfortunately the web server container would fail health checks and get terminated; since the web traffic would be passed to Minecraft, which wouldn't know how to respond.  Adding a separate active health check is a &lt;a href="https://docs.nginx.com/nginx/admin-guide/load-balancer/tcp-health-check/"&gt;feature&lt;/a&gt; of the paid version of NGINX - NGINX Plus. &lt;/p&gt;

&lt;p&gt;So unfortunately while the Minecraft server does appear to run on Lightsail Containers, we are not able to connect to the server to test with a Minecraft client.&lt;/p&gt;

&lt;h2&gt;Other Limitations&lt;/h2&gt;

&lt;p&gt;Initially, rather than using the Amazon Lightsail web console, I wanted to define all of the infrastructure as code using Terraform.  Unfortunately, Lightsail components are not fully included in the official AWS Terraform provider.  Some of the components, such as the &lt;a href="https://registry.terraform.io/providers/hashicorp/aws/latest/docs/resources/lightsail_container_service"&gt;Lightsail Container Service&lt;/a&gt; and &lt;a href="https://registry.terraform.io/providers/hashicorp/aws/latest/docs/resources/lightsail_instance"&gt;Lightsail Instance&lt;/a&gt; are available, however others such as Load Balancer resources are not currently available.  There are open &lt;a href="https://github.com/hashicorp/terraform-provider-aws/pull/11405"&gt;Pull Requests&lt;/a&gt; on the Hashicorp Github, but they have been sitting for a few years now.  They would need to be upvoted to increase priority.  Something to be aware of if you're looking to leverage Lightsail fully with Infrastructure-As-Code - some of the components may not be available.&lt;/p&gt;

&lt;p&gt;The AWS CLI v2 does have a &lt;a href="https://awscli.amazonaws.com/v2/documentation/api/latest/reference/lightsail/index.html"&gt;full set of commands&lt;/a&gt; for Lightsail, which can be helpful if you don't want to use the web console.&lt;/p&gt;

&lt;h2&gt;Troubleshooting&lt;/h2&gt;

&lt;p&gt;When creating the Lightsail Container Service for the first time, I received this error:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--YPdAVoYJ--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://www.linuxtek.ca/wp-content/uploads/2022/10/Screenshot_2022-10-14_16-07-58.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--YPdAVoYJ--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://www.linuxtek.ca/wp-content/uploads/2022/10/Screenshot_2022-10-14_16-07-58.png" alt="" width="581" height="206"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;CreateContainerService[us-east-1]
Sorry, you've either reached or will exceed your maximum limit of Lightsail Container Services.&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;This was puzzling because I didn't have any other Lightsail Container Services active.&lt;/p&gt;

&lt;p&gt;Checking in the &lt;strong&gt;Service Quotas&lt;/strong&gt; section in AWS, the quotas for Amazon Lightsail appear to have enough capacity by default to allow the service creation, although the Lightsail quotas cannot apparently be changed or increases requested.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--BQvRmVv4--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://www.linuxtek.ca/wp-content/uploads/2022/10/Screenshot_2022-10-14_16-09-37-1024x395.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--BQvRmVv4--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://www.linuxtek.ca/wp-content/uploads/2022/10/Screenshot_2022-10-14_16-09-37-1024x395.png" alt="" width="880" height="339"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Investigating further, &lt;a href="https://docs.aws.amazon.com/lightsail/2016-11-28/api-reference/API_CreateContainerService.html"&gt;this documentation&lt;/a&gt; gave information on how the CreateContainerService API call works, but it didn't point out the specific issue.&lt;/p&gt;

&lt;p&gt;The problem ended up being that I was initially trying to create a &lt;strong&gt;Large&lt;/strong&gt; capacity container.  Once I switched to testing with a &lt;strong&gt;Medium&lt;/strong&gt; size, it worked fine.  I spoke with some contacts via the &lt;a href="https://aws.amazon.com/developer/community/community-builders/"&gt;AWS Community Builders Program&lt;/a&gt;, and was advised that the error messages around this type of scenario are being improved, and if you hit this issue, to contact Customer Support for assistance, and they should be able to help.&lt;/p&gt;

&lt;h2&gt;Conclusion&lt;/h2&gt;

&lt;p&gt;Lightsail Containers are an interesting service, which currently can be leveraged for hosting web applications running inside containers, as well as running other workloads.  There are some limitations, but intial setup can be a lot easier than a full ECS/EKS setup.  &lt;/p&gt;

&lt;p&gt;This article only goes through a basic test.  There are a number of other features in Lightsail Containers which allow communication between containers in a deployment, and horizontal scaling.&lt;/p&gt;

&lt;p&gt;Definitely review the documentation and make sure that your use case would be suited to running as a workload on Lightsail.  &lt;a href="https://lightsail.aws.amazon.com/ls/docs/en_us/articles/amazon-lightsail-frequently-asked-questions-faq"&gt;This FAQ&lt;/a&gt; may answer some of the more common questions, and this demo video (while a bit older), may be an interesting watch:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://youtu.be/rsMdqPLmI4U"&gt;https://youtu.be/rsMdqPLmI4U&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;Resources&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://lightsail.aws.amazon.com/ls/docs/en_us/all"&gt;Amazon Lightsail Documentation&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://lightsail.aws.amazon.com/ls/docs/en_us/articles/amazon-lightsail-container-services"&gt;Amazon Lightsail Container Service Article&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://aws.amazon.com/blogs/aws/lightsail-containers-an-easy-way-to-run-your-containers-in-the-cloud/"&gt;Amazon Lightsail Containers Blog Article&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://lightsail.aws.amazon.com/ls/docs/en_us/articles/amazon-lightsail-changing-container-service-capacity"&gt;Amazon Lightsail - Changing Container Service Capacity&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://lightsail.aws.amazon.com/ls/docs/en_us/articles/amazon-lightsail-container-services#container-services-endpoints-domains"&gt;Amazon Lightsail - Public Endpoints and Domains&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://lightsail.aws.amazon.com/ls/docs/en_us/articles/amazon-lightsail-frequently-asked-questions-faq"&gt;Amazon Lightsail - Frequently Asked Questions&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://awscli.amazonaws.com/v2/documentation/api/latest/reference/lightsail/index.html"&gt;AWS CLI Lightsail Commands&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://hub.docker.com/r/itzg/minecraft-server"&gt;itzg/minecraft-server Docker Hub&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/itzg/docker-minecraft-server/blob/master/README.md"&gt;itzg/minecraft-server Github&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

</description>
      <category>aws</category>
      <category>minecraft</category>
    </item>
    <item>
      <title>Migrating Wordpress from GCP to AWS</title>
      <dc:creator>Jason Paul</dc:creator>
      <pubDate>Fri, 14 Oct 2022 18:35:28 +0000</pubDate>
      <link>https://forem.com/aws-builders/migrating-wordpress-from-gcp-to-aws-13e6</link>
      <guid>https://forem.com/aws-builders/migrating-wordpress-from-gcp-to-aws-13e6</guid>
      <description>&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--dUocPWFg--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://www.linuxtek.ca/wp-content/uploads/2022/09/wordpressmigration.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--dUocPWFg--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://www.linuxtek.ca/wp-content/uploads/2022/09/wordpressmigration.png" alt="" width="720" height="316"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;Editor's Note&lt;/h2&gt;

&lt;p&gt;This article was originally published on &lt;a href="http://www.linuxtek.ca"&gt;www.linuxtek.ca&lt;/a&gt; and some of the links and references will refer back to that site.&lt;/p&gt;

&lt;h2&gt;Introduction&lt;/h2&gt;

&lt;p&gt;You may have noticed some changes to this site.  Along with some style and color changes, I've updated the domain, and focused the pages on my technical blog.  Originally this site started as an administrative page for the &lt;a href="https://www.linuxtek.ca/minecraft/"&gt;Minecraft servers&lt;/a&gt; I am hosting.  I built the first Minecraft server in &lt;a href="https://cloud.google.com/"&gt;Google Cloud&lt;/a&gt; on a general &lt;a href="https://cloud.google.com/compute"&gt;Compute Engine&lt;/a&gt; instance, and was running this web page on a separate smaller instance.  As the player count increased, I had to increase the resources on the VM to keep performance stable, but this quickly used up the free credits.  I did a &lt;a href="https://www.linuxtek.ca/2020/11/03/google-cloud-bill-october-2020/"&gt;blog post&lt;/a&gt; about the cost and the steps I took to optimize things.  Eventually I moved the Minecraft servers to my homelab, where I had more compute resources available that wouldn't incur a monthly cost.  I did a &lt;a href="https://www.linuxtek.ca/2020/10/23/new-linuxtek-minecraft-hosted-servers/"&gt;detailed post&lt;/a&gt; about this as well.&lt;/p&gt;

&lt;p&gt;This website, as well as another personal site continued to run in GCP, however I was paying around $35 CDN a month to host everything in the cloud.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--hjgfa-u7--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://www.linuxtek.ca/wp-content/uploads/2022/09/2022-09-16_15-32.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--hjgfa-u7--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://www.linuxtek.ca/wp-content/uploads/2022/09/2022-09-16_15-32.png" alt="" width="880" height="528"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;I've been focusing more on &lt;a href="https://aws.amazon.com/"&gt;Amazon Web Services&lt;/a&gt; instead of &lt;a href="https://cloud.google.com/"&gt;Google Cloud Platform&lt;/a&gt; for my cloud experience recently, and last month &lt;a href="https://www.linuxtek.ca/2022/08/16/aws-community-builder-program/"&gt;was selected&lt;/a&gt; to join the &lt;a href="https://aws.amazon.com/developer/community/community-builders/"&gt;AWS Community Builders&lt;/a&gt; program.  One of the perks of the program is some additional free AWS credits, so I decided to take the opportunity to move this site to AWS to take advantage of using those up, as I seem to have an excess of them at this time.  I'm sure most of the AWS credits will go towards experimentation and learning, but this is a consistent cost that they can be put towards as well.&lt;/p&gt;

&lt;h2&gt;GCP Wordpress Instance&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--fZ-x1xq9--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://www.linuxtek.ca/wp-content/uploads/2022/09/googlecloud-1024x538.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--fZ-x1xq9--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://www.linuxtek.ca/wp-content/uploads/2022/09/googlecloud-1024x538.png" alt="" width="880" height="462"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;This site was built on an &lt;a href="https://cloud.google.com/compute/docs/general-purpose-machines"&gt;e2-micro Compute Engine instance&lt;/a&gt;, which has very limited resources.  Normally this isn't isn't an issue as the CPU is burstable, but when performing large OS updates, it does take quite a while to finish.  &lt;/p&gt;

&lt;p&gt;Google Cloud provides one free e2-micro instance per month in their &lt;a href="https://cloud.google.com/free"&gt;Free Tier&lt;/a&gt;, but with this and another website running, I exceeded the free tier.&lt;/p&gt;

&lt;p&gt;I built the website server on the following &lt;strong&gt;LEMP&lt;/strong&gt; stack:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Linux - &lt;a href="https://www.debian.org/releases/buster/"&gt;Debian 10&lt;/a&gt; "Buster"&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://www.nginx.com/"&gt;NGINX&lt;/a&gt; lightweight &lt;a href="https://docs.nginx.com/nginx/admin-guide/web-server/"&gt;web server&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;&lt;a href="https://mariadb.org/"&gt;MySQL (MariaDB)&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://www.php.net/"&gt;PHP 7.3&lt;/a&gt; (later upgraded to 8.1)&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;I decided to use NGINX instead of Apache for the webserver, as it had a lower footprint, which made it more suitable for running on an e2-micro instance.  I followed multiple guides to install Wordpress on the server.  &lt;a href="https://www.digitalocean.com/community/tutorials/how-to-install-wordpress-with-lemp-nginx-mariadb-and-php-on-debian-10"&gt;This guide&lt;/a&gt; from DigitalOcean is probably the closest that I used.&lt;/p&gt;

&lt;h2&gt;AWS Wordpress Instance&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--wykForq0--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://www.linuxtek.ca/wp-content/uploads/2022/09/aws.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--wykForq0--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://www.linuxtek.ca/wp-content/uploads/2022/09/aws.jpg" alt="" width="880" height="880"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Deciding how to set up the AWS Wordpress instance took quite a bit of thought.  I had thought about using a more complex setup including an &lt;a href="https://aws.amazon.com/ec2/"&gt;EC2&lt;/a&gt; (Elastic Compute Cloud) instance, a &lt;a href="https://aws.amazon.com/vpc/"&gt;VPC&lt;/a&gt; (Virtual Private Cloud), and serverless components like &lt;a href="https://aws.amazon.com/rds/"&gt;RDS&lt;/a&gt; (Relational Database Service) for the database, and &lt;a href="https://aws.amazon.com/s3/"&gt;S3&lt;/a&gt; (Simple Storage Service) for file storage.  Another way I had read about that could be challenging, was to set up Wordpress on &lt;a href="https://aws.amazon.com/eks"&gt;EKS&lt;/a&gt; (Elastic Kubernetes Service).  I could also automate a lot of the setup using Terraform.&lt;/p&gt;

&lt;p&gt;While these all sounded like excellent learning opportunities for the future, I decided against going this route, as I wanted a boring, stable, uncomplicated web server to host my articles.  I also had to keep in mind that I wanted to be able to migrate the data from one Wordpress instance to the new one, and the more complex the architecture, the more potential compatibility issues or points of failure there would be.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--yroNL5Sq--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://www.linuxtek.ca/wp-content/uploads/2022/09/lightsail.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--yroNL5Sq--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://www.linuxtek.ca/wp-content/uploads/2022/09/lightsail.jpg" alt="" width="305" height="200"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;I ended up going with the &lt;a href="https://aws.amazon.com/lightsail/"&gt;AWS Lightsail&lt;/a&gt; platform for a number of reasons:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;There is a &lt;a href="https://docs.bitnami.com/aws/get-started-lightsail/"&gt;Bitnami AWS Lightsail&lt;/a&gt; Wordpress image which is a very similar stack to the one I manually set up.  I had used it for another website, and it was fairly straightforward, running on Debian 11 "Bullseye", which I prefer.  It use Apache, MariaDB, and PHP 8.0, so it is more up to date.&lt;/li&gt;
&lt;li&gt;Using this pre-built setup would save time, as all of the versions would be tested before release, and should remain stable, rather than me having to build my own stack from scratch.&lt;/li&gt;
&lt;li&gt;This would make the migration from my old Wordpress instance easier, and would allow me to upgrade later on with new system images.&lt;/li&gt;
&lt;li&gt;If this migration plan worked, I could use it to migrate other sites to with the same steps.&lt;/li&gt;
&lt;li&gt;AWS Lightsail has functionality for a &lt;a href="https://lightsail.aws.amazon.com/ls/docs/en_us/articles/lightsail-create-static-ip"&gt;static IP address&lt;/a&gt;, &lt;a href="https://lightsail.aws.amazon.com/ls/docs/en_us/articles/understanding-instance-snapshots-in-amazon-lightsail"&gt;automatic daily snapshots&lt;/a&gt;, and a &lt;a href="https://aws.amazon.com/lightsail/pricing/"&gt;low cost&lt;/a&gt; of about $10/month for a decently sized instance.&lt;/li&gt;
&lt;li&gt;There is the option to increase the virtual server resources, and even &lt;a href="https://aws.amazon.com/lightsail/features/upgrade-to-ec2/"&gt;upgrade to EC2&lt;/a&gt; in the future if necessary.&lt;/li&gt;
&lt;li&gt;Lightsail has &lt;a href="https://aws.amazon.com/lightsail/features/"&gt;additional features&lt;/a&gt; such as CDN (Content Delivery Network) Distribution similar to &lt;a href="https://aws.amazon.com/cloudfront/"&gt;Amazon CloudFront&lt;/a&gt;, and the option for Load Balancers or a managed database if needed.  For the low traffic of my site, this will probably not be necessary for a long time.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Based on my requirements for simplicity and cost, AWS Lightsail seems like a good choice for hosting my Wordpress sites.&lt;/p&gt;

&lt;h2&gt;Exporting the Wordpress Database&lt;/h2&gt;

&lt;p&gt;The first step of the migration was to export the database, which was running locally in the GCP Compute Instance on &lt;a href="https://mariadb.org/"&gt;MariaDB&lt;/a&gt;.  To refresh my memory on the database details, I checked the wp-config.php file located in /var/www/html/wordpress, which had the following sections with the database name, username, and password:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--eGyHhUwG--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://www.linuxtek.ca/wp-content/uploads/2022/09/mariadbinfo.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--eGyHhUwG--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://www.linuxtek.ca/wp-content/uploads/2022/09/mariadbinfo.png" alt="" width="647" height="338"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;To back up the database, I used the following command to dump it to a file using the values from the wp-config.php file.  When run, it prompted for the DB_PASSWORD value.  You can enter the password as an argument on command line, but that wouldn't be considered secure.&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;mysqldump -u DB_USER -p DB_NAME &amp;gt; /home/user/wordpress-backup.sql&lt;/code&gt;&lt;/pre&gt;

&lt;h2&gt;Backing Up the Wordpress Directory&lt;/h2&gt;

&lt;p&gt;The only folder we needed to be concerned about on the old server was the &lt;strong&gt;/var/www/html/wordpress&lt;/strong&gt; directory. The web server itself would be changed from NGINX to Apache, and the Bitnami image would have everything configured already.  This directory includes all of the configuration, settings, posts, media uploads, content, etc from the older server.&lt;/p&gt;

&lt;p&gt;In the /home/username directory, I ran the following command to back up the folder to a tar.gz archive file:&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;tar -czvf wordpress-backup.tar.gz /var/www/html/wordpress&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;The switches used perform the following:&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;-z : Compress archive using gzip program in Linux or Unix
-c : Create archive on Linux
-v : Verbose i.e display progress while creating archive
-f : Archive File name&lt;/code&gt;&lt;/pre&gt;

&lt;h2&gt;Creating Wordpress Server on AWS Lightsail&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--zwfSn53C--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://www.linuxtek.ca/wp-content/uploads/2022/09/wordpress-on-aws-lightsail.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--zwfSn53C--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://www.linuxtek.ca/wp-content/uploads/2022/09/wordpress-on-aws-lightsail.jpg" alt="" width="600" height="180"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;From the AWS Console search for "Lightsail" or just navigate to &lt;a href="https://lightsail.aws.amazon.com/"&gt;lightsail.aws.amazon.com&lt;/a&gt;.  Although it is clickops, since this work won't be frequently repeated or the resources temporary, I created the instance using the web interface.  I clicked "Create Instance" and followed the menus to choose the platform, and Wordpress as the blueprint:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--OJzF5DpQ--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://www.linuxtek.ca/wp-content/uploads/2022/09/2022-09-16_16-31.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--OJzF5DpQ--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://www.linuxtek.ca/wp-content/uploads/2022/09/2022-09-16_16-31.png" alt="" width="773" height="526"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;I changed the SSH keypair by deleting the default id_rsa, and uploaded my own public SSH key, so that I could access the server without using a password.&lt;/p&gt;

&lt;p&gt;I enabled Automatic Snapshots to occur daily, and chose an off-peak time for them to run.&lt;/p&gt;

&lt;p&gt;I chose the instance plan that seemed like the best value for the usage I expected.  This could always be modified or scaled up later on.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--8yXy5wKE--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://www.linuxtek.ca/wp-content/uploads/2022/09/2022-09-16_16-33.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--8yXy5wKE--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://www.linuxtek.ca/wp-content/uploads/2022/09/2022-09-16_16-33.png" alt="" width="879" height="430"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;I named the instance "linuxtek-wordpress" and created the instance.  Once the instance was created, I clicked Networking, created a Static IP, and attached it to the newly created instance.  This would ensure that I could use the IP reliably without it changing.&lt;/p&gt;

&lt;p&gt;Under Networking, I also adjusted the IPv4 firewall to restrict SSH access to my public IP only, so nobody else can attempt to connect.  I also disabled IPv6 networking, as it didn't seem necessary.  By default, port 80 and 443 are open to allow web traffic, so no changes were needed here.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--d0KOXtX3--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://www.linuxtek.ca/wp-content/uploads/2022/09/wordpressnetworking.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--d0KOXtX3--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://www.linuxtek.ca/wp-content/uploads/2022/09/wordpressnetworking.png" alt="" width="880" height="293"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Once the Lightsail instance was set up, I was able to SSH to the server using the username &lt;strong&gt;bitnami&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;I adjusted the timezone and hostname using the following commands:&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;sudo timedatectl set-timezone America/Toronto
sudo hostnamectl set-hostname linuxtek.ca&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;I then used SCP to copy over the database backup and wordpress folder archive to the new server.&lt;/p&gt;

&lt;h2&gt;Restoring Wordpress Data to the New Server&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--Hx3bj9ss--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://www.linuxtek.ca/wp-content/uploads/2022/09/datarecovery.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--Hx3bj9ss--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://www.linuxtek.ca/wp-content/uploads/2022/09/datarecovery.jpg" alt="" width="880" height="432"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Because the new AWS server was created via a template, I didn't know the generated usernames or passwords that had been set up.  Fortunately, Bitnami puts a number of files in the /home/bitnami directory that are helpful.  &lt;a href="https://docs.bitnami.com/aws/faq/get-started/find-credentials/"&gt;This documentation&lt;/a&gt; can also be helpful.  I was able to get the database name, username, and password from the &lt;strong&gt;/opt/bitnami/wordpress/wp-config.php&lt;/strong&gt; file as on the previous server.  &lt;br&gt;&lt;br&gt;For compatibility, I didn't want to adjust any of the database settings, so I restored my backup from the dump file right on top of the existing database using this command (entering the database password when prompted):&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;mysql --user bn_wordpress --database bitnami_wordpress --password &amp;lt; wpdb-backup.sql&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;I then stopped the Bitnami stack, which controls all of the Wordpress services.  I needed them running to be able to manipulate the database, but for file level changes, I wanted them stopped, so I ran the following:&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;sudo systemctl stop bitnami&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;&lt;strong&gt;Note:&lt;/strong&gt;  There is also a &lt;a href="https://docs.bitnami.com/aws/faq/administration/control-services/"&gt;control script&lt;/a&gt; at &lt;strong&gt;/opt/bitnami/ctlscript.sh&lt;/strong&gt; which can be used to restart individual services, or stop/start all services, but I found it easier to use systemctl.&lt;/p&gt;

&lt;p&gt;Once the services were stopped, I deleted the /opt/bitnami/wordpress folder, then recreated it and extracted the archive tar.gz file into it.  I used the --strip-components flag so the archive would dump the contents of the backed up &lt;strong&gt;/var/www/html/wordpress&lt;/strong&gt; folder without including the full file path:&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;sudo rm -rf /opt/bitnami/wordpress
mkdir /opt/bitnami/wordpress
tar xvfz /home/bitnami/wordpress-backup.tar.gz -C /opt/bitnami/wordpress --strip-components=4&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;Once everything was extracted, I recursively adjusted the permissions and ownership of the files and folders to work with the Bitnami stack.  The &lt;a href="https://docs.bitnami.com/general/apps/wordpress-production-ready/administration/understand-file-permissions"&gt;Bitnami documentation&lt;/a&gt; explains this a bit, as files and directories are owned by the user &lt;em&gt;bitnami&lt;/em&gt;, and group &lt;em&gt;daemon&lt;/em&gt;.  There are a number of requirements for the files and directory permissions, which can be set using the commands provided below:&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;sudo chown -R bitnami:daemon /opt/bitnami/wordpress
sudo find /opt/bitnami/wordpress -type d -exec chmod 775 {} \;
sudo find /opt/bitnami/wordpress -type f -exec chmod 664 {} \;
sudo chmod 640 /opt/bitnami/wordpress/wp-config.php
sudo systemctl start bitnami&lt;/code&gt;&lt;/pre&gt;

&lt;h2&gt;Updating Domain Name in Wordpress&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--akIygluR--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://www.linuxtek.ca/wp-content/uploads/2022/09/changedomainwordpress-1024x451.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--akIygluR--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://www.linuxtek.ca/wp-content/uploads/2022/09/changedomainwordpress-1024x451.png" alt="" width="880" height="388"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Because I was switching from using a subdomain to the full domain, I needed to update all references from &lt;strong&gt;minecraft.linuxtek.ca&lt;/strong&gt; to just &lt;strong&gt;linuxtek.ca&lt;/strong&gt;.  This would ensure that all links in all published articles would work, and all images and other references would be consistent.&lt;/p&gt;

&lt;p&gt;I found two ways to do this without using a plugin or script:&lt;/p&gt;

&lt;p&gt;The wp-cli has an option that can do a search an replace with the following command:&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;sudo wp search-replace 'http://olddomain.com' 'http://newdomain.com' --precise --recurse-objects --all-tables

For me this was:
sudo wp search-replace 'https://minecraft.linuxtek.ca' 'https://linuxtek.ca' --precise --recurse-objects --all-tables&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;The other way was to directly edit the database tables (which was more reliable).  &lt;a href="https://devanswers.co/find-replace-urls-wordpress-database/"&gt;This article&lt;/a&gt; (Method #2) goes through the steps to access the MySQL CLI to run the commands.  I again took the db_name, db_user, and db_pass values from the wp-config.php file to log in:&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;mysql -u db_user -p database_name&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;Once logged in to the &lt;code&gt;mysql&amp;gt;&lt;/code&gt; prompt, I ran the following commands:&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;UPDATE wp_options SET option_value = replace(option_value, 'http://olddomain.com', 'http://newdomain.com') WHERE option_name = 'home' OR option_name = 'siteurl';
UPDATE wp_posts SET guid = replace(guid, 'http://olddomain.com', 'http://newdomain.com');
UPDATE wp_posts SET post_content = replace(post_content, 'http://olddomain.com', 'http://newdomain.com');
UPDATE wp_postmeta SET meta_value = replace(meta_value,'http://olddomain.com', 'http://newdomain.com');
\q;&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;After each of the commands, it would return the number of rows matched and changed.  I ran a few queries to make sure that the values were correct, then again restarted the bitnami stack with &lt;code&gt;sudo systemctl restart bitnami&lt;/code&gt;.&lt;/p&gt;

&lt;h2&gt;Updating Domain Names in DNS Provider&lt;/h2&gt;

&lt;p&gt;I use &lt;a href="https://cloudflare.com/"&gt;CloudFlare&lt;/a&gt; for some of my DNS services, which also provides some caching and DDOS protection.  If using &lt;a href="https://aws.amazon.com/route53/"&gt;Amazon Route 53&lt;/a&gt;, or another DNS provider, the domain names and IPs would need to be updated in your provider so they would resolve properly.&lt;/p&gt;

&lt;p&gt;Under my domain DNS settings, I updated the following:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;The www A record would resolve to the static IP of the new Lightsail server.  It is proxied through CloudFlare for DDOS protection.&lt;/li&gt;
&lt;li&gt;The linuxtek.ca A record would resolve to the static IP of the new Lightsail server.  It is proxied through CloudFlare for DDOS protection.&lt;/li&gt;
&lt;li&gt;I updated the minecraftadmin subdomain A record to point to a non-routeable IP 192.0.2.1, as I wanted it to redirect to the main linuxtek.ca domain (more on that below).&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--dkgJczIe--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://www.linuxtek.ca/wp-content/uploads/2022/09/2022-09-17_23-07-1.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--dkgJczIe--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://www.linuxtek.ca/wp-content/uploads/2022/09/2022-09-17_23-07-1.png" alt="" width="880" height="288"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;To ensure that any references to the old subdomain redirect to the new one, I set up a &lt;strong&gt;Page Rule&lt;/strong&gt; to redirect the traffic with an HTTP 301 response.  &lt;a href="https://youtu.be/gvPfNfiFESo"&gt;This tutorial video&lt;/a&gt; explains the details but I've included the steps below.  Note that I left the A record intact but to an invalid IP, so the traffic would be proxied by CloudFlare, which &lt;a href="https://support.cloudflare.com/hc/en-us/articles/200172356-Why-isn-t-a-Page-Rule-working-"&gt;must be the case&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--rTDWs4uG--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://www.linuxtek.ca/wp-content/uploads/2022/09/2022-09-18_00-04.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--rTDWs4uG--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://www.linuxtek.ca/wp-content/uploads/2022/09/2022-09-18_00-04.png" alt="" width="779" height="651"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;The &lt;strong&gt;$&lt;/strong&gt;1 is used as a variable, so the URL path value from the second asterisk will be added to the redirected URL, so any full URL from the original domain should redirect now to the new one.  I used the dummy IP 192.0.2.1 which is recommended by Cloudflare.&lt;/p&gt;

&lt;p&gt;Once the DNS records and Page Rule refreshed and were active (I had to &lt;a href="https://discourse.pi-hole.net/t/how-do-i-flush-my-pi-hole-cache/3020"&gt;flush my PiHole DNS cache&lt;/a&gt;) , I was able to test this with the curl command, and see the HTTP 301 redirect from minecraftadmin.linuxtek.ca to linuxtek.ca:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--iaQ26gia--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://www.linuxtek.ca/wp-content/uploads/2022/09/2022-09-18_00-02.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--iaQ26gia--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://www.linuxtek.ca/wp-content/uploads/2022/09/2022-09-18_00-02.png" alt="" width="647" height="249"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Another tip that helped, was testing DNS resolution using the DNS server 1.1.1.1, which can have the cache purged at &lt;a href="https://cloudflare-dns.com/purge-cache/"&gt;this link&lt;/a&gt;.  More information is available in &lt;a href="https://blog.cloudflare.com/refresh-stale-dns-records-on-1-1-1-1/"&gt;this&lt;/a&gt; blog post.&lt;/p&gt;

&lt;p&gt;Once I could confirm the web traffic was redirecting properly to the AWS instance, I shut down the GCP Compute Engine instance:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--AfmcUMYB--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://www.linuxtek.ca/wp-content/uploads/2022/09/2022-09-18_00-08-1024x269.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--AfmcUMYB--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://www.linuxtek.ca/wp-content/uploads/2022/09/2022-09-18_00-08-1024x269.png" alt="" width="880" height="231"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;Additional Troubleshooting and Debugging&lt;/h2&gt;

&lt;p&gt;I did run into a few errors while trying to bring up the server after migration.  On the initial load up, I ran into this error:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--BXT5KoVi--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://www.linuxtek.ca/wp-content/uploads/2022/09/2022-09-18_00-13.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--BXT5KoVi--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://www.linuxtek.ca/wp-content/uploads/2022/09/2022-09-18_00-13.png" alt="" width="340" height="87"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;This message wasn't very helpful, so I changed the debugging flag in wp-config.php from &lt;strong&gt;false&lt;/strong&gt; to &lt;strong&gt;&lt;a href="https://wordpress.stackexchange.com/questions/365737/ftp-nlist-and-ftp-pwd-warnings"&gt;true&lt;/a&gt;&lt;/strong&gt;:&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;define( 'WP_DEBUG', true);&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;After restarting services, and refreshing, I got this error:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--TcjgZ0wy--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://www.linuxtek.ca/wp-content/uploads/2022/09/2022-09-18_00-16.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--TcjgZ0wy--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://www.linuxtek.ca/wp-content/uploads/2022/09/2022-09-18_00-16.png" alt="" width="736" height="749"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;After &lt;a href="https://wordpress.stackexchange.com/questions/365737/ftp-nlist-and-ftp-pwd-warnings"&gt;researching&lt;/a&gt; the error, to resolve this, I had to add this line at the bottom of the wp-config.php file, and restart services:&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;define('FS_METHOD', 'direct');&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;Don't forget to set the WP_DEBUG back to false as well, as it does show debug into on multiple pages that you wouldn't expect otherwise, even if the server is working.&lt;/p&gt;

&lt;p&gt;Also pro tip - don't attempt to write a blog post on your site as you take it up and down to get screenshots - you'll probably lose some of your drafts!&lt;/p&gt;

&lt;h2&gt;Conclusion&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--PeQ6F5eQ--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://www.linuxtek.ca/wp-content/uploads/2022/09/conclusion.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--PeQ6F5eQ--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://www.linuxtek.ca/wp-content/uploads/2022/09/conclusion.jpg" alt="" width="360" height="216"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;With a bit of manual manipulation, it is possible to migrate a Wordpress server between hosts without too much difficulty.  I will likely add some backup scripts to automate backing up the &lt;strong&gt;/opt/bitnami/wordpress&lt;/strong&gt; folder, and the Wordpress database; and save them to an S3 bucket.  Although I have automated snapshots, this would be an extra layer of protection in case of a failure, and could be easily used to upgrade the server to a new image when it becomes available.&lt;/p&gt;

&lt;p&gt;Hopefully this article helps some of you in doing similar tasks!  &lt;/p&gt;

</description>
      <category>aws</category>
      <category>wordpress</category>
      <category>gcp</category>
    </item>
  </channel>
</rss>
