<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>Forem: Ryo Ichiki</title>
    <description>The latest articles on Forem by Ryo Ichiki (@ryichk).</description>
    <link>https://forem.com/ryichk</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F619673%2F60238651-1a14-45cc-b96b-70fb8507fd9b.png</url>
      <title>Forem: Ryo Ichiki</title>
      <link>https://forem.com/ryichk</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://forem.com/feed/ryichk"/>
    <language>en</language>
    <item>
      <title>Deploying a Go Echo Application with Lambda Web Adapter, SAM, and Lambda Function URLs</title>
      <dc:creator>Ryo Ichiki</dc:creator>
      <pubDate>Sun, 27 Apr 2025 11:50:59 +0000</pubDate>
      <link>https://forem.com/ryichk/deploying-a-go-echo-application-with-lambda-web-adapter-sam-and-lambda-function-urls-1j42</link>
      <guid>https://forem.com/ryichk/deploying-a-go-echo-application-with-lambda-web-adapter-sam-and-lambda-function-urls-1j42</guid>
      <description>&lt;h1&gt;
  
  
  Background
&lt;/h1&gt;

&lt;p&gt;While researching how to run a Go web application on AWS Lambda, I came across a technology called the &lt;a href="https://github.com/awslabs/aws-lambda-web-adapter" rel="noopener noreferrer"&gt;AWS Lambda Web Adapter&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;The AWS Lambda Web Adapter allows web applications built with various frameworks (e.g., Express.js, Flask, Laravel, Next.js, etc.) to run on Lambda.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://github.com/awslabs/aws-lambda-web-adapter?tab=readme-ov-file#examples" rel="noopener noreferrer"&gt;https://github.com/awslabs/aws-lambda-web-adapter?tab=readme-ov-file#examples&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;It’s reasonable to assume that web application frameworks not listed in the official examples, such as Ruby on Rails, can also be run on Lambda.&lt;/p&gt;

&lt;p&gt;In this case, I used the AWS Lambda Web Adapter and SAM (&lt;a href="https://github.com/aws/serverless-application-model" rel="noopener noreferrer"&gt;Serverless Application Model&lt;/a&gt;) to deploy a simple server application built with the Go web framework &lt;a href="https://github.com/labstack/echo" rel="noopener noreferrer"&gt;Echo&lt;/a&gt; via Lambda Function URLs.&lt;/p&gt;

&lt;p&gt;The code I created is publicly available as a template repository on GitHub:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://github.com/ryichk/go-echo-lambda-function-url-template" rel="noopener noreferrer"&gt;https://github.com/ryichk/go-echo-lambda-function-url-template&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;While researching, I found samples using &lt;a href="https://github.com/gin-gonic/gin" rel="noopener noreferrer"&gt;Gin&lt;/a&gt; in the official AWS Lambda Web Adapter examples and a Zenn article with a &lt;a href="https://github.com/gofiber/fiber" rel="noopener noreferrer"&gt;Fiber&lt;/a&gt; sample. However, I couldn’t find any samples using Echo, so I decided to publish this article.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://github.com/awslabs/aws-lambda-web-adapter/tree/main/examples/gin" rel="noopener noreferrer"&gt;https://github.com/awslabs/aws-lambda-web-adapter/tree/main/examples/gin&lt;/a&gt;&lt;/p&gt;

&lt;h1&gt;
  
  
  Steps and Explanation
&lt;/h1&gt;

&lt;h2&gt;
  
  
  1. Building the Echo Server
&lt;/h2&gt;

&lt;p&gt;Build a web application using Echo. For this example, I created a simple app that displays &lt;code&gt;Hello!&lt;/code&gt; when accessing &lt;a href="http://localhost:8000" rel="noopener noreferrer"&gt;localhost:8000/&lt;/a&gt;.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight go"&gt;&lt;code&gt;&lt;span class="k"&gt;package&lt;/span&gt; &lt;span class="n"&gt;main&lt;/span&gt;

&lt;span class="k"&gt;import&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;
    &lt;span class="s"&gt;"net/http"&lt;/span&gt;

    &lt;span class="s"&gt;"github.com/labstack/echo/v4"&lt;/span&gt;
    &lt;span class="s"&gt;"github.com/labstack/echo/v4/middleware"&lt;/span&gt;
&lt;span class="p"&gt;)&lt;/span&gt;

&lt;span class="k"&gt;func&lt;/span&gt; &lt;span class="n"&gt;main&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="n"&gt;e&lt;/span&gt; &lt;span class="o"&gt;:=&lt;/span&gt; &lt;span class="n"&gt;echo&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;New&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt;
    &lt;span class="n"&gt;e&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;GET&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s"&gt;"/"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;hello&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
    &lt;span class="n"&gt;e&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;Logger&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;Fatal&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;e&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;Start&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s"&gt;":8000"&lt;/span&gt;&lt;span class="p"&gt;))&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;

