<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: Pawel Zubkiewicz</title>
    <description>The latest articles on DEV Community by Pawel Zubkiewicz (@pzubkiewicz).</description>
    <link>https://dev.to/pzubkiewicz</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.us-east-2.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F600469%2Fc7d2a122-5eab-4e5b-8a44-1780a45da910.jpg</url>
      <title>DEV Community: Pawel Zubkiewicz</title>
      <link>https://dev.to/pzubkiewicz</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/pzubkiewicz"/>
    <language>en</language>
    <item>
      <title>AWS billing horror stories: 10 monsters living in your bill</title>
      <dc:creator>Pawel Zubkiewicz</dc:creator>
      <pubDate>Sat, 31 Oct 2026 13:56:24 +0000</pubDate>
      <link>https://dev.to/aws-heroes/aws-billing-horror-stories-10-monsters-living-in-your-bill-44op</link>
      <guid>https://dev.to/aws-heroes/aws-billing-horror-stories-10-monsters-living-in-your-bill-44op</guid>
      <description>&lt;p&gt;Halloween is a good time for scary stories. The thing is, I don't have any ghost stories to tell. I have something much scarier: AWS bills 👻.&lt;/p&gt;

&lt;p&gt;I skipped the stories about access keys pushed to GitHub and crypto miners spun up in every region. That's a topic for the security team. What scares me more are the cases where &lt;strong&gt;nobody stole anything&lt;/strong&gt;. The account was secure, the code worked, and the bill still went through the roof.&lt;/p&gt;

&lt;p&gt;Because AWS bills you for the work done, not for its value to your business. If something does the same work a million times, you pay a million times more.&lt;/p&gt;

&lt;p&gt;I collected ten such stories, including my own. Together they add up to about &lt;strong&gt;$258,000&lt;/strong&gt; before refunds (and one of them is an especially sneaky one). Where the source gives the volume, &lt;strong&gt;I recalculated the amount from the AWS price list&lt;/strong&gt;. Sometimes it matches to the cent. For every story I also checked &lt;strong&gt;whether the monster is still alive&lt;/strong&gt;, because AWS has closed some of these traps since. All prices are for &lt;code&gt;us-east-1&lt;/code&gt;. In European regions they are sometimes a bit higher.&lt;/p&gt;

&lt;p&gt;At the end you'll find a 15-minute checklist. You can run it on your own account tonight. 🎃&lt;/p&gt;

&lt;h2&gt;
  
  
  Strangers knocking at the door
&lt;/h2&gt;

&lt;p&gt;The first three stories have one thing in common: the bill was generated by someone the account owner didn't know and didn't invite.&lt;/p&gt;

&lt;h3&gt;
  
  
  1. The haunted house: an empty bucket for $1,300
&lt;/h3&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%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fxo6i6q0xp0z15ntigtyg.jpg" 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%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fxo6i6q0xp0z15ntigtyg.jpg" alt="The haunted house: an empty bucket for $1,300" width="799" height="450"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Let me start with a classic. With a Polish twist, too.&lt;/p&gt;

&lt;p&gt;In April 2024, Maciej Pocwierz created a private, &lt;strong&gt;empty&lt;/strong&gt; S3 bucket in &lt;code&gt;eu-west-1&lt;/code&gt;. He needed it for a simple proof of concept. Two days later he checked his billing page to make sure he was still within the Free Tier. He saw more than $1,300.&lt;/p&gt;

&lt;p&gt;His bucket name was identical to a default value in the configuration of a popular open-source backup tool. Every installation that nobody had reconfigured tried to upload its backups to his bucket. Almost 100 million &lt;code&gt;PUT&lt;/code&gt; requests in one day. Every single one rejected with 403 Access Denied.&lt;/p&gt;

&lt;p&gt;From a permissions point of view, everything worked: no stranger wrote a single file. From a billing point of view, not so much, because the bucket owner paid for every rejected request.&lt;/p&gt;

&lt;p&gt;AWS first replied that this was "expected behavior". In the end the bill was cancelled, as an exception. The story went viral, and Jeff Barr publicly admitted that it had to be fixed.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;I recalculated:&lt;/strong&gt; 100 M &lt;code&gt;PUT&lt;/code&gt; × $0.005 per 1,000 requests = $500 per day. So $1,300 is about two and a half days at that rate. On top of that, requests without a region first went to &lt;code&gt;us-east-1&lt;/code&gt; and were redirected, which added cost. The order of magnitude matches.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Is the monster alive?&lt;/strong&gt; No. It's the only monster in this list that AWS really killed. The change was announced on 13 May 2024, and by August 2024 it covered all S3 APIs and regions. Watch out for one detail, though: only 403 errors that come &lt;strong&gt;from outside your account or AWS Organization&lt;/strong&gt; are free. If your own application hammers a bucket without permissions, you still pay.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Exorcism:&lt;/strong&gt; unique bucket names (with a random suffix), not &lt;code&gt;backup&lt;/code&gt;, &lt;code&gt;data&lt;/code&gt; or &lt;code&gt;test&lt;/code&gt;.&lt;/p&gt;

&lt;h3&gt;
  
  
  2. The mummy: a file that woke up after years
&lt;/h3&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%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fdo6jd6ywga7oh0aom15r.jpg" 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%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fdo6jd6ywga7oh0aom15r.jpg" alt="The mummy: a file that woke up after years" width="799" height="450"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;In July 2020, Chris Short opened the email with his bill. He usually paid about $23 a month. For June: &lt;strong&gt;$2,657.68&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;A 13.7 GB virtual machine image sat in a public S3 bucket. Cloudflare stood in front of the bucket, so Chris assumed the CDN would cache everything. But Cloudflare's Free, Pro and Business plans don't cache files larger than 512 MB. So every download went straight to S3, and S3 charged for data transfer to the internet. More than 30.6 TB in two days: $1,011.59 on 23 June and $1,639.07 on 24 June.&lt;/p&gt;

&lt;p&gt;Who was downloading that file? Nobody knows to this day. Corey Quinn summed it up: Chris didn't do anything wrong. AWS refunded everything except about $40.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;I recalculated:&lt;/strong&gt; the first 10 TB × $0.09/GB + the next 20.6 TB × $0.085/GB ≈ $2,650. Less than 1% off the bill.&lt;/p&gt;

&lt;p&gt;The same thing, 2026 edition: in March, an r/aws user described how, after his site was promoted on a subreddit, someone downloaded files from his bucket non-stop for three days. About &lt;strong&gt;160 TB&lt;/strong&gt; and about &lt;strong&gt;$15,500&lt;/strong&gt;. AWS first reduced the bill only partially, and the author still couldn't pay the rest. AWS waived the remaining amount only after six weeks, and after the author, on a commenter's advice, wrote to Jeff Barr. Transferring 160 TB alone costs about $12,000 according to the price list, so the order of magnitude matches. A caveat: this is an account from an anonymous Reddit user, with no breakdown of the rest of the amount.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Is the monster alive?&lt;/strong&gt; Yes. The 2024 change doesn't help here, because downloading a file from a bucket someone can access is a valid, billable request.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Exorcism:&lt;/strong&gt; don't expose S3 directly to the internet. Serve files through CloudFront with Origin Access Control, and check whether your CDN really caches large objects.&lt;/p&gt;

&lt;h3&gt;
  
  
  3. A swarm of bats: 207 million requests in three hours
&lt;/h3&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%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fgv8f7k2nyb8t0rxvbqfd.jpg" 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%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fgv8f7k2nyb8t0rxvbqfd.jpg" alt="A swarm of bats: 207 million requests in three hours" width="799" height="450"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Web Dev Cody, a YouTuber well known in the JavaScript world, woke up in March 2024 to an email from AWS Budgets. He had set an alert at about $10. The bill was &lt;strong&gt;$269&lt;/strong&gt;, almost $260 of it CloudFront.&lt;/p&gt;

&lt;p&gt;For roughly three hours, while Cody slept, his Icon Generator app received more than 207 million requests. The &lt;code&gt;/community&lt;/code&gt; page alone got about 25 million of them, and those responses came from cache. The app didn't have to compute anything, yet every HTTPS request was billed. Cody suspected a DoS attack or a script. The traffic stopped on its own. The bill stayed, and Cody doesn't mention any refund.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;I recalculated:&lt;/strong&gt; the bill in his video shows a line of 207,146,239 HTTPS requests in the US region. × $0.01 per 10,000 requests = &lt;strong&gt;$207.15&lt;/strong&gt;. That's exactly the amount on that line. To the cent. Plus $31.37 for data transfer (these are two lines from the part of the bill shown, not the full breakdown).&lt;/p&gt;

&lt;p&gt;The alert worked as a notification, not as a brake. Threshold $10, bill $269, and the traffic stopped before Cody woke up. Thanks to the alert, though, he found out the same day. He added a rate-limit rule in AWS WAF and closed the case.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Is the monster alive?&lt;/strong&gt; Weakened. Since 18 November 2025 CloudFront has flat-rate plans (from the free Free plan to Premium at $1,000 a month) &lt;strong&gt;with no overage charges&lt;/strong&gt;. Blocked DDoS attacks and requests rejected by WAF don't count against the allowance. But this is an option, not the default. A plan covers a specific distribution, not your whole backend, and an existing distribution doesn't get one automatically. On classic pay-as-you-go, the monster is alive and well.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Exorcism:&lt;/strong&gt; a rate-limit rule in AWS WAF, or a flat-rate plan for projects that don't make money from traffic.&lt;/p&gt;

&lt;h2&gt;
  
  
  Loops that feed themselves
&lt;/h2&gt;

&lt;h3&gt;
  
  
  4. The poltergeist: a function that calls itself
&lt;/h3&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%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F3o9osycbehsqpj5o09at.jpg" 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%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F3o9osycbehsqpj5o09at.jpg" alt="The poltergeist: a function that calls itself" width="799" height="450"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;June 2022. Ruslan Gainutdinov ran a Next.js site with &lt;a href="mailto:Lambda@Edge"&gt;Lambda@Edge&lt;/a&gt;. By mistake, the function started calling its own CloudFront distribution. According to the author, the recursive requests ran at about &lt;strong&gt;17,000 per second&lt;/strong&gt;, each with a 30-second timeout.&lt;/p&gt;

&lt;p&gt;The bill: about &lt;strong&gt;$4,500&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;The most interesting detail is another one, though. Ruslan had a budget alert set at $300. The alert arrived when the charges were already &lt;strong&gt;$1,484&lt;/strong&gt;. CloudFront charges can show up on your bill with a delay of up to 24 hours. The author calculated that if the alert had arrived on time, he would have paid about $400.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;I recalculated:&lt;/strong&gt; assuming 128 MB of memory, one 30-second invocation is 3.75 GB-s × $0.00005001 ≈ $0.00019. So $4,500 is about 24 million invocations, which is just under half an hour at a steady 17,000 per second. The rate was probably a peak, but the order of magnitude matches.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Is the monster alive?&lt;/strong&gt; In this form, yes. AWS detects and stops Lambda loops (since July 2023 for SQS and SNS, since October 2024 for S3, and according to the current documentation also for custom EventBridge buses). A loop through CloudFront and HTTP is not on that list.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Exorcism:&lt;/strong&gt; a rate limit in WAF on the distribution, a header or counter that breaks the recursion, and a CloudWatch alarm on invocation count (Lambda@Edge metrics live in the regions where the replicas ran). The invocation count grows immediately. The dollars show up hours later.&lt;/p&gt;

&lt;h3&gt;
  
  
  5. My own poltergeist
&lt;/h3&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%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fpidsyuh92j4qb7wetl3k.jpg" 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%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fpidsyuh92j4qb7wetl3k.jpg" alt="My own poltergeist" width="799" height="450"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;I know this story best, because I wrote it myself.&lt;/p&gt;

&lt;p&gt;When I was learning serverless and event-driven architecture, I built a simple flow. A file lands in S3, the event triggers a Lambda, the Lambda starts a Step Functions state machine, and the state machine processes the file and writes the result back to S3.&lt;/p&gt;

&lt;p&gt;Nothing suspicious. Except that I put the input prefix and the output prefix in the same place.&lt;/p&gt;

&lt;p&gt;So writing the result started the next round of processing. I built an infinite loop and simply didn't notice it for a while. The wake-up call came by email: I had used up the Step Functions Free Tier. After a few dozen minutes of playing around. 😅&lt;/p&gt;

&lt;p&gt;Luckily, I stopped my tests at that point. And it was me who stopped the loop, not AWS. On accounts with the classic Free Tier, running out of it doesn't stop anything, it just starts charging.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Scale:&lt;/strong&gt; the Step Functions (Standard) Free Tier is 4,000 state transitions per month. A state machine with a few states uses that up in a few hundred executions, and a loop does those in minutes. After that, every 1,000 transitions cost $0.025.&lt;/p&gt;

&lt;p&gt;I don't have a six-figure bill to show here. What I do have is a very personal memory of the moment I understood that automation repeats my mistake just as efficiently as it does useful work.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Is the monster alive?&lt;/strong&gt; Yes. Lambda loop detection covers S3, but my chain went through Step Functions. I wouldn't assume detection catches it.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Exorcism:&lt;/strong&gt; input and output in separate buckets, or at least in separate prefixes with a filter on the S3 event.&lt;/p&gt;

&lt;h2&gt;
  
  
  Good intentions, terrible bill
&lt;/h2&gt;

&lt;p&gt;In this category nobody did anything stupid. Everyone was trying to do things properly.&lt;/p&gt;

&lt;h3&gt;
  
  
  6. The vampire: a NAT Gateway that drinks every gigabyte
&lt;/h3&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%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fi74ukt4qys71iz0iohgb.jpg" 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%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fi74ukt4qys71iz0iohgb.jpg" alt="The vampire: a NAT Gateway that drinks every gigabyte" width="799" height="450"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;November 2025. The Geocodio team built a new process that synced large datasets from EC2 to S3. They knew that data transfer between EC2 and S3 in the same region is free. And that's true.&lt;/p&gt;

&lt;p&gt;A few days later, an alert came from AWS Cost Anomaly Detection. In one day, &lt;strong&gt;20,167.32 GB&lt;/strong&gt; went through a NAT Gateway.&lt;/p&gt;

&lt;p&gt;So where did the bill come from? From the path the data took.&lt;/p&gt;

&lt;p&gt;The instances were in a private subnet. If they had been in a public one, the traffic wouldn't have gone through NAT at all. A private subnet has no direct route out of the VPC. Its route table sends all traffic leaving the VPC (&lt;code&gt;0.0.0.0/0&lt;/code&gt;) to the NAT Gateway. And S3 isn't part of your VPC. It's a service with a public address. Without an S3 Gateway Endpoint, every request to S3 goes through the NAT Gateway, then through the Internet Gateway, and only then reaches the public S3 endpoint.&lt;/p&gt;

&lt;p&gt;An important detail: this traffic doesn't go out to the public internet. According to the Amazon VPC FAQ, traffic between AWS resources stays on the AWS network, even when it uses public addresses. And the transfer from EC2 to S3 itself is still free, exactly as the price list says.&lt;/p&gt;

&lt;p&gt;You pay for something else. A NAT Gateway charges &lt;strong&gt;$0.045 for every gigabyte it processes&lt;/strong&gt;, no matter where that gigabyte is going. The transfer was free. The gate it passed through was not.&lt;/p&gt;

&lt;p&gt;An instance in a public subnet (with a public IP and a route to the Internet Gateway) wouldn't have this problem, because the Internet Gateway doesn't charge for data processing. And a Gateway Endpoint adds a direct route to S3 to the route table, bypassing NAT. It costs nothing.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;I recalculated:&lt;/strong&gt; 20,167.32 GB × $0.045 = &lt;strong&gt;$907.53&lt;/strong&gt;. Exactly the amount Geocodio reports for that one day. In January 2026 they added that AWS refunded the full amount.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Is the monster alive?&lt;/strong&gt; Yes. The Gateway Endpoint for S3 and DynamoDB is free, but you still have to add it yourself.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Exorcism:&lt;/strong&gt; a Gateway Endpoint for S3 and DynamoDB in every VPC, ideally in your IaC template, so nobody forgets it.&lt;/p&gt;

&lt;h3&gt;
  
  
  7. The ghost in the logs: one &lt;code&gt;print&lt;/code&gt; for $1,500
&lt;/h3&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%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fv0zl17j4l0944st7yutr.jpg" 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%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fv0zl17j4l0944st7yutr.jpg" alt="The ghost in the logs: one print for $1,500" width="799" height="450"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;On 4 August 2020, Michael Malis, CEO of Freshpaint, got a budget alert email. It was the fourth day of the month, and the company had already spent more than $1,600 against a budget of $1,000 for the &lt;strong&gt;whole&lt;/strong&gt; month.&lt;/p&gt;

&lt;p&gt;Almost $1,500 went to CloudWatch. The cause: a &lt;code&gt;print&lt;/code&gt; statement added during debugging that logged every event passing through the backend. It made it to production and generated terabytes of logs. The whole cost was a single line item: &lt;code&gt;DataProcessing-Bytes&lt;/code&gt;, meaning log ingestion into CloudWatch at $0.50 per GB ($0.63 in Frankfurt).&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;I recalculated:&lt;/strong&gt; $1,500 / $0.50 = 3,000 GB, about 3 TB of logs. The author writes about "multiple terabytes". It matches.&lt;/p&gt;

&lt;p&gt;An important detail: shortening retention wouldn't have changed anything. You pay for ingesting logs, not only for storing them.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Is the monster alive?&lt;/strong&gt; Yes. The Infrequent Access log class is cheaper, but volume still costs money.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Exorcism:&lt;/strong&gt; log level set in configuration, not in code, and an alarm on log volume for every log group.&lt;/p&gt;

&lt;h3&gt;
  
  
  8. The curse of defaults: CloudTrail for $200,000
&lt;/h3&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%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fzrastqt72g0xbw6p6k6v.jpg" 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%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fzrastqt72g0xbw6p6k6v.jpg" alt="The curse of defaults: CloudTrail for $200,000" width="799" height="450"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;In my opinion, this is the scariest story in the list. Precisely because it's so boring.&lt;/p&gt;

&lt;p&gt;Bharath Nadar described how, while onboarding a security tool, someone accepted its default configuration: &lt;strong&gt;CloudTrail Data Events&lt;/strong&gt; for all reads and writes in all S3 buckets, across the whole AWS organization. Full audit, compliance, security. Who would object?&lt;/p&gt;

&lt;p&gt;The thing is, CloudTrail charges $0.10 for every 100,000 data events. And buckets that applications read billions of times a month generate billions of events.&lt;/p&gt;

&lt;p&gt;The cost grew slowly: from about $1,000 a month in 2024 to about $30,000 a month in 2025. There was no sudden spike, so nothing raised an alarm. The author put it this way: "It didn't spike. It crept." He found the problem manually, in Cost Explorer, at the end of 2025. Total loss: about &lt;strong&gt;$200,000&lt;/strong&gt;. The fix took 5 minutes: switching logging to writes only.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;I recalculated:&lt;/strong&gt; the author reports 8.98 billion S3 events in December, in &lt;code&gt;us-east-1&lt;/code&gt; alone. × $0.10 per 100,000 = &lt;strong&gt;$8,980&lt;/strong&gt; in one month and one region. That's consistent with the roughly $10,000 a month the author gives for a single production account.&lt;/p&gt;

&lt;p&gt;A caveat: this is one person's account, with no company name. The mechanism and the numbers are consistent, though.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Is the monster alive?&lt;/strong&gt; Yes. Data Events for high-volume S3 reads will always be expensive.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Exorcism:&lt;/strong&gt; narrow Data Events with selectors to specific buckets and to writes. And before you enable a new tool, check how much the services it turns on will cost.&lt;/p&gt;

&lt;h2&gt;
  
  
  Monsters you can't see
&lt;/h2&gt;

&lt;h3&gt;
  
  
  9. The zombie: you deleted it, but it keeps walking
&lt;/h3&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%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fil5n7xr0cjzjuvuidx3q.jpg" 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%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fil5n7xr0cjzjuvuidx3q.jpg" alt="The zombie: you deleted it, but it keeps walking" width="799" height="450"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;October 2024. Elliott King was building a side project on AWS Amplify Gen 2 and got a bill of about &lt;strong&gt;$1,125&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;He deleted the sandbox environment with &lt;code&gt;npx ampx sandbox delete&lt;/code&gt;. The DynamoDB tables disappeared. The Amazon OpenSearch Service domains stayed and kept running. Every new sandbox added another domain.&lt;/p&gt;

&lt;p&gt;AWS adjusted the bill as a one-time courtesy. A long discussion grew under his post on Hacker News, so Elliott was definitely not alone.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Is the monster alive?&lt;/strong&gt; I don't know. At the end of October 2024 the author wrote that the problem still existed. I found no confirmation that it has been fixed. What I do know is that the zombie is always alive when you trust a &lt;code&gt;delete&lt;/code&gt; command without checking what it left behind.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Exorcism:&lt;/strong&gt; after every environment deletion, check resources by tags (Tag Editor in Resource Groups). And set a budget on every account, including the one "just for fun".&lt;/p&gt;

