<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>AWS on Lonfo Blog</title><link>https://blog.lonfo.fr/tags/aws/</link><description>Recent content in AWS on Lonfo Blog</description><generator>Hugo</generator><language>en-US</language><lastBuildDate>Tue, 20 Oct 2026 09:00:00 +0200</lastBuildDate><atom:link href="https://blog.lonfo.fr/tags/aws/index.xml" rel="self" type="application/rss+xml"/><item><title>Daily Actions: Read your data back with a DynamoDB Query behind GET /actions</title><link>https://blog.lonfo.fr/posts/daily-actions-list-dynamodb-query-api-gateway-lambda/</link><pubDate>Tue, 20 Oct 2026 09:00:00 +0200</pubDate><guid>https://blog.lonfo.fr/posts/daily-actions-list-dynamodb-query-api-gateway-lambda/</guid><description>&lt;h1 id="daily-actions-read-your-data-back-with-a-dynamodb-query-behind-get-actions">Daily Actions: Read your data back with a DynamoDB Query behind GET /actions&lt;/h1>
&lt;p>In the previous article, our users learned to &lt;strong>write&lt;/strong>: a signed-in user sends an action to &lt;code>POST /actions&lt;/code>, a Lambda stores it in DynamoDB, and anonymous requests are rejected. But if you add a task and refresh the &lt;code>/todo&lt;/code> page, the list stays empty. Nothing reads the data back.&lt;/p>
&lt;p>In this article we add the missing half: a &lt;code>GET /actions&lt;/code> endpoint that returns &lt;strong>only the actions of the signed-in user&lt;/strong>, using a DynamoDB &lt;code>Query&lt;/code>.&lt;/p></description></item><item><title>Daily Actions: Save data in DynamoDB through an API Gateway and Lambda secured by Cognito</title><link>https://blog.lonfo.fr/posts/daily-actions-secure-api-gateway-lambda-dynamodb-with-cognito/</link><pubDate>Tue, 13 Oct 2026 09:00:00 +0200</pubDate><guid>https://blog.lonfo.fr/posts/daily-actions-secure-api-gateway-lambda-dynamodb-with-cognito/</guid><description>&lt;h1 id="daily-actions-save-data-in-dynamodb-through-an-api-gateway-and-lambda-secured-by-cognito">Daily Actions: Save data in DynamoDB through an API Gateway and Lambda secured by Cognito&lt;/h1>
&lt;p>In the previous article, our static Next.js application learned to authenticate users with Amazon Cognito. But a login page protects nothing by itself: as long as our backend accepts anonymous requests, anyone can write into our database.&lt;/p>
&lt;p>In this article we connect the pieces. The signed-in user will send a new action to an API Gateway endpoint, a Lambda function will insert it into DynamoDB, and &lt;strong>only requests carrying a valid Cognito token will get through&lt;/strong>.&lt;/p></description></item><item><title>Daily Actions: Secure your Next.js application with AWS Cognito and CDK</title><link>https://blog.lonfo.fr/posts/daily-actions-secure-your-next.js-application-with-aws-cognito-and-cdk/</link><pubDate>Fri, 25 Sep 2026 08:15:36 +0200</pubDate><guid>https://blog.lonfo.fr/posts/daily-actions-secure-your-next.js-application-with-aws-cognito-and-cdk/</guid><description>&lt;h1 id="daily-actions-secure-your-nextjs-application-with-aws-cognito-and-cdk">Daily Actions: Secure your Next.js application with AWS Cognito and CDK&lt;/h1>
&lt;p>Now that our Next.js application is live on S3 and CloudFront, it&amp;rsquo;s time to add an essential component: authentication. With a static export architecture, traditional server-based solutions (like NextAuth.js with Node.js API routes) do not work directly.&lt;/p>
&lt;p>We will use AWS Cognito to manage our users (User Pool) and integrate the AWS SDK (or Amplify) on the front-end to connect our static application securely. CDK handles all the infrastructure configuration.&lt;/p></description></item><item><title>How to Design a High-Performance DynamoDB Table</title><link>https://blog.lonfo.fr/posts/how-to-design-a-high-performance-dynamodb-table/</link><pubDate>Mon, 14 Sep 2026 12:25:40 +0100</pubDate><guid>https://blog.lonfo.fr/posts/how-to-design-a-high-performance-dynamodb-table/</guid><description>&lt;h1 id="how-to-design-a-high-performance-dynamodb-table">How to Design a High-Performance DynamoDB Table?&lt;/h1>
&lt;h2 id="introduction">Introduction&lt;/h2>
&lt;p>If you are coming into the world of DynamoDB with a relational background (PostgreSQL, MySQL, Oracle), forget everything you know. The first mistake 90% of developers make is designing a NoSQL database like a SQL database: creating tables per entity, excessively normalizing, and hoping to run clean &lt;code>JOIN&lt;/code> later.&lt;/p>
&lt;p>Result? It is a guaranteed crash in production: collapsing performance, exploding AWS costs, and impossible queries.&lt;/p></description></item><item><title>Daily Actions: Next.js on AWS (Static Export): S3 + CloudFront in minutes with CDK</title><link>https://blog.lonfo.fr/posts/daily-actions-next.js-on-aws-static-export-s3--cloudfront-in-minutes-with-cdk/</link><pubDate>Sun, 05 Apr 2026 10:00:00 +0100</pubDate><guid>https://blog.lonfo.fr/posts/daily-actions-next.js-on-aws-static-export-s3--cloudfront-in-minutes-with-cdk/</guid><description>&lt;h1 id="nextjs-on-aws-static-export-s3--cloudfront-in-minutes-with-cdk">Next.js on AWS (Static Export): S3 + CloudFront in minutes with CDK&lt;/h1>
&lt;p>Hosting a Next.js app statically on AWS uses the same building blocks: a private S3 bucket for files, CloudFront for global delivery, and OAC to restrict direct S3 access. We automate everything with the AWS CDK in TypeScript, without depending on Route 53.&lt;/p>
&lt;p>This guide scaffolds a Next.js app (static export), then deploys the exported output (&lt;code>out/&lt;/code>) to S3 behind CloudFront in one command.&lt;/p></description></item><item><title>Angular Deployment on AWS: The Ultimate S3 + CloudFront Guide with CDK</title><link>https://blog.lonfo.fr/posts/angular-deployment-on-aws-the-ultimate-s3--cloudfront-guide-with-cdk/</link><pubDate>Sat, 17 Jan 2026 09:42:26 +0100</pubDate><guid>https://blog.lonfo.fr/posts/angular-deployment-on-aws-the-ultimate-s3--cloudfront-guide-with-cdk/</guid><description>&lt;h1 id="angular-deployment-on-aws-the-ultimate-s3--cloudfront-guide-with-cdk">Angular Deployment on AWS: The Ultimate S3 + CloudFront Guide with CDK&lt;/h1>
&lt;p>Deploying an Angular Single Page Application (SPA) on AWS doesn&amp;rsquo;t have to be complicated. Forget manual console configuration; we are going to build a Serverless infrastructure, secured by OAC and optimized by CloudFront, all without depending on Route 53.&lt;/p>
&lt;div
 class="alert alert-warning my-6 overflow-hidden rounded-lg border-l-4 transition-all duration-200 ease-out hover:-translate-y-0.5 hover:shadow-md"
 style="background-color: color-mix(in srgb, var(--color-warning) 10%, transparent);
 border-left-color: var(--color-warning);
 --hover-bg: color-mix(in srgb, var(--color-warning) 15%, transparent);"
 onmouseover="this.style.backgroundColor = this.style.getPropertyValue('--hover-bg')"
 onmouseout="this.style.backgroundColor = 'color-mix(in srgb, var(--color-warning) 10%, transparent)'"
 role="alert"
 aria-labelledby="alert-0-title">
 
 &lt;div
 class="
 cursor-pointer
 flex items-center justify-between p-4"
 
 onclick="toggleAlert('alert-0')" role="button" tabindex="0"
 aria-expanded="true" aria-controls="alert-0-content"
 onkeydown="if(event.key==='Enter'||event.key===' '){toggleAlert('alert-0');event.preventDefault();}"
 >
 &lt;div class="flex items-center gap-3">
 
 &lt;div
 class="flex-shrink-0"
 style="color: var(--color-warning);">
 
 &lt;svg class="h-5 w-5"
 fill="none"
 stroke="currentColor"
 viewBox="0 0 24 24">&lt;path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M12 9v2m0 4h.01m-6.938 4h13.856c1.54 0 2.502-1.667 1.732-2.5L13.732 4c-.77-.833-1.732-.833-2.464 0L4.34 16.5c-.77.833.192 2.5 1.732 2.5z" />
