Skip to content

Latest commit

 

History

History
 
 

Folders and files

NameName
Last commit message
Last commit date

parent directory

..
 
 
 
 
 
 

README.md

Regional API with Edge-Optimized domain name to Lambda

This pattern creates an Amazon API Gateway Regional rest API with an Edge-Optimized domain name. The API is integrated with a Lambda function in python3.9.

Learn more about this pattern at Serverless Land Patterns: https://serverlessland.com/patterns/apigw-domain-edge-lambda

Important: this application uses various AWS services and there are costs associated with these services after the Free Tier usage - please see the AWS Pricing page for details. You are responsible for any AWS costs incurred. No warranty is implied in this example.

Requirements

Deployment Instructions

  1. Create a new directory, navigate to that directory in a terminal and clone the GitHub repository:

    git clone https://github.com/aws-samples/serverless-patterns
    
  2. Change directory to the pattern directory:

    cd apigw-domain-edge-lambda
    
  3. From the command line, use AWS SAM to deploy the AWS resources for the pattern as specified in the template.yml file:

    sam deploy --guided
    
  4. During the prompts:

    • Enter a stack name
    • Allow SAM CLI to create IAM roles with the required permissions.

    Once you have run sam deploy --guided mode once and saved arguments to a configuration file (samconfig.toml), you can use sam deploy in future to use these defaults.

  5. Note the outputs from the SAM deployment process. These contain the resource names and/or ARNs which are used for testing.

How it works

This patterns creates an edge-optimized custom domain name associated with a regional REST API with a lambda integration.

You will need :

  • A route53 Hosted zone
  • An ACM Certificate in the US-EAST-1 region. See how to request a public certificate here.
  • The domain name choosen needs to match or be a subdomain of the domain name on the certificate. See more here.

Testing

Enter the ARN of the certificate (which is in us-east-1) and the custom domain name in the parameters of the template.

Create a new record in your Hosted zone in route53 :

  • enter the same name you chose for your API domain name
  • check the alias tick box
  • route traffic to API Gateway/ the region where your API is /your API endpoint which should look like [distribution-id].cloudfront.net
  • create records

Then try to make a request to the custom domain name from your browser, postman or using the curl command.

Eg :

curl https://yourdomainname/com

The expected answer is : "Hello World! This is the edge-optimized custom domain name and the regional API"

Cleanup

  1. Delete the stack
    aws cloudformation delete-stack --stack-name STACK_NAME
  2. Confirm the stack has been deleted
    aws cloudformation list-stacks --query "StackSummaries[?contains(StackName,'STACK_NAME')].StackStatus"

Copyright 2023 Amazon.com, Inc. or its affiliates. All Rights Reserved.

SPDX-License-Identifier: MIT-0