Repository: pulumi/docs
Pull request #14458: Blog updates - batch 7
Author: login: asafashirov
Created: 2025-03-19T22:35:36Z | Merged: 2025-03-20T15:05:40Z

<!--Thanks for your contribution. See [CONTRIBUTING](CONTRIBUTING.md)
    for Pulumi's documentation contribution guidelines.

    Help us merge your changes more quickly by adding more details such
    as labels, milestones, and reviewers.-->

### Proposed changes

<!--Give us a brief description of what you've done and what it solves. -->

### Unreleased product version (optional)

<!--If this change only applies to an unreleased version of a product, note the version here and add a docs/unreleased PR label.
    Set a milestone if appropriate. -->

### Related issues (optional)

<!--Refer to related PRs or issues: #1234, or 'Fixes #1234' or 'Closes #1234'.
    Or link to full URLs to issues or pull requests in other GitHub repositories. -->



Diff:
diff --git a/content/blog/amazon-s3-express-one-zone/index.md b/content/blog/amazon-s3-express-one-zone/index.md
index 14741059503c..c3c9f9dca7d9 100644
--- a/content/blog/amazon-s3-express-one-zone/index.md
+++ b/content/blog/amazon-s3-express-one-zone/index.md
@@ -1,14 +1,15 @@
 ---
-title: "10x Your Storage Performance with Amazon S3 Express One Zone and Infrastructure as Code"
+title: "10x Your Storage Performance with Amazon S3 Express One Zone and Pulumi"
 allow_long_title: True
 authors: ["joe-duffy"]
 tags: ["aws", "s3"]
-meta_desc: "Amazon S3 Express One Zone is a new storage class with up to 10x better performance. See how to use it with infrastructure as code."
+meta_desc: "Amazon S3 Express One Zone is a new storage class with up to 10x better performance. See how to use it with infrastructure as code and Pulumi."
 date: "2023-12-04"
+updated: 2025-03-19
 meta_image: "aws-s3-express-one-zone.png"
 ---
 
