Amazon API Gateway
Table of Contents
Overview
Topics
CORS
For Lambda or HTTP proxy integrations, you can still set up the required
OPTIONS
response headers in API Gateway. However, you must rely on the back end to return theAccess-Control-Allow-Origin
headers because the integration response is disabled for the proxy integration.
Deployments
- Deployment
- assoicated with a stage
- Stage
a snapshot of API
- adjusting the default account-level
- request throttling limits
- enabling API caching.
- Stages enable robust version control of your API
- Canary release
updated version on the same stage
Throttling
Caching
Logging
Variables
- Using stage variables you can configure an API deployment stage to interact with different backend endpoints.
- When you call your
beta
endpoint, API Gateway uses the stage variable for thebeta
stage, and calls a different web host (for example,beta.example.com
)
Proxy
With the Lambda proxy integration, when a client submits an API request, API Gateway passes to the integrated Lambda function the raw request as-is. This request data includes the request headers, query string parameters, URL path variables, payload, and API configuration data. The configuration data can include current deployment stage name, stage variables, user identity, or authorization context (if any)
You can set up a Lambda proxy integration for any API method. But a Lambda proxy integration is more potent when it is configured for an API method involving a generic proxy resource. The generic proxy resource can be denoted by a special templated path variable of
{proxy+}
, the catch-allANY
method placeholder, or both.
ANY /{proxy+}
ANY /res
GET|POST|PUT|... /{proxy+}
GET|POST|PUT|... /res/{path}/...
GET|POST|PUT|... /res
The /parent/{proxy+}
placeholder stands for any resource matching the path pattern of /parent/*
.
Configuring /{proxy+}
as a proxy resource catches all requests to its sub-resources. For example, it works for a GET request to /foo
. To handle requests to /
, add a new ANY
method on the /
resource.
When a proxy resource has non-proxy siblings, the sibling resources are excluded from the representation of the proxy resource.
/{proxy+}
/parent/{proxy+}
/parent/{child}/{proxy+}
The request data format is:
{
"resource": "Resource path",
"path": "Path parameter",
"httpMethod": "Incoming request's method name"
"headers": {Incoming request headers}
"queryStringParameters": {query string parameters }
"pathParameters": {path parameters}
"stageVariables": {Applicable stage variables}
"requestContext": {Request context, including authorizer-returned key-value pairs}
"body": "A JSON string of the request payload."
"isBase64Encoded": "A boolean flag to indicate if the applicable request payload is Base64-encode"
}
The desired output format is:
{
"isBase64Encoded": true|false,
"statusCode": httpStatusCode,
"headers": { "headerName": "headerValue", ... },
"body": "..."
}