@aws-solutions-constructs/aws-apigateway-kinesisstreams
v2.74.0
Published
CDK Constructs for AWS API Gateway and Amazon Kinesis Data Streams integration.
Downloads
4,885
Maintainers
Readme
aws-apigateway-kinesisstreams module
| Reference Documentation:| https://docs.aws.amazon.com/solutions/latest/constructs/| |:-------------|:-------------|
| Language | Package |
|:-------------|-----------------|
| Python|aws_solutions_constructs.aws_apigateway_kinesisstreams
|
| Typescript|@aws-solutions-constructs/aws-apigateway-kinesisstreams
|
| Java|software.amazon.awsconstructs.services.apigatewaykinesisstreams
|
Overview
This AWS Solutions Construct implements an Amazon API Gateway connected to an Amazon Kinesis Data Stream pattern.
Here is a minimal deployable pattern definition:
Typescript
import { Construct } from 'constructs';
import { Stack, StackProps } from 'aws-cdk-lib';
import { ApiGatewayToKinesisStreams, ApiGatewayToKinesisStreamsProps } from '@aws-solutions-constructs/aws-apigateway-kinesisstreams';
new ApiGatewayToKinesisStreams(this, 'test-apigw-kinesis', {});
Python
from aws_solutions_constructs.aws_apigateway_kinesisstreams import ApiGatewayToKinesisStreams
from aws_cdk import Stack
from constructs import Construct
ApiGatewayToKinesisStreams(self, 'test-apigw-kinesis')
Java
import software.constructs.Construct;
import software.amazon.awscdk.Stack;
import software.amazon.awscdk.StackProps;
import software.amazon.awsconstructs.services.apigatewaykinesisstreams.*;
new ApiGatewayToKinesisStreams(this, "test-apigw-kinesis", new ApiGatewayToKinesisStreamsProps.Builder()
.build());
Pattern Construct Props
| Name | Type | Description |
|:-------------|:----------------|-----------------|
|apiGatewayProps?|api.RestApiProps
|Optional user-provided props to override the default props for the API Gateway.|
|putRecordRequestTemplate?|string
|API Gateway request template for the PutRecord action. If not provided, a default one will be used.|
|additionalPutRecordRequestTemplates?|{ [contentType: string]: string; }
|Optional PutRecord Request Templates for content-types other than application/json
. Use the putRecordRequestTemplate
property to set the request template for the application/json
content-type.|
|putRecordRequestModel?|api.ModelOptions
|API Gateway request model for the PutRecord action. If not provided, a default one will be created.|
|putRecordIntegrationResponses?|api.IntegrationResponses[]
|Optional, custom API Gateway Integration Response for the PutRecord action.|
|putRecordMethodResponses?|api.MethodResponses[]
| Optional, custom API Gateway Method Responses for the putRecord action. default: [{ statusCode: "200", responseParameters: { "method.response.header.Content-Type": true }},{ statusCode: "500", responseParameters: { "method.response.header.Content-Type": true } } ]|
|putRecordsRequestTemplate?|string
|API Gateway request template for the PutRecords action. If not provided, a default one will be used.|
|additionalPutRecordsRequestTemplates?|{ [contentType: string]: string; }
|Optional PutRecords Request Templates for content-types other than application/json
. Use the putRecordsRequestTemplate
property to set the request template for the application/json
content-type.|
|putRecordsRequestModel?|api.ModelOptions
| API Gateway request model for the PutRecords action. If not provided, a default one will be created.|
|putRecordsIntegrationResponses?|api.IntegrationResponses[]
|Optional, custom API Gateway Integration Response for the PutRecords action.|
|putRecordsMethodResponses?|api.MethodResponses[]
| Optional, custom API Gateway Method Responses for the putRecords action. default: [{ statusCode: "200", responseParameters: { "method.response.header.Content-Type": true }},{ statusCode: "500", responseParameters: { "method.response.header.Content-Type": true } } ]|
|existingStreamObj?|kinesis.Stream
|Existing instance of Kinesis Stream, providing both this and kinesisStreamProps
will cause an error.|
|kinesisStreamProps?|kinesis.StreamProps
|Optional user-provided props to override the default props for the Kinesis stream.|
|logGroupProps?|logs.LogGroupProps
|User provided props to override the default props for for the CloudWatchLogs LogGroup.|
|createCloudWatchAlarms|boolean
|Whether to create recommended CloudWatch alarms for Kinesis Data Stream. Default value is set to true
|
Pattern Properties
| Name | Type | Description |
|:-------------|:----------------|-----------------|
|apiGateway|api.RestApi
|Returns an instance of the API Gateway REST API created by the pattern.|
|apiGatewayRole|iam.Role
|Returns an instance of the iam.Role created by the construct for API Gateway.|
|apiGatewayCloudWatchRole?|iam.Role
|Returns an instance of the iam.Role created by the construct for API Gateway for CloudWatch access.|
|apiGatewayLogGroup|logs.LogGroup
|Returns an instance of the LogGroup created by the construct for API Gateway access logging to CloudWatch.|
|kinesisStream|kinesis.Stream
|Returns an instance of the Kinesis stream created or used by the pattern.|
|cloudwatchAlarms?|cloudwatch.Alarm[]
|Returns an array of recommended CloudWatch Alarms created by the construct for Kinesis Data stream|
Sample API Usage
| Method | Request Path | Request Body | Stream Action | Description |
|:-------------|:----------------|-----------------|-----------------|-----------------|
|POST|/record
| { "data": "Hello World!", "partitionKey": "pk001" }
|kinesis:PutRecord
|Writes a single data record into the stream.|
|POST|/records
| { "records": [{ "data": "abc", "partitionKey": "pk001" }, { "data": "xyz", "partitionKey": "pk001" }] }
|kinesis:PutRecords
|Writes multiple data records into the stream in a single call.|
Default settings
Out of the box implementation of the Construct without any override will set the following defaults:
Amazon API Gateway
- Deploy an edge-optimized API endpoint
- Enable CloudWatch logging for API Gateway
- Configure least privilege access IAM role for API Gateway
- Set the default authorizationType for all API methods to IAM
- Enable X-Ray Tracing
- Validate request body before passing data to Kinesis
Amazon Kinesis Data Stream
- Configure least privilege access IAM role for Kinesis Stream
- Enable server-side encryption for Kinesis Stream using AWS Managed KMS Key
Architecture
© Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.