Amazon API Gateway Concepts: Difference between revisions
Line 80: | Line 80: | ||
The [[#Integration_Endpoints_and_Types|integration type]] can be specified programmatically by setting the <tt>type</tt> property of the <tt>Integration</tt> resource as such: | The [[#Integration_Endpoints_and_Types|integration type]] can be specified programmatically by setting the <tt>type</tt> property of the <tt>Integration</tt> resource as such: | ||
* <tt>AWS</tt>: | * <tt>AWS</tt>: exposes an AWS service action, including Lambda, as an integration endpoint, via [[#Custom_Integration|custom integration]]. | ||
* <tt>AWS_PROXY</tt>: | * <tt>AWS_PROXY</tt>: | ||
* <tt>HTTP</tt>: | * <tt>HTTP</tt>: |
Revision as of 02:09, 5 February 2019
External
- https://docs.aws.amazon.com/apigateway/api-reference/resource/
- https://docs.aws.amazon.com/apigateway/api-reference/link-relation/
Internal
REST and Hypermedia Concepts
Amazon API Gateway
Amazon API Gateway is the preferred way to expose internal AWS endpoints to external clients, in form of a consistent and scalable programming REST interface (REST API). Amazon API Gateway can expose the following integration endpoints: internal HTTP(S) endpoints - representing custom services, AWS Lambda functions and other AWS services, such as Amazon Kinesis or Amazon S3. The backend endpoints are exposed by creating an API Gateway REST API (RestApi) and integrating API methods with their corresponding backend endpoints. Each of the backend endpoints specified above is associated with an integration type.
Amazon Gateway URL
The URL is determined by a protocol (HTTP(S) or WSS), a hostname, a stage name and, for REST APIs, the resource path.
Amazon Gateway API Base URL
The hostname and the stage name determine the API's base URL.
Amazon Gateway Hostname
https://{restapi-id}.execute-api.{region}.amazonaws.com
Integration
Integration Endpoints and Types
Amazon API Gateway can integrate three types of backend endpoints, and can also simulate a mock integration endpoint:
- HTTP(S) endpoints, representing client REST API services or web sites, can be integrated with HTTP proxy integration and HTTP custom integration.
- Lambda functions can be integrated with Lambda proxy integration and Lambda custom integration. The Lambda custom integration is a special case of AWS integration, where the integration endpoint corresponds to the function-invoking action of the Lambda service.
- AWS service endpoints (Amazon Kinesis or Amazon S3) can only be integrated with non-proxy (custom) integration.
- Mock backend endpoints, where API gateway serves as an integration endpoint itself.
The integration type is defined by how the API Gateway passes data to and from the integration endpoint:
Proxy Integration
In general, proxy integration implies a simple integration setup with a single HTTP endpoint or Lambda function, where the request is passed with minimal, or no processing at all, to the backend. Because of that, the backend can evolve without requiring updates or reconfiguration of the integration point in the API Gateway.
Custom Integration
Custom integration implies a more elaborated setup procedure. For a custom integration, both the integration request and integration response must be configured, and necessary data mappings from the method request to the integration request and from the integration response to the method response must be put in place. Among other things, custom integration allows for reuse of configured mapping templates for multiple integration endpoints that have similar requirements of the input and output data formats. Since the setup is more involved, custom integration is recommended for more advanced application scenarios.
Configuring Integration Type
For details on how to configure a specific integration type, see below:
Integration Request
Integration Response
Also see IntegrationResponse below.
Mapping Template
Amazon API Gateway Resources that Require Redeployment
Where are these resources living?
RestApi
Resource
Method
RequestValidator
MethodResponse
Integration
The integration type can be specified programmatically by setting the type property of the Integration resource as such:
- AWS: exposes an AWS service action, including Lambda, as an integration endpoint, via custom integration.
- AWS_PROXY:
- HTTP:
- HTTP_PROXY:
- MOCK:
IntegrationResponse
Also see Integration Response above.
GatewayResponse
DocumentationPart
DocumentationVersion
Model
ApiKey
Authorizer
VpcLink
Amazon API Gateway Resources that Require Configuration Changes without Redeployment
Account
Deployment (API Deployment)
A Deployment resource represents a REST API deployment in Amazon API Gateway. The Deployment is like an executable of an API represented by a RestApi resource. Once an RestApi is created, it requires deployment and association with a stage to make it callable by its users. To call a deployed URL, clients submit requests against the API's URL.
Resource updates require redeploying the API, whereas configuration updates to not.
DomainName
BasePathMapping
Stage
An API stage is represented by a Stage resource and represents a named reference to a deployment, and at the same time, a snapshot of the API, including methods, integrations, models, mapping templates, Lambda authorizers, etc.
Usage
UsagePlan
API Documentation
See DocumentationPart and DocumentationVersion above.
X-Ray Integration
API request latency issues can be troubleshot by enabling AWS X-Ray. AWS X-Ray can be used to trance API requests and downstream services.