Mock Integration
Explore the concept of mock integration in AWS API Gateway where the API returns responses independently without invoking backend services. Learn to use data mapping with the $context object to create dynamic and static responses, enabling practical use cases like version checks and IP address retrieval.
We'll cover the following...
What's mock integration?
Mock integration is a special type of integration where the API doesn’t invoke any service within or outside of AWS. Instead, the API Gateway returns a response by itself. It does so by returning a hardcoded response or echoing a part of the incoming request.
The term, mock integration, can be very misleading. It’s not mockery at all. Mock integrations may seem useless, but as we work with API Gateway, we come across several use cases where mock integration is the only rescue.
Let’s see an example ...
#!/bin/sh -v
# -----------------------------------------------------------------
# Configure the AWS CLI to let it communicate with your account
# -----------------------------------------------------------------
aws configure set aws_access_key_id $aws_access_key_id
aws configure set aws_secret_access_key $aws_secret_access_key
aws configure set region us-east-1
# -----------------------------------------------------------------
# Delete any old deployments
# -----------------------------------------------------------------
# 1. Trigger CloudFormation stack delete
# 2. Wait for the stack to be deleted
aws cloudformation delete-stack --stack-name EducativeCourseApiGateway
aws cloudformation wait stack-delete-complete --stack-name EducativeCourseApiGateway
# -----------------------------------------------------------------
# External API, no Lambda function. Initiate the CloudFormation deployment.
# -----------------------------------------------------------------
aws cloudformation deploy \
--template-file template.yml \
--stack-name EducativeCourseApiGateway \
--capabilities CAPABILITY_NAMED_IAM \
--parameter-overrides DeployId="$RAND" SourceCodeBucket="educative.${bucket}" \
--region us-east-1
# -----------------------------------------------------------------
# Get the API ID of the Rest API we just created.
# -----------------------------------------------------------------
apiId=`aws cloudformation list-stack-resources --stack-name EducativeCourseApiGateway | jq -r ".StackResourceSummaries[1].PhysicalResourceId"`
echo "API ID: $apiId"
# -----------------------------------------------------------------
# This is the URL for the API we just created
# -----------------------------------------------------------------
url="https://${apiId}.execute-api.us-east-1.amazonaws.com/v1/info"
echo $url
# -----------------------------------------------------------------
# Invoke the URL to test the response
# -----------------------------------------------------------------
curl --location --request GET $url