CDK Constructs for AWS Cloudfront to AWS API Gateway integration.
Project description
aws-cloudfront-apigateway module
---Reference Documentation: | https://docs.aws.amazon.com/solutions/latest/constructs/ |
---|
Language | Package |
---|---|
Python | aws_solutions_constructs.aws_cloudfront_apigateway |
Typescript | @aws-solutions-constructs/aws-cloudfront-apigateway |
Java | software.amazon.awsconstructs.services.cloudfrontapigateway |
Overview
This AWS Solutions Construct implements an AWS CloudFront fronting an Amazon API Gateway REST API.
Here is a minimal deployable pattern definition:
Typescript
import { Construct } from 'constructs';
import { Stack, StackProps } from 'aws-cdk-lib';
import { CloudFrontToApiGateway } from '@aws-solutions-constructs/aws-cloudfront-apigateway';
import * as lambda from 'aws-cdk-lib/aws-lambda';
import * as api from 'aws-cdk-lib/aws-apigateway';
const lambdaProps: lambda.FunctionProps = {
code: lambda.Code.fromAsset(`lambda`),
runtime: lambda.Runtime.NODEJS_16_X,
handler: 'index.handler'
};
const lambdafunction = new lambda.Function(this, 'LambdaFunction', lambdaProps);
const apiGatewayProps: api.LambdaRestApiProps = {
handler: lambdafunction,
endpointConfiguration: {
types: [api.EndpointType.REGIONAL]
},
defaultMethodOptions: {
authorizationType: api.AuthorizationType.NONE
}
};
const apiGateway = new api.LambdaRestApi(this, 'LambdaRestApi', apiGatewayProps);
new CloudFrontToApiGateway(this, 'test-cloudfront-apigateway', {
existingApiGatewayObj: apiGateway
});
Python
from aws_solutions_constructs.aws_cloudfront_apigateway import CloudFrontToApiGateway
from aws_cdk import (
aws_lambda as _lambda,
aws_apigateway as api,
Stack
)
from constructs import Construct
lambda_function = _lambda.Function(self, 'LambdaFunction',
code=_lambda.Code.from_asset(
'lambda'),
runtime=_lambda.Runtime.PYTHON_3_9,
handler='index.handler')
api_gateway = api.LambdaRestApi(self, 'LambdaRestApi',
handler=lambda_function,
endpoint_configuration=api.EndpointConfiguration(
types=[api.EndpointType.REGIONAL]
),
default_method_options=api.MethodOptions(
authorization_type=api.AuthorizationType.NONE
))
CloudFrontToApiGateway(self, 'test-cloudfront-apigateway',
existing_api_gateway_obj=api_gateway
)
Java
import software.constructs.Construct;
import java.util.List;
import software.amazon.awscdk.Stack;
import software.amazon.awscdk.StackProps;
import software.amazon.awscdk.services.lambda.*;
import software.amazon.awscdk.services.lambda.Runtime;
import software.amazon.awscdk.services.apigateway.*;
import software.amazon.awsconstructs.services.cloudfrontapigateway.*;
final Function lambdaFunction = Function.Builder.create(this, "IndexHandler")
.runtime(Runtime.NODEJS_16_X)
.code(Code.fromAsset("lambda"))
.handler("index.handler")
.build();
final LambdaRestApi apiGateway = LambdaRestApi.Builder.create(this, "myapi")
.handler(lambdaFunction)
.endpointConfiguration(new EndpointConfiguration.Builder()
.types(List.of(EndpointType.REGIONAL))
.build())
.build();
new CloudFrontToApiGateway(this, "test-cloudfront-apigateway", new CloudFrontToApiGatewayProps.Builder()
.existingApiGatewayObj(apiGateway)
.build());
Pattern Construct Props
Name | Type | Description |
---|---|---|
existingApiGatewayObj | api.RestApi |
The regional API Gateway that will be fronted with the CloudFront |
cloudFrontDistributionProps? | cloudfront.DistributionProps | any |
Optional user provided props to override the default props for CloudFront Distribution |
insertHttpSecurityHeaders? | boolean |
Optional user provided props to turn on/off the automatic injection of best practice HTTP security headers in all responses from CloudFront |
responseHeadersPolicyProps? | cloudfront.ResponseHeadersPolicyProps |
Optional user provided configuration that cloudfront applies to all http responses. |
cloudFrontLoggingBucketProps? | s3.BucketProps |
Optional user provided props to override the default props for the CloudFront Logging Bucket. |
Pattern Properties
Name | Type | Description |
---|---|---|
cloudFrontWebDistribution | cloudfront.Distribution |
Returns an instance of cloudfront.Distribution created by the construct |
apiGateway | api.RestApi |
Returns an instance of the API Gateway REST API created by the pattern. |
cloudFrontFunction? | cloudfront.Function |
Returns an instance of the Cloudfront function created by the pattern. |
cloudFrontLoggingBucket | s3.Bucket |
Returns an instance of the logging bucket for CloudFront Distribution. |
Default settings
Out of the box implementation of the Construct without any override will set the following defaults:
Amazon CloudFront
- Configure Access logging for CloudFront Distribution
- Enable automatic injection of best practice HTTP security headers in all responses from CloudFront Distribution
Amazon API Gateway
- User provided API Gateway object is used as-is
- Enable X-Ray Tracing
Architecture
© Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Close
Hashes for aws-solutions-constructs.aws-cloudfront-apigateway-2.51.0.tar.gz
Algorithm | Hash digest | |
---|---|---|
SHA256 | cd3d23026464a4b4135f61472ed8a19898355f756d380b61ff906c92f8723e0a |
|
MD5 | 1a402c2de71c756a0e0f4b8fc643f2ab |
|
BLAKE2b-256 | 7a627554ae22b69bf9ea8d03c44f3733b24bdc29caf556913f2a7d75342ee5c9 |
Close
Hashes for aws_solutions_constructs.aws_cloudfront_apigateway-2.51.0-py3-none-any.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | e9cdce7cd7178efbc3c41a4fad6801cd2f9f1bde41b80de3e2894d5088a3252c |
|
MD5 | 75aa08cd89744cae82d51a18dbde6266 |
|
BLAKE2b-256 | 99f99ede382f47e600a987fe95eee8bc0ba30d3d7de1460025493cabb71153be |