&lt;h3&gt;
  
  
  10. The invisible monster: $30,000 for Claude Opus
&lt;/h3&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%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fncfsxema3mq36tof5n12.jpg" 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%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fncfsxema3mq36tof5n12.jpg" alt="The invisible monster: $30,000 for Claude Opus" width="799" height="450"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;This is the freshest story. May 2026, The Register. One of its readers used Claude Opus through Amazon Bedrock. He had Cost Anomaly Detection configured. The first sign that something was wrong was the invoice: &lt;strong&gt;$30,141.33&lt;/strong&gt; for April, plus about $675 in other charges.&lt;/p&gt;

&lt;p&gt;Why did anomaly detection stay silent? Third-party models in Bedrock are billed through AWS Marketplace. And at that time Cost Anomaly Detection &lt;strong&gt;didn't see Marketplace charges at all&lt;/strong&gt;. An AWS spokesperson confirmed this directly to The Register.&lt;/p&gt;

&lt;p&gt;On top of that, AWS Activate credits quietly covered the first $8,026.54. When they ran out, nobody got a notification.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Is the monster alive?&lt;/strong&gt; Weakened. On 19 August 2026 AWS announced that Cost Anomaly Detection now covers third-party models in Bedrock, with no extra setup. The documentation still says, however, that &lt;strong&gt;other&lt;/strong&gt; Marketplace charges are not monitored. For those you need AWS Budgets.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Exorcism:&lt;/strong&gt; a budget on the total account cost (it includes Marketplace) and a separate alert for credits running out.&lt;/p&gt;

&lt;h2&gt;
  
  
  Why the alarm didn't ring
&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%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fp9qxzkmaasfey7m42ejc.jpg" 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%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fp9qxzkmaasfey7m42ejc.jpg" alt="The alarm that overslept" width="799" height="450"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;When I put these stories side by side, I saw something more interesting than the amounts. Some people had no alarm at all. But where there was an alarm, it failed in four ways.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;1. The alarm was late.&lt;/strong&gt; Ruslan had a $300 alert that arrived at $1,484. Cody had a $10 alert and paid $269. That wasn't a bug. According to the documentation, AWS Budgets updates its data up to three times a day, usually every 8 to 12 hours. AWS itself writes that you can exceed the threshold before you get the email. Cost Anomaly Detection uses Cost Explorer data and needs up to 24 hours to detect an anomaly.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;2. The alarm was blind.&lt;/strong&gt; The Register reader had Cost Anomaly Detection, but it didn't see Marketplace costs. Credits hid the first $8,000. The alarm was looking the other way.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;3. The monster crept.&lt;/strong&gt; CloudTrail grew for more than a year. Anomaly detection learns your spending pattern and, according to the documentation, accounts for natural growth. So a steady, slow increase is easy to treat as normal. (The author didn't say whether he had anomaly detection. But even if he had, I wouldn't count on it.)&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;4. The monster was new.&lt;/strong&gt; Few people know this detail: for a newly used service, Cost Anomaly Detection needs &lt;strong&gt;10 days of history&lt;/strong&gt; before it starts detecting anomalies. A service you turned on yesterday that got out of control today is invisible to it.&lt;/p&gt;

&lt;p&gt;The alerts that did work (Cody, Geocodio, Freshpaint) gave one thing: knowledge within hours or days, not at the end of the month. None of them stopped anything. An alert is a smoke detector, not a fire extinguisher.&lt;/p&gt;

&lt;h3&gt;
  
  
  So did AWS finally give us a brake?
&lt;/h3&gt;

&lt;p&gt;Partly. For years the answer was "there is no hard spending limit". Budget Actions can apply an IAM policy or an SCP, or stop specific EC2 and RDS instances. They won't stop Lambda, S3 or Bedrock.&lt;/p&gt;

&lt;p&gt;On 16 September 2026, AWS introduced a new, project-based way of creating accounts. On the paid plan you can set a spend limit for a project. The minimum is $20 or AWS's estimate of your spend, whichever is higher. The limit applies to pre-tax costs and doesn't include credits. When you reach it, AWS pauses the project and stops its resources. There are also optional earlier thresholds, triggered a few days before the forecast overrun: blocking new resources, pausing idle resources, and even pausing the biggest cost drivers, including Lambda and Bedrock.&lt;/p&gt;

&lt;p&gt;Sounds great. But there are three catches:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Spend limits work only in the &lt;strong&gt;new&lt;/strong&gt; account model (AWS Settings). For traditional accounts, which in practice means every existing company, the comparison in the AWS documentation says it plainly: not available.&lt;/li&gt;
&lt;li&gt;A spend limit is a type of AWS Budgets, so it uses the same delayed data. A loop that burns thousands of dollars in half an hour will manage to do so.&lt;/li&gt;
&lt;li&gt;If a project is paused and you do nothing for 90 days, AWS &lt;strong&gt;permanently deletes its data&lt;/strong&gt;. A brake that, instead of slowing you down, scraps the car.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;For learning and experiments, it's a great direction. In production, you still have to rely on yourself.&lt;/p&gt;

&lt;h2&gt;
  
  
  Are these monsters still alive?
&lt;/h2&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Monster&lt;/th&gt;
&lt;th&gt;Mechanism&lt;/th&gt;
&lt;th&gt;Status in October 2026&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;1. Empty bucket&lt;/td&gt;
&lt;td&gt;Charges for rejected 403 requests&lt;/td&gt;
&lt;td&gt;⚰️ &lt;strong&gt;Dead&lt;/strong&gt; for requests from outside your account and organization (since 2024)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;2. Mummy (13.7 GB)&lt;/td&gt;
&lt;td&gt;Data transfer from S3 to the internet&lt;/td&gt;
&lt;td&gt;🧟 &lt;strong&gt;Alive&lt;/strong&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;3. 207 M requests&lt;/td&gt;
&lt;td&gt;A charge for every CloudFront request&lt;/td&gt;
&lt;td&gt;🩹 &lt;strong&gt;Weakened&lt;/strong&gt;: flat-rate plans since 11.2025, if you choose them&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;4. Lambda@Edge&lt;/td&gt;
&lt;td&gt;Recursion over HTTP&lt;/td&gt;
&lt;td&gt;🧟 &lt;strong&gt;Alive&lt;/strong&gt;: loop detection doesn't cover this path&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;5. My loop&lt;/td&gt;
&lt;td&gt;S3, Lambda and Step Functions&lt;/td&gt;
&lt;td&gt;🧟 &lt;strong&gt;Alive&lt;/strong&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;6. Geocodio&lt;/td&gt;
&lt;td&gt;NAT Gateway instead of a Gateway Endpoint&lt;/td&gt;
&lt;td&gt;🧟 &lt;strong&gt;Alive&lt;/strong&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;7. Freshpaint&lt;/td&gt;
&lt;td&gt;Log ingestion into CloudWatch&lt;/td&gt;
&lt;td&gt;🧟 &lt;strong&gt;Alive&lt;/strong&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;8. CloudTrail&lt;/td&gt;
&lt;td&gt;Data Events for S3 reads&lt;/td&gt;
&lt;td&gt;🧟 &lt;strong&gt;Alive&lt;/strong&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;9. OpenSearch zombie&lt;/td&gt;
&lt;td&gt;Resources that survived &lt;code&gt;delete&lt;/code&gt;
&lt;/td&gt;
&lt;td&gt;❓ &lt;strong&gt;No evidence of a fix&lt;/strong&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;10. Claude on Bedrock&lt;/td&gt;
&lt;td&gt;Charges outside anomaly detection&lt;/td&gt;
&lt;td&gt;🩹 &lt;strong&gt;Weakened&lt;/strong&gt;: detection since 08.2026&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;One dead, two weakened, six alive, and one I know nothing certain about. AWS does fix these traps, but slowly. And in two cases (1 and 10) only after someone described the problem publicly.&lt;/p&gt;

&lt;h2&gt;
  
  
  Monster hunting in 15 minutes
&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%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fh4unzvu0o0ogvhtf6nhl.jpg" 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%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fh4unzvu0o0ogvhtf6nhl.jpg" alt="Hunting monsters in cost data" width="799" height="450"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Every one of these monsters leaves a trace in your cost data. Open Cost Explorer, select the last 3 months, set &lt;strong&gt;Group by: Usage type&lt;/strong&gt; and look for these traces. Usage types have a region prefix, for example &lt;code&gt;EUC1-DataProcessing-Bytes&lt;/code&gt; for Frankfurt.&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Monster&lt;/th&gt;
&lt;th&gt;What to look for&lt;/th&gt;
&lt;th&gt;What to do&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;🧛 Vampire (NAT)&lt;/td&gt;
&lt;td&gt;A usage type with &lt;code&gt;NatGateway-Bytes&lt;/code&gt; in its name (under EC2-Other)&lt;/td&gt;
&lt;td&gt;Add a Gateway Endpoint for S3 and DynamoDB&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;🏺 Mummy (transfer)&lt;/td&gt;
&lt;td&gt;
&lt;code&gt;DataTransfer-Out-Bytes&lt;/code&gt; for S3&lt;/td&gt;
&lt;td&gt;Move public files behind CloudFront&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;👻 Ghost in the logs&lt;/td&gt;
&lt;td&gt;
&lt;code&gt;DataProcessing-Bytes&lt;/code&gt; for CloudWatch&lt;/td&gt;
&lt;td&gt;Find the log group with the highest volume&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;🧙 CloudTrail curse&lt;/td&gt;
&lt;td&gt;CloudTrail cost growing month over month&lt;/td&gt;
&lt;td&gt;Check your Data Events selectors&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;🦇 Bats (CloudFront)&lt;/td&gt;
&lt;td&gt;CloudFront request cost higher than transfer cost&lt;/td&gt;
&lt;td&gt;WAF rate limit or a flat-rate plan&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;Then a few quick checks in the terminal. Which VPCs have an S3 endpoint and of what type (compare the result with the list from &lt;code&gt;aws ec2 describe-vpcs&lt;/code&gt;):&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;aws ec2 describe-vpc-endpoints &lt;span class="nt"&gt;--region&lt;/span&gt; eu-central-1 &lt;span class="nt"&gt;--filters&lt;/span&gt; &lt;span class="nv"&gt;Name&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;service-name,Values&lt;span class="o"&gt;=&lt;/span&gt;com.amazonaws.eu-central-1.s3 &lt;span class="nt"&gt;--query&lt;/span&gt; &lt;span class="s1"&gt;'VpcEndpoints[].{Id:VpcEndpointId,Vpc:VpcId,Type:VpcEndpointType}'&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;What exactly your CloudTrail trail logs (look for &lt;code&gt;DataResources&lt;/code&gt; or &lt;code&gt;AdvancedEventSelectors&lt;/code&gt; with S3):&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;aws cloudtrail get-event-selectors &lt;span class="nt"&gt;--trail-name&lt;/span&gt; YOUR_TRAIL_NAME
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Whether you have a budget, an anomaly monitor and a subscription that will send an alert:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;aws budgets describe-budgets &lt;span class="nt"&gt;--account-id&lt;/span&gt; YOUR_ACCOUNT_ID
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;





&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;aws ce get-anomaly-monitors
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;





&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;aws ce get-anomaly-subscriptions
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;An anomaly monitor without a subscription won't notify anyone. If you're missing a budget, a monitor or a subscription, you know what you're doing tonight. 😉&lt;/p&gt;

&lt;h2&gt;
  
  
  What this all means
&lt;/h2&gt;

&lt;p&gt;After ten stories, one thing is clear: AWS almost always billed &lt;strong&gt;exactly as its price list says&lt;/strong&gt;. In the Geocodio and Cody stories, my recalculation matches to the cent. Monsters rarely come from billing errors. More often they come from defaults and from a price list read without the context of your own architecture.&lt;/p&gt;

&lt;p&gt;That's why before every deployment I want to be able to answer three questions:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;What in this architecture can run over and over without delivering any new value?&lt;/li&gt;
&lt;li&gt;How will I know it's happening?&lt;/li&gt;
&lt;li&gt;How will I stop it, and who makes that call?&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;And after deployment I do three things:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;I set up AWS Budgets and Cost Anomaly Detection.&lt;/strong&gt; Knowing that they are smoke detectors, not fire extinguishers. They ring late and they don't see everything.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;I look at the mechanism, not the service.&lt;/strong&gt; An amount next to "S3" tells you little. What matters is whether you pay for storage, requests or transfer. An amount next to "EC2-Other" tells you even less.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;I review trends, not just spikes.&lt;/strong&gt; The most expensive story in this list didn't have a single spike. It grew calmly for a year.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;One more thing. In at least four of these stories, AWS gave the money back. But usually as a one-time courtesy, often only after a public post. That is not a FinOps strategy.&lt;/p&gt;

&lt;p&gt;I do this kind of review every day in &lt;a href="https://cloudpouch.dev/" rel="noopener noreferrer"&gt;CloudPouch&lt;/a&gt;, because this exact pain is why I built the app. But whatever tool you use, do the review. Before your story ends up in the next list like this one.&lt;/p&gt;

&lt;p&gt;And if you have your own AWS bill horror story (no leaked keys!), share it in the comments. I'd love to read it. 🎃&lt;/p&gt;

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

&lt;ul&gt;
&lt;li&gt;Maciej Pocwierz, &lt;a href="https://medium.com/@maciej.pocwierz/how-an-empty-s3-bucket-can-make-your-aws-bill-explode-934a383cb8b1" rel="noopener noreferrer"&gt;How an empty S3 bucket can make your AWS bill explode&lt;/a&gt;, &lt;a href="https://www.infoq.com/news/2024/05/aws-empty-s3-bucket-billing/" rel="noopener noreferrer"&gt;InfoQ coverage&lt;/a&gt; and &lt;a href="https://www.theregister.com/2024/05/01/aws_s3_bucket_abuse/" rel="noopener noreferrer"&gt;The Register coverage&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;AWS, &lt;a href="https://aws.amazon.com/about-aws/whats-new/2024/05/amazon-s3-no-charge-http-error-codes/" rel="noopener noreferrer"&gt;announcement of 13 May 2024&lt;/a&gt;, &lt;a href="https://aws.amazon.com/about-aws/whats-new/2024/08/amazon-s3-no-charges-several-http-error-codes/" rel="noopener noreferrer"&gt;announcement of August 2024&lt;/a&gt; and &lt;a href="https://docs.aws.amazon.com/AmazonS3/latest/userguide/ErrorCodeBilling.html" rel="noopener noreferrer"&gt;Billing for Amazon S3 error responses&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;Chris Short, &lt;a href="https://chrisshort.net/the-aws-bill-heard-around-the-world/" rel="noopener noreferrer"&gt;The AWS bill heard around the world&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;r/aws, &lt;a href="https://www.reddit.com/r/aws/comments/1rkz50f/15000_s3_bill_for_ddos/" rel="noopener noreferrer"&gt;$15,000 S3 Bill for DDoS&lt;/a&gt;, &lt;a href="https://www.reddit.com/r/aws/comments/1s1md42/aws_reduced_my_15k_s3_bill_to_105k_after_a_ddos_i/" rel="noopener noreferrer"&gt;AWS reduced my $15k S3 bill to $10.5k after a DDoS&lt;/a&gt;, &lt;a href="https://www.reddit.com/r/aws/comments/1skooiu/update_my_155k_aws_s3_ddos_bill_has_been_fully/" rel="noopener noreferrer"&gt;Update: My $15.5k AWS S3 DDoS bill has been fully resolved&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;Web Dev Cody, &lt;a href="https://www.youtube.com/watch?v=-lNpF0ACe1Y" rel="noopener noreferrer"&gt;I got my first DDoS (and what you can do to help prevent it)&lt;/a&gt; (the bill is visible &lt;a href="https://www.youtube.com/watch?v=-lNpF0ACe1Y&amp;amp;t=40s" rel="noopener noreferrer"&gt;around 0:40&lt;/a&gt;)&lt;/li&gt;
&lt;li&gt;AWS, &lt;a href="https://aws.amazon.com/about-aws/whats-new/2025/11/aws-flat-rate-pricing-plans/" rel="noopener noreferrer"&gt;CloudFront flat-rate pricing plans&lt;/a&gt;, &lt;a href="https://docs.aws.amazon.com/AmazonCloudFront/latest/DeveloperGuide/flat-rate-pricing-plan.html" rel="noopener noreferrer"&gt;plan documentation&lt;/a&gt; and &lt;a href="https://aws.amazon.com/cloudfront/pricing/" rel="noopener noreferrer"&gt;CloudFront pricing&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;Ruslan Gainutdinov, &lt;a href="https://medium.com/@ruslanfg/i-ddosed-myself-using-aws-cloudfront-and-lambda-edge-and-got-a-4-5k-bill-3d3f57b64cbd" rel="noopener noreferrer"&gt;I DDoSed myself using CloudFront and Lambda@Edge and got a $4.5k bill&lt;/a&gt; and &lt;a href="https://news.ycombinator.com/item?id=31907374" rel="noopener noreferrer"&gt;the Hacker News discussion with the author's comments&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;AWS, &lt;a href="https://docs.aws.amazon.com/lambda/latest/dg/invocation-recursion.html" rel="noopener noreferrer"&gt;Lambda recursive loop detection&lt;/a&gt; and &lt;a href="https://aws.amazon.com/about-aws/whats-new/2024/10/aws-lambda-detects-stops-recursive-loops-lambda-s3/" rel="noopener noreferrer"&gt;the S3 announcement of October 2024&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;Mathias Hansen (Geocodio), &lt;a href="https://www.geocod.io/code-and-coordinates/2025-11-18-the-1000-aws-mistake" rel="noopener noreferrer"&gt;The $1,000 AWS mistake&lt;/a&gt; and the &lt;a href="https://aws.amazon.com/vpc/faqs/" rel="noopener noreferrer"&gt;Amazon VPC FAQ&lt;/a&gt; (traffic to public AWS addresses stays on the AWS network)&lt;/li&gt;
&lt;li&gt;Michael Malis (Freshpaint), &lt;a href="https://www.freshpaint.io/blog/avoiding-a-surprise-aws-bill" rel="noopener noreferrer"&gt;Avoiding a Surprise AWS Bill&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;Bharath Nadar, &lt;a href="https://dev.to/bharathnoddy/a-200000-aws-bill-nobody-noticed-fixed-in-5-minutes-3p08"&gt;A $200,000 AWS bill nobody noticed&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;Elliott King, &lt;a href="https://elliott-king.github.io/2024/10/amplify-overcharge/" rel="noopener noreferrer"&gt;Amplify overcharge&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;The Register, &lt;a href="https://www.theregister.com/saas/2026/05/14/bedrock-and-a-hard-place-claude-adventure-leaves-aws-user-staring-down-30k-invoice/5238153" rel="noopener noreferrer"&gt;Bedrock and a hard place: Claude adventure leaves AWS user staring down $30K invoice&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;AWS, &lt;a href="https://aws.amazon.com/about-aws/whats-new/2026/08/aws-cost-anomaly-detection-bedrock-3P/" rel="noopener noreferrer"&gt;Cost Anomaly Detection supports third-party models on Amazon Bedrock&lt;/a&gt; and the &lt;a href="https://docs.aws.amazon.com/cost-management/latest/userguide/manage-ad.html" rel="noopener noreferrer"&gt;Cost Anomaly Detection documentation&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;AWS, &lt;a href="https://docs.aws.amazon.com/cost-management/latest/userguide/budgets-managing-costs.html" rel="noopener noreferrer"&gt;AWS Budgets: data refresh frequency&lt;/a&gt; and &lt;a href="https://docs.aws.amazon.com/cost-management/latest/userguide/budgets-controls.html" rel="noopener noreferrer"&gt;Budget Actions&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;AWS, &lt;a href="https://aws.amazon.com/blogs/aws/aws-reimagines-the-getting-started-experience/" rel="noopener noreferrer"&gt;the new getting-started experience, 16 September 2026&lt;/a&gt;, &lt;a href="https://docs.aws.amazon.com/accounts/latest/reference/create-spend-limit.html" rel="noopener noreferrer"&gt;spend limits in AWS Settings&lt;/a&gt; and &lt;a href="https://docs.aws.amazon.com/accounts/latest/reference/sign-up-for-aws.html" rel="noopener noreferrer"&gt;comparison of sign-up options&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;AWS pricing: &lt;a href="https://aws.amazon.com/s3/pricing/" rel="noopener noreferrer"&gt;S3&lt;/a&gt;, &lt;a href="https://aws.amazon.com/vpc/pricing/" rel="noopener noreferrer"&gt;VPC and NAT Gateway&lt;/a&gt;, &lt;a href="https://aws.amazon.com/cloudwatch/pricing/" rel="noopener noreferrer"&gt;CloudWatch&lt;/a&gt;, &lt;a href="https://aws.amazon.com/cloudtrail/pricing/" rel="noopener noreferrer"&gt;CloudTrail&lt;/a&gt;, &lt;a href="https://aws.amazon.com/lambda/pricing/" rel="noopener noreferrer"&gt;Lambda&lt;/a&gt;, &lt;a href="https://aws.amazon.com/step-functions/pricing/" rel="noopener noreferrer"&gt;Step Functions&lt;/a&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;em&gt;Originally published in Polish on &lt;a href="https://serverlesspolska.pl/2026/10/31/AWS-billing-horror-stories-10-potworow/" rel="noopener noreferrer"&gt;Serverless Polska&lt;/a&gt;.&lt;/em&gt;&lt;/p&gt;

