aws-cognito-apigateway-lambda

All classes are under active development and subject to
non-backward compatible changes or removal in any future version.
These are not subject to the
Semantic Versioning
Language | Package |
---|---|
![]() |
aws_solutions_constructs.aws_cognito_apigateway_lambda
|
![]() |
@aws-solutions-constructs/aws-cognito-apigateway-lambda
|
![]() |
software.amazon.awsconstructs.services.cognitoapigatewaylambda
|
This AWS Solutions Construct implements Amazon Cognito securing an Amazon API Gateway Lambda-backed REST API.
Here is a minimal deployable pattern definition in TypeScript:
import { CognitoToApiGatewayToLambda } from '@aws-solutions-constructs/aws-cognito-apigateway-lambda'; new CognitoToApiGatewayToLambda(this, 'test-cognito-apigateway-lambda', { lambdaFunctionProps: { code: lambda.Code.fromAsset(`${__dirname}/lambda`), runtime: lambda.Runtime.NODEJS_12_X, handler: 'index.handler' } });
If you are defining resources and methods on your API (e.g. proxy = false
), you must call
the addAuthorizers()
method after the API is fully defined. This ensures that every method in
your API is protected.
Here is an example in TypeScript:
import { CognitoToApiGatewayToLambda } from '@aws-solutions-constructs/aws-cognito-apigateway-lambda'; const construct = new CognitoToApiGatewayToLambda(this, 'test-cognito-apigateway-lambda', { lambdaFunctionProps: { code: lambda.Code.fromAsset(`${__dirname}/lambda`), runtime: lambda.Runtime.NODEJS_12_X, handler: 'index.handler' }, apiGatewayProps: { proxy: false } }); const resource = construct.apiGateway.root.addResource('foobar'); resource.addMethod('POST'); // Mandatory to call this method to Apply the Cognito Authorizers on all API methods construct.addAuthorizers();
Initializer
new CognitoToApiGatewayToLambda(scope: Construct, id: string, props: CognitoToApiGatewayToLambdaProps);
Parameters
-
scope
Construct
-
id
string
Pattern Construct Props
Name | Type | Description |
---|---|---|
existingLambdaObj? |
lambda.Function
|
An optional, existing Lambda function to be used instead of the default function.
If an existing function is provided, the lambdaFunctionProps property will be ignored.
|
lambdaFunctionProps? |
lambda.FunctionProps
|
Optional user-provided properties to override the default properties for the
Lambda function. Ignored if an existingLambdaObj is provided.
|
apiGatewayProps? |
api.LambdaRestApiProps
|
Optional user provided props to override the default props for API Gateway |
cognitoUserPoolProps? |
cognito.UserPoolProps
|
Optional user provided props to override the default props for Cognito User Pool |
cognitoUserPoolClientProps? |
cognito.UserPoolClientProps
|
Optional user provided props to override the default props for Cognito User Pool Client |
logGroupProps? |
logs.LogGroupProps
|
Optional user-provided props to override the default props for the CloudWatch Logs log group. |
Pattern Properties
Name | Type | Description |
---|---|---|
apiGateway |
api.RestApi
|
Returns an instance of the API Gateway REST API created by the pattern. |
lambdaFunction |
lambda.Function
|
Returns an instance of the Lambda function created by the pattern. |
userPool |
cognito.UserPool
|
Returns an instance of the Cognito user pool created by the pattern. |
userPoolClient |
cognito.UserPoolClient
|
Returns an instance of the Cognito user pool client created by the pattern. |
apiGatewayCloudWatchRole |
iam.Role
|
Returns an instance of the IAM role created by the pattern that enables access logging from the API Gateway REST API to CloudWatch. |
apiGatewayLogGroup |
logs.LogGroup
|
Returns an instance of the log group created by the pattern that API Gateway REST API access logs are sent to. |
apiGatewayAuthorizer |
api.CfnAuthorizer
|
Returns an instance of the API Gateway authorizer created by the pattern. |
Default settings
Out-of-the-box implementation of this pattern without any overrides will set the following defaults:
Amazon Cognito
-
Set password policy for User Pools
-
Enforce the advanced security mode for User Pools
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
AWS Lambda Function
-
Configure limited privilege access IAM role for Lambda function
-
Enable reusing connections with Keep-Alive for NodeJs Lambda function
-
Enable X-Ray tracing
-
Set environment variables:
-
AWS_NODEJS_CONNECTION_REUSE_ENABLED
(for Node 10.x and higher functions)
-
Architecture

GitHub
To view the code for this pattern, create/view issues and pull requests, and more: | |
---|---|
![]() |
@aws-solutions-constructs/aws-cognito-apigateway-lambda |