Skip to content
v2.275.0

SourceConfiguration Struct ​

A source configuration is a wrapper for CloudFront origins and behaviors.

An origin is what CloudFront will "be in front of" - that is, CloudFront will pull its assets from an origin.

If you're using s3 as a source - pass the s3Origin property, otherwise, pass the customOriginSource property.

One or the other must be passed, and it is invalid to pass both in the same SourceConfiguration.

Example ​

ts
// The code below shows an example of how to instantiate this type.
// The values are placeholders you should change.
import * as cdk from 'aws-cdk-lib';
import { aws_cloudfront as cloudfront } from 'aws-cdk-lib';
import { aws_iam as iam } from 'aws-cdk-lib';
import { aws_lambda as lambda } from 'aws-cdk-lib';
import { aws_s3 as s3 } from 'aws-cdk-lib';
import { aws_cloudfront as interfaces_cloudfront } from 'aws-cdk-lib/interfaces';

declare const bucket: s3.Bucket;
declare const cloudFrontOriginAccessIdentityRef: interfaces_cloudfront.ICloudFrontOriginAccessIdentityRef & iam.IGrantable;
declare const functionRef: interfaces_cloudfront.IFunctionRef;
declare const keyGroupRef: interfaces_cloudfront.IKeyGroupRef;
declare const version: lambda.Version;
const sourceConfiguration: cloudfront.SourceConfiguration = {
  behaviors: [{
    allowedMethods: cloudfront.CloudFrontAllowedMethods.GET_HEAD,
    cachedMethods: cloudfront.CloudFrontAllowedCachedMethods.GET_HEAD,
    compress: false,
    defaultTtl: cdk.Duration.minutes(30),
    forwardedValues: {
      queryString: false,

      // the properties below are optional
      cookies: {
        forward: 'forward',

        // the properties below are optional
        whitelistedNames: ['whitelistedNames'],
      },
      headers: ['headers'],
      queryStringCacheKeys: ['queryStringCacheKeys'],
    },
    functionAssociations: [{
      eventType: cloudfront.FunctionEventType.VIEWER_REQUEST,
      function: functionRef,
    }],
    isDefaultBehavior: false,
    lambdaFunctionAssociations: [{
      eventType: cloudfront.LambdaEdgeEventType.ORIGIN_REQUEST,
      lambdaFunction: version,

      // the properties below are optional
      includeBody: false,
    }],
    maxTtl: cdk.Duration.minutes(30),
    minTtl: cdk.Duration.minutes(30),
    pathPattern: 'pathPattern',
    trustedKeyGroups: [keyGroupRef],
    trustedSigners: ['trustedSigners'],
    viewerProtocolPolicy: cloudfront.ViewerProtocolPolicy.HTTPS_ONLY,
  }],

  // the properties below are optional
  connectionAttempts: 123,
  connectionTimeout: cdk.Duration.minutes(30),
  customOriginSource: {
    domainName: 'domainName',

    // the properties below are optional
    allowedOriginSSLVersions: [cloudfront.OriginSslPolicy.SSL_V3],
    httpPort: 123,
    httpsPort: 123,
    originHeaders: {
      originHeadersKey: 'originHeaders',
    },
    originKeepaliveTimeout: cdk.Duration.minutes(30),
    originPath: 'originPath',
    originProtocolPolicy: cloudfront.OriginProtocolPolicy.HTTP_ONLY,
    originReadTimeout: cdk.Duration.minutes(30),
    originShieldRegion: 'originShieldRegion',
  },
  failoverCriteriaStatusCodes: [cloudfront.FailoverStatusCode.FORBIDDEN],
  failoverCustomOriginSource: {
    domainName: 'domainName',

    // the properties below are optional
    allowedOriginSSLVersions: [cloudfront.OriginSslPolicy.SSL_V3],
    httpPort: 123,
    httpsPort: 123,
    originHeaders: {
      originHeadersKey: 'originHeaders',
    },
    originKeepaliveTimeout: cdk.Duration.minutes(30),
    originPath: 'originPath',
    originProtocolPolicy: cloudfront.OriginProtocolPolicy.HTTP_ONLY,
    originReadTimeout: cdk.Duration.minutes(30),
    originShieldRegion: 'originShieldRegion',
  },
  failoverS3OriginSource: {
    s3BucketSource: bucket,

    // the properties below are optional
    originAccessIdentity: cloudFrontOriginAccessIdentityRef,
    originHeaders: {
      originHeadersKey: 'originHeaders',
    },
    originPath: 'originPath',
    originShieldRegion: 'originShieldRegion',
  },
  originShieldRegion: 'originShieldRegion',
  s3OriginSource: {
    s3BucketSource: bucket,

    // the properties below are optional
    originAccessIdentity: cloudFrontOriginAccessIdentityRef,
    originHeaders: {
      originHeadersKey: 'originHeaders',
    },
    originPath: 'originPath',
    originShieldRegion: 'originShieldRegion',
  },
};