</description>
      <category>aws</category>
      <category>finops</category>
      <category>halloween</category>
      <category>productivity</category>
    </item>
    <item>
      <title>Why AWS Cost Explorer Isn't Enough: The Story of My Own Pain and How CloudPouch Was Born</title>
      <dc:creator>Pawel Zubkiewicz</dc:creator>
      <pubDate>Fri, 30 Oct 2026 15:47:01 +0000</pubDate>
      <link>https://dev.to/aws-heroes/why-aws-cost-explorer-isnt-enough-the-story-of-my-own-pain-and-how-cloudpouch-was-born-23m3</link>
      <guid>https://dev.to/aws-heroes/why-aws-cost-explorer-isnt-enough-the-story-of-my-own-pain-and-how-cloudpouch-was-born-23m3</guid>
      <description>&lt;p&gt;&lt;em&gt;It was 2016. I was sitting in front of my monitor, staring at an estimated AWS bill: 300 dollars a month for my side project. &lt;strong&gt;$300!&lt;/strong&gt; For an app used by maybe a handful of people. That was the moment I got it: either I give up on the dream of my own startup, or I find a way to tame cloud costs.&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;Today, after years of fighting with AWS cost optimization, I know one thing for sure: &lt;strong&gt;AWS Cost Explorer is only the beginning of your journey&lt;/strong&gt;, not the end of it.&lt;/p&gt;

&lt;h2&gt;
  
  
  Painful beginnings with AWS
&lt;/h2&gt;

&lt;p&gt;I came from the Java Enterprise Edition (JEE) world. When I decided to jump into the cloud in 2016 (at first I even gave Azure a shot!), I thought like a typical developer: "I need a server, a database, a load balancer... The standard enterprise setup."&lt;/p&gt;

&lt;p&gt;The result? &lt;strong&gt;A staggering $300 a month&lt;/strong&gt; for infrastructure that handled about as much traffic as a small blog.&lt;/p&gt;

&lt;p&gt;That's when I discovered serverless on AWS. Lambda, DynamoDB, API Gateway. These technologies solved my cost problem. They also taught me to think &lt;strong&gt;"frugally"&lt;/strong&gt; (&lt;a href="https://thefrugalarchitect.com/" rel="noopener noreferrer"&gt;as Dr. Werner Vogels put it&lt;/a&gt; many years later at re:Invent 2023).&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;In the cloud context, being &lt;em&gt;frugal&lt;/em&gt; means choosing components with their cost in mind, not just their technical merits.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;From $300 a month I went down to practically zero. The app ran for free within the Free Tier.&lt;/p&gt;

&lt;h2&gt;
  
  
  Cost Explorer: friend or foe?
&lt;/h2&gt;

&lt;p&gt;After a few years with AWS, I started helping clients optimize their costs. And that's where the real headache began.&lt;/p&gt;

&lt;p&gt;AWS Cost Explorer is a tool that &lt;strong&gt;seems&lt;/strong&gt; powerful. Colorful charts, filtering by service, region, tag. At first glance it looks impressive.&lt;/p&gt;

&lt;p&gt;The problem? &lt;strong&gt;Every question about the details ends in frustration.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Try answering these seemingly simple questions with Cost Explorer:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Why did this month cost more than the last one?&lt;/li&gt;
&lt;li&gt;What exactly is driving the cost increase in EC2-Other?&lt;/li&gt;
&lt;li&gt;And what does the usage type "EU-EBS:VolumeUsage.gp3" even mean?&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Cost Explorer will show you a chart. It might even tell you that EC2 costs more. But it &lt;strong&gt;won't explain why&lt;/strong&gt;, and it &lt;strong&gt;won't tell you how to fix it&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;Working intensively on costs, I built my own techniques and checklists of what to check. Unfortunately, Cost Explorer forces (well, forced) me to keep &lt;strong&gt;clicking through&lt;/strong&gt; the same chart configurations over and over again. A huge &lt;strong&gt;waste of time&lt;/strong&gt;. I hate that, and I always try to automate everything. On top of that, when you're just starting out, the sheer number of options is overwhelming, and useful default charts for beginners are nowhere to be found.&lt;/p&gt;

&lt;h2&gt;
  
  
  The usage types puzzle: 10,000 ways to pay
&lt;/h2&gt;

&lt;p&gt;As I kept digging into costs, at some point &lt;strong&gt;Usage Types&lt;/strong&gt; became my obsession.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;That's why today, when I want to check whether someone knows anything about costs yet, my opening question is: do you know what &lt;em&gt;EC2 - Other&lt;/em&gt; is?&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;AWS has an estimated 10,000 different usage types. Ten thousand! From simple ones like S3 storage, through complicated ones like data transfer between regions, all the way to completely incomprehensible combinations that aren't worth dissecting here.&lt;/p&gt;

&lt;p&gt;Example? S3 alone has dozens, maybe even hundreds of usage types:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;code&gt;TimedStorage-Standard&lt;/code&gt;: storing data&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;Requests-Tier1&lt;/code&gt;: every GET request&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;Requests-Tier2&lt;/code&gt;: PUT/POST requests&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;DataTransfer-Out-Bytes&lt;/code&gt;: outbound data transfer&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;And the AWS documentation?&lt;/strong&gt; Some usage types aren't described anywhere. I even tried to find out what they mean through AWS Support. No luck.&lt;/p&gt;

&lt;p&gt;It's like solving a crossword where half the clues have been hidden.&lt;/p&gt;

&lt;h2&gt;
  
  
  The turning point: the birth of &lt;a href="https://cloudpouch.dev/?utm_source=devto&amp;amp;utm_medium=referral&amp;amp;utm_campaign=historia-cost-explorer&amp;amp;utm_content=naglowek-narodziny" rel="noopener noreferrer"&gt;CloudPouch&lt;/a&gt;
&lt;/h2&gt;

&lt;p&gt;In 2021 I'd had enough. I was working with a client who paid serious money for AWS, and Cost Explorer couldn't answer my basic optimization questions.&lt;/p&gt;

&lt;p&gt;So I thought: &lt;strong&gt;"If AWS won't give me the tools I need, I'll build them myself."&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;My starting point was simple:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;See the costs&lt;/strong&gt;: better than Cost Explorer&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Understand them&lt;/strong&gt;: explain all the usage types&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Optimize&lt;/strong&gt;: find concrete savings&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;That's how I came up with the &lt;em&gt;tagline&lt;/em&gt; for my app: &lt;em&gt;"See. Understand. Reduce AWS costs."&lt;/em&gt; After all these years it still holds up, and it shows the path for anyone who wants to become a cloud cost specialist.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://cloudpouch.dev/?utm_source=devto&amp;amp;utm_medium=referral&amp;amp;utm_campaign=historia-cost-explorer&amp;amp;utm_content=opis-aplikacji" rel="noopener noreferrer"&gt;CloudPouch&lt;/a&gt; was born as a desktop app that:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Connects directly to your AWS account through the API&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Keeps all the data on your computer&lt;/strong&gt;, so zero security risk&lt;/li&gt;
&lt;li&gt;Explains Usage Types in plain language&lt;/li&gt;
&lt;li&gt;Automatically detects 15 different types of waste (for details, take a look &lt;a href="https://github.com/CloudPouch/CloudPouch.dev?tab=readme-ov-file#what-is-cloudpouch" rel="noopener noreferrer"&gt;here&lt;/a&gt;)&lt;/li&gt;
&lt;li&gt;Is built with Electron, so it runs on Windows, macOS, and Linux&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  When data tells a story
&lt;/h2&gt;

&lt;p&gt;One of my favorite CloudPouch features is &lt;strong&gt;historical analysis&lt;/strong&gt;. I can look at a client's costs and tell them what they've been up to over the past few months.&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%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Ftytjr9ddtz78gtk6l34w.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%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Ftytjr9ddtz78gtk6l34w.png" alt="CloudPouch Compare Report" width="800" height="327"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  The cost detective
&lt;/h3&gt;

&lt;p&gt;&lt;strong&gt;A real-life example:&lt;/strong&gt; a client had a huge cost drop, $50,000 between September and October. In Cost Explorer, all they'd see is a line going down.&lt;/p&gt;

&lt;p&gt;CloudPouch showed the details:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;"NAT Gateway Bytes" down by $18,000 in Ireland&lt;/li&gt;
&lt;li&gt;"Data Transfer Regional" down by another few thousand&lt;/li&gt;
&lt;li&gt;Similar patterns in other regions&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;My diagnosis?&lt;/strong&gt; The client had rolled out VPC Endpoints for S3 and DynamoDB. Data stopped going through the expensive NAT Gateways and started flowing straight to AWS services.&lt;/p&gt;

&lt;p&gt;When I called the client with this "prediction", they were in shock. The answer I got: &lt;strong&gt;"How do you know? That's exactly what we did!"&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;This story repeats itself quite often, by the way. My clients are surprised that without talking to them, without access to any project documentation, from the costs alone, I can work out what changes they've rolled out over the last 12 months.&lt;/p&gt;

&lt;h2&gt;
  
  
  Real results: from 13% to 62% savings
&lt;/h2&gt;

&lt;p&gt;After three years of building CloudPouch and working with dozens of clients, I can say one thing: &lt;strong&gt;AWS cost optimization is not a myth&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;My stats:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Smallest saving:&lt;/strong&gt; 13% of monthly costs&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Biggest saving:&lt;/strong&gt; 62% of monthly costs. Here even I was surprised, because my initial estimates pointed to "only" 41%&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;On average&lt;/strong&gt; it's 18% to 26% savings per AWS account&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Account range:&lt;/strong&gt; from $3,000 to 1.5 million USD a month, those are the accounts I've worked on&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Typical cases of waste:&lt;/strong&gt;

&lt;ul&gt;
&lt;li&gt;EBS volumes attached to stopped instances&lt;/li&gt;
&lt;li&gt;Unused NAT Gateways (no traffic for 14 days)&lt;/li&gt;
&lt;li&gt;RDS with no connections for over 2 weeks&lt;/li&gt;
&lt;li&gt;EC2 rightsizing&lt;/li&gt;
&lt;li&gt;Misconfigured DynamoDB (provisioned vs on-demand)&lt;/li&gt;
&lt;li&gt;Databases or EKS running in Extended Support mode&lt;/li&gt;
&lt;li&gt;and &lt;a href="https://github.com/CloudPouch/CloudPouch.dev?tab=readme-ov-file#what-is-cloudpouch" rel="noopener noreferrer"&gt;many more&lt;/a&gt;.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;One example: a client was paying $262 a month for a NAT Gateway that carried... 2KB of data over two weeks. &lt;strong&gt;Two kilobytes!&lt;/strong&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  The future: FinOps as the new standard
&lt;/h2&gt;

&lt;p&gt;Building CloudPouch isn't just about solving my own problem. It's about getting ready for a future where &lt;strong&gt;cost awareness becomes a non-functional requirement&lt;/strong&gt;, just like security is today.&lt;/p&gt;

&lt;p&gt;The FinOps Foundation (finops.org) is building the only comprehensive framework for managing cloud costs. These aren't theoretical abstractions, but &lt;strong&gt;practical best practices&lt;/strong&gt; drawn from the experience of the biggest companies.&lt;/p&gt;

&lt;p&gt;For developers, architects, and cloud engineers this means one thing: &lt;strong&gt;soon every technical decision will have to take cost into account&lt;/strong&gt;.&lt;/p&gt;

&lt;h2&gt;
  
  
  More than just savings
&lt;/h2&gt;

&lt;p&gt;CloudPouch taught me that cost optimization isn't just math. It's a &lt;strong&gt;detective story&lt;/strong&gt;, where every usage type tells a piece of your infrastructure's story, and I put on my hat and grab my magnifying glass.&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%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F0995reeqexfkqtut0t3r.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%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F0995reeqexfkqtut0t3r.png" alt="Cost detective" width="780" height="440"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;And finally, a small note on sustainability: &lt;strong&gt;every dollar saved on AWS means less energy burned&lt;/strong&gt;. When you switch off servers nobody needs, you save money and help the planet 🌍 at the same time. It may not be the main business motivation, but it does give me personal satisfaction.&lt;/p&gt;

&lt;p&gt;Similarly, I like to imagine that with large annual savings (sometimes even millions of USD), thanks to my work &lt;strong&gt;companies don't have to lay people off&lt;/strong&gt;, because they cut cloud costs instead of cutting jobs. And that makes someone's life a little better 😀.&lt;/p&gt;

&lt;p&gt;What was your most unexpected saving on AWS? Share it in the comments. Maybe your experience will help others avoid costly mistakes.&lt;/p&gt;




&lt;p&gt;&lt;em&gt;CloudPouch offers a 7-day trial, no credit card required. Download it from &lt;a href="https://cloudpouch.dev/?utm_source=devto&amp;amp;utm_medium=referral&amp;amp;utm_campaign=historia-cost-explorer&amp;amp;utm_content=trial" rel="noopener noreferrer"&gt;cloudpouch.dev&lt;/a&gt; and **see for yourself&lt;/em&gt;* how much you can really save.*&lt;/p&gt;

</description>
      <category>aws</category>
      <category>costoptimization</category>
      <category>finops</category>
      <category>productivity</category>
    </item>
    <item>
      <title>What's next with the Serverless Framework in 2025?</title>
      <dc:creator>Pawel Zubkiewicz</dc:creator>
      <pubDate>Wed, 05 Feb 2025 16:57:24 +0000</pubDate>
      <link>https://dev.to/aws-heroes/whats-next-with-the-serverless-framework-in-2025-121d</link>
      <guid>https://dev.to/aws-heroes/whats-next-with-the-serverless-framework-in-2025-121d</guid>
      <description>&lt;h1&gt;
  
  
  Recent Events Spark a Heated Debate
&lt;/h1&gt;

&lt;p&gt;Recent events surrounding the Serverless Framework have ignited a heated discussion within the user community. As shown in the attached image, the CEO of Serverless Inc. officially closed the door on support for version 3 by rejecting a pull request that would have enabled it to work with the latest runtime environments—including Node.js 22. In his decision, he stated:  &lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;“We are no longer working on V3 and are focusing on V4.”&lt;/p&gt;
&lt;/blockquote&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%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fvelp4teon4a0pgd32h4q.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%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fvelp4teon4a0pgd32h4q.png" alt="LinkedIn Post" width="607" height="448"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;The rejection of this simple PR by none other than the CEO and founder of Serverless Inc. has elicited a range of responses—from understanding to outright hostility. What’s clear, however, is that this decision unequivocally signals the future direction of the Serverless Framework and raises the question: What’s next?&lt;/p&gt;




&lt;h2&gt;
  
  
  Houston, We Have a Problem!
&lt;/h2&gt;

&lt;p&gt;This is a serious issue for several reasons. First, Node.js 20 (the last supported version in Serverless Framework v3) will reach its end of life in April 2026. Second, the company is firmly pushing users toward version 4, which introduces significant changes in its business model—changes that have effectively deterred the community from adopting this solution from the start.&lt;/p&gt;




&lt;h2&gt;
  
  
  Version 4 – Licensing Change, a New Business Model
&lt;/h2&gt;

&lt;p&gt;At the end of 2023, Serverless Inc. released version 4 of the framework, introducing a major change: &lt;strong&gt;licensing fees for larger organizations&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;How does it work in practice?&lt;/strong&gt;&lt;br&gt;&lt;br&gt;
If your company generates more than $2 million in annual revenue, you’ll need to reach for your wallet. Fees are charged in the form of credits, where one credit equals one deployed service (a “Service Instance”) in a given region and environment for at least 10 days.&lt;br&gt;&lt;br&gt;
For example, a service named &lt;code&gt;foobar&lt;/code&gt; deployed on the dev, test, and prod stages in Frankfurt would count as three Service Instances—that is, 3 credits per month. Deploying the same service in another region would count as an additional three Service Instances.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Pricing:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;2 Credits:&lt;/strong&gt; Free
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;15 Credits:&lt;/strong&gt; $60 per month
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;50 Credits:&lt;/strong&gt; $175 per month
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;300 Credits:&lt;/strong&gt; $750 per month
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Credits can also be purchased at a significant discount through a reservation model.&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%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fhakg53lfnzls5y4x0pa2.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%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fhakg53lfnzls5y4x0pa2.png" alt="Pricing" width="800" height="214"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Free Usage Terms for V4
&lt;/h2&gt;

&lt;p&gt;Fortunately, these changes don’t affect everyone. Version 4 remains free for:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Independent developers (i.e., us mere mortals)
&lt;/li&gt;
&lt;li&gt;Consultants working for clients
&lt;/li&gt;
&lt;li&gt;Open source projects
&lt;/li&gt;
&lt;li&gt;Startups and companies with under $2 million in annual revenue
&lt;/li&gt;
&lt;li&gt;Educational institutions&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  The Community Responds: Forking Serverless Framework V3
&lt;/h2&gt;

&lt;p&gt;As is often the case in the open source world, when a problem arises the community takes matters into its own hands. Thus was born the fork of Serverless Framework v3, known as &lt;strong&gt;oss-serverless&lt;/strong&gt;. This project, available on GitHub (&lt;a href="https://github.com/oss-serverless/serverless" rel="noopener noreferrer"&gt;oss-serverless/serverless&lt;/a&gt;), aims to extend the life of V3—eliminating the need to switch to the paid V4.&lt;/p&gt;

&lt;p&gt;This fork is gaining traction because it allows users to continue working with up-to-date runtime environments, such as &lt;strong&gt;Node.js 22, Python, or .NET&lt;/strong&gt;, without having to change framework versions. Essentially, it’s a copy of V3 with several improvements:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Added support for the latest AWS Lambda runtime versions
&lt;/li&gt;
&lt;li&gt;Patched security vulnerabilities
&lt;/li&gt;
&lt;li&gt;Streamlined and sped up the CLI
&lt;/li&gt;
&lt;li&gt;Removed unused components
&lt;/li&gt;
&lt;li&gt;All changes are detailed &lt;a href="https://github.com/oss-serverless/serverless?tab=readme-ov-file#changes" rel="noopener noreferrer"&gt;here&lt;/a&gt;.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Switching to the fork is ridiculously simple:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Remove the global installation of Serverless:
&lt;code&gt;npm remove -g serverless&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;Install the oss-serverless fork globally:
&lt;code&gt;npm install -g osls&lt;/code&gt;
&lt;/li&gt;
&lt;/ol&gt;




&lt;h2&gt;
  
  
  What to Choose?
&lt;/h2&gt;

&lt;p&gt;We are now faced with several options:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Switch to V4&lt;/strong&gt;&lt;br&gt;&lt;br&gt;
If you’re a small company or an individual developer, this might be the natural path forward. For larger companies, the cost of using SFv4 isn’t prohibitive—especially since V4 offers features that can boost developer productivity, potentially recouping the licensing fees many times over.&lt;br&gt;&lt;br&gt;
Of course, bureaucracy can be an issue; sometimes convincing a client to spend an extra $100 on a project costing $100,000 is impossible or downright frustrating. Fortunately, credits can be purchased through AWS, which should ease the process somewhat.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Adopt the oss-serverless Fork&lt;/strong&gt;&lt;br&gt;&lt;br&gt;
This is a solid alternative for those who can’t or don’t want to move to V4. The community has committed to supporting it for at least the next 5 years.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Stick with V3&lt;/strong&gt;&lt;br&gt;&lt;br&gt;
Yes, the framework won’t suddenly stop working. However, the lack of updates and support could become problematic over time—especially if you’re looking for better performance and the latest features available in newer runtimes.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Consider Alternatives&lt;/strong&gt;&lt;br&gt;&lt;br&gt;
Perhaps this is a good moment to explore other options like AWS CDK, AWS SAM, or SST.&lt;/p&gt;&lt;/li&gt;
&lt;/ol&gt;




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

&lt;p&gt;The situation with the Serverless Framework teaches us two things.&lt;/p&gt;

&lt;p&gt;First, &lt;strong&gt;every successful open-source tool eventually needs to find a business model that enables further development&lt;/strong&gt;. Personally, I don’t hold it against Austen Collins (CEO) for blocking that PR—the change was announced long ago and shouldn’t come as a surprise. I’m hopeful that focusing on V4 and securing more financial resources will allow them to build an even better tool. I root for them and wish them the best of luck.&lt;/p&gt;

&lt;p&gt;Second, the power of the open-source community is invaluable—as demonstrated by the oss-serverless fork. Thanks to this initiative, we have options, and that’s a great thing.&lt;/p&gt;

&lt;p&gt;Regardless of which path you choose, it’s a good idea to start planning your strategy now. Although Node.js 20 will be supported for more than two years, time in the tech world moves faster than we think.&lt;/p&gt;

