@altostra/core
Version:
Core library for shared types and logic
126 lines (125 loc) • 5.15 kB
TypeScript
import type { Integer } from "../../../common/CustomTypes/Integer";
import type { RootedPath } from "../../../common/CustomTypes/RootedPath";
import type { Maybe } from "../../../common/Maybe";
import type { OriginAccessIdentity } from "../../OriginAccessIdentity";
import type { Path } from "../../Path";
import type { AwsResourceCommon, CloudFormationTags } from "../common";
import type { CloudFormationString } from "../IntrinsicFunctions";
export declare type DistributionType = 'AWS::CloudFront::Distribution';
export interface Distribution extends AwsResourceCommon {
Type: DistributionType;
Properties: DistributionProperties;
}
export interface DistributionProperties {
DistributionConfig: DistributionConfig;
Tags?: CloudFormationTags;
}
export interface DistributionConfig {
Enabled: boolean;
Aliases?: string[];
CacheBehaviors?: CacheBehavior[];
Comment?: string;
CustomErrorResponses?: CustomErrorResponses[];
DefaultCacheBehavior: DefaultCacheBehavior;
DefaultRootObject?: Path | '';
HttpVersion?: HttpVersion;
IPV6Enabled?: boolean;
Logging?: object;
Origins?: DistributionOrigin[];
PriceClass?: PriceClass;
Restrictions?: object;
ViewerCertificate?: ViewerCertificate;
WebACLId?: CloudFormationString;
}
export interface DistributionOriginBase {
DomainName: CloudFormationString;
Id: CloudFormationString;
OriginCustomHeaders?: OriginCustomHeader[];
OriginPath?: CloudFormationString;
OriginAccessControlId?: CloudFormationString;
}
export interface CustomDistributionOrigin extends DistributionOriginBase {
CustomOriginConfig: CustomOriginConfig;
}
export interface S3DistributionOrigin extends DistributionOriginBase {
S3OriginConfig: S3OriginConfig;
}
export declare type DistributionOrigin = CustomDistributionOrigin | S3DistributionOrigin;
export declare type HttpVersion = 'http1.1' | 'http2';
export declare type PriceClass = 'PriceClass_100' | 'PriceClass_200' | 'PriceClass_All';
export interface OriginCustomHeader {
HeaderName: string;
HeaderValue: CloudFormationString;
}
export interface CustomOriginConfig {
HTTPPort?: Integer;
HTTPSPort?: Integer;
OriginKeepaliveTimeout?: Integer;
OriginProtocolPolicy?: OriginProtocolPolicy;
OriginReadTimeout?: Integer;
OriginSSLProtocols?: string[];
}
export interface S3OriginConfig {
OriginAccessIdentity?: OriginAccessIdentity;
}
export declare type OriginProtocolPolicy = 'http-only' | 'https-only' | 'match-viewer';
export interface DefaultCacheBehavior {
AllowedMethods?: string[];
CachedMethods?: string[];
Compress?: boolean;
DefaultTTL?: number;
FieldLevelEncryptionId?: CloudFormationString;
ForwardedValues: ForwardedValues;
LambdaFunctionAssociations?: object[];
MaxTTL?: number;
MinTTL?: number;
SmoothStreaming?: boolean;
TargetOriginId: CloudFormationString;
TrustedSigners?: string[];
ViewerProtocolPolicy: ViewerProtocolPolicy;
}
export interface CacheBehavior extends DefaultCacheBehavior {
PathPattern: string;
}
export interface ForwardedValues {
QueryString: boolean;
QueryStringCacheKeys?: string[];
Cookies?: object;
Headers?: string[];
}
export declare type ViewerProtocolPolicy = 'allow-all' | 'https-only' | 'redirect-to-https';
export declare type CustomErrorResponses = CustomErrorResponsesBase | CustomErrorResponsesWithRedirect;
export interface CustomErrorResponsesBase {
ErrorCachingMinTTL?: number;
ErrorCode: Integer;
}
export interface CustomErrorResponsesWithRedirect extends CustomErrorResponsesBase {
ResponseCode: Integer;
ResponsePagePath: RootedPath | '';
}
export interface ViewerCertificateBase {
CloudFrontDefaultCertificate?: boolean;
MinimumProtocolVersion?: TLSSupportedVersion;
SslSupportMethod?: TLSSupportMethod;
}
export interface DefaultCloudFrontViewerCertificate extends ViewerCertificateBase {
CloudFrontDefaultCertificate: true;
MinimumProtocolVersion?: undefined;
SslSupportMethod?: undefined;
}
export interface CetificateManagerViewerCertificate extends ViewerCertificateBase {
CloudFrontDefaultCertificate?: false;
AcmCertificateArn: string;
SslSupportMethod: TLSSupportMethod;
}
export interface IamViewerCertificate extends ViewerCertificateBase {
CloudFrontDefaultCertificate?: false;
IamCertificateId: string;
SslSupportMethod: TLSSupportMethod;
}
export declare type ViewerCertificate = CetificateManagerViewerCertificate | DefaultCloudFrontViewerCertificate | IamViewerCertificate;
export declare type TLSSupportedVersion = 'SSLv3' | 'TLSv1_2016' | 'TLSv1.1_2016' | 'TLSv1.2_2018' | 'TLSv1';
export declare type TLSSupportMethod = 'sni-only' | 'vip';
export declare function isDefaultCloudFrontViewerCertificate(cert: Maybe<ViewerCertificate>): cert is DefaultCloudFrontViewerCertificate;
export declare function isCetificateManagerViewerCertificate(cert: Maybe<ViewerCertificate>): cert is CetificateManagerViewerCertificate;
export declare function isIamViewerCertificate(cert: Maybe<ViewerCertificate>): cert is IamViewerCertificate;