-At AWS re:Invent 2023, AWS announced the new [Amazon S3 Express One Zone](https://aws.amazon.com/s3/storage-classes/express-one-zone/) storage class. This new service provides incredible performance by collocating your S3 buckets closer to the workloads that use the data. Compared to the S3 Standard storage class, the Express One Zone storage class is up to 10x faster, handles 100,000s of requests per second, offers single-digit millisecond latency, and can reduce request costs by 50%. This can be extremely beneficial for data-intensive workloads such as AI/ML, media, finance, realtime, and high-performance computing scenarios. This blog post shows how to get started with Amazon S3 Express One Zone using Pulumi infrastructure as code.
+At AWS re:Invent 2023, AWS announced the new [Amazon S3 Express One Zone](https://aws.amazon.com/s3/storage-classes/express-one-zone/) storage class. This new service provides incredible performance by collocating your S3 buckets closer to the workloads that use the data. Compared to the S3 Standard storage class, the Express One Zone storage class is up to 10x faster, handles 100,000s of requests per second, offers single-digit millisecond latency, and can reduce request costs by 50%. This can be extremely beneficial for data-intensive workloads such as AI/ML, media, finance, realtime, and high-performance computing scenarios. This blog post shows how to get started with Amazon S3 Express One Zone using Pulumi [infrastructure as code](/what-is/what-is-infrastructure-as-code/).
 
 <!--more-->
 
@@ -268,7 +269,7 @@ From 3x to more than 5x the performance! With more fine tuning of our `sync` par
 
 In summary, here are the results:
 
-![Amazon S3 Express One Zone performance comparison](s3-express-perf.png)
+![Amazon S3 Express One Zone performance comparison by sync time in seconds](s3-express-perf.png)
 
 
 ## Conclusion
diff --git a/content/blog/aws-lambda-provisioned-concurrency-no-cold-starts/index.md b/content/blog/aws-lambda-provisioned-concurrency-no-cold-starts/index.md
index 9afdf1eaa2e0..db3d8c7232a1 100644
--- a/content/blog/aws-lambda-provisioned-concurrency-no-cold-starts/index.md
+++ b/content/blog/aws-lambda-provisioned-concurrency-no-cold-starts/index.md
@@ -1,7 +1,8 @@
 ---
 title: "Provisioned Concurrency: Avoiding Cold Starts in AWS Lambda"
 date: 2019-12-19
-meta_desc: "Using Pulumi to configure AWS Lambda provisioned concurrency"
+updated: 2025-03-19
+meta_desc: "Learn how to configure AWS Lambda Provisioned Concurrency to minimize cold starts and improve performance with Pulumi."
 meta_image: variable.png
 authors: ["mikhail-shilkov"]
 tags: ["AWS", "Serverless"]
@@ -9,11 +10,19 @@ tags: ["AWS", "Serverless"]
 
 AWS Lambda cold starts (the time it takes for AWS to assign a worker to a request) are a major frustration point of many serverless programmers. In this article, we will take a look at the problem of latency-critical serverless applications, and how [Provisioned Concurrency](https://aws.amazon.com/blogs/aws/new-provisioned-concurrency-for-lambda-functions/) impacts the status-quo.
 
+1. [Concurrency Model of AWS Lambda](/blog/aws-lambda-provisioned-concurrency-no-cold-starts/#concurrency-model-of-aws-lambda)
+2. [Cold Starts](/blog/aws-lambda-provisioned-concurrency-no-cold-starts/#cold-starts)
+3. [Warming](/blog/aws-lambda-provisioned-concurrency-no-cold-starts/#warming)
+4. [Provisioned Concurrency](/blog/aws-lambda-provisioned-concurrency-no-cold-starts/#provisioned-concurrency)
+5. [Dynamic Provisioned Concurrency](/blog/aws-lambda-provisioned-concurrency-no-cold-starts/#dynamic-provisioned-concurrency)
+6. [Pricing](/blog/aws-lambda-provisioned-concurrency-no-cold-starts/#pricing)
+7. [Conclusion](/blog/aws-lambda-provisioned-concurrency-no-cold-starts/#conclusion)
+
 ## Concurrency Model of AWS Lambda
 
 Despite being serverless, AWS Lambda uses lightweight containers to process incoming requests. Every container, or worker, can process only a single request at any given time.
 
-{{< figure src="./executions.png" caption="Overlapping executions land on separate workers" >}}
+{{< figure src="./executions.png" caption="Overlapping executions land on separate workers" alt="AWS Lambda concurrency model showing overlapping executions on separate workers">}}
 
 Because of this, the number of concurrent requests defines the number of required workers that a specific AWS Lambda function needs to serve a response at any given moment.
 
@@ -67,7 +76,7 @@ The snippet sets the provisioned concurrency for `mylambda` to a fixed value of
 
 A fixed level of provisioned concurrency works well for stable workloads.
 
-{{< figure src="./steady.png" caption="Fixed provisioned concurrency for uniform workloads" >}}
+{{< figure src="./steady.png" caption="Fixed provisioned concurrency for uniform workloads" alt="Diagram illustrating fixed provisioned concurrency for steady workloads in AWS Lambda">}}
 
 However, many workloads fluctuate a lot. Extreme elasticity and lack of configuration parameters have always been the essential benefits of AWS Lambda. It works great if you can tolerate the cold starts that come during scale-out. If not, you can explore more advanced scenarios for provisioning concurrency dynamically.
 
@@ -90,7 +99,7 @@ The second component is the autoscaling policy, which defines the conditions whe
 
 Quite often, increases in request rates are partially predictable. For example, usage increases during business hours and decreases at night.
 
-{{< figure src="./scheduled.png" caption="Provisioned concurrency matches predictable workload changes" >}}
+{{< figure src="./scheduled.png" caption="Provisioned concurrency matches predictable workload changes" alt="Graph showing how AWS Lambda provisioned concurrency adjusts to predictable workload fluctuations" >}}
 
 The following snippet sets two scheduled rules that switch between two levels of provisioned concurrency every day.
 
@@ -118,7 +127,7 @@ The example defines a helper function and calls it twice to set two schedules wi
 
 If your workload pattern is less predictable, you can configure autoscaling for provisioned concurrency based on the measured utilization.
 
-{{< figure src="./variable.png" caption="Provisioned concurrency matches the variation in workload" >}}
+{{< figure src="./variable.png" caption="Provisioned concurrency matches the variation in workload" alt="Graph depicting how AWS Lambda provisioned concurrency scales dynamically with fluctuating workloads" >}}
 
 Here is a basic example of a dynamic scaling policy.
 
@@ -139,7 +148,11 @@ const scaledConcurrency = new aws.appautoscaling.Policy("autoscaling", {
 
 Currently, there are issues with autoscaling based on the metrics, which makes provisioned concurrency scale less effectively than what the chart above shows. Hopefully, Amazon will fix these issues soon.
 
-## Pricing
+## AWS Pricing
+
+{{% notes type="info" %}}
+The most up-to-date pricing can be found on the [AWS Pricing page](https://aws.amazon.com/pricing/?aws-products-pricing.sort-by=item.additionalFields.productNameLowercase&aws-products-pricing.sort-order=asc&awsf.Free%20Tier%20Type=*all&awsf.tech-category=*all).
+{{% /notes %}}
 
 While hand-crafted Lambda warmers are virtually free, provisioned concurrency can be costly. The new pricing is an integral part of the change: Instead of purely per-call model, AWS charges per hour for provisioned capacity.
 
@@ -147,7 +160,7 @@ You would pay $0.015 per hour per GB of provisioned worker memory, even if a wor
 
 The per-invocation price gets a discount: $0.035 per GB-hour instead of the regular $0.06 per GB-hour. This change means that fully-utilized workers would be cheaper if provisioned compared to on-demand workers.
 
-{{< figure src="./pricing.png" caption="Comparison of the cost of a 1GB worker for two billing models" >}}
+{{< figure src="./pricing.png" caption="Comparison of the cost of a 1GB worker for two billing models" alt="Bar chart comparing the cost of a 1GB AWS Lambda worker under on-demand and provisioned concurrency pricing models" >}}
 
 The equilibrium point is at 60% utilization. Note that because the billed duration is rounded up to the nearest 100 ms for each execution, the utilization is not limited to 100%. A series of sequential executions can be processed by a single worker. If each execution is 10 ms, the charge is still 100 ms, and the total utilization can be as high as 1000% in terms of the chart above!
 
diff --git a/content/blog/software-developer-experience-devex-devx-devops-culture/developer-experience-devex-business-value-business-critical.png b/content/blog/developer-experience-business-critical/developer-experience-devex-business-value-business-critical.png
similarity index 100%
rename from content/blog/software-developer-experience-devex-devx-devops-culture/developer-experience-devex-business-value-business-critical.png
rename to content/blog/developer-experience-business-critical/developer-experience-devex-business-value-business-critical.png
diff --git a/content/blog/software-developer-experience-devex-devx-devops-culture/developer-experience-more-engaged-developers.png b/content/blog/developer-experience-business-critical/developer-experience-more-engaged-developers.png
similarity index 100%
rename from content/blog/software-developer-experience-devex-devx-devops-culture/developer-experience-more-engaged-developers.png
rename to content/blog/developer-experience-business-critical/developer-experience-more-engaged-developers.png
diff --git a/content/blog/software-developer-experience-devex-devx-devops-culture/dont-interrupt-a-programmer-jason-heeris.jpg b/content/blog/developer-experience-business-critical/dont-interrupt-a-programmer-jason-heeris.jpg
similarity index 100%
rename from content/blog/software-developer-experience-devex-devx-devops-culture/dont-interrupt-a-programmer-jason-heeris.jpg
rename to content/blog/developer-experience-business-critical/dont-interrupt-a-programmer-jason-heeris.jpg
diff --git a/content/blog/software-developer-experience-devex-devx-devops-culture/employee-developer-experience-focus-areas.jpeg b/content/blog/developer-experience-business-critical/employee-developer-experience-focus-areas.jpeg
similarity index 100%
rename from content/blog/software-developer-experience-devex-devx-devops-culture/employee-developer-experience-focus-areas.jpeg
rename to content/blog/developer-experience-business-critical/employee-developer-experience-focus-areas.jpeg
diff --git a/content/blog/software-developer-experience-devex-devx-devops-culture/github-developer-experience-formula.png b/content/blog/developer-experience-business-critical/github-developer-experience-formula.png
similarity index 100%
rename from content/blog/software-developer-experience-devex-devx-devops-culture/github-developer-experience-formula.png
rename to content/blog/developer-experience-business-critical/github-developer-experience-formula.png
diff --git a/content/blog/software-developer-experience-devex-devx-devops-culture/github-study-what-developers-spend-themost-time-on-daily.png b/content/blog/developer-experience-business-critical/github-study-what-developers-spend-themost-time-on-daily.png
similarity index 100%
rename from content/blog/software-developer-experience-devex-devx-devops-culture/github-study-what-developers-spend-themost-time-on-daily.png
rename to content/blog/developer-experience-business-critical/github-study-what-developers-spend-themost-time-on-daily.png
diff --git a/content/blog/software-developer-experience-devex-devx-devops-culture/index.md b/content/blog/developer-experience-business-critical/index.md
similarity index 92%
rename from content/blog/software-developer-experience-devex-devx-devops-culture/index.md
rename to content/blog/developer-experience-business-critical/index.md
index ad8394cf5376..cf76bfa0c4de 100644
--- a/content/blog/software-developer-experience-devex-devx-devops-culture/index.md
+++ b/content/blog/developer-experience-business-critical/index.md
@@ -1,46 +1,20 @@
 ---
-title: "Beyond Productivity: Developer Experience is Business Critical"
+title: "Why Developer Experience (DevEx) is Business Critical"
 allow_long_title: true
-
-# The date represents the post's publish date, and by default corresponds with
-# the date and time this file was generated. Dates are used for display and
-# ordering purposes only; they have no effect on whether or when a post is
-# published. To influence the ordering of posts published on the same date, use
-# the time portion of the date value; posts are sorted in descending order by
-# date/time.
 date: 2024-02-20T20:47:44Z
-
-# The draft setting determines whether a post is published. Set it to true if
-# you want to be able to merge the post without publishing it.
-draft: false
-
-# Use the meta_desc property to provide a brief summary (one or two sentences)
-# of the content of the post, which is useful for targeting search results or
-# social-media previews. This field is required or the build will fail the
-# linter test. Max length is 160 characters.
-meta_desc: Improving developer experience does more than increase productivity and efficiency. It is crucial for business success. Here's what you need to know.
-
-# The meta_image appears in social-media previews and on the blog home page. A
-# placeholder image representing the recommended format, dimensions and aspect
-# ratio has been provided for you.
+updated: 2025-03-19
+meta_desc: Developer Experience (DevEx) is more than productivity—it drives business success. Learn how DevEx improves innovation, retention, and revenue.
 meta_image: developer-experience-devex-business-value-business-critical.png
-
-# At least one author is required. The values in this list correspond with the
-# `id` properties of the team member files at /data/team/team. Create a file for
-# yourself if you don't already have one.
 authors:
     - sara-huddleston
-
-# At least one tag is required. Lowercase, hyphen-delimited is recommended.
 tags:
     - developer-experience-devex
     - devops
     - platform-engineering
     - developer-portals
     - software-development
-
-# See the blogging docs at https://github.com/pulumi/docs/blob/master/BLOGGING.md
-# for details, and please remove these comments before submitting for review.
+aliases:
+    - /blog/software-developer-experience-devex-devx-devops-culture
 ---
 
 "Developer experience is hard to sell," said Cleve Littlefield, Engineering Manager at Pulumi, during a casual meeting. With experience as both an end-user developer and a lead in self-service platform implementation, Cleve's observation stuck with me.
@@ -63,7 +37,7 @@ Intriguingly, engineering teams may perceive its value differently. Therefore, w
 - [What DevEx is not](/blog/software-developer-experience-devex-devx-devops-culture/#what-devex-is-not)
 - [Frequently asked questions](/blog/software-developer-experience-devex-devx-devops-culture/#frequently-asked-questions)
 
-## What is developer experience
+## What is developer experience?
 
 Developer experience (DevEx), also referred to as DevX or DX, encompasses systems, technology, processes, and culture that collectively impact the effectiveness of software development. It looks at all components of a developer's ecosystem—from environment to workflows to tools—and evaluates how they contribute to developer productivity, satisfaction, and operational impact.
 
@@ -71,7 +45,7 @@ Developer experience revolves around the ease or difficulty of executing essenti
 
 The quality of the experience is equally vital for developers building and managing internal software as it is for those involved in developing customer-facing software products.
 
-## Is developer experience important
+## Is developer experience important?
 
 It is not just important. **It's business critical.** If your company is in the business of creating and selling software or relies on critical internal software, developers are vital internal stakeholders to your business foundation.
 
@@ -114,7 +88,7 @@ Noah Gift, the founder of Pragmatic AI Labs and a professor at Duke University s
 
 Merely having skilled developers is insufficient. Developers also require the appropriate tools and processes to excel in their work. Top-tier developers anticipate the availability of such resources, influencing the hiring and retention of talent.
 
-## What does a great developer experience look like
+## What does a great developer experience look like?
 
 Engineering teams that have good developer experiences are more productive and efficient. Great DevEx is often enabled by a platform where the end-users are the developers.
 
@@ -128,7 +102,7 @@ Engineering teams that have good developer experiences are more productive and e
 
 Without the proper tools, progress may slow down the development process and hinder developer productivity. It becomes crucial to implement appropriate measures to avoid disruptions that could impact everyone involved, including the developers themselves. Although not often mentioned, [DevOps](https://www.pulumi.com/what-is/what-is-devops/) and [Platform Engineering](https://www.pulumi.com/what-is/what-is-platform-engineering/) also aim to enhance the developer experience and achieve the associated benefits.
 
-## How does DevEx intersect with DevOps
+## How does DevEx intersect with DevOps?
 
 DevOps is about developers and operations working together and sharing values, assumptions, and responsibility for the software they build and maintain.
 
diff --git a/content/blog/software-developer-experience-devex-devx-devops-culture/meta.png b/content/blog/developer-experience-business-critical/meta.png
similarity index 100%
rename from content/blog/software-developer-experience-devex-devx-devops-culture/meta.png
rename to content/blog/developer-experience-business-critical/meta.png
diff --git a/content/blog/software-developer-experience-devex-devx-devops-culture/steps-to-improve-developer-experience.jpg b/content/blog/developer-experience-business-critical/steps-to-improve-developer-experience.jpg
similarity index 100%
rename from content/blog/software-developer-experience-devex-devx-devops-culture/steps-to-improve-developer-experience.jpg
rename to content/blog/developer-experience-business-critical/steps-to-improve-developer-experience.jpg
diff --git a/content/blog/software-developer-experience-devex-devx-devops-culture/what-impact-are-you-experiencing-resulting-of-improving-developer-experience.jpg b/content/blog/developer-experience-business-critical/what-impact-are-you-experiencing-resulting-of-improving-developer-experience.jpg
similarity index 100%
rename from content/blog/software-developer-experience-devex-devx-devops-culture/what-impact-are-you-experiencing-resulting-of-improving-developer-experience.jpg
rename to content/blog/developer-experience-business-critical/what-impact-are-you-experiencing-resulting-of-improving-developer-experience.jpg
diff --git a/content/blog/intro-to-step-functions/index.md b/content/blog/intro-to-step-functions/index.md
index f0420b4aa077..e9ab8ed6e7e7 100644
--- a/content/blog/intro-to-step-functions/index.md
+++ b/content/blog/intro-to-step-functions/index.md
@@ -1,7 +1,8 @@
 ---
-title: "Intro to AWS Serverless Step Functions"
+title: "The Beginner's Guide to AWS Serverless Step Functions"
 date: 2020-02-13
-meta_desc: "An Introduction to building serverless apps with AWS Step Functions."
+updated: 2025-03-19
+meta_desc: "Learn how to build AWS Step Functions to automate workflows & connect AWS services. Follow this step-by-step guide to deploy serverless apps."
 meta_image: meta-step-function.png
 authors:
     - sophia-parafina
@@ -13,7 +14,7 @@ tags:
 
 <!--more-->
 
-## Just the basics
+## Getting Started with AWS Step Functions
 
 Let’s start with a hello world function in an AWS Lambda. You can start the [example from Github](https://github.com/pulumi/examples/tree/master/aws-py-stepfunctions) by selecting the `Deploy with Pulumi` button. A new project page is created automatically in the Pulumi Service, select `Create Project` to get started. Follow the steps to copy the project locally. As with any Python project, we recommend creating a virtual environment to store project-specific dependencies.
 
@@ -96,15 +97,15 @@ aws stepfunctions start-execution --state-machine-arn $(pulumi stack output stat
 
 Then check the AWS console to see if the lambda was executed.
 
-![AWS Severless Console](sf-console-1.png)
+![AWS Severless Console Step Functions screenshot](sf-console-1.png)
 
 Clicking on the `Name` displays the step details, which include the input and out, i.e., ‘Hello world!’
 
-![AWS Severless Console  with 1 step function](sf-console-2.png)
+![AWS Severless Console with 1 step function visual workflow](sf-console-2.png)
 
 The AWS console provides a graph of your workflow and the details of each step. Clicking on `Output` shows “Hello world” meaning that the call to the lambda function was successful.
 
-## Add another step
+## Expand AWS Step Functions Workflow
 
 Now that we have a basic flow, let’s add another step. To keep it simple we’ll create another simple function that returns “Nice to meet you.” To do this, make a file called `nice.py` and add the function.
 
@@ -170,7 +171,7 @@ aws stepfunctions start-execution --state-machine-arn $(pulumi stack output stat
 
 You can see the results in the AWS Console. The workflow graph shows the new step, and the output from `nice_fn` is “Nice to meet you.”
 
-![AWS Serverless Console with 2 step functions](sf-console-3.png)
+![AWS Serverless Console with 2 step functions visual workflow](sf-console-3.png)
 
 ## What’s next
 
diff --git a/content/blog/serverless-api/index.md b/content/blog/serverless-api/index.md
index 34d38017bdb3..4a6b0589a469 100644
--- a/content/blog/serverless-api/index.md
+++ b/content/blog/serverless-api/index.md
@@ -1,8 +1,9 @@
 ---
 title: "Host your Python app for $1.28 a month"
 date: 2025-01-29T00:00:00
+updated: 2025-03-13
 draft: false
-meta_desc: How to run web services for practically nothing. AWS Lambda hosting for containers
+meta_desc: Learn how to deploy a Flask API in an AWS Lambda container for just $1.28/month. Zero cost when idle, instant scaling – great for low-traffic apps.
 meta_image: meta.png
 authors:
     - adam-gordon-bell
@@ -71,7 +72,17 @@ A Flask app on AWS Lambda with 512 MB memory and 40,000 requests per month would
     </figcaption>
 </div>
 
-## **Why this approach is different**
+What we'll cover:
+
+1. [Why this approach is different](/blog/serverless-api/#why-this-approach-is-different)
+2. [Building Flask application](/blog/serverless-api/#building-our-flask-application)
+3. [Containerizing for Lambda](/blog/serverless-api/#containerizing-for-lambda)
+4. [No special Lambda knowledge required](/blog/serverless-api/#no-special-lambda-knowledge-required)
+5. [Infrastructure as code with Pulumi](/blog/serverless-api/#infrastructure-as-code-with-pulumi)
+6. [Why I love this approach](/blog/serverless-api/#why-i-love-this-approach)
+7. [Conclusion](/blog/serverless-api/#conclusion)
+
+## **Why AWS Lambda is Ideal for Low-Traffic Python Apps**
 
 "But Lambda means one function per REST endpoint, right?" While that's how serverless was initially positioned, the Lambda monolith approach here is a more straightforward pattern. Take any REST API service, package it as a container, put it in Lambda, and give it an entire HTTP route behind an IP, domain name, or API Gateway prefix. Done.
 
@@ -88,13 +99,13 @@ Let me show you how to set this up. With some Pulumi Python code for setting up
 
 {{< notes type="info" >}}
 
-## Why containers?
+### Why containers?
 
 Containers let us package everything—code, system dependencies, runtime—into one unit. Any HTTP service that fits in a container will work: Flask, Express, Rails, plus whatever system tools you need. Local testing? Just start the container. No Lambda-specific configuration is required.
 
 {{< /notes >}}
 
-## **Building our Flask application**
+## **Building our Flask application in Python**
 
 Let's start with the fun part - writing some Python code, but I will keep it really simple. We'll build a simple Flask application that demonstrates why running a full web framework in Lambda makes sense.
 
@@ -213,7 +224,7 @@ And since this is just a standard Python application in a container, you can use
 
 ## **Infrastructure as code with Pulumi**
 
-Now let's get our containerized Flask app into AWS. While you could click around in the AWS console, we're going to do this properly with infrastructure as code. You are welcome to use Cloudformation or manual setup, but it's nice to be able to keep everything in Python, and this is the Pulumi blog. Using Python to define our AWS resources means we get type-checking and proper IDE support.
+Now let's get our containerized Flask app into AWS. While you could click around in the AWS console, we're going to do this properly with infrastructure as code. You are welcome to use [Cloudformation](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/Welcome.html) or manual setup, but it's nice to be able to keep everything in Python, and this is the Pulumi blog. Using Python to define our AWS resources means we get type-checking and proper IDE support.
 
 Here's our infrastructure code:
 
@@ -343,7 +354,7 @@ You can find the full code in the [service status monitor repo](https://github.c
 
 {{< notes type="info" >}}
 
-## **Alternative approaches**
+### **Alternative approaches**
 
 There are other ways to run containers that scale to zero. [Google Cloud Run](https://www.pulumi.com/registry/packages/gcp/api-docs/cloudrun/service/) offers similar functionality on GCP, and [AWS App Runner](https://www.pulumi.com/blog/deploy-applications-with-aws-app-runner/) is another AWS service that can do this. Both have similar pricing models—very cheap for low-volume services. And [SST](https://www.pulumi.com/blog/from-cdk-pulumi-evolution-of-sst/) is a similar solution for getting TypeScript / JavaScript solutions into an AWS Lambda.
 


Reviews:
user: login: adamgordonbell
state: APPROVED
author_association: CONTRIBUTOR
submitted_at: 2025-03-20T10:48:14Z
user: login: asafashirov
state: COMMENTED
author_association: CONTRIBUTOR
submitted_at: 2025-03-20T15:05:22Z
user: login: adamgordonbell
state: COMMENTED
author_association: CONTRIBUTOR
submitted_at: 2025-03-20T15:23:52Z

Review comments:
diff_hunk: @@ -1,19 +1,28 @@
 ---
 title: "Provisioned Concurrency: Avoiding Cold Starts in AWS Lambda"
 date: 2019-12-19
-meta_desc: "Using Pulumi to configure AWS Lambda provisioned concurrency"
+updated: 2025-03-19
+meta_desc: "Learn how to configure AWS Lambda Provisioned Concurrency to minimize cold starts and improve performance with Pulumi."
 meta_image: variable.png
 authors: ["mikhail-shilkov"]
 tags: ["AWS", "Serverless"]
 ---
 
 AWS Lambda cold starts (the time it takes for AWS to assign a worker to a request) are a major frustration point of many serverless programmers. In this article, we will take a look at the problem of latency-critical serverless applications, and how [Provisioned Concurrency](https://aws.amazon.com/blogs/aws/new-provisioned-concurrency-for-lambda-functions/) impacts the status-quo.
 
+1. [Concurrency Model of AWS Lambda](/blog/aws-lambda-provisioned-concurrency-no-cold-starts/#concurrency-model-of-aws-lambda)
path: content/blog/aws-lambda-provisioned-concurrency-no-cold-starts/index.md
user: login: adamgordonbell
body: Would be nice update hugo to have TOCs auto added to the side bar based on a flag. 
created_at: 2025-03-20T10:48:09Z
author_association: CONTRIBUTOR
diff_hunk: @@ -1,19 +1,28 @@
 ---
 title: "Provisioned Concurrency: Avoiding Cold Starts in AWS Lambda"
 date: 2019-12-19
-meta_desc: "Using Pulumi to configure AWS Lambda provisioned concurrency"
+updated: 2025-03-19
+meta_desc: "Learn how to configure AWS Lambda Provisioned Concurrency to minimize cold starts and improve performance with Pulumi."
 meta_image: variable.png
 authors: ["mikhail-shilkov"]
 tags: ["AWS", "Serverless"]
 ---
 
 AWS Lambda cold starts (the time it takes for AWS to assign a worker to a request) are a major frustration point of many serverless programmers. In this article, we will take a look at the problem of latency-critical serverless applications, and how [Provisioned Concurrency](https://aws.amazon.com/blogs/aws/new-provisioned-concurrency-for-lambda-functions/) impacts the status-quo.
 
+1. [Concurrency Model of AWS Lambda](/blog/aws-lambda-provisioned-concurrency-no-cold-starts/#concurrency-model-of-aws-lambda)
path: content/blog/aws-lambda-provisioned-concurrency-no-cold-starts/index.md
user: login: asafashirov
body: that thought also crossed my mind
created_at: 2025-03-20T15:05:22Z
author_association: CONTRIBUTOR
diff_hunk: @@ -1,19 +1,28 @@
 ---
 title: "Provisioned Concurrency: Avoiding Cold Starts in AWS Lambda"
 date: 2019-12-19
-meta_desc: "Using Pulumi to configure AWS Lambda provisioned concurrency"
+updated: 2025-03-19
+meta_desc: "Learn how to configure AWS Lambda Provisioned Concurrency to minimize cold starts and improve performance with Pulumi."
 meta_image: variable.png
 authors: ["mikhail-shilkov"]
 tags: ["AWS", "Serverless"]
 ---
 
 AWS Lambda cold starts (the time it takes for AWS to assign a worker to a request) are a major frustration point of many serverless programmers. In this article, we will take a look at the problem of latency-critical serverless applications, and how [Provisioned Concurrency](https://aws.amazon.com/blogs/aws/new-provisioned-concurrency-for-lambda-functions/) impacts the status-quo.
 
+1. [Concurrency Model of AWS Lambda](/blog/aws-lambda-provisioned-concurrency-no-cold-starts/#concurrency-model-of-aws-lambda)
path: content/blog/aws-lambda-provisioned-concurrency-no-cold-starts/index.md
user: login: adamgordonbell
body: Hugo does support it:

https://gohugo.io/methods/page/tableofcontents/

I haven't tried that, but best would be putting it in the left hand side based on some flag in front matter but even just adding `{{ .TableOfContents }}` into the content might work. Something to think about for future. 
created_at: 2025-03-20T15:23:52Z
author_association: CONTRIBUTOR

PR comments:
user: login: pulumi-bot
created_at: 2025-03-19T22:41:52Z
body: Your site preview for commit 982a9ac0 is ready! :tada:

http://www-testing-pulumi-docs-origin-pr-14458-982a9ac0.s3-website.us-west-2.amazonaws.com.
author_association: COLLABORATOR
user: login: Marlowe992
created_at: 2025-03-19T22:52:45Z
body: Looks good to me. TY!
author_association: CONTRIBUTOR