&lt;p&gt;&lt;em&gt;What do you think? Which option will you choose for your projects?&lt;/em&gt;&lt;/p&gt;




&lt;h2&gt;
  
  
  Bonus: What’s New in Serverless Framework V4?
&lt;/h2&gt;

&lt;p&gt;Despite the controversies surrounding the licensing model, V4 introduces a host of intriguing improvements that may convince users to migrate:&lt;/p&gt;

&lt;h3&gt;
  
  
  Hybrid Developer Mode
&lt;/h3&gt;

&lt;p&gt;V4 introduces an advanced approach that combines your local development environment with AWS Lambda functions—think hot-deployment. This means developers can enjoy:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Faster development cycles
&lt;/li&gt;
&lt;li&gt;Forwarding events from the cloud to local code
&lt;/li&gt;
&lt;li&gt;A more precise testing environment
&lt;/li&gt;
&lt;li&gt;Greater deployment flexibility&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The framework also emphasizes increased freedom when choosing infrastructure:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;The ability to switch between Function-as-a-Service (FaaS) and serverless containers
&lt;/li&gt;
&lt;li&gt;Reduced risk of vendor lock-in
&lt;/li&gt;
&lt;li&gt;Support for new AWS regions and features&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Extensions and Integrations
&lt;/h3&gt;

&lt;p&gt;A new flexible extensions system now offers:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;The ability to create your own plugins
&lt;/li&gt;
&lt;li&gt;A partner program with an 80% revenue share for plugin developers
&lt;/li&gt;
&lt;li&gt;Support for various serverless service providers&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Additional Features
&lt;/h3&gt;

&lt;p&gt;V4 introduces a suite of useful tools:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Integration with HashiCorp Vault for secret management - which is very enterprise-friendly
&lt;/li&gt;
&lt;li&gt;Built-in support for CI/CD
&lt;/li&gt;
&lt;li&gt;Access to the Serverless Dashboard at no extra cost&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Compatibility
&lt;/h3&gt;

&lt;p&gt;The developers have ensured a smooth transition by:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Avoiding any breaking changes in backward compatibility
&lt;/li&gt;
&lt;li&gt;Preserving existing workflows&lt;/li&gt;
&lt;/ul&gt;

</description>
      <category>serverless</category>
      <category>aws</category>
      <category>opensource</category>
    </item>
    <item>
      <title>Migrating AWS Organizations: How I Did It and Why</title>
      <dc:creator>Pawel Zubkiewicz</dc:creator>
      <pubDate>Sun, 24 Nov 2024 10:22:50 +0000</pubDate>
      <link>https://dev.to/aws-heroes/migrating-aws-organizations-how-i-did-it-and-why-4oei</link>
      <guid>https://dev.to/aws-heroes/migrating-aws-organizations-how-i-did-it-and-why-4oei</guid>
      <description>&lt;p&gt;Migrating AWS Organizations is a rarely discussed topic that quickly becomes an administrative and technical challenge when you need to change the management account. This is because &lt;strong&gt;AWS Organizations does not allow changing the organization root account once it has been set&lt;/strong&gt;. As a result, it's necessary to create a new organization and manually migrate all member accounts to complete the migration.&lt;/p&gt;

&lt;p&gt;In my case, apart from migrating AWS accounts to a new management account within a new organization, I also changed the authentication method. I moved from IAM users to AWS Identity Center, formerly known as SSO. In this article, I share my experiences during this process, the challenges I faced, and insights that might be helpful to others.&lt;/p&gt;

&lt;h2&gt;
  
  
  Why Did I Have to Migrate?
&lt;/h2&gt;

&lt;p&gt;My AWS Organization is my personal setup, which I use for learning and small projects. &lt;strong&gt;I created my first AWS account back in 2016&lt;/strong&gt; with the intention of learning serverless. As my needs grew, I added more accounts and eventually formed an AWS Organization. Due to a lack of experience at the time, I used my first account as the management account. This account already hosted various resources, primarily serverless projects. Over time, I learned that this setup violated best practices and needed improvement, but I couldn't make changes without a major migration. For a long while, I operated like this—after all, it was my personal organization, and I didn't need to pass any audits. 😉&lt;/p&gt;

&lt;p&gt;Then, AWS &lt;a href="https://aws.amazon.com/iam/identity-center/" rel="noopener noreferrer"&gt;Identity Center&lt;/a&gt; (previously called SSO) came along, and I wanted to enable it. However, I didn't want to do it in my old, disorganized setup, as I knew it would only make it harder to align with AWS best practices in the future. So, I kept postponing it.&lt;/p&gt;

&lt;p&gt;Things changed in 2024, with the arrival of &lt;strong&gt;AWS Q Developer Pro&lt;/strong&gt;, which I wanted to enable to assist me in coding. &lt;strong&gt;It requires AWS Identity Center&lt;/strong&gt;, which finally pushed me to act. I wanted to deploy it, but not in the messy old organization. I knew that enabling Identity Center in my current structure would further complicate aligning with best practices.&lt;/p&gt;

&lt;p&gt;The third reason, based on some hints and speculation, was that old AWS accounts seem to differ from those created recently. While I don't know the specifics, it's generally better to have a newer account as the management account for the organization. I recall that when AWS finally &lt;a href="https://aws.amazon.com/blogs/security/you-can-now-assign-multiple-mfa-devices-in-iam/" rel="noopener noreferrer"&gt;enabled multiple hardware MFA keys for IAM users&lt;/a&gt;, my old AWS account from 2016 only gained this capability a few weeks after the announcement, and AWS Support cited its age as the reason for the delay.&lt;/p&gt;

&lt;h2&gt;
  
  
  How Did the Migration Go?
&lt;/h2&gt;

&lt;p&gt;In my case, the migration focused solely on transferring member accounts to the new organization, without moving resources between accounts. Here are the main steps:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Setting Up the New Organization&lt;/strong&gt; – I started by creating a new AWS Organization, setting up a fresh AWS account that would serve as the management account.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Migrating Member Accounts&lt;/strong&gt; – Next came the most time-consuming part—migrating the member accounts. Each account needed to be detached from the old organization, which involved removing SCP policies that blocked the account from leaving. For accounts created directly within the old organization, I had to set a root password, enable MFA, and—most crucially—define a payment method. The last part was key, as with &lt;a href="https://docs.aws.amazon.com/awsaccountbilling/latest/aboutv2/useconsolidatedbilling-credits.html#consolidated-billing-credit-sharing-preferences" rel="noopener noreferrer"&gt;&lt;em&gt;consolidated billing&lt;/em&gt;&lt;/a&gt;, the payment method is usually only configured on the management account.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Accepting the Invitation to the New Organization&lt;/strong&gt; – After detaching an account from the old organization, it became independent. In the new organization, I sent an invitation to the account, which had to be accepted from the root account level. Only then would the account join the new organization.&lt;/p&gt;&lt;/li&gt;
&lt;/ol&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%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Ftzvjsb00lqu2x941vl2b.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%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Ftzvjsb00lqu2x941vl2b.png" alt="Terminology and concepts for AWS Organizations" width="800" height="450"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Challenges I Faced
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Payment Issues&lt;/strong&gt; – The main difficulty was setting up payment methods for accounts that had previously been created in the old organization without needing individual payment setups. I had to do this manually for each account.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Lack of Automation&lt;/strong&gt; – Another significant challenge was the lack of automation from AWS. The platform doesn't provide tools for automatically transferring entire or partial organizations, which meant I had to execute every step manually. Fortunately, in my case, this involved only seven accounts, so it was manageable within a reasonable timeframe.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;SCP and IAM Policies&lt;/strong&gt; – I transferred the existing SCP policies via copy-paste (JSON definitions), and the IAM configurations on the accounts remained unchanged.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  AWS Identity Center - A Fresh Start
&lt;/h2&gt;

&lt;p&gt;Implementing AWS Identity Center in the new organization represented a major shift in my approach to access and security management. You can find more details in my previous article &lt;a href="https://dev.to/aws-heroes/simplified-configuration-of-sso-profiles-in-aws-cli-using-sso-sessions-8hh"&gt;Simplified Configuration of SSO Profiles in AWS CLI Using SSO Sessions&lt;/a&gt;. Additionally, unlike in the old organization where resources were deployed directly on the management account, I decided to strictly adhere to AWS best practices and keep the management account empty.&lt;/p&gt;

&lt;p&gt;Interestingly, &lt;strong&gt;AWS recommends configuring Identity Center on the management account&lt;/strong&gt;, so it isn't entirely empty, but this is the only exception to the rule of not placing resources on the management account.&lt;/p&gt;

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

&lt;p&gt;If you need help with &lt;a href="https://www.youtube.com/watch?v=6oFwTy3b7O0" rel="noopener noreferrer"&gt;setting up your AWS Organization&lt;/a&gt; or &lt;a href="https://www.youtube.com/watch?v=1wEQbPbrg50" rel="noopener noreferrer"&gt;Identity Center&lt;/a&gt;, I recommend the excellent instructional videos by Łukasz Dorosz, which helped me get up to speed. In fact, if my memory serves me right, Łukasz was advising me to switch to Identity Center back in 2023. Thank you, Łukasz!&lt;/p&gt;

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

&lt;p&gt;Migrating AWS Organizations is a complex task that may require many manual steps, but it is achievable with the right approach. In my case, creating a new organization and manually migrating accounts was the best solution, allowing me to organize resources and implement better security practices. Ultimately, it enabled me to use AWS Q Developer Pro.&lt;/p&gt;

&lt;p&gt;For those considering a similar migration, &lt;strong&gt;the most important advice is to plan the process carefully and prepare all the necessary elements, especially payment setups and root account access for all AWS accounts being migrated&lt;/strong&gt;. While the process is time-consuming, the benefits of a well-structured setup and increased security far outweigh the effort.&lt;/p&gt;

&lt;p&gt;If you're just starting out with AWS Organizations, remember to create a fresh, dedicated management account without any resources. This will save you from the need for migration in the future and ensure you're aligned with AWS best practices from the start.&lt;/p&gt;

&lt;p&gt;I hope my story will be helpful to those facing a similar challenge and that it will help you avoid my mistakes when creating your own AWS organization.&lt;/p&gt;

</description>
      <category>aws</category>
      <category>management</category>
      <category>sso</category>
      <category>cloud</category>
    </item>
    <item>
      <title>Simplified Configuration of SSO Profiles in AWS CLI Using SSO Sessions</title>
      <dc:creator>Pawel Zubkiewicz</dc:creator>
      <pubDate>Sat, 23 Nov 2024 16:14:00 +0000</pubDate>
      <link>https://dev.to/aws-heroes/simplified-configuration-of-sso-profiles-in-aws-cli-using-sso-sessions-8hh</link>
      <guid>https://dev.to/aws-heroes/simplified-configuration-of-sso-profiles-in-aws-cli-using-sso-sessions-8hh</guid>
      <description>&lt;p&gt;For some time now, configuring Single Sign-On (SSO) profiles in AWS CLI has been simplified thanks to the introduction of SSO sessions. Traditionally, setting up SSO profiles required specifying the SSO endpoint for each profile individually. The new approach uses the &lt;code&gt;sso-session&lt;/code&gt; section in the configuration file to group SSO endpoint variables, which profiles can reference. This avoids redundant information and makes the configuration process easier.&lt;/p&gt;

&lt;h2&gt;
  
  
  Benefits of Using SSO Sessions
&lt;/h2&gt;

&lt;p&gt;SSO sessions offer several advantages over previous methods:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Simplified configuration&lt;/strong&gt;: Defining the &lt;code&gt;sso-session&lt;/code&gt; section and linking it to a profile is easier than manually setting all the parameters.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Automatic token refreshing&lt;/strong&gt;: SSO sessions automatically renew access tokens, eliminating the need to manually refresh credentials. AWS CLI manages the token renewal process in the background using a "refresh token." When the access token expires (typically after an hour), AWS CLI uses the refresh token to obtain a new access token without user intervention. This allows uninterrupted work and removes the need to repeatedly log in, which is especially useful for long-running operations or background scripts.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Reusable configuration&lt;/strong&gt;: SSO session configurations can be shared across multiple profiles, making it easier to manage multiple accounts and roles.&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Why Choose SSO Sessions Over IAM Users?
&lt;/h3&gt;

&lt;p&gt;Using SSO sessions (IAM Identity Center) in AWS CLI offers significant advantages over traditional IAM users:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Enhanced security&lt;/strong&gt;: Authentication via IAM Identity Center eliminates the need to manage long-term access keys, commonly used with IAM users. With SSO sessions, credentials are short-lived and automatically renewed, significantly reducing the risk of leaks or misuse.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Centralized access management&lt;/strong&gt;: IAM Identity Center allows centralized management of user permissions through integration with existing identity providers (IdP), such as Microsoft Azure AD, or by creating your own user directory (&lt;em&gt;I chose this option&lt;/em&gt;). Organizations can easily control access to multiple AWS accounts from a single place, facilitating audits and compliance with security policies.
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;One login, multiple accounts&lt;/strong&gt;: SSO sessions enable users to access all accounts within an AWS Organizations structure using a single set of credentials. This means users log in once to access multiple AWS accounts without needing to create separate IAM users for each account or assign multiple roles to individual users. This simplifies identity management and enhances user convenience by eliminating the need to remember multiple passwords.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Configuring a Profile Using the &lt;code&gt;aws configure sso&lt;/code&gt; Wizard
&lt;/h2&gt;

&lt;p&gt;The easiest way to configure an SSO profile using SSO sessions is with the &lt;code&gt;aws configure sso&lt;/code&gt; wizard. This command guides users through the setup process, including:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Creating a session name, e.g., &lt;code&gt;myorg&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;Providing the IAM Identity Center start URL, e.g., &lt;code&gt;https://myorg.awsapps.com/start&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;Specifying the AWS region where the IAM Identity Center directory is located.&lt;/li&gt;
&lt;li&gt;Defining the registration scope (optional).&lt;/li&gt;
&lt;li&gt;Selecting the target account from a dropdown menu in the terminal (as shown in the image below).&lt;/li&gt;
&lt;/ol&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%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Ftn51d3xk4u28ij81ptg0.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%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Ftn51d3xk4u28ij81ptg0.png" alt="SSO Menu" width="800" height="353"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;After completing the process, a new entry will appear in the &lt;code&gt;~/.aws/config&lt;/code&gt; file with the following structure. Notice how the profile references the session.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight ini"&gt;&lt;code&gt;&lt;span class="nn"&gt;[profile my-new-profile]&lt;/span&gt;
&lt;span class="py"&gt;sso-session&lt;/span&gt; &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="s"&gt;myorg&lt;/span&gt;
&lt;span class="py"&gt;sso-account-id&lt;/span&gt; &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="s"&gt;123456789012&lt;/span&gt;
&lt;span class="py"&gt;sso-role-name&lt;/span&gt; &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="s"&gt;AdministratorAccess&lt;/span&gt;

&lt;span class="nn"&gt;[sso-session myorg]&lt;/span&gt;
&lt;span class="py"&gt;sso-start-url&lt;/span&gt; &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="s"&gt;https://myorg.awsapps.com/start&lt;/span&gt;
&lt;span class="py"&gt;sso-region&lt;/span&gt; &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="s"&gt;us-east-1&lt;/span&gt;
&lt;span class="py"&gt;sso-registration-scopes&lt;/span&gt; &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="s"&gt;sso:account:access&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;In practice, the new configuration differs from the old one in that sso-session can be reused across multiple profiles. Previously, everything had to be defined together, duplicating information across profiles in the same organization.&lt;/p&gt;

&lt;p&gt;Here’s how the old configuration looked:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight ini"&gt;&lt;code&gt;&lt;span class="c"&gt;; old config, don't use it
&lt;/span&gt;&lt;span class="nn"&gt;[profile my-old-profile]&lt;/span&gt;
&lt;span class="py"&gt;sso_start_url&lt;/span&gt; &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="s"&gt;https://myorg.awsapps.com/start&lt;/span&gt;
&lt;span class="py"&gt;sso_region&lt;/span&gt; &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="s"&gt;us-east-1&lt;/span&gt;
&lt;span class="py"&gt;sso_account_id&lt;/span&gt; &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="s"&gt;123456789012&lt;/span&gt;
&lt;span class="py"&gt;sso_role_name&lt;/span&gt; &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="s"&gt;AdministratorAccess&lt;/span&gt;
&lt;span class="py"&gt;credential_process&lt;/span&gt; &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="s"&gt;aws-sso-util credential-process --profile my-old-profile&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  Logging In and Using an SSO Profile
&lt;/h3&gt;

&lt;p&gt;After configuring an SSO profile, users can log in using the &lt;code&gt;aws sso login&lt;/code&gt; command. This command opens the default browser to authenticate the user. Once logged in, the credentials are cached, enabling AWS CLI to securely fetch AWS credentials for the specified IAM role.&lt;/p&gt;

&lt;p&gt;Example usage of an SSO profile:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;aws s3 &lt;span class="nb"&gt;ls&lt;/span&gt; &lt;span class="nt"&gt;--profile&lt;/span&gt; my-new-profile
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;If you use environment variables, you can still set the profile as the default:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="nb"&gt;export &lt;/span&gt;&lt;span class="nv"&gt;AWS_PROFILE&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;my-new-profile
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;blockquote&gt;
&lt;p&gt;BTW: I manage this setup with the &lt;code&gt;direnv&lt;/code&gt; tool, allowing me to use different profiles in different directories.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;h3&gt;
  
  
  Configuring Additional SSO Profiles
&lt;/h3&gt;

&lt;p&gt;If you noticed in the screenshot, I have access to nine AWS accounts. To configure a profile for another account, I simply run the &lt;code&gt;aws configure sso&lt;/code&gt; command again.&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%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fo9jdd84a0949126n6dg5.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%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fo9jdd84a0949126n6dg5.png" alt="Command" width="511" height="35"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Then, I type the previously created &lt;strong&gt;SSO session&lt;/strong&gt; name. This allows me to select another account from the list &lt;strong&gt;without re-entering the SSO URL or other session details&lt;/strong&gt;. No manual edits or copying AWS account numbers from the web console to the config file are needed.&lt;/p&gt;

&lt;h3&gt;
  
  
  Logging Out of an SSO Session
&lt;/h3&gt;

&lt;p&gt;After finishing with an SSO profile, users can log out using the &lt;code&gt;aws sso logout&lt;/code&gt; command. This clears cached credentials.&lt;/p&gt;

&lt;h2&gt;
  
  
  My Experience with IAM Identity Center
&lt;/h2&gt;

&lt;p&gt;In my AWS organization, I decided to enable IAM Identity Center specifically to &lt;strong&gt;use SSO sessions instead of IAM users with static access keys&lt;/strong&gt;. I must admit, for many years, out of convenience and habit, I didn’t regularly rotate my access keys 😱 (see the image below). However, security concerns pushed me to change my approach. The new authentication method via SSO sessions is significantly more secure, eliminating risks associated with long-term access keys. I now sleep easier knowing my AWS accounts are better protected.&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%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fijo9wfosafvu8owheljj.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%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fijo9wfosafvu8owheljj.png" alt="Keys" width="800" height="173"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  Gradual Transition to SSO and Temporary IAM Key Deactivation
&lt;/h3&gt;

&lt;p&gt;When transitioning from IAM users with static access keys to SSO sessions, you can temporarily deactivate your access keys (Access Key and Secret Access Key) associated with the IAM user. Deactivation prevents the keys from being used for AWS operations but allows later reactivation without generating new keys. &lt;strong&gt;This approach provides flexibility during migration&lt;/strong&gt;—you can configure SSO sessions on your system while disabling IAM keys as a security measure. If needed, you can quickly revert to traditional keys by reactivating them with one click in the AWS console. This makes the SSO migration process safer and less risky, allowing an emergency fallback to the old setup if required.&lt;/p&gt;

&lt;h2&gt;
  
  
  CloudPouch Supports the New SSO Profile Configuration
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://cloudpouch.dev/" rel="noopener noreferrer"&gt;CloudPouch&lt;/a&gt; is an application for viewing costs and &lt;strong&gt;automatically identifying savings on AWS accounts&lt;/strong&gt;. I’m excited to announce that starting with version 1.36.0, I’ve added support for the new SSO profiles, making it 100% compatible with configurations created by &lt;code&gt;aws configure sso&lt;/code&gt;.&lt;/p&gt;

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

&lt;p&gt;SSO sessions simplify the configuration and management of profiles in AWS CLI. Users can leverage the &lt;code&gt;aws configure sso&lt;/code&gt; wizard to quickly and easily set up SSO sessions. This makes managing access to AWS resources more efficient, secure, and user-friendly.&lt;/p&gt;

</description>
      <category>aws</category>
      <category>sso</category>
      <category>cli</category>
      <category>identity</category>
    </item>
    <item>
      <title>Report from AWS Heroes Summit 2024</title>
      <dc:creator>Pawel Zubkiewicz</dc:creator>
      <pubDate>Thu, 25 Jul 2024 10:23:26 +0000</pubDate>
      <link>https://dev.to/aws-heroes/report-from-aws-heroes-summit-2024-20hn</link>
      <guid>https://dev.to/aws-heroes/report-from-aws-heroes-summit-2024-20hn</guid>
      <description>&lt;p&gt;I spent all of last week (July 15-19) in Seattle at Amazon's headquarters for a top-secret event exclusively for AWS Heroes.&lt;/p&gt;