&lt;/svg>
 &lt;/div>

 
 &lt;h4
 id="alert-0-title"
 class="m-0 font-semibold"
 style="color: var(--color-warning);">
 Tutorial Objectives
 &lt;/h4>
 &lt;/div>

 
 
 &lt;div
 class="flex-shrink-0 transition-transform duration-200"
 style="color: var(--color-warning);"
 id="alert-0-chevron">
 
 &lt;svg class="h-4 w-4"
 fill="none"
 stroke="currentColor"
 viewBox="0 0 24 24">&lt;path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M19 9l-7 7-7-7" />
&lt;/svg>
 &lt;/div>
 
 &lt;/div>

 
 &lt;div
 id="alert-0-content"
 class="alert-content px-4 pb-4">
 &lt;div class="prose prose-sm text-foreground/90 max-w-none">
 &lt;ol>
&lt;li>Organize a global project structure (Frontend + Infra).&lt;/li>
&lt;li>Create a private S3 bucket for storage.&lt;/li>
&lt;li>CConfigure CloudFront for HTTPS and Angular routing.&lt;/li>
&lt;li>Deploy everything with a single command.&lt;/li>
&lt;/ol>
 &lt;/div>
 &lt;/div>
 &lt;/div>

 &lt;script>
 function toggleAlert(alertId) {
 const content = document.getElementById(alertId + "-content");
 const chevron = document.getElementById(alertId + "-chevron");
 const header = content.previousElementSibling;

 if (content.classList.contains("hidden")) {
 content.classList.remove("hidden");
 chevron.style.transform = "rotate(180deg)";
 header.setAttribute("aria-expanded", "true");
 } else {
 content.classList.add("hidden");
 chevron.style.transform = "rotate(0deg)";
 header.setAttribute("aria-expanded", "false");
 }
 }
 &lt;/script>

