@studion/infra-code-blocks
Version:
Studion common infra components
97 lines • 4.25 kB
TypeScript
import * as aws from '@pulumi/aws';
import * as pulumi from '@pulumi/pulumi';
import { AcmCertificate } from '../acm-certificate';
export declare class CloudFront extends pulumi.ComponentResource {
name: string;
distribution: aws.cloudfront.Distribution;
acmCertificate?: AcmCertificate;
constructor(name: string, args: CloudFront.Args, opts?: pulumi.ComponentResourceOptions);
private createDistributionOrigins;
private getCacheBehavior;
private createCertificate;
private createDistribution;
private createAliasRecord;
}
export declare namespace CloudFront {
export enum BehaviorType {
S3 = "s3",
LB = "lb",
CUSTOM = "custom"
}
export type S3Behavior = BehaviorBase & {
type: BehaviorType.S3;
bucket: pulumi.Input<aws.s3.Bucket>;
websiteConfig: pulumi.Input<aws.s3.BucketWebsiteConfiguration>;
/**
* Override TTLs of the default cache policy. Suitable when more control is
* needed to set up unified TTL on the default cache policy.
*/
cacheTtl?: pulumi.Input<number>;
};
export type LbBehavior = BehaviorBase & {
type: BehaviorType.LB;
loadBalancer: pulumi.Input<aws.lb.LoadBalancer>;
dnsName?: pulumi.Input<string>;
};
export type CustomBehavior = BehaviorBase & {
type: BehaviorType.CUSTOM;
originId: pulumi.Input<string>;
domainName: pulumi.Input<string>;
originProtocolPolicy?: pulumi.Input<string>;
allowedMethods?: pulumi.Input<pulumi.Input<string>[]>;
cachedMethods?: pulumi.Input<pulumi.Input<string>[]>;
compress?: pulumi.Input<boolean>;
defaultRootObject?: pulumi.Input<string>;
cachePolicyId?: pulumi.Input<string>;
originRequestPolicyId?: pulumi.Input<string>;
responseHeadersPolicyId?: pulumi.Input<string>;
};
export type Behavior = S3Behavior | LbBehavior | CustomBehavior;
export type Args = {
/**
* Behavior is a combination of distribution's origin and cache behavior.
* Ordering is important since first encountered behavior is applied,
* matched by path.
* The default behavior, i.e. path pattern `*` or `/*`, must always be last.
* Mapping between behavior and cache is one to one, while origin is mapped
* by ID to filter out duplicates while keeping the last occurrence.
*/
behaviors: Behavior[];
/**
* Domain name for CloudFront distribution. Implies creation of certificate
* and alias record. Must belong to the provided hosted zone.
* Providing the `certificate` argument has following effects:
* - Certificate creation is skipped
* - Provided certificate must cover the domain name
* Responsibility to ensure mentioned requirements in on the consumer, and
* falling to do so will result in unexpected behavior.
*/
domain?: pulumi.Input<string>;
/**
* Certificate for CloudFront distribution. Domain and alternative domains
* are automatically pulled from the certificate and translated into alias
* records. Domains covered by the certificate, must belong to the provided
* hosted zone. The certificate must be in `us-east-1` region. In a case
* of wildcard certificate the `domain` argument is required.
* Providing the `domain` argument has following effects:
* - Alias records creation, from automatically pulled domains, is skipped
* - Certificate must cover the provided domain name
* Responsibility to ensure mentioned requirements in on the consumer, and
* falling to do so will result in unexpected behavior.
*/
certificate?: pulumi.Input<aws.acm.Certificate>;
/**
* ID of hosted zone is needed when the `domain` or the `certificate`
* arguments are provided.
*/
hostedZoneId?: pulumi.Input<string>;
tags?: pulumi.Input<{
[key: string]: pulumi.Input<string>;
}>;
};
type BehaviorBase = {
pathPattern: string;
};
export {};
}
//# sourceMappingURL=index.d.ts.map