&lt;h2&gt;
  
  
  How was the AWS Heroes Summit?
&lt;/h2&gt;

&lt;p&gt;In short: &lt;strong&gt;fantastic&lt;/strong&gt;.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;em&gt;Those who know me well know that I don't throw praise around lightly.&lt;/em&gt; 😉&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Our conference days were packed with many long sessions (an hour and a half to two hours) across 4 tracks. This allowed everyone to choose something interesting for themselves. The sessions featured well-known figures like Developer Advocates who often speak at conferences, but also engineers building services and the managers responsible for them. With all due respect to the DAs, the sessions with the latter two groups were the most interesting. I wasn't familiar with most of these people before.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;The engineers from AWS made an incredible impression on me; some of them are absolute rockstars and top-tier experts&lt;/strong&gt;. Top of the top!&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;em&gt;I'm not even sure how to best describe this impression&lt;/em&gt; 🤔 &lt;em&gt;I imagine they're specialists of the same caliber as those working for Elon, and when he tells them to accomplish seemingly impossible things, they make it happen regardless of the scale of the problem. And AWS has the same kind of people working for them!&lt;/em&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;In summary, &lt;strong&gt;our favorite serverless services are in good hands&lt;/strong&gt;. During these long sessions, there was plenty of room for discussions and questions. Interestingly, this worked both ways. The engineers from AWS were very interested in our problems, use cases, and generally what we think. &lt;em&gt;Customer obsession&lt;/em&gt; in a new form.&lt;/p&gt;

&lt;h2&gt;
  
  
  Serverless is not dead!
&lt;/h2&gt;

&lt;p&gt;In recent weeks (before the Summit in Seattle), several blog posts appeared once again proclaiming the death of or disappointment with serverless. This topic was amplified by the ubiquitous GenAI, which media-wise overshadows all other news and changes in AWS, as was particularly evident at the New York Summit, giving the impression that AWS has stopped investing in anything other than artificial intelligence. Luc van Donkersgoed, a Serverless Hero, critically described and summarized this situation in his &lt;a href="https://lucvandonkersgoed.com/2024/07/13/dear-aws-please-let-me-be-a-cloud-engineer-again/" rel="noopener noreferrer"&gt;article&lt;/a&gt;.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;em&gt;In a way, I feel obligated to address these opinions and the prevailing anti-serverless climate, as well as the accusations against AWS.&lt;/em&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Judging by the AWS Heroes Summit agenda alone, there's no cause for concern. Roughly &lt;strong&gt;half of all sessions were about serverless&lt;/strong&gt;, while the rest covered several topics: GenAI, security, databases, and containers (in no particular order).&lt;/p&gt;

&lt;p&gt;Meetings and conversations with &lt;em&gt;service teams&lt;/em&gt; show that AWS is developing normally, in many directions. Of course, GenAI, due to its nature, will touch many areas. Perhaps teams are encouraged to consider integrating such solutions into their services, but &lt;strong&gt;it's certainly not the case that AWS is investing only in artificial intelligence&lt;/strong&gt;. The vast majority of new features and issues discussed in the sessions I attended had nothing to do with GenAI.&lt;/p&gt;

&lt;h2&gt;
  
  
  What's coming next?
&lt;/h2&gt;

&lt;p&gt;Serverless is doing well, as I mentioned, &lt;strong&gt;&lt;em&gt;rockstars&lt;/em&gt; are working on the services and will deliver many interesting and necessary new features&lt;/strong&gt; in Step Functions, EventBridge, Lambda, and probably other serverless services, before and at re:Invent, and in the coming year.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;The entire event and all content are subject to NDA. Therefore, I can't reveal anything specific.&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;I really liked several upcoming updates and can't wait for them to appear so I can use them myself. And I'm talking about fairly ordinary engineering updates to the aforementioned services. No GenAI magic here ✨😃&lt;/li&gt;
&lt;li&gt;Some new features can definitely be classified in the "how long can we wait for this?" category 😉&lt;/li&gt;
&lt;li&gt;The remaining things are less exciting for me, solely because I don't have clients/projects where I could apply them 🙁 Which by no means diminishes their importance. They're created to facilitate building or increase the security of solutions.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;To be fair and not just paint a rosy picture, there was one thing in the [secret] service that I asked about and received an honest answer that they're aware of the need, but won't do it until 2025 because [secret]. That's a shame.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;The level of openness of AWS employees towards Heroes elevated this Summit to levels previously unimaginable to me.&lt;/strong&gt; Access to information covered by NDAs allowed for free communication both ways. &lt;strong&gt;This kind of relationship with &lt;em&gt;service teams&lt;/em&gt; is the greatest value of being an AWS Hero&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;Now I just need to find interesting projects where I can use this newly acquired knowledge 😉&lt;/p&gt;

&lt;h3&gt;
  
  
  The Summit is not just lectures
&lt;/h3&gt;

&lt;p&gt;The AWS Heroes Summit was attended by &lt;strong&gt;178 Heroes from 46 countries&lt;/strong&gt;. As of July 2024, there are 260 Heroes worldwide in total across 56 countries. Never before in the ten-year history of this program have so many of us been in one place.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fvf1q6luft91d1c83m12j.jpeg" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fvf1q6luft91d1c83m12j.jpeg" alt="All Heroes" width="800" height="1066"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;I'm the one in the Lambda / Half-life t-shirt 😃&lt;/p&gt;

&lt;p&gt;In the first row in the middle stands &lt;strong&gt;Jeff Barr&lt;/strong&gt;. He opened this mini-conference with an interesting keynote on the history and future of AWS.&lt;/p&gt;

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

&lt;p&gt;Speaking of &lt;em&gt;celebrities&lt;/em&gt;, the big surprise on the second day was a visit from &lt;strong&gt;Matt Garman, the new CEO of AWS&lt;/strong&gt;. Interestingly, he didn't come to his keynote to &lt;em&gt;dazzle&lt;/em&gt; us with a marketing presentation 🙂, but greeted us, said a few words, and then announced he would start answering questions from the audience.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;em&gt;Respect!&lt;/em&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Heroes quickly grabbed the microphones, and Matt answered all questions, including the &lt;em&gt;uncomfortable&lt;/em&gt; ones. As a person with a huge technical background, it was easy for him to win over our tech crowd.&lt;/p&gt;

&lt;h2&gt;
  
  
  Celebrating together
&lt;/h2&gt;

&lt;p&gt;The Summit is a great opportunity for networking, as it doesn't have the crazy pace of re:Invent and is much more intimate. Every day we spent time together from breakfast until evening. I had the opportunity to deepen relationships with people I already knew and make new friends.&lt;/p&gt;

&lt;p&gt;On the second day, during the afternoon networking session, we celebrated a special occasion – the tenth birthday of the AWS Hero program and the 10th anniversary of AWS Lambda. These beautiful cakes were prepared for us to mark the occasion. 🍰&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F347lnz746z8sty6sxia2.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F347lnz746z8sty6sxia2.png" alt="Cakes" width="780" height="440"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;The Polish 🇵🇱 representation at the Summit was very strong. Looking from the top left: Daniel Aniszkiewicz, Paweł Zubkiewicz, Łukasz Dorosz, Tomek Ptak, Karolina Boboli, Jarek Zieliński, Rafał Mituła, Tomek Dudek, Dominik Grzywaczewski, and Maciek Lelusz.&lt;/p&gt;

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

&lt;h4&gt;
  
  
  After such a wonderful week, I can only thank the organizers, wish for another meeting of everyone in Las Vegas, and say &lt;strong&gt;&lt;em&gt;Go build!&lt;/em&gt;&lt;/strong&gt;
&lt;/h4&gt;

</description>
    </item>
    <item>
      <title>Year in review, 2023</title>
      <dc:creator>Pawel Zubkiewicz</dc:creator>
      <pubDate>Fri, 29 Dec 2023 10:05:23 +0000</pubDate>
      <link>https://dev.to/aws-heroes/year-in-review-2023-gij</link>
      <guid>https://dev.to/aws-heroes/year-in-review-2023-gij</guid>
      <description>&lt;p&gt;Following the tradition I have maintained since last year, the time has come to summarize the past twelve months. Although this article is publicly available, I wrote it primarily for myself, treating it as a personal retrospection and creating a lasting record of events, challenges, and moments of joy that shaped the last year.&lt;/p&gt;

&lt;p&gt;This text is not meant to be a self-congratulatory enumeration of achievements or a vain celebration of success, but rather a sincere look back, like a page from my diary, preserving memories and experiences from 2023.&lt;/p&gt;

&lt;p&gt;As before, I have divided the summary into:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Career&lt;/li&gt;
&lt;li&gt;Failures&lt;/li&gt;
&lt;li&gt;Appearances and Publications&lt;/li&gt;
&lt;li&gt;Travels&lt;/li&gt;
&lt;li&gt;Concerts&lt;/li&gt;
&lt;li&gt;Books&lt;/li&gt;
&lt;li&gt;Other&lt;/li&gt;
&lt;/ul&gt;

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

&lt;p&gt;Here, there are practically no changes; I still collaborate with TT PSC as an AWS Architect, and as an independent consultant continue to develop services in the area of AWS cost optimization.&lt;/p&gt;

&lt;h3&gt;
  
  
  Successes
&lt;/h3&gt;

&lt;p&gt;I can count as my biggest successes:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Creating from scratch and conducting &lt;strong&gt;&lt;em&gt;FinOps Training&lt;/em&gt;&lt;/strong&gt; for companies.&lt;/li&gt;
&lt;li&gt;Conducting several successful &lt;strong&gt;AWS Cost Audits&lt;/strong&gt; (&lt;em&gt;savings up to 44%&lt;/em&gt;) - I can't boast about most of them due to contract clauses, but I have one client who publicly described our cooperation - for which I am very grateful 😃&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://www.linkedin.com/posts/blazejabel_aws-savings-cloud-activity-7063801009910743040-1uU-/"&gt;&lt;img src="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fuvh5cuo4e2gewzu4ez48.png" alt="Landinigi review" width="600" height="304"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Conducting cost optimization after a &lt;em&gt;Cost Audit&lt;/em&gt; that brought &lt;strong&gt;annual savings of over a million dollars&lt;/strong&gt;, specifically &lt;a href="https://www.linkedin.com/pulse/million-dollar-aws-savings-case-study-ebs-snapshot-pawe%C5%82-zubkiewicz/"&gt;1,319,110 USD&lt;/a&gt;.&lt;/li&gt;
&lt;li&gt;Releasing as many as &lt;strong&gt;15&lt;/strong&gt; new versions of the &lt;a href="https://cloudpouch.dev/"&gt;CloudPouch&lt;/a&gt; application. Expanding &lt;em&gt;Cost insights&lt;/em&gt; functionality to include more AWS services: EC2, Load Balancers, DocumentDB, Glue Crawlers, and Jobs.&lt;/li&gt;
&lt;li&gt;Co-organizing the &lt;a href="https://www.meetup.com/pl-PL/aws-ug-wroclaw/"&gt;AWS User Group Wrocław&lt;/a&gt;
&lt;/li&gt;
&lt;/ul&gt;

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

&lt;p&gt;Actually, I could almost copy and paste those from last year.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Poor adoption of &lt;a href="https://cloudpouch.dev/"&gt;CloudPouch&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;Small number of clients for &lt;em&gt;AWS Cost Audit&lt;/em&gt; service&lt;/li&gt;
&lt;/ul&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;em&gt;It would seem that in current times, savings are a priority, and anything that allows to significantly reduce unnecessary IT costs should sell like hot cakes, but it's not the case.&lt;/em&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;ul&gt;
&lt;li&gt;Faithful readers of the Serverless Poland Newsletter and blog have surely noticed that I publish content much less frequently. Lack of time is one thing, but also writing the newsletter and articles regularly brought me less joy, so I did it less often.&lt;/li&gt;
&lt;li&gt;Not utilizing purchased training and access to closed communities.&lt;/li&gt;
&lt;li&gt;I didn't get around to creating a page advertising the &lt;strong&gt;&lt;em&gt;FinOps Training&lt;/em&gt;&lt;/strong&gt; - there's no information about it on the internet.&lt;/li&gt;
&lt;li&gt;Lack of significant engagement in &lt;a href="https://www.meetup.com/pl-PL/serverless-wroclaw/"&gt;Serverless Wrocław Meetup&lt;/a&gt; (we only organized 3 meetings)&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Appearances and Publications
&lt;/h2&gt;

&lt;p&gt;The year in a nutshell:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;em&gt;Automatic testing of serverless applications&lt;/em&gt; - presentation at Serverless Wrocław (March 9, 2023)&lt;/li&gt;
&lt;li&gt;
&lt;em&gt;FinOps 4 Developers&lt;/em&gt; - presentation at the 4Developers conference in Warsaw (April 18, 2023)&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://www.youtube.com/watch?v=R4C0es_O8ao"&gt;&lt;em&gt;Multicloud: is it worth floating in many clouds?&lt;/em&gt;&lt;/a&gt; - podcast with Maciej Lelusz (April 19, 2023)&lt;/li&gt;
&lt;li&gt;
&lt;em&gt;The musty world of on-prem in AWS&lt;/em&gt; - with Maciej Lelusz - presentation at AWS User Group Wrocław (May 8, 2023)&lt;/li&gt;
&lt;li&gt;
&lt;em&gt;How much code in the code&lt;/em&gt; - with Przemek Malak - presentation at &lt;a href="https://awscommunity.pl/"&gt;AWS Community Day Warsaw 2023&lt;/a&gt; (June 1, 2023)&lt;/li&gt;
&lt;li&gt;
&lt;em&gt;AWS re:Invent re:cap&lt;/em&gt; - panel discussion at AWS User Group Wrocław (December 11, 2023)&lt;/li&gt;
&lt;li&gt;&lt;a href="https://dev.to/aws-builders/mini-review-of-the-ultra-wide-samsung-ls49a950uiuxen-monitor-a5"&gt;Mini review of the ultra-wide Samsung LS49A950UIUXEN monitor&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://dev.to/aws-heroes/how-to-prepare-for-reinvent-in-las-vegas-4hj1"&gt;How to prepare for a trip to re:Invent in Las Vegas? ✈️&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.linkedin.com/pulse/million-dollar-aws-savings-case-study-ebs-snapshot-pawe%C5%82-zubkiewicz/"&gt;A Million-Dollar AWS Savings: A Case Study on EBS to Snapshot Conversion&lt;/a&gt;&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Also, let's not forget about (almost) regularly sending, the largest in Poland, &lt;a href="https://12.serverlesspolska.pl/"&gt;newsletter&lt;/a&gt; dedicated to AWS and serverless.&lt;/p&gt;

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

&lt;p&gt;Travels are not just memories, but also a window to the world that becomes more valuable with each passing year. Together with my wife, every few years we immortalize our adventures in photo books, which I highly recommend to every travel enthusiast, as photos are perceived differently in physical form.&lt;/p&gt;

&lt;p&gt;However, it's also nice to do an annual online summary, which can inspire others to pack their backpack and set off on a journey.&lt;/p&gt;

&lt;p&gt;In 2023, the travel history is as follows:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;We started the year with a bang, heading to colorful &lt;strong&gt;Mexico&lt;/strong&gt; and &lt;strong&gt;Belize&lt;/strong&gt; in January. A great trip, beautiful landscapes, friendly people, and fantastic food 😃&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fuqv75joevmcmntz4uz9p.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fuqv75joevmcmntz4uz9p.png" alt="Belize" width="780" height="420"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F32uw2ncce8a7v5zbqf25.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F32uw2ncce8a7v5zbqf25.png" alt="Mexico" width="780" height="420"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;In the spring (April), we went to the Balkans. Traveling by car through &lt;strong&gt;Montenegro&lt;/strong&gt;, &lt;strong&gt;Bosnia and Herzegovina&lt;/strong&gt;, and &lt;strong&gt;Croatia&lt;/strong&gt; was super interesting and allowed me to get to know this part of Europe better. And of course, Dubrovnik as the location of the &lt;em&gt;Game of Thrones&lt;/em&gt; series was doubly interesting.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fdt9tyba39tagfmfya96h.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fdt9tyba39tagfmfya96h.png" alt="Balkans" width="780" height="420"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Mountain bike camp in Bielsko-Biała, June.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F18dt0lhjnv8vnt8nk9o7.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F18dt0lhjnv8vnt8nk9o7.png" alt="Bielsko-Biała, Poland" width="780" height="420"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;In July, we celebrated my birthday in &lt;strong&gt;Italy&lt;/strong&gt;. The trip, whose climax was motorboating on the Mediterranean Sea, was wonderful. On land, we discovered the culinary treasures of Puglia and spent whole days wandering through the narrow streets of charming seaside towns.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Ffzwbp7xl1zkn4pytzrz2.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Ffzwbp7xl1zkn4pytzrz2.png" alt="Italy" width="780" height="420"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;The dream trip of my wife, who has wanted to see the world of &lt;em&gt;Anne of Green Gables&lt;/em&gt; live since childhood. We spent two weeks in &lt;strong&gt;Canada&lt;/strong&gt;, visiting Montreal, Toronto, Niagara Falls, and Prince Edward Island.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F6qdgboueivd7pwfow6py.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F6qdgboueivd7pwfow6py.png" alt="Canada" width="780" height="420"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;In the autumn, another dream of my wife led us to Africa for a safari. Masai Mara National Park in &lt;strong&gt;Kenya&lt;/strong&gt; and Serengeti and Ngorongoro (extinct volcano) in &lt;strong&gt;Tanzania&lt;/strong&gt; were filled with amazing views and encounters with wild animals.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F06bjq4zwi6xmd9gq5u3s.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F06bjq4zwi6xmd9gq5u3s.png" alt="Safari" width="780" height="420"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Traditionally, my year of travel ends with a trip to &lt;strong&gt;Las Vegas&lt;/strong&gt; for re:Invent. The best cloud event in the world!&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fahbmbep5on0uhgoly00b.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fahbmbep5on0uhgoly00b.png" alt="Las Vegas" width="780" height="420"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;To sum up, 2023 was a year of discovering &lt;strong&gt;as many as eight new countries&lt;/strong&gt;, bringing me closer to the magic number of 50 visited countries.&lt;/p&gt;

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

&lt;p&gt;Last year I only mentioned concerts. Reflecting on them made me realize how much I enjoy them, so I decided to include a list of concerts in a separate section. Each of them brought me a lot of joy and I wouldn't want these precious memories to fade over time.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Elton John - May - Berlin&lt;/li&gt;
&lt;li&gt;Pantera - June - Łódź&lt;/li&gt;
&lt;li&gt;Metallica and Pantera - August - Montreal&lt;/li&gt;
&lt;li&gt;Christmas Jazz - December - Wrocław&lt;/li&gt;
&lt;li&gt;Bryan Adams - December - Gliwice&lt;/li&gt;
&lt;/ul&gt;

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