Properties ​

behaviorsBehavior[]behaviorstyping.List[Behavior]behaviorsList<Behavior>BehaviorsBehavior[]Behaviors*[]Behaviorrequired#
The behaviors associated with this source.

At least one (default) behavior must be included.

connectionAttemptsoptionalnumberconnection_attemptsoptionalint | floatconnectionAttemptsoptionalNumberConnectionAttemptsoptionaldoubleConnectionAttemptsoptional*float64= 3#
The number of times that CloudFront attempts to connect to the origin.

You can specify 1, 2, or 3 as the number of attempts.

connectionTimeoutoptionalDurationconnection_timeoutoptionalDurationconnectionTimeoutoptionalDurationConnectionTimeoutoptionalDurationConnectionTimeoutoptionalDuration= cdk.Duration.seconds(10)#
The number of seconds that CloudFront waits when trying to establish a connection to the origin.

You can specify a number of seconds between 1 and 10 (inclusive).

customOriginSourceoptionalCustomOriginConfigcustom_origin_sourceoptionalCustomOriginConfigcustomOriginSourceoptionalCustomOriginConfigCustomOriginSourceoptionalCustomOriginConfigCustomOriginSourceoptionalCustomOriginConfig#
A custom origin source - for all non-s3 sources.
failoverCriteriaStatusCodesoptionalFailoverStatusCode[]failover_criteria_status_codesoptionaltyping.List[FailoverStatusCode]failoverCriteriaStatusCodesoptionalList<FailoverStatusCode>FailoverCriteriaStatusCodesoptionalFailoverStatusCode[]FailoverCriteriaStatusCodesoptional*[]FailoverStatusCode#
HTTP status code to failover to second origin.

Default: [500, 502, 503, 504]

failoverCustomOriginSourceoptionalCustomOriginConfigfailover_custom_origin_sourceoptionalCustomOriginConfigfailoverCustomOriginSourceoptionalCustomOriginConfigFailoverCustomOriginSourceoptionalCustomOriginConfigFailoverCustomOriginSourceoptionalCustomOriginConfig#
A custom origin source for failover in case the s3OriginSource returns invalid status code.

Default: no failover configuration

failoverS3OriginSourceoptionalS3OriginConfigfailover_s3_origin_sourceoptionalS3OriginConfigfailoverS3OriginSourceoptionalS3OriginConfigFailoverS3OriginSourceoptionalS3OriginConfigFailoverS3OriginSourceoptionalS3OriginConfig#
An s3 origin source for failover in case the s3OriginSource returns invalid status code.

Default: no failover configuration

originShieldRegionoptionalstringorigin_shield_regionoptionalstroriginShieldRegionoptionalStringOriginShieldRegionoptionalstringOriginShieldRegionoptional*string#
When you enable Origin Shield in the AWS Region that has the lowest latency to your origin, you can get better network performance.

Default: origin shield not enabled

s3OriginSourceoptionalS3OriginConfigs3_origin_sourceoptionalS3OriginConfigs3OriginSourceoptionalS3OriginConfigS3OriginSourceoptionalS3OriginConfigS3OriginSourceoptionalS3OriginConfig#
An s3 origin source - if you're using s3 for your assets.