&lt;span class="k"&gt;func&lt;/span&gt; &lt;span class="n"&gt;hello&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;c&lt;/span&gt; &lt;span class="n"&gt;echo&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;Context&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="kt"&gt;error&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="n"&gt;c&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;String&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;http&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;StatusOK&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s"&gt;"Hello!"&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  2. Creating the Dockerfile
&lt;/h2&gt;

&lt;p&gt;The Dockerfile was based on the &lt;a href="https://github.com/awslabs/aws-lambda-web-adapter/blob/main/examples/gin/app/Dockerfile" rel="noopener noreferrer"&gt;Gin Dockerfile&lt;/a&gt; from the official Lambda Web Adapter examples.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight docker"&gt;&lt;code&gt;&lt;span class="k"&gt;FROM&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s"&gt;golang:1.24-alpine&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="k"&gt;AS&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s"&gt;build_base&lt;/span&gt;
&lt;span class="k"&gt;RUN &lt;/span&gt;apk add &lt;span class="nt"&gt;--no-cache&lt;/span&gt; git
&lt;span class="k"&gt;WORKDIR&lt;/span&gt;&lt;span class="s"&gt; /app&lt;/span&gt;

&lt;span class="k"&gt;COPY&lt;/span&gt;&lt;span class="s"&gt; . .&lt;/span&gt;
&lt;span class="k"&gt;RUN &lt;/span&gt;go mod download

&lt;span class="k"&gt;RUN &lt;/span&gt;&lt;span class="nv"&gt;GOOS&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;linux &lt;span class="nv"&gt;CGO_ENABLED&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;0 go build &lt;span class="nt"&gt;-o&lt;/span&gt; bootstrap ./app
&lt;span class="k"&gt;FROM&lt;/span&gt;&lt;span class="s"&gt; alpine:3.9&lt;/span&gt;
&lt;span class="k"&gt;RUN &lt;/span&gt;apk add ca-certificates

&lt;span class="c"&gt;# Only this line is needed to use the Lambda Web Adapter in the Docker image&lt;/span&gt;
&lt;span class="k"&gt;COPY&lt;/span&gt;&lt;span class="s"&gt; --from=public.ecr.aws/awsguru/aws-lambda-adapter:0.8.4 /lambda-adapter /opt/extensions/lambda-adapter&lt;/span&gt;
&lt;span class="k"&gt;COPY&lt;/span&gt;&lt;span class="s"&gt; --from=build_base /app/bootstrap /app/bootstrap&lt;/span&gt;

&lt;span class="k"&gt;ENV&lt;/span&gt;&lt;span class="s"&gt; PORT=8000 AWS_LWA_ASYNC_INIT=true&lt;/span&gt;
&lt;span class="k"&gt;EXPOSE&lt;/span&gt;&lt;span class="s"&gt; 8000&lt;/span&gt;

&lt;span class="k"&gt;CMD&lt;/span&gt;&lt;span class="s"&gt; ["/app/bootstrap"]&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;By default, the Lambda Web Adapter assumes the web app listens on port 8080. To use a different port, specify it using the &lt;code&gt;PORT&lt;/code&gt; or &lt;code&gt;AWS_LWA_PORT&lt;/code&gt; environment variable.&lt;/p&gt;

&lt;p&gt;However, in the Lambda execution environment, the web app runs as a non-root user, so it cannot listen on port numbers below 1024. Additionally, it’s best to avoid ports 3000 (used by CloudWatch Lambda Insight extension) and 9001 (used by the Lambda Runtime API).&lt;/p&gt;

&lt;p&gt;Reference: &lt;a href="https://github.com/awslabs/aws-lambda-web-adapter?tab=readme-ov-file#configurations:%7E:text=AWS_LWA_PORT%20/%20PORT%20%2D%20Lambda,uses%20port%203000" rel="noopener noreferrer"&gt;https://github.com/awslabs/aws-lambda-web-adapter?tab=readme-ov-file#configurations:~:text=AWS_LWA_PORT%20/%20PORT%20%2D%20Lambda,uses%20port%203000&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;The following environment variable is optional:&lt;br&gt;
&lt;/p&gt;

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

&lt;/div&gt;



&lt;p&gt;If a Lambda function doesn’t complete initialization within 10 seconds, Lambda restarts the function and charges for initialization. The Lambda Web Adapter supports asynchronous initialization to avoid restarts by utilizing the 10-second initialization window. When enabled, it performs readiness checks for up to 9.8 seconds. If the web app isn’t ready, it notifies the Lambda service of initialization completion and continues readiness checks in the handler. This feature is disabled by default but can be enabled by setting &lt;code&gt;AWS_LWA_ASYNC_INIT&lt;/code&gt; or &lt;code&gt;ASYNC_INIT&lt;/code&gt; to &lt;code&gt;true&lt;/code&gt;.&lt;/p&gt;