&lt;p&gt;I'm still not a bookworm and I prefer &lt;em&gt;doing&lt;/em&gt; over reading. However, I managed to get my hands on a few things and even read and listened to a few. Although, to be honest, I buy more books than I read - which is obviously a problem, as the pile of shame 💩 is growing.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;a href="https://www.amazon.com/Almanack-Naval-Ravikant-Wealth-Happiness/dp/1544514220/"&gt;The Almanack of Naval Ravikant&lt;/a&gt; is not only a collection of business advice but also deep reflections on the meaning of life. In the book, you'll find an abundance of wisdom and intriguing observations from Naval Ravikant - an American entrepreneur, engineer, and investor. This book not only inspires but also provokes one's own thoughts.
The history of its creation, which I discovered on &lt;em&gt;Visualize Value&lt;/em&gt;, is also interesting. Jack Butcher presents its author as an example of a &lt;em&gt;permissionless apprentice&lt;/em&gt;. The book was compiled by Eric Jorgenson, compiling content from tweets, podcasts, and interviews with Ravikant. The purpose of this publication is to make Ravikant's philosophy and wisdom available to a wider audience, touching on topics such as happiness, wealth, and personal development.&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://www.amazon.com/Decoded-Science-Behind-Why-Buy-dp-1119673089/dp/1119673089/ref=dp_ob_title_bk"&gt;Decoded: The Science Behind Why We Buy&lt;/a&gt; by Phil P. Barden, released in 2022, is a fascinating exploration of the mechanisms governing our purchasing decisions. The book, purchased for the optimization of the &lt;a href="https://cloudpouch.dev/"&gt;CloudPouch&lt;/a&gt; sales page, turned out to be an invaluable source of knowledge in a much broader sense. Barden takes us on a journey through the nooks and crannies of the human mind to discover what drives us to buy. If I were Rafał Mazur, I would probably keep this title to myself, as it's material that, when used appropriately, can give an incredible advantage 😉&lt;/li&gt;
&lt;li&gt;Since I've already mentioned this man, &lt;a href="https://lubimyczytac.pl/ksiazka/4923273/zostan-drapieznikiem"&gt;Become a Predator&lt;/a&gt; - Rafał Mazur, Marcin Osman.&lt;/li&gt;
&lt;li&gt;After two, maybe three years, I finally finished the audiobook of &lt;a href="https://www.amazon.com/Atlas-Shrugged-Ayn-Rand-ebook/dp/B003V8B5XO/"&gt;Atlas Shrugged&lt;/a&gt;. While Ayn Rand's message is close to me, oh my God, the length is exaggerated!&lt;/li&gt;
&lt;li&gt;Before the trip to Africa, I chose to read &lt;a href="https://www.amazon.com/Factfulness-Reasons-World-Things-Better-ebook/dp/B0756J1LLV/"&gt;Factfulness&lt;/a&gt; by Hans Rosling, as it offers a novel perspective on reality, breaking negative stereotypes and showing how progress changes the world for the better. It's good to read about positive changes, especially when we are bombarded with negative news daily, such as those about wars.&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://www.amazon.com/Be-Obsessed-Average-Grant-Cardone-ebook/dp/B016VRFTR4/"&gt;Be Obsessed or Be Average&lt;/a&gt; by Grant Cardone - I read it for the second time. After a few years, equipped with new knowledge, I perceive it much better! The first time, Grant seemed like a charlatan. I don't see him that way anymore. Now I see many mechanisms and principles between the lines 🙂&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://www.amazon.com/Blood-Elves-Witcher-Book-1-ebook/dp/B00276HAEY/"&gt;Blood of Elves&lt;/a&gt; - Andrzej Sapkowski - to remind myself and compare with the next season of the Witcher series on Netflix.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;And two classic titles on fascinating &lt;em&gt;behavioral economics&lt;/em&gt;, which intrigued me a lot this year:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;a href="https://www.amazon.com/Predictably-Irrational-Revised-Expanded-Decisions-ebook/dp/B002C949KE/"&gt;Predictably Irrational: The Hidden Forces That Shape Our Decisions&lt;/a&gt; - Dan Ariely&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://www.amazon.com/Thinking-Fast-Slow-Daniel-Kahneman-ebook/dp/B00555X8OA/"&gt;Thinking, Fast and Slow&lt;/a&gt; - Daniel Kahneman&lt;/li&gt;
&lt;/ul&gt;

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

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Mastermind Group&lt;/strong&gt; - more in &lt;a href="https://dev.to/aws-heroes/year-in-review-2022-1edk"&gt;last year's post&lt;/a&gt; - it's still active, we manage to meet almost regularly, and what can I say, I really grew fond of these guys!&lt;/li&gt;
&lt;li&gt;In 2022 in this section, I presented a few things I bought. This year, however, I will focus exclusively on &lt;strong&gt;recommending an ultra-wide screen monitor&lt;/strong&gt;. This equipment significantly changes the way of working, elevating it to a higher level. You can find a detailed review of my monitor at &lt;a href="https://dev.to/aws-builders/mini-review-of-the-ultra-wide-samsung-ls49a950uiuxen-monitor-a5"&gt;this link&lt;/a&gt;.&lt;/li&gt;
&lt;li&gt;It's my second year of &lt;strong&gt;learning Italian&lt;/strong&gt; 🇮🇹. It brings me great joy, as I treat it as a hobby, but I am still at the stage of realizing how little I know ;-)&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F13f28fh9nsbr5m71ymqi.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F13f28fh9nsbr5m71ymqi.png" alt="Riding in the mountains" width="780" height="891"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Since March, I have started &lt;strong&gt;amateur mountain biking training&lt;/strong&gt; under the guidance of an &lt;a href="https://www.skillschoolmtb.com/"&gt;experienced trainer&lt;/a&gt;. The goal is to improve my skills in navigating mountain trails. Regular exercises and refining my riding technique bring me immense satisfaction. At the same time, overcoming fear, especially before jumps, is a completely new challenge for me. I believe that these aspects together toughen the spirit and strengthen the willpower. An additional benefit is the fantastic group of people I train with. If you are from Wrocław and are keen on enduro, I warmly invite you to join our team!&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;It was a beautiful, successful year.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Thank you for your attention, and I hope you took something away from this post. Let me know if it inspired you to do anything.&lt;/p&gt;

&lt;p&gt;&lt;em&gt;I wish you a wonderful 2024!&lt;br&gt;
Paweł Zubkiewicz&lt;/em&gt;&lt;/p&gt;

</description>
      <category>review</category>
      <category>travel</category>
      <category>recap</category>
      <category>career</category>
    </item>
    <item>
      <title>How to prepare for re:Invent in Las Vegas?</title>
      <dc:creator>Pawel Zubkiewicz</dc:creator>
      <pubDate>Wed, 18 Oct 2023 08:43:48 +0000</pubDate>
      <link>https://dev.to/aws-heroes/how-to-prepare-for-reinvent-in-las-vegas-4hj1</link>
      <guid>https://dev.to/aws-heroes/how-to-prepare-for-reinvent-in-las-vegas-4hj1</guid>
      <description>&lt;p&gt;[Last update: Nov 2025]&lt;/p&gt;

&lt;p&gt;First of all, congratulations on attending re:Invent! It's an unforgettable experience, and you're sure to be amazed. I'm still excited at the thought of going, even though this will be my third time. I can't wait to be in Las Vegas again!&lt;br&gt;
re:Invent is a fantastic four-day conference that dazzles with its scale and can be overwhelming at times. That's why it's worth being well-prepared.&lt;/p&gt;

&lt;p&gt;I've gathered several tips for you. Some of them are obvious and widely known for years, but even if you've heard about them, read all the way through, as some are unique and &lt;em&gt;based on my own experiences&lt;/em&gt;. 🙂&lt;/p&gt;

&lt;h2&gt;
  
  
  00. Travel insurance
&lt;/h2&gt;

&lt;p&gt;This is obvious, but worth mentioning. You need to insure yourself against accidents, as healthcare in the US is paid for and very expensive.&lt;/p&gt;

&lt;h2&gt;
  
  
  01. Footwear
&lt;/h2&gt;

&lt;p&gt;Everyone has been talking about this for a long time, and it's the number one advice to follow. Twenty thousand steps a day at re:Invent is not a big deal. Every day, for four days. That's why &lt;strong&gt;take comfortable shoes&lt;/strong&gt; for walking. This time, I'm taking two pairs. I recommend lightweight, breathable running shoes for walking on pavement. It is also worth taking plasters for grazes with you.&lt;/p&gt;

&lt;h2&gt;
  
  
  02. Dry Air Essentials (Skincare)
&lt;/h2&gt;

&lt;blockquote&gt;
&lt;p&gt;Las Vegas is in the desert.&lt;br&gt;&lt;br&gt;
It's a known fact, but most of us don't deal with such a climate on a daily basis. Especially in the winter. So, it's worth stocking up on supplies to help us function in such conditions.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;ul&gt;
&lt;li&gt;Creams (including for the face)&lt;/li&gt;
&lt;li&gt;Lip balm&lt;/li&gt;
&lt;li&gt;Eye drops / artificial tears&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;for me, this is a basic kit. These things can also come in handy on long flights, so it's worth packing them in your carry-on bag.&lt;/p&gt;

&lt;p&gt;I've also heard that people bring air humidifiers with them or request a hotel room equipped with one to counteract dry air.&lt;/p&gt;

&lt;h2&gt;
  
  
  03. Throat Soothers (+medications)
&lt;/h2&gt;

&lt;p&gt;At re:Invent, you'll meet thousands of people, and you'll probably be talking to hundreds. Excessive talking can cause a sore throat for me. To tackle it, it's a good idea to bring something for your throat. Strepsils candies work for me.&lt;br&gt;
Additionally, when traveling, it's always a good idea to remember to bring tested medicines, for example, for colds, that we trust. This way, in case of sickness, there's no need to search for a CVS and figure out which American medications are equivalent to those you would buy in your own country.&lt;/p&gt;

&lt;h2&gt;
  
  
  04. Attire for re:Play
&lt;/h2&gt;

&lt;p&gt;The Thursday party takes place outdoors and in huge tents. Last year, it was quite windy and rather cold. It's a good idea to have a jacket and warm shoes with you.&lt;br&gt;
That's all that comes to mind regarding the weather and climate in Las Vegas.&lt;/p&gt;

&lt;h2&gt;
  
  
  05. US Power Outlets / Adapter / Extension Cord
&lt;/h2&gt;

&lt;p&gt;This is rather obvious, but it's worth a reminder. The USA has different electrical outlets, so you'll need an adapter. Usually, we only use chargers for phones and laptops, so there's no need for a converter.&lt;/p&gt;