&lt;h2 id="prerequisites">Prerequisites&lt;/h2>
&lt;p>Before starting, you will need:&lt;/p></description></item><item><title>Give memory to your API: Build a complete CRUD with DynamoDB and CDK</title><link>https://blog.lonfo.fr/posts/give-memory-to-your-api-build-a-complete-crud-with-dynamodb-and-cdk/</link><pubDate>Fri, 14 Nov 2025 12:25:40 +0100</pubDate><guid>https://blog.lonfo.fr/posts/give-memory-to-your-api-build-a-complete-crud-with-dynamodb-and-cdk/</guid><description>&lt;h1 id="give-memory-to-your-api-build-a-complete-crud-with-dynamodb-and-cdk">Give memory to your API: Build a complete CRUD with DynamoDB and CDK&lt;/h1>
&lt;p>In the previous articles, we gradually introduced you to serverless, starting with the creation and deployment of a Lambda function in the first article, followed by the addition of an API Gateway to trigger the Lambda in the second article.
In both cases, the returned data consisted of simple mock responses. You have therefore acquired a solid foundation to move on to the next level: data persistence.
As stated in the title, we will use DynamoDB and remain within the same approach: the discovery of AWS CDK.&lt;/p></description></item><item><title>Build your first serverless API with API Gateway and Lambda function using CDK and TypeScript</title><link>https://blog.lonfo.fr/posts/build-your-first-serverless-api-with-api-gateway-and-lambda-function-using-cdk-and-typescript/</link><pubDate>Thu, 23 Oct 2025 20:35:01 +0100</pubDate><guid>https://blog.lonfo.fr/posts/build-your-first-serverless-api-with-api-gateway-and-lambda-function-using-cdk-and-typescript/</guid><description>&lt;h1 id="build-your-first-serverless-api-with-api-gateway-and-lambda-function-using-cdk-and-typescript">Build your first serverless API with API Gateway and Lambda function using CDK and TypeScript&lt;/h1>
&lt;p>Serverless is one of the most powerful approaches for building fast ,scalable and cost effective applications . In this article, I will walk you through building a simple API with two endpoints in under 10 minutes . We will leverage AWS lambda and Amazon API Gateway, deploying the entire infrastructure using AWS CDK with TypeScript.&lt;/p></description></item><item><title>Hello World Serverless : Deploy an AWS Lambda Function with CDK and TypeScript</title><link>https://blog.lonfo.fr/posts/hello-world-serverless-deploy-an-aws-lambda-function-with-cdk-and-typescript/</link><pubDate>Mon, 06 Oct 2025 20:59:13 +0100</pubDate><guid>https://blog.lonfo.fr/posts/hello-world-serverless-deploy-an-aws-lambda-function-with-cdk-and-typescript/</guid><description>&lt;h1 id="hello--world-serverless--deploy-an-aws-lambda-function-with-cdk-and-typescript">Hello World Serverless : Deploy an AWS Lambda Function with CDK and TypeScript&lt;/h1>
&lt;p>Serverless has become one of the most popular approaches for building &lt;strong>fast&lt;/strong>, &lt;strong>scalable&lt;/strong> and &lt;strong>cost-effective&lt;/strong> applications. With &lt;strong>AWS Lambda&lt;/strong> you only focus on writing code and AWS takes care of everything else: scaling, servers and availability.&lt;/p>
&lt;p>But there is a tool taht makes the experiences even better : &lt;strong>AWS CDK&lt;/strong>.
It allows you to define your infrastructure using familiar programming languages such as &lt;strong>TypeScript&lt;/strong>, &lt;strong>Java&lt;/strong>, &lt;strong>Python&lt;/strong>,&lt;strong>C#&lt;/strong> or &lt;strong>Go&lt;/strong>, instead of writing raw of CloudFormation template.&lt;/p></description></item></channel></rss>