&lt;p&gt;Reference: &lt;a href="https://github.com/awslabs/aws-lambda-web-adapter?tab=readme-ov-file#configurations:%7E:text=AWS_LWA_ASYNC_INIT%20/%20ASYNC_INIT%20%2D%20Lambda,to%20true" rel="noopener noreferrer"&gt;https://github.com/awslabs/aws-lambda-web-adapter?tab=readme-ov-file#configurations:~:text=AWS_LWA_ASYNC_INIT%20/%20ASYNC_INIT%20%2D%20Lambda,to%20true&lt;/a&gt;.&lt;/p&gt;

&lt;h2&gt;
  
  
  3. Creating the SAM template.yaml
&lt;/h2&gt;

&lt;p&gt;For Lambda Function URLs, I referenced the &lt;a href="https://github.com/awslabs/aws-lambda-web-adapter/blob/main/examples/nextjs-response-streaming/template.yaml" rel="noopener noreferrer"&gt;template.yaml for nextjs-response-streaming&lt;/a&gt; from the official examples.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight yaml"&gt;&lt;code&gt;&lt;span class="na"&gt;AWSTemplateFormatVersion&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s1"&gt;'&lt;/span&gt;&lt;span class="s"&gt;2010-09-09'&lt;/span&gt;
&lt;span class="na"&gt;Transform&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;AWS::Serverless-2016-10-31&lt;/span&gt;
&lt;span class="na"&gt;Description&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;SAM Template for Go's Echo Web application.&lt;/span&gt;

&lt;span class="na"&gt;Globals&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
  &lt;span class="na"&gt;Function&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
    &lt;span class="na"&gt;Timeout&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="m"&gt;5&lt;/span&gt;
    &lt;span class="na"&gt;MemorySize&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="m"&gt;128&lt;/span&gt;

&lt;span class="na"&gt;Resources&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
  &lt;span class="na"&gt;GoEchoAppFunction&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
    &lt;span class="na"&gt;Type&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;AWS::Serverless::Function&lt;/span&gt;
    &lt;span class="na"&gt;Properties&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
      &lt;span class="na"&gt;CodeUri&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;app/&lt;/span&gt;
      &lt;span class="na"&gt;PackageType&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;Image&lt;/span&gt;
      &lt;span class="na"&gt;Architectures&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
      &lt;span class="pi"&gt;-&lt;/span&gt; &lt;span class="s"&gt;x86_64&lt;/span&gt;
      &lt;span class="na"&gt;FunctionUrlConfig&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
        &lt;span class="na"&gt;AuthType&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;NONE&lt;/span&gt;
    &lt;span class="na"&gt;Metadata&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
      &lt;span class="na"&gt;DockerTag&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;v1&lt;/span&gt;
      &lt;span class="na"&gt;DockerContext&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;.&lt;/span&gt;
      &lt;span class="na"&gt;Dockerfile&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;Dockerfile&lt;/span&gt;

&lt;span class="na"&gt;Outputs&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
  &lt;span class="na"&gt;GoEchoAppFunctionOutput&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
    &lt;span class="na"&gt;Description&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="s"&gt;Go's&lt;/span&gt;&lt;span class="nv"&gt; &lt;/span&gt;&lt;span class="s"&gt;Echo&lt;/span&gt;&lt;span class="nv"&gt; &lt;/span&gt;&lt;span class="s"&gt;App&lt;/span&gt;&lt;span class="nv"&gt; &lt;/span&gt;&lt;span class="s"&gt;Function&lt;/span&gt;&lt;span class="nv"&gt; &lt;/span&gt;&lt;span class="s"&gt;ARN"&lt;/span&gt;
    &lt;span class="na"&gt;Value&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="kt"&gt;!GetAtt&lt;/span&gt; &lt;span class="s"&gt;GoEchoAppFunction.Arn&lt;/span&gt;
  &lt;span class="na"&gt;GoEchoAppFunctionUrlOutput&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
    &lt;span class="na"&gt;Description&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="s"&gt;Go's&lt;/span&gt;&lt;span class="nv"&gt; &lt;/span&gt;&lt;span class="s"&gt;Echo&lt;/span&gt;&lt;span class="nv"&gt; &lt;/span&gt;&lt;span class="s"&gt;App&lt;/span&gt;&lt;span class="nv"&gt; &lt;/span&gt;&lt;span class="s"&gt;Function&lt;/span&gt;&lt;span class="nv"&gt; &lt;/span&gt;&lt;span class="s"&gt;URL"&lt;/span&gt;
    &lt;span class="na"&gt;Value&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="kt"&gt;!GetAtt&lt;/span&gt; &lt;span class="s"&gt;GoEchoAppFunctionUrl.FunctionUrl&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Setting &lt;code&gt;AuthType&lt;/code&gt; to &lt;code&gt;NONE&lt;/code&gt; in &lt;code&gt;FunctionUrlConfig&lt;/code&gt; makes the URL publicly accessible.&lt;/p&gt;