&lt;p&gt;Additionally, whenever I have space in my luggage, I bring a regular extension cord. Firstly, in combination with one adapter, it gives me Polish sockets (I'm from Poland). Secondly, if there's no socket near the nightstand in the room, thanks to the extension cord, I'll always have my phone charging by the bed.&lt;/p&gt;

&lt;p&gt;There's another &lt;strong&gt;life-hack&lt;/strong&gt; regarding sockets. If you use Apple products, you can buy a different end for your charger. I did this and bought adapters for American outlets (on the left in the picture).&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%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fufu250w7jr7xnzrb489f.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%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fufu250w7jr7xnzrb489f.png" alt="Different socket ends (adapters) for Apple charger" width="800" height="600"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;You can also buy a universal charger for phones and laptops with adapters, e.g., Baseus GaN5 65W – I've had one for a few years now, and it's awesome! It has two charging ports and allows you to quickly charge your phone (if yours is compatible with quick charging) and can easily replace the power adapter for a MacBook Pro with an M processor. And it has three plugs/adapters: for Europe/Poland, the US, and the UK and Asia (I recently used it in Hong Kong, for example). Overall, I recommend this device 🙂&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%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fyir3z10qymzb1zg6h3iq.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%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fyir3z10qymzb1zg6h3iq.png" alt="Baseus GaN5 65W" width="800" height="799"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  06. USB-A Cables
&lt;/h2&gt;

&lt;p&gt;Sometimes, the sockets by the bed in hotels have USB outputs. They're always USB-A. The same goes for multimedia panels on the plane. So even if you've been using newer USB-C for a long time, it's worth having a USB-A to USB-C (or Lightning if you use an iPhone) cable to charge your phone.&lt;/p&gt;

&lt;h2&gt;
  
  
  07. Power Bank
&lt;/h2&gt;

&lt;p&gt;I take a lot of slide photos during presentations, so my phone quickly runs out of battery. That's why I bring my trusted power bank with me. There are charging stations at the conference, and companies will surely be giving away power banks as goodies, but in my opinion, it's better to have your own.&lt;/p&gt;

&lt;h2&gt;
  
  
  08. Mobile Internet in the USA
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;Wi-Fi is available everywhere at re:Invent&lt;/strong&gt;. There can be minor issues with it, but personally, I think you can survive without mobile internet on a GSM network.&lt;/p&gt;

&lt;p&gt;But why bother, right? 😉&lt;/p&gt;

&lt;p&gt;I've been using eSIM cards for many international trips. They only work with iPhones and Samsungs (the more expensive ones). It's a pure software solution, so you don't need to buy a physical SIM card, e.g., at the airport. And you don't need a phone that supports dual-sim.&lt;/p&gt;

&lt;p&gt;I highly recommend the &lt;a href="https://ref.airalo.com/zPXS" rel="noopener noreferrer"&gt;Airalo&lt;/a&gt; app/service. I've used it in the USA, Canada, Montenegro, Mexico, and Belize. By creating an account through &lt;a href="https://ref.airalo.com/zPXS" rel="noopener noreferrer"&gt;this link&lt;/a&gt;, you and I will each receive $3 to use for purchasing eSIM cards.&lt;/p&gt;

&lt;p&gt;A few days before departure, I buy an eSIM and set it up on my phone while still at home. After landing in the destination country, the eSIM connects to its network and only becomes active from that moment on. Sometimes, the first network login takes up to 20 minutes, but I usually have internet even before I leave the plane.&lt;/p&gt;

&lt;h2&gt;
  
  
  09. Leave Empty Space in Your Suitcase
&lt;/h2&gt;

&lt;p&gt;On the last re:Invent, I flew with a half-empty suitcase. I collected so much &lt;strong&gt;swag&lt;/strong&gt; that I could barely close it. If you like cheap t-shirts, socks, and stickers, leave some free space in your luggage to bring back home all those things. 🎁&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%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fsvncj9jje8lfk5olc8ro.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%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fsvncj9jje8lfk5olc8ro.png" alt="My SWAG gathered in 2022" width="780" height="439"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  10. Online Hotel Check-In
&lt;/h2&gt;

&lt;p&gt;If possible, do an online check-in at your hotel. It significantly reduces your time at the reception.&lt;/p&gt;

&lt;h2&gt;
  
  
  11. Unnecessary Items
&lt;/h2&gt;

&lt;p&gt;Not everything you need to take with you, some things you will receive on-site.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;em&gt;Water bottle&lt;/em&gt;. Each participant receives one in the standard gadget pack, so I think it doesn't make much sense to bring one.&lt;/li&gt;
&lt;li&gt;AWS has also been giving &lt;em&gt;hoodies&lt;/em&gt; to everyone for years, so you can take one less from home.&lt;/li&gt;
&lt;/ul&gt;




&lt;h1&gt;
  
  
  What to Do in Las Vegas After Hours?
&lt;/h1&gt;

&lt;p&gt;re:Invent is a cloud celebration, but it's also worth coming down to earth and exploring a bit. Below are a few suggestions from me.&lt;/p&gt;

&lt;h2&gt;
  
  
  12. Grand Canyon and Hoover Dam
&lt;/h2&gt;

&lt;p&gt;When visiting Las Vegas, it's worth taking the time to visit the Grand Canyon and Hoover Dam, which are unforgettable attractions near the city.&lt;/p&gt;

&lt;p&gt;The Grand Canyon is one of the most impressive natural wonders in the world, captivating with its immense depth and majestic rock formations. It's a place that provides unforgettable experiences associated with nature, tranquility, and peace, serving as a getaway from the hustle and bustle of Las Vegas.&lt;/p&gt;

&lt;p&gt;The Hoover Dam, located on the Colorado River, is also an impressive structure, not only an important part of the infrastructure but also a tourist attraction. A walk across the bridge towering over the dam allows you to admire beautiful views of the Colorado River and the surrounding landscapes. Furthermore, the dam is a place steeped in history and engineering, making a visit there an educational experience.&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%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fr591gkmx5koc9a6fs1p2.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%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fr591gkmx5koc9a6fs1p2.png" alt="A view from a helicopter over the Grand Canyon" width="800" height="450"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;The most impressive experience is admiring the Grand Canyon and Hoover Dam from a helicopter&lt;/strong&gt;. It's a unique and unforgettable experience that adds even more majesty to these already impressive places. A helicopter ride over the Grand Canyon allows you to admire stunning views from an aerial perspective, fully showcasing the monumentality of the canyon and its diverse rock formations. The view of the surrounding landscapes and the impressive work of nature is breathtaking. Similarly, a helicopter ride over the Hoover Dam offers an extraordinary opportunity to see this monumental structure.&lt;/p&gt;

&lt;p&gt;I went on the tour in 2019. I bought the ticket at one of the kiosks on The Strip. Its price was rather low for such a magnificent trip. I highly recommend it, as it is one of the best places in the world for helicopter tours.&lt;/p&gt;

&lt;h2&gt;
  
  
  13. The Strip
&lt;/h2&gt;

&lt;p&gt;A walk along "The Strip," the main street in Las Vegas, is an unforgettable experience that allows you to feel the pulse of the sin city, gambling, and entertainment. Majestic hotels and casinos showcase their impressive facades, inviting you to explore interiors filled with luxury and opulence. Strolling along this iconic street, you can admire fascinating light shows and fountains that create spectacular displays, especially after sunset.&lt;/p&gt;

&lt;h2&gt;
  
  
  14. The Sphere
&lt;/h2&gt;

&lt;p&gt;This is the newest attraction in Las Vegas. The world's largest dome that also serves as a huge display from the inside and outside. It is simply an entertainment hall that, thanks to its multimedia structure, can provide unforgettable experiences.&lt;/p&gt;

&lt;h2&gt;
  
  
  15. Old Las Vegas (Fremont Street Experience)
&lt;/h2&gt;

&lt;p&gt;It's not the most fantastic place in the world, but it's worth visiting to form your opinion. It was a bit tacky for me, but I don't regret going there.&lt;/p&gt;

&lt;h2&gt;
  
  
  16. Accompanying Events
&lt;/h2&gt;

&lt;p&gt;During re:Invent, many accompanying events sponsored by vendors take place. It's usually a good idea for a free drink and snack. Sometimes it's a good opportunity to personally meet someone we know from the internet. That's how I met the founder of A Cloud Guru in 2019 - a cool thing because I started learning about the cloud from his courses a long time ago.&lt;/p&gt;

&lt;p&gt;You can find the list of events at &lt;a href="https://conferenceparties.com/reinvent2025/" rel="noopener noreferrer"&gt;https://conferenceparties.com/reinvent2025/&lt;/a&gt;.&lt;/p&gt;

&lt;h1&gt;
  
  
  Summary
&lt;/h1&gt;

&lt;p&gt;Those are all the good tips I have for you. I hope they prove helpful and assist you in having the best week in Las Vegas! 😃&lt;/p&gt;

&lt;p&gt;If you think something is missing from this list, please add a comment so that others can benefit from your knowledge and experiences.&lt;/p&gt;

</description>
      <category>aws</category>
      <category>reinvent</category>
      <category>conference</category>
      <category>lasvegas</category>
    </item>
    <item>
      <title>Mini-review of the ultra-wide Samsung LS49A950UIUXEN monitor</title>
      <dc:creator>Pawel Zubkiewicz</dc:creator>
      <pubDate>Fri, 14 Jul 2023 09:26:35 +0000</pubDate>
      <link>https://dev.to/aws-builders/mini-review-of-the-ultra-wide-samsung-ls49a950uiuxen-monitor-a5</link>
      <guid>https://dev.to/aws-builders/mini-review-of-the-ultra-wide-samsung-ls49a950uiuxen-monitor-a5</guid>
      <description>&lt;p&gt;Working daily with the cloud, we are usually separated from hardware by many layers of abstraction and dozens of automations. Just look at the EC2 instance family.&lt;/p&gt;

&lt;p&gt;You might even develop a dismissive attitude towards hardware. Assuming that we meet the requirements for computing power and memory, every machine will work well. The rest is tuning and cost optimization. We practically never consider choosing from a full range of instance types consisting of hundreds of items. As a result, hardware loses its significance (commodification).&lt;/p&gt;

&lt;p&gt;However, there is another category of hardware that we should pay much more attention to. I am talking about devices we use personally, not remotely, because they affect our health and well-being.&lt;/p&gt;

&lt;p&gt;While working in an office, our choice is limited to what the employer provides. But in remote work, we are only limited by budget (or wife 😉).&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Today I will present my journey to decide on purchasing a new monitor and describe what it's like to work on it after six weeks.&lt;br&gt;&lt;br&gt;
&lt;b&gt;Are you perhaps thinking about changing your monitor but have been putting it off? In that case, I hope this article will encourage you to consider changes at your own desk.&lt;/b&gt;&lt;br&gt;&lt;br&gt;
I unnecessarily lost a few months to deliberations and pondering the topic. If someone had advised me at the beginning, offered knowledge that I am about to pass on to you, I would have saved time and enjoyed a better workplace much earlier.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;h2&gt;
  
  
  Choice - the path leading to the goal
&lt;/h2&gt;

&lt;p&gt;The impact of a display on the eyes is obvious. This was the main driver for me to change.&lt;/p&gt;

&lt;p&gt;I had two very old Full HD LG monitors, which did not have any solutions to protect my eyesight. I had them connected via a docking station and KVM switch to a PC and a work MacBook.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--QtfduYGg--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/8w8mjsqsmquqyc23nks5.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--QtfduYGg--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/8w8mjsqsmquqyc23nks5.png" alt="Image description" width="780" height="439"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;This is how they looked a few years ago. All in all, they were good to work with. Unfortunately, the autumn-winter period, when dusk falls right after lunch, strongly affected the fatigue of my eyes.&lt;/p&gt;

&lt;p&gt;Around November or December, I started looking for new monitors.&lt;/p&gt;

&lt;p&gt;Since from my first job in 2006 I have always used two monitors, I still wanted to stay with this setup. The space I have allows for the installation of two twenty-seven-inch (27") monitors. That's what I started looking for.&lt;/p&gt;

&lt;p&gt;While it is currently difficult to find hardware without eye protection features (no flickering + blue light filtering), I had other &lt;strong&gt;requirements that posed a challenge&lt;/strong&gt;. I wanted to get rid of the tangle of cables under the desk along with additional devices (docking station and KVM switch).&lt;/p&gt;

&lt;p&gt;My requirement became &lt;em&gt;&lt;strong&gt;Daisy Chaining&lt;/strong&gt;&lt;/em&gt;, also known as MST, allowing two monitors to be serially connected together, so that only one cable needs to be run from the computer to the first monitor.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Yes, it definitely solved my first world problem: connecting a MacBook Pro with two UBS-C/Thunderbolt cables - was to become a thing of the past 😉&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Unfortunately, it soon turned out as follows (this is a story for at least two 🍻 beers, so I'll shorten it a lot):&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Apple does not support MST over USB-C&lt;/li&gt;
&lt;li&gt;Apple may support MST over Thunderbolt 3/4, but it is safest to have M2 chip hardware&lt;/li&gt;
&lt;li&gt;Monitors with Thunderbolt are at least 2 times more expensive than those with USB-C&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;In general, dozens of hours spent looking for equipment resulted in finding a model that might work with a MacBook, supported &lt;em&gt;&lt;strong&gt;Daisy Chaining, and also had a built-in KVM switch&lt;/strong&gt;&lt;/em&gt;.&lt;/p&gt;

&lt;p&gt;The price was only ~1000 USD. Per piece. (&lt;a href="https://www.amazon.com/BenQ-PD2725U-Thunderbolt-Mac-Ready-Accurate/dp/B0918QXTGN"&gt;BenQ PD2725U&lt;/a&gt;)&lt;/p&gt;

&lt;p&gt;Unfortunately, someone figured out that when a monitor has Thunderbolt ports, it falls under the category of applications "&lt;em&gt;computer graphics&lt;/em&gt;" and such equipment should be priced accordingly.&lt;/p&gt;

&lt;p&gt;As you might guess, I don't care about the colors in VS Code and Chrome 😉 so I wasn't going to pay for parameters I didn't need.&lt;/p&gt;

&lt;p&gt;At that point, I returned to the idea of a single Ultra-wide monitor, which physically replaces two 27-inch monitors. I write "returned" because such a thought crossed my mind at the very beginning, but I quickly dismissed it. At that time, I believed that 49-inch monitors were a segment for gamers (crazy refresh rates, low input lag, etc.) - and again, I would be paying for something I wouldn't use.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;And here's another digression. It's us, programmers, who push this entire IT business forward, and yet there isn't even a segment of monitors for coding and the internet for us. And nobody will convince me that "office" is our segment because "office" is simply ordinary equipment without anything special for pro users like us.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;The obvious advantage of a single monitor is the lack of the need for MST and Thunderbolt support. This significantly lowers the price and also positively impacts the minimalism of the final effect on the desk. That's why...&lt;/p&gt;

&lt;h2&gt;
  
  
  I started looking for a 49-inch Ultra-wide monitor.
&lt;/h2&gt;

&lt;p&gt;The choice isn't vast (at least in Poland), and from several models available on the market from different manufacturers, I quickly decided on Samsung.&lt;/p&gt;

&lt;p&gt;Wide, but not for gamers! Exactly what I needed 🎯&lt;/p&gt;

&lt;p&gt;The exact model is &lt;a href="https://www.samsung.com/pl/monitors/gaming/s95ua-49-inch-dqhd-curved-ls49a950uiuxen/?mc_cid=c85ac558a0&amp;amp;mc_eid=ed279eb1d0"&gt;LS49A950UIUXEN&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--feXc25fY--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/ycskx93ntrtug8pw8hb6.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--feXc25fY--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/ycskx93ntrtug8pw8hb6.png" alt="Samsung marketing materials" width="711" height="351"&gt;&lt;/a&gt;Source: Manufacturer's materials, Samsung.&lt;/p&gt;

&lt;p&gt;I bought it for less than 1300 USD. That's half the price of two BenQ 27-inch monitors. 👍&lt;br&gt;
Unfortunately, it quickly turned out that I needed to buy a desk mount, as the Samsung stand takes up a ton of space. I chose the Ergotron HX Desk Monitor Arm for only 380 USD 😬.&lt;/p&gt;

&lt;p&gt;The monitor is 5K, meaning its resolution is 5120 by 1440 pixels, and the screen aspect ratio is 32:9.&lt;/p&gt;

&lt;h1&gt;
  
  
  Curved R1800 screen
&lt;/h1&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--3Zg53GH---/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/a8c7kz3ukau1mpfsax7f.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--3Zg53GH---/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/a8c7kz3ukau1mpfsax7f.png" alt="Image description" width="634" height="182"&gt;&lt;/a&gt; Source: Manufacturer's materials, Samsung.&lt;/p&gt;

&lt;p&gt;Since my old monitors were also set at an angle, I essentially wanted a curved monitor. However, there are two types of them: R1800 and R1000. 'R' as in the radius of the circle of which the screen is a part. 1800 gives a lesser curvature, while 1000 gives a greater one.&lt;/p&gt;

&lt;h1&gt;
  
  
  First impression
&lt;/h1&gt;

&lt;p&gt;Very positive.&lt;/p&gt;

&lt;p&gt;Although I must admit, on such a wide monitor this curvature could be greater, so R = 1000 would also be suitable. This type dominates in monitors intended for gaming due to a greater immersion in the game world. Unfortunately, I didn't find any 49" monitor on display anywhere in my home town to sit in front of, so I bought it blindly.&lt;/p&gt;

&lt;p&gt;The transition from twice Full HD (1920 x 1080) to 5120 x 1440 pixels also did the job. The difference in the vertical is very noticeable for the better, although the physical dimension is the same as in the old equipment.&lt;/p&gt;

&lt;p&gt;The &lt;strong&gt;monitor&lt;/strong&gt;, even with a new desk mount, &lt;strong&gt;protrudes much more from the wall than my old monitors&lt;/strong&gt;, thereby taking up space above the desk and shortening the distance to the screen. In the center it is 22 cm, and on the sides 32 cm from the wall.&lt;/p&gt;

&lt;p&gt;The last note is about the rear panel of the monitor and connecting cables - a real torment, they made it very inconvenient.&lt;/p&gt;

&lt;h1&gt;
  
  
  Current setup
&lt;/h1&gt;

&lt;p&gt;My &lt;strong&gt;Mac Book Pro is connected to the monitor with a single USB-C cable&lt;/strong&gt; (and it is charged from it). The old PC, on the other hand, is connected via two HDMI cables (in Picture-by-Picture monitor mode - for the PC it's like two physical 27" monitors). I got rid of the docking station and KVM switch under the desk (along with dozens of cables). &lt;strong&gt;It's now simpler and more minimalistic&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;Unfortunately, the KVM switch built into the monitor only half works. That is, it only switches the image, but not everything that is plugged into the monitor via USB. In practice, this means that my Logitech mouse and keyboard must be switched separately between computers (each device has such a switch - the Easy Switch technology in Logitech Unifying Receiver).&lt;/p&gt;

&lt;p&gt;Perhaps I am too stupid to figure it out, and honestly, I didn't want to invest more time in it because I use the PC sporadically, and these three clicks don't annoy me (monitor, keyboard, and mouse). In summary, I have a lot of devices plugged into the monitor, and everything communicates with the laptop via a single USB-C cable along with the image - and that's a great thing.&lt;/p&gt;

&lt;h1&gt;
  
  
  Impressions after 6 weeks of use
&lt;/h1&gt;

&lt;p&gt;Not much to say - &lt;em&gt;&lt;strong&gt;it's awesome&lt;/strong&gt;&lt;/em&gt; and that's why I'm writing about it.&lt;/p&gt;

&lt;p&gt;Perhaps you are thinking about changing your monitor, but you have put it off until later? Or maybe you didn't even know that there are such ultra-wide ones? In that case, I hope this article will encourage you to consider upgrading your workspace. If someone had advised me earlier, I could have enjoyed better equipment for longer. I, personally, recommend it.&lt;/p&gt;

&lt;p&gt;For me, &lt;strong&gt;the biggest surprise is how big a difference the lack of bezels (frames) in the middle of the screen makes&lt;/strong&gt; compared to a setup of two monitors.&lt;/p&gt;

&lt;p&gt;For years I sat slightly crooked because my left monitor was the main one. Now I sit totally perpendicular and look straight ahead (area no. 2 in the picture).&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;The lack of a bezel in the middle enables better work&lt;/strong&gt;. For years, I worked in two work areas (right and left monitor). Now I work on three.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--GdvQAs-P--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/jwyvrb8u48xcd7xqng5q.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--GdvQAs-P--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/jwyvrb8u48xcd7xqng5q.png" alt="3 areas" width="750" height="433"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;I have divided the screen into 3 areas, where the middle one is centrally located and is about 20% wider than the side ones. It works incredibly well!&lt;/strong&gt; The side areas are auxiliary, for example, email and company messenger. To define these working areas and manage windows, I use an application on MacOS called &lt;a href="https://rectangleapp.com/pro?mc_cid=c85ac558a0&amp;amp;mc_eid=ed279eb1d0"&gt;Rectangle Pro&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;The comfort of work and the health benefits of sitting straight and looking straight are incomparably better than with two monitors. I know, I am very excited about it, but I still feel that I do not accurately convey how big a difference the lack of bezels makes!&lt;/p&gt;

&lt;p&gt;I must also add that before the change, I was very afraid of not having two monitors, because of how the fullscreen mode works on Mac. For those who don't know, I will just say that it creates a virtual desktop for each maximized window. This was a feature I used heavily with two monitors. On one, it only makes sense with some applications (for example, Miro looks awesome 😀👍, video editing or VS Code), but in most cases it is hopeless, for example, maximized Chrome, or YouTube leaves a lot of empty, unused space on the sides. Fortunately, the aforementioned screen areas work so well that I don't miss the Mac's virtual desktops at all!&lt;/p&gt;

&lt;h1&gt;
  
  
  Summary
&lt;/h1&gt;

&lt;p&gt;I am very pleased with the change, even though it is not perfect (lack of one-button computer switching). The quality of work has definitely improved, and importantly, I have taken care of my body (eyes and spine).&lt;/p&gt;

&lt;p&gt;Ultra-wide 49" monitors are still relatively rare equipment, so I hope this article will be helpful for you in making or not the purchase decision.&lt;/p&gt;

</description>
      <category>hardware</category>
    </item>
    <item>
      <title>Year in review, 2022</title>
      <dc:creator>Pawel Zubkiewicz</dc:creator>
      <pubDate>Sat, 31 Dec 2022 10:51:10 +0000</pubDate>
      <link>https://dev.to/aws-heroes/year-in-review-2022-1edk</link>
      <guid>https://dev.to/aws-heroes/year-in-review-2022-1edk</guid>
      <description>&lt;p&gt;Year 2022 was full of many events that I decided to gather in one place.&lt;/p&gt;

&lt;p&gt;I think this text will provide you with a lot of value, whether professionally or even travel-wise (inspiration for trips). After reading it, you will certainly get to know me better.&lt;/p&gt;

&lt;p&gt;However, I must admit that I am also writing this summary for myself, to possibly come back here in the future and reminisce.&lt;/p&gt;

&lt;p&gt;I divided the summary into:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Career&lt;/li&gt;
&lt;li&gt;Failures&lt;/li&gt;
&lt;li&gt;Presentations and publications&lt;/li&gt;
&lt;li&gt;Travels&lt;/li&gt;
&lt;li&gt;Books&lt;/li&gt;
&lt;li&gt;Other&lt;/li&gt;
&lt;/ul&gt;

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

&lt;p&gt;While working for TT PSC, after more than 3 years, I ended my project cooperation with the US client PTC and moved on to another project in the PMI organization as Master Solutions Architect. Such a bit of a promotion, and a bit of a change of environment, new challenges and other problems. Standard.&lt;/p&gt;

&lt;h3&gt;
  
  
  It was much more interesting on the private front
&lt;/h3&gt;

&lt;p&gt;In June, I responded to the Call for Papers for members of the AWS Community Builders program and sent my presentation proposals for the re:Invent 2022 conference. In mid-September, I received an extremely nice email:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Congratulations on becoming a re:Invent speaker!&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;The joy was endless 😀 It is an incredible honor because I was the first non-formally affiliated with AWS speaker from Poland at the re:Invent conference! It also meant that I would fly to Las Vegas, which was not so obvious before. At that time, I was only at re:Invent 2019 once, but I really wanted to be there again in 2022. Being chosen as a speaker meant a ticket to the conference, literally and figuratively 😉. Fortunately for me, &lt;a href="https://ttpsc.com/" rel="noopener noreferrer"&gt;TT PSC&lt;/a&gt; agreed to sponsor the trip. My goal and dream was now within reach.&lt;/p&gt;

&lt;p&gt;All I had to do was prepare the presentation. The deadline for submitting finished materials was set for October 17th. I remember well the last two weeks of sitting on the speech every day. Luckily, hard work paid off, and the presentation was completed on time.&lt;/p&gt;

&lt;h3&gt;
  
  
  Dreams come true!
&lt;/h3&gt;

&lt;blockquote&gt;
&lt;p&gt;Will you be our Hero?&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;I couldn't believe it when I saw this titled email in my inbox. Although I had been dreaming for a long time to be among the prestigious group of AWS Heroes, on that November evening I was completely surprised because I didn't think it would happen this year.&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%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fws5l0hm2rbl7o38a5dad.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%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fws5l0hm2rbl7o38a5dad.png" alt="AWS Heroes" width="200" height="160"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;On November 15, 2022, the information was officially announced, and &lt;strong&gt;I became the first Polish&lt;/strong&gt; &lt;a href="https://aws.amazon.com/developer/community/heroes/pawel-zubkiewicz/" rel="noopener noreferrer"&gt;AWS Serverless Hero&lt;/a&gt;. &lt;strong&gt;At the end of 2022, there were 253 AWS Heroes in total, and in the serverless category only 42.&lt;/strong&gt; This is a really small group and an incredible honor to be one of them.&lt;/p&gt;

&lt;h3&gt;
  
  
  re:Invent
&lt;/h3&gt;

&lt;p&gt;So, as a brand-new &lt;em&gt;hero&lt;/em&gt;, I went to Las Vegas and gave my presentation &lt;em&gt;COM314 Automated testing for serverless applications&lt;/em&gt;. I rehearsed the speech itself a dozen times while still in Poland and then in the hotel room to deliver it as well as I could. The work paid off.&lt;/p&gt;

&lt;p&gt;I remember that during the presentation, the connection to the display went down three times and ended up with me switching to a different laptop. However, these failures did not deter either me or the audience. &lt;strong&gt;97&lt;/strong&gt; people stayed until the very end, and then a large group of listeners besieged me with additional questions. Unfortunately, my speech was not recorded.&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%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fa0zw5qtv5o5j5eii4pnz.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%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fa0zw5qtv5o5j5eii4pnz.png" alt="After re:Invent presentation" width="780" height="460"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Professionally, I ended the year in December by bringing &lt;a href="https://www.linkedin.com/search/results/content/?heroEntityKey=urn%3Ali%3Aautocomplete%3A62006023&amp;amp;keywords=awsugwro&amp;amp;origin=SWITCH_SEARCH_VERTICAL&amp;amp;position=0&amp;amp;searchId=20a7ae12-b5f9-41c8-a357-f1643fadea37&amp;amp;sid=%40.C" rel="noopener noreferrer"&gt;AWS User Group Wrocław&lt;/a&gt; back to life, along with a phenomenal group of friends. At our first meeting, we discussed the conference and the news announced at re:Invent.&lt;/p&gt;

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

&lt;p&gt;Successes do not necessarily mean the absence of failures. They are naturally incorporated into everything we do, so there is no point in hiding them.&lt;/p&gt;

&lt;p&gt;So, what sucked in 2022?&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;broken ribs on a bike (if at least there was an impressive jump, unfortunately there wasn't 🤦🏻)&lt;/li&gt;
&lt;li&gt;poor adoption of &lt;a href="https://cloudpouch.dev/" rel="noopener noreferrer"&gt;CloudPouch&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;lack of customers for AWS cloud cost consulting&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;It might seem that in these times savings are a priority and everything that allows for significant reduction of unnecessary IT costs should sell like hotcakes (not to mention ecology). Nothing could be further from the truth. We devoted the last half year to the Polish market, and the results are far from satisfactory.&lt;/p&gt;

&lt;h2&gt;
  
  
  Presentations and publications
&lt;/h2&gt;

&lt;p&gt;Year in a Nutshell&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Article: &lt;a href="https://dev.to/aws-builders/aws-step-functions-refactor-to-native-integrations-with-aws-api-2028"&gt;AWS Step Functions - Refactor to native integrations with AWS API&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;Presentation: conference 4Developers - April 5, 2022 - Cost optimization in the AWS cloud (in Polish)&lt;/li&gt;
&lt;li&gt;Article: &lt;a href="https://dev.to/aws-builders/4-ways-of-executing-lambda-function-via-http-endpoint-a-comparison-560b"&gt;4 ways of executing Lambda function via HTTP endpoint - a comparison&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;Article: &lt;a href="https://dev.to/aws-builders/simple-serverless-scheduler-25c7"&gt;Simple Serverless Scheduler&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;Presentation: conference Cloud Summit 2022 - May 19, 2022 - Cost optimization in the AWS cloud (in Polish)&lt;/li&gt;
&lt;li&gt;Presentation: conference AWS Community Day Warsaw 2022 - October 14, 2022 - Industrialization and other mechanisms of public cloud evolution (in Polish)&lt;/li&gt;
&lt;li&gt;Article: &lt;a href="https://dev.to/aws-builders/reduce-aws-cost-how-ive-saved-18890-monthly-on-ebs-drives-528a"&gt;Reduce AWS costs: How I've saved $18,890 monthly on EBS drives?&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;Article: &lt;a href="https://dev.to/aws-builders/add-types-to-your-javascript-lambda-functions-3pgn"&gt;Add types to your JavaScript Lambda functions&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;Article: Serverless pre:Invent announcements (in Polish)&lt;/li&gt;
&lt;li&gt;Presentation: conference AWS re:Invent - November 30, 2022 - COM314 Automated testing for serverless applications&lt;/li&gt;
&lt;li&gt;Resurrection and co-organization of the &lt;a href="https://www.meetup.com/pl-PL/aws-ug-wroclaw/" rel="noopener noreferrer"&gt;AWS User Group Wrocław&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;Presentation: Lighting talk - December 12, 2022 - re:Invent from a participant's perspective&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;It is also worth mentioning the (nearly) regular weekly dispatch of the largest AWS and serverless newsletter in Poland.&lt;/p&gt;

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

&lt;p&gt;The first year after the pandemic, in which covid restrictions disappeared completely, was very generous to me in terms of travel.&lt;/p&gt;

&lt;p&gt;It started with Portugal, specifically the beautiful, green, and mountainous Madeira in February.&lt;br&gt;
&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fqy6tyvqtl484huys4sfd.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%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fqy6tyvqtl484huys4sfd.png" alt="Madeira" width="780" height="440"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Then my wife and I did a road trip from home through the Czech Republic, Slovakia, Hungary, and Austria.&lt;br&gt;
&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Frxeobsi8blqlua3wah5p.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%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Frxeobsi8blqlua3wah5p.png" alt="Roadtrip" width="780" height="420"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;In May, we visited Italy. Our base was Pisa, from which we went to see Siena, Florence, and the sea to visit the charming villages called Cinque Terre.&lt;br&gt;
&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F4505b9vzr32b5p5epc69.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%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F4505b9vzr32b5p5epc69.png" alt="Italy Cinque Terre" width="780" height="440"&gt;&lt;/a&gt;&lt;br&gt;
&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fsaa7r5qzv79xf82vmnwp.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%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fsaa7r5qzv79xf82vmnwp.png" alt="Italy" width="780" height="420"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;The next trip was in June, after a few days in Istanbul we began a journey through Turkey. We visited the east of the country, Cappadocia (that's where you fly hot air balloons 😉).&lt;br&gt;
&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fqk1bfwjfxo939whm4sn9.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%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fqk1bfwjfxo939whm4sn9.png" alt="Turkey" width="780" height="420"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;At the end of August and beginning of September, we made a quick trip to the Baltic countries (Latvia and Estonia) and Finland on one trip.&lt;br&gt;
&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Ftp4cy79zk0uf0q0i93gt.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%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Ftp4cy79zk0uf0q0i93gt.png" alt="Finland" width="780" height="440"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;In October, there was a city break in Barcelona - a birthday present for my wife.&lt;br&gt;
&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F9umzyv94acfsj0kpdhi6.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%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F9umzyv94acfsj0kpdhi6.png" alt="Barcelona" width="780" height="420"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;We ended the year of travels with a winter trip to Cyprus. When Poland turned gray in November, we were swimming in the sea under the palm trees. 🏝&lt;br&gt;
&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fb4m873t3sywp4h5p25c7.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%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fb4m873t3sywp4h5p25c7.png" alt="Cyprus" width="780" height="440"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;All of the above trips were organized by my wife ❤️, who is a master of travel planning. Of course, except for her present (Barcelona), which I planned. I also went to a conference in Las Vegas in November, which I mentioned earlier.&lt;br&gt;
&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fvbonor4f50bil15djk16.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%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fvbonor4f50bil15djk16.png" alt="Las Vegas" width="780" height="440"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;The year 2022 was full of travel, but only a few countries were new to me: Latvia, Estonia, Finland, and Cyprus. However, I managed to reach the level of &lt;strong&gt;40&lt;/strong&gt; visited countries in the world.&lt;/p&gt;

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

&lt;p&gt;Lately, I am not a fan of reading. Of course, I'm only talking about books related to technology, business, marketing, or sales. But I rarely read for entertainment either. Reading is a veiled form of procrastination. To make matters worse, it reinforces the pattern of &lt;em&gt;"I have to know and predict everything before I start"&lt;/em&gt;, which is impossible and effectively immobilizes you from the very start.&lt;/p&gt;

&lt;p&gt;That's why I replace books with video trainings and mental masturbation with &lt;em&gt;recognition in battle&lt;/em&gt;. Or at least I try to act that way 😉&lt;/p&gt;

&lt;p&gt;Taking all this into account, the following completely short list of positions should not surprise you:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;a href="https://www.amazon.com/Product-Led-Growth-Build-Product-Itself-ebook/dp/B07P6288ZF" rel="noopener noreferrer"&gt;Product-Led Growth: How to Build a Product That Sells Itself&lt;/a&gt; - a compendium of knowledge on product building. Don't let the name fool you, this book is equally about discovering the needs of your customers and fulfilling them as it is about marketing and sales itself. Reading it with &lt;a href="https://cloudpouch.dev/" rel="noopener noreferrer"&gt;CloudPouch&lt;/a&gt; in mind, I have already made several decisions about changes in my application that have not yet been implemented (lack of time), but will certainly contribute to greater customer satisfaction and wider use of this tool.&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://www.amazon.com/Traction-Startup-Achieve-Explosive-Customer-ebook/dp/B00TY3ZOMS/ref=tmm_kin_swatch_0?_encoding=UTF8&amp;amp;qid=&amp;amp;sr=" rel="noopener noreferrer"&gt;Traction&lt;/a&gt; - a highly recommended, popular book about the fact that in marketing everything depends on, and you need to try many ways to verify what will work for us. It doesn't blow your mind, but it is very concise.&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://www.amazon.com/48-Laws-Power-Robert-Greene-ebook/dp/B0024CEZR6/ref=tmm_kin_swatch_0?_encoding=UTF8&amp;amp;qid=&amp;amp;sr=" rel="noopener noreferrer"&gt;The 48 Laws of Power&lt;/a&gt; - a definitely interesting position with patterns identified throughout history for those wanting to gain and maintain power. But even if you don't have such ambitions, you can treat this list as a cheet sheet and have fun analyzing the behavior of characters from various series such as Game of Thrones, Succession, or others and identifying which patterns they are using. 😉&lt;/li&gt;
&lt;/ul&gt;

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

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Mastermind group&lt;/strong&gt; - another factor contributing to the abandonment of reading is a group of three people I regularly meet with and discuss all topics for almost two years now. Originally, we started with a plan to study Wardley's maps, but quite quickly we have moved beyond that and cover all topics that interest us. Of course, we didn't part with the maps, but rather treat them as a tool for a better understanding of the world around us and the changes taking place in it, rather than the goal itself. In other words, we get excited about driving a car, not the machine itself. These sessions give me more than any book could offer! They show different points of view, stimulate reflection, and challenge me with topics outside my bubble.
One of the really interesting topics I learned about through this group is the theory of psychopaths in companies. 🤯 I'm sure you haven't heard of it, even though the concept is over 10 years old. This is not the time or place for me to develop it here, so I'll leave you with just the &lt;a href="https://www.ribbonfarm.com/2009/10/07/the-gervais-principle-or-the-office-according-to-the-office/" rel="noopener noreferrer"&gt;link&lt;/a&gt;. It fits in perfectly with the 48 Laws of Power 🙂 &lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fv572qyi9690ja8ck83x6.png" alt="Company hierarchy" width="400" height="218"&gt;
&lt;/li&gt;
&lt;li&gt;Purchase of Sennheiser Momentum 3 headphones - all my life I used some crappy headphones, these are still not audiophile grade, but for me the difference is huge. The money spent is definitely worth it for good sound every day at home and when walking the dog. I'm writing about this because if someone had told me beforehand: &lt;em&gt;Dude, get yourself some good headphones&lt;/em&gt; I would have been able to enjoy this a long time ago... so if you haven't already, &lt;em&gt;get yourself some good headphones!&lt;/em&gt; 😃&lt;/li&gt;
&lt;li&gt;While we're on the subject of music, I enjoyed myself at concerts: Tool, Iron Maiden, Ed Sheeran, Machine Head, Martin Garrix.&lt;/li&gt;
&lt;li&gt;I also purchased a Scott Spark bike after waiting for over a year. It's a blast 💪😃 &lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F1i2h4xvadfu4292tab8h.png" alt="Scott Spark" width="547" height="839"&gt;
&lt;/li&gt;
&lt;li&gt;Since January, I've been learning Italian 🇮🇹. It brings me a lot of joy because I treat it as a hobby. It's also a nice reminder of how difficult the basics can be for someone who is just starting - it gives me food for thought in the context of my trainings and advocacy of serverless architecture.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;That, in a nutshell, is what my 2022 looked like on paper and through the lens.&lt;/p&gt;

</description>
      <category>emptystring</category>
    </item>
    <item>
      <title>Add types to your JavaScript Lambda functions</title>
      <dc:creator>Pawel Zubkiewicz</dc:creator>
      <pubDate>Sat, 29 Oct 2022 15:48:01 +0000</pubDate>
      <link>https://dev.to/aws-builders/add-types-to-your-javascript-lambda-functions-3pgn</link>
      <guid>https://dev.to/aws-builders/add-types-to-your-javascript-lambda-functions-3pgn</guid>
      <description>&lt;p&gt;If you need to add types to your Lambda functions written in JavaScript (Node.js) then you can do it very easily, using VS Code's built-in JSDoc support. How it works in other editors I don't know, because I haven't had the need to leave VS Code for many years 😃&lt;/p&gt;

&lt;p&gt;Types library includes events and other objects that occur in AWS. They come in handy when defining an &lt;code&gt;event&lt;/code&gt; that calls Lambda functions, which is the first parameter of the &lt;code&gt;handler&lt;/code&gt; method:&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;

&lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;handler&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="k"&gt;async &lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;event&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="c1"&gt;// extract data from event&lt;/span&gt;
  &lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;response&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;...&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;
  &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="nx"&gt;response&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;


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

&lt;/div&gt;

&lt;p&gt;By installing this library as a dev dependency&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;

npm i --save-dev @types/aws-lambda


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

&lt;/div&gt;

&lt;p&gt;we can add this information to our code:&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;

&lt;span class="cm"&gt;/**
 *
 * @param {import('aws-lambda').APIGatewayProxyEventV2} event
 * @returns
 */&lt;/span&gt;
&lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;handler&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="k"&gt;async &lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;event&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="c1"&gt;// extract data from event&lt;/span&gt;
  &lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;response&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;...&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;
  &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="nx"&gt;response&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;


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

&lt;/div&gt;

&lt;p&gt;Such a small change allows VS Code to display a relevant list of prompts as we write code. &lt;/p&gt;

&lt;p&gt;This is what it looks like for the API Gateway HTTP API:&lt;br&gt;
&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Ftir0ki51d1etb3me0ldy.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%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Ftir0ki51d1etb3me0ldy.png" alt="Types in JavaScript"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;My next Lambda function is triggered by DynamoDB Stream, so we define &lt;code&gt;event&lt;/code&gt; as &lt;code&gt;DynamoDBStreamEvent&lt;/code&gt;. Please notice that even inside the loop editor prompts valid types in sub-properties:&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%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fhar8p0h824sc14xukpuj.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%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fhar8p0h824sc14xukpuj.png" alt="Types in JavaScript"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Of course, JSDoc definition can be added on any method, not just on the &lt;code&gt;handler&lt;/code&gt; called by the Lambda service. You can annotate any JavaScript function that process AWS type with this method to have better &lt;em&gt;intellisense&lt;/em&gt;. &lt;/p&gt;

&lt;p&gt;There is a huge number of types in the whole package &lt;a href="https://www.npmjs.com/package/@types/aws-lambda" rel="noopener noreferrer"&gt;&lt;code&gt;@types/aws-lambda&lt;/code&gt;&lt;/a&gt;, and not just &lt;em&gt;events&lt;/em&gt;. We also have &lt;em&gt;responses&lt;/em&gt; and other objects available.&lt;/p&gt;

&lt;p&gt;As an example, consider the &lt;code&gt;context&lt;/code&gt; object, which we sometimes need in a Lambda function.&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%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F5x74vxb62v19ljr4edho.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%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F5x74vxb62v19ljr4edho.png" alt="Types in JavaScript"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;I'm sure you will find this small convenience useful.  I hope it would ease switching from strongly typed languages to JavaScript. This article, was based on this &lt;a href="https://www.youtube.com/shorts/60zUEc_vs1o" rel="noopener noreferrer"&gt;short video&lt;/a&gt; published by &lt;a href="https://loige.co/" rel="noopener noreferrer"&gt;Luciano Mammino&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;At this point, it's probably worth repeating myself (since I wrote about it a long time ago) and answer the following question.&lt;/p&gt;

&lt;h2&gt;
  
  
  Why am I writing in JavaScript and not TypeScript?
&lt;/h2&gt;

&lt;p&gt;The transition from Java to JavaScript was neither easy nor pleasant for me. The lack of types didn't help. But that was years ago and now I wouldn't go back to Java for the world's sake.&lt;/p&gt;

&lt;p&gt;Of course, there is still (for some time) place for Java in this world. 😉&lt;/p&gt;

&lt;p&gt;However, &lt;strong&gt;in Lambda functions the scope of the problem and the amount of code is so small that we don't need types&lt;/strong&gt; to understand what's going on. By complete coincidence, in recent days Yan Cui - AWS Serverless Hero - also wrote about this, and I paste his graphic and comment here:&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%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F4q2ikbzkz1prl3wbz5tw.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%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F4q2ikbzkz1prl3wbz5tw.png" alt="Yan Cui's skyscraper"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;In a Node.js app, say, an Express.js API, the complexity ceiling is really high - multiple abstraction layers, lots of modules and a "user" variable can mean different things every time you see one. Types are crucial for managing that complexity and communicating intent.&lt;br&gt;But the complexity ceiling of a Lambda function is much much lower. I only need to look at 2/3 modules to understand what the function does. To the point that the (relatively small) overhead of bringing in TypeScript just doesn't feel necessary in most cases.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Source: &lt;a href="https://www.linkedin.com/feed/update/urn:li:activity:6986994844820725760/" rel="noopener noreferrer"&gt;Yan Cui in LinkedIn&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;The bottom line is that it's better to break through and implement functions in JavaScript than to harness TypeScript, just to have types everywhere. Especially since TypeScript entails some inconveniences.&lt;/p&gt;

&lt;p&gt;The lack of defining &lt;em&gt;explicit&lt;/em&gt; types is very convenient because the code is shorter and easier to read, and sometimes you can even go a little bit crazy with it... 😉&lt;/p&gt;

</description>
      <category>aws</category>
      <category>serverless</category>
      <category>lambd</category>
      <category>javascript</category>
    </item>
    <item>
      <title>Reduce AWS costs: How I've saved $18,890 monthly on EBS drives?</title>
      <dc:creator>Pawel Zubkiewicz</dc:creator>
      <pubDate>Fri, 03 Jun 2022 11:26:58 +0000</pubDate>
      <link>https://dev.to/aws-builders/reduce-aws-cost-how-ive-saved-18890-monthly-on-ebs-drives-528a</link>
      <guid>https://dev.to/aws-builders/reduce-aws-cost-how-ive-saved-18890-monthly-on-ebs-drives-528a</guid>
      <description>&lt;p&gt;This is a case study of a &lt;strong&gt;real&lt;/strong&gt; project, where one simple change in configuration resulted in almost a quarter of a million dollars savings per year.&lt;/p&gt;

&lt;p&gt;There was a single AWS account which had around 17,000 EBS volumes, which totaled to 944,875 GB (almost 1000 TB). That's a serious amount of disk space for which you pay serious money.&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%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fmu7iy0zwh23g8i9mve73.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%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fmu7iy0zwh23g8i9mve73.png" alt="CloudPouch Cost Insights" width="800" height="466"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;A &lt;a href="https://cloudpouch.dev/?utm_source=devto" rel="noopener noreferrer"&gt;CloudPouch&lt;/a&gt; tool identified possible savings on that account (screenshot above) regarding EBS Volumes. That was a starting point, which started the whole endeavor.&lt;/p&gt;

&lt;p&gt;Before optimization, &lt;code&gt;EBS:VolumeUsage.gp2&lt;/code&gt; cost was around $100,000 monthly. That's just disk drive space, nothing else! All of those drives were of type &lt;code&gt;GP2&lt;/code&gt;, which stands for &lt;em&gt;General Purpose 2&lt;/em&gt;.&lt;/p&gt;

&lt;p&gt;According to the CloudPouch tool, conversion to newer drive type &lt;code&gt;GP3&lt;/code&gt; would save 20%, which was $18,890 monthly in this case.&lt;/p&gt;

&lt;h2&gt;
  
  
  EBS &lt;code&gt;GP3&lt;/code&gt;
&lt;/h2&gt;

&lt;p&gt;AWS &lt;a href="https://aws.amazon.com/about-aws/whats-new/2020/12/introducing-new-amazon-ebs-general-purpose-volumes-gp3/" rel="noopener noreferrer"&gt;introduced new GP3 drives&lt;/a&gt; in December 2020. They provide up to &lt;strong&gt;20% lower price-point&lt;/strong&gt; per GB than existing &lt;code&gt;GP2&lt;/code&gt; volumes, and their performance is no longer coupled with their size! Which means you don't need to over-provision size to get expected performance.&lt;/p&gt;

&lt;p&gt;If you're interested in detailed comparison this &lt;a href="(https://aws.amazon.com/blogs/storage/migrate-your-amazon-ebs-volumes-from-gp2-to-gp3-and-save-up-to-20-on-costs/)"&gt;AWS blog post&lt;/a&gt; is the best place to start. The below table summarizes most important differences pretty well; it was copied from the over-mentioned blog post.&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%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Ftnw8w35ypi4lbz2shlfm.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%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Ftnw8w35ypi4lbz2shlfm.png" alt="EBS GP3 vs GP2 comparison" width="742" height="761"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Migration from &lt;code&gt;GP2&lt;/code&gt; to &lt;code&gt;GP3&lt;/code&gt;
&lt;/h2&gt;

&lt;p&gt;After learning more about &lt;code&gt;GP3&lt;/code&gt;, migration sounded like a no-brainer. 😃&lt;/p&gt;

&lt;p&gt;The newer drive type should result in immediate decrease in costs by 20% without any performance impact on our drives, which were between 50 to 250GB each.&lt;/p&gt;

&lt;p&gt;From a technical perspective, migration seemed pretty easy to conduct. AWS states:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Customers can easily migrate gp2 volumes to gp3 volumes using Elastic Volumes, which is an existing feature of Amazon EBS. Elastic Volumes allow customers to modify the volume type, IOPS, or throughput of their existing EBS volumes &lt;strong&gt;without interrupting their Amazon EC2 instances&lt;/strong&gt;.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;After confirming with AWS representative, that conversion from &lt;code&gt;GP2&lt;/code&gt; to &lt;code&gt;GP3&lt;/code&gt; &lt;strong&gt;does not impact&lt;/strong&gt; running EC2 instance at all, I was ready to start.&lt;/p&gt;

&lt;p&gt;The change can be applied manually in the web console, as showed in the image below. All you need to do is to select new type:&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%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fvn1wip2xhz3o2tdkcd9k.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%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fvn1wip2xhz3o2tdkcd9k.png" alt="Web console screenshot" width="537" height="373"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Of course, when you have 17,000 drives, you want to automate that!&lt;/p&gt;

&lt;p&gt;Fortunately, you can do that using &lt;strong&gt;AWS SDK&lt;/strong&gt;. It's surprisingly simple, given how much money you can save 😀&lt;/p&gt;

&lt;p&gt;You need to get the list of all your EBS volumes using &lt;code&gt;EC2.describeVolumes()&lt;/code&gt; method, and then modify those having &lt;code&gt;VolumeType === 'gp2'&lt;/code&gt; to &lt;code&gt;gp3&lt;/code&gt; using another SDK method &lt;code&gt;EC2.modifyVolume()&lt;/code&gt;. It really doesn't get any simpler than that. 😀&lt;/p&gt;

&lt;p&gt;The &lt;code&gt;EC2.modifyVolume()&lt;/code&gt; request &lt;strong&gt;asynchronously&lt;/strong&gt; starts the migration, so the whole script runs pretty fast. Based on my research and discussions with AWS representatives, the whole operation can take up to 6 hours per drive, depending on size and other factors.&lt;/p&gt;

&lt;p&gt;What's really important and amazing at the same time is that migration takes place in the background without interrupting EC2 instances. Also, we pay only for &lt;code&gt;GP3&lt;/code&gt; drive since the very start of the migration.&lt;/p&gt;

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

&lt;p&gt;Well, you already know the results but lets show them in the form of a chart.&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%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fuc2uuqbqq8v3rqkxs3fv.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%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fuc2uuqbqq8v3rqkxs3fv.png" alt="EBS Volumes cost chart" width="800" height="278"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;The &lt;code&gt;EBS:VolumeUsage.gp2&lt;/code&gt; UsageType costs (yellow) were replaced with &lt;code&gt;EBS:VolumeUsage.gp3&lt;/code&gt; (red).&lt;/p&gt;

&lt;p&gt;As expected, EBS Volumes costs dropped by 20%. In the case of this particular account, &lt;strong&gt;I was able to save $18,890 monthly - almost a quarter of a million dollars per year!&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;The migration took place at the end of 2021 year, we haven't had even a single problem with any EBS or EC2 instance using them.&lt;/p&gt;

&lt;h2&gt;
  
  
  Ongoing migrations
&lt;/h2&gt;

&lt;p&gt;In the environment, where you can't control newly deployed EC2 instances and their EBS drives, you can deploy a Lambda Function, that would regularly migrate newly created drives to &lt;code&gt;GP3&lt;/code&gt; version. It's really easy to write and can save a lot of money.&lt;/p&gt;

&lt;h3&gt;
  
  
  Disclaimer
&lt;/h3&gt;

&lt;p&gt;In most of the cases migration from &lt;code&gt;GP2&lt;/code&gt; to &lt;code&gt;GP3&lt;/code&gt; can be safely executed. However, preliminary analysis is recommended, especially to check if your existing drives have any special settings, like provisioned IOPS. Don't do this without thorough preparation.&lt;/p&gt;

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

&lt;p&gt;Everything described in this article can be done without &lt;a href="https://cloudpouch.dev/?utm_source=devto" rel="noopener noreferrer"&gt;CloudPouch&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;However, if you want to examine all your AWS accounts and have immediate response about potential savings, &lt;strong&gt;CloudPouch is the tool to use!&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Start in the &lt;code&gt;Current month&lt;/code&gt; and scroll down to the &lt;em&gt;AWS Services&lt;/em&gt; table.&lt;/li&gt;
&lt;/ul&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%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Ffg405djlj4rdawrpvbra.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%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Ffg405djlj4rdawrpvbra.png" alt="Step 1" width="800" height="374"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;Select the &lt;code&gt;EC2 - Other&lt;/code&gt; row, it will expend showing UsageType cost chart.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Next, click on &lt;code&gt;Check Cost Insights 🔍&lt;/code&gt; button. Now CloudPouch is connecting to your AWS account to get information about deployed resources.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&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%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F5a89b9cp87v7nl7rzxnc.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%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F5a89b9cp87v7nl7rzxnc.png" alt="Step 2" width="800" height="469"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;After a moment, a summary is displayed.
&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fazcvfw6hyhsjpg2bv9d3.png" alt="Cost Insights summary" width="800" height="350"&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The &lt;strong&gt;Cost Insights&lt;/strong&gt; summary includes not only &lt;code&gt;GP2&lt;/code&gt; to &lt;code&gt;GP3&lt;/code&gt; migration check, but also recommendations about:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;"orphaned" drives - &lt;strong&gt;unattached EBS&lt;/strong&gt; Volumes that are &lt;strong&gt;not used&lt;/strong&gt; by any EC2 instance, &lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Elastic IPs&lt;/strong&gt; - reserved but not used,&lt;/li&gt;
&lt;li&gt;and needless &lt;strong&gt;NAT Gateways&lt;/strong&gt; - sometimes people forget to remove them from VPCs that are no longer used. &lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;All those resources can be considered &lt;em&gt;&lt;strong&gt;waste&lt;/strong&gt;&lt;/em&gt; - you don't use them, but you pay for them.&lt;/p&gt;

&lt;p&gt;The summary also gives you an amount of potential savings, so you can make a data-driven decision whether it's worth optimizing.&lt;/p&gt;

</description>
      <category>ebs</category>
      <category>costs</category>
      <category>cloud</category>
      <category>aws</category>
    </item>
  </channel>
</rss>