&lt;h2&gt;
  
  
  5. Building with SAM CLI
&lt;/h2&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="nv"&gt;$ &lt;/span&gt;sam build
Building codeuri: /Pathto/go-echo-lambda-function-url-template runtime: None architecture: x86_64 functions: GoEchoAppFunction
Building image &lt;span class="k"&gt;for &lt;/span&gt;GoEchoAppFunction &lt;span class="k"&gt;function
&lt;/span&gt;Setting DockerBuildArgs &lt;span class="k"&gt;for &lt;/span&gt;GoEchoAppFunction &lt;span class="k"&gt;function
&lt;/span&gt;Step 1/13 : FROM golang:1.24-alpine AS build_base

~ Omitted ~

Successfully tagged goechoappfunction:v1

Build Succeeded

Built Artifacts  : .aws-sam/build
Built Template   : .aws-sam/build/template.yaml
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  6. Deploying with SAM CLI
&lt;/h2&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="nv"&gt;$ &lt;/span&gt;sam deploy

~ Omitted ~

Previewing CloudFormation changeset before deployment
&lt;span class="o"&gt;======================================================&lt;/span&gt;
Deploy this changeset? &lt;span class="o"&gt;[&lt;/span&gt;y/N]: y

2024-08-24 21:45:24 - Waiting &lt;span class="k"&gt;for &lt;/span&gt;stack create/update to &lt;span class="nb"&gt;complete

&lt;/span&gt;CloudFormation events from stack operations &lt;span class="o"&gt;(&lt;/span&gt;refresh every 5.0 seconds&lt;span class="o"&gt;)&lt;/span&gt;
&lt;span class="nt"&gt;---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------&lt;/span&gt;
ResourceStatus                                                 ResourceType                                                   LogicalResourceId                                              ResourceStatusReason
&lt;span class="nt"&gt;---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------&lt;/span&gt;
UPDATE_IN_PROGRESS                                             AWS::CloudFormation::Stack                                     go-echo-app                                                    User Initiated
UPDATE_IN_PROGRESS                                             AWS::Lambda::Function                                          GoEchoAppFunction                                              -
UPDATE_COMPLETE                                                AWS::Lambda::Function                                          GoEchoAppFunction                                              -
UPDATE_COMPLETE_CLEANUP_IN_PROGRESS                            AWS::CloudFormation::Stack                                     go-echo-app                                                    -
UPDATE_COMPLETE                                                AWS::CloudFormation::Stack                                     go-echo-app                                                    -
&lt;span class="nt"&gt;---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------&lt;/span&gt;

CloudFormation outputs from deployed stack
&lt;span class="nt"&gt;------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------&lt;/span&gt;
Outputs
&lt;span class="nt"&gt;------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------&lt;/span&gt;
Key                 GoEchoAppFunctionUrlOutput
Description         Go&lt;span class="s1"&gt;'s Echo App Function URL
Value               https://xxx.lambda-url.ap-northeast-1.on.aws/

Key                 GoEchoAppFunctionOutput
Description         Go'&lt;/span&gt;s Echo App Function ARN
Value               arn:aws:lambda:ap-northeast-1:000000000000:function:go-echo-app-GoEchoAppFunction-XXXXXXXX
&lt;span class="nt"&gt;------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------&lt;/span&gt;

Successfully created/updated stack - go-echo-app &lt;span class="k"&gt;in &lt;/span&gt;ap-northeast-1
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  7. Verification
&lt;/h2&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="nv"&gt;$ &lt;/span&gt;curl https://xxx.lambda-url.ap-northeast-1.on.aws/
Hello!%
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  8. Deleting Resources
&lt;/h2&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="nv"&gt;$ &lt;/span&gt;sam delete
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  Additional References
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://aws.amazon.com/jp/builders-flash/202402/lambda-container-runtime/" rel="noopener noreferrer"&gt;https://aws.amazon.com/jp/builders-flash/202402/lambda-container-runtime/&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://echo.labstack.com/docs/quick-start" rel="noopener noreferrer"&gt;https://echo.labstack.com/docs/quick-start&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

</description>
      <category>go</category>
      <category>lambda</category>
      <category>serverless</category>
      <category>web</category>
    </item>
  </channel>
</rss>
