UNPKG

@pulumi/aws

Version:

A Pulumi package for creating and managing Amazon Web Services (AWS) cloud resources.

348 lines (347 loc) • 16.3 kB
import * as pulumi from "@pulumi/pulumi"; import * as inputs from "../types/input"; import * as outputs from "../types/output"; /** * Creates an Amazon CloudFront multi-tenant distribution. * * Multi-tenant distributions are a specialized type of CloudFront distribution designed for multi-tenant applications. They have specific limitations and requirements compared to standard CloudFront distributions. * * For information about CloudFront multi-tenant distributions, see the [Amazon CloudFront Developer Guide](https://docs.aws.amazon.com/AmazonCloudFront/latest/DeveloperGuide/). * * > **NOTE:** CloudFront distributions take about 15 minutes to reach a deployed state after creation or modification. During this time, deletes to resources will be blocked. If you need to delete a distribution that is enabled and you do not want to wait, you need to use the `retainOnDelete` flag. * * ## Multi-tenant Distribution Limitations * * Multi-tenant distributions have the following limitations compared to standard CloudFront distributions: * * - **Connection Mode**: Automatically set to `tenant-only` and cannot be modified * - **Cache Policies**: Must use cache policies instead of legacy TTL settings * - **Trusted Key Groups**: Must use trusted key groups instead of trusted signers * - **WAF Integration**: Only supports WAF v2 web ACLs * - **Certificate Management**: Must use ACM certificates (IAM certificates not supported) * * ### Unsupported Attributes * * The following attributes that are available in standard CloudFront distributions are **not supported** for multi-tenant distributions: * * - `activeTrustedSigners` - Use `activeTrustedKeyGroups` instead * - `aliasIcpRecordals` - Managed by connection groups * - `aliases` - Managed by connection groups * - `anycastIpListId` - Use connection groups instead * - `continuousDeploymentPolicyId` * - `forwardedValues` in cache behaviors - Deprecated, use cache policies instead * - `isIpv6Enabled` - Managed by connection groups * - `priceClass` - Managed by connection groups * - `smoothStreaming` in cache behaviors * - `staging` mode * - `trustedSigners` in cache behaviors - Use `trustedKeyGroups` instead * - Cache behavior TTL settings (`defaultTtl`, `maxTtl`, `minTtl`) - Use cache policies instead * * ## Import * * Using `pulumi import`, import CloudFront Multi-tenant Distributions using the `id`. For example: * * ```sh * $ pulumi import aws:cloudfront/multitenantDistribution:MultitenantDistribution distribution E74FTE3AEXAMPLE * ``` */ export declare class MultitenantDistribution extends pulumi.CustomResource { /** * Get an existing MultitenantDistribution resource's state with the given name, ID, and optional extra * properties used to qualify the lookup. * * @param name The _unique_ name of the resulting resource. * @param id The _unique_ provider ID of the resource to lookup. * @param state Any extra arguments used during the lookup. * @param opts Optional settings to control the behavior of the CustomResource. */ static get(name: string, id: pulumi.Input<pulumi.ID>, state?: MultitenantDistributionState, opts?: pulumi.CustomResourceOptions): MultitenantDistribution; /** * Returns true if the given object is an instance of MultitenantDistribution. This is designed to work even * when multiple copies of the Pulumi SDK have been loaded into the same process. */ static isInstance(obj: any): obj is MultitenantDistribution; /** * List of key groups that CloudFront can use to validate signed URLs or signed cookies. See Active Trusted Key Groups below. */ readonly activeTrustedKeyGroups: pulumi.Output<outputs.cloudfront.MultitenantDistributionActiveTrustedKeyGroup[] | undefined>; /** * ARN for the distribution. */ readonly arn: pulumi.Output<string>; /** * Ordered list of cache behaviors resource for this distribution. See Cache Behavior below. */ readonly cacheBehaviors: pulumi.Output<outputs.cloudfront.MultitenantDistributionCacheBehavior[] | undefined>; /** * Internal value used by CloudFront to allow future updates to the distribution configuration. */ readonly callerReference: pulumi.Output<string>; /** * Any comments you want to include about the distribution. */ readonly comment: pulumi.Output<string>; /** * Connection mode for the distribution. Always set to `tenant-only` for multi-tenant distributions. */ readonly connectionMode: pulumi.Output<string>; /** * One or more custom error response elements. See Custom Error Response below. */ readonly customErrorResponses: pulumi.Output<outputs.cloudfront.MultitenantDistributionCustomErrorResponse[] | undefined>; /** * Default cache behavior for this distribution. See Default Cache Behavior below. */ readonly defaultCacheBehavior: pulumi.Output<outputs.cloudfront.MultitenantDistributionDefaultCacheBehavior | undefined>; /** * Object that you want CloudFront to return when an end user requests the root URL. */ readonly defaultRootObject: pulumi.Output<string | undefined>; /** * Domain name corresponding to the distribution. */ readonly domainName: pulumi.Output<string>; /** * Whether the distribution is enabled to accept end user requests for content. */ readonly enabled: pulumi.Output<boolean>; /** * Current version of the distribution's information. */ readonly etag: pulumi.Output<string>; /** * Maximum HTTP version to support on the distribution. Allowed values are `http1.1`, `http2`, `http2and3`, and `http3`. Default: `http2`. */ readonly httpVersion: pulumi.Output<string>; /** * Number of invalidation batches currently in progress. */ readonly inProgressInvalidationBatches: pulumi.Output<number>; /** * Date and time the distribution was last modified. */ readonly lastModifiedTime: pulumi.Output<string>; /** * One or more originGroup for this distribution (multiples allowed). See Origin Group below. */ readonly originGroups: pulumi.Output<outputs.cloudfront.MultitenantDistributionOriginGroup[] | undefined>; /** * One or more origins for this distribution (multiples allowed). See Origin below. */ readonly origins: pulumi.Output<outputs.cloudfront.MultitenantDistributionOrigin[] | undefined>; /** * Restriction configuration for this distribution. See Restrictions below. */ readonly restrictions: pulumi.Output<outputs.cloudfront.MultitenantDistributionRestrictions | undefined>; /** * Current status of the distribution. `Deployed` if the distribution's information is fully propagated throughout the Amazon CloudFront system. */ readonly status: pulumi.Output<string>; /** * Map of tags to assign to the resource. If configured with a provider `defaultTags` configuration block present, tags with matching keys will overwrite those defined at the provider-level. */ readonly tags: pulumi.Output<{ [key: string]: string; } | undefined>; /** * Map of tags assigned to the resource, including those inherited from the provider `defaultTags` configuration block. */ readonly tagsAll: pulumi.Output<{ [key: string]: string; }>; /** * Tenant configuration that contains parameter definitions for multi-tenant distributions. See Tenant Config below. */ readonly tenantConfig: pulumi.Output<outputs.cloudfront.MultitenantDistributionTenantConfig | undefined>; readonly timeouts: pulumi.Output<outputs.cloudfront.MultitenantDistributionTimeouts | undefined>; /** * SSL configuration for this distribution. See Viewer Certificate below. */ readonly viewerCertificate: pulumi.Output<outputs.cloudfront.MultitenantDistributionViewerCertificate | undefined>; /** * Unique identifier that specifies the AWS WAF v2 web ACL to associate with this distribution. */ readonly webAclId: pulumi.Output<string | undefined>; /** * Create a MultitenantDistribution resource with the given unique name, arguments, and options. * * @param name The _unique_ name of the resource. * @param args The arguments to use to populate this resource's properties. * @param opts A bag of options that control this resource's behavior. */ constructor(name: string, args: MultitenantDistributionArgs, opts?: pulumi.CustomResourceOptions); } /** * Input properties used for looking up and filtering MultitenantDistribution resources. */ export interface MultitenantDistributionState { /** * List of key groups that CloudFront can use to validate signed URLs or signed cookies. See Active Trusted Key Groups below. */ activeTrustedKeyGroups?: pulumi.Input<pulumi.Input<inputs.cloudfront.MultitenantDistributionActiveTrustedKeyGroup>[]>; /** * ARN for the distribution. */ arn?: pulumi.Input<string>; /** * Ordered list of cache behaviors resource for this distribution. See Cache Behavior below. */ cacheBehaviors?: pulumi.Input<pulumi.Input<inputs.cloudfront.MultitenantDistributionCacheBehavior>[]>; /** * Internal value used by CloudFront to allow future updates to the distribution configuration. */ callerReference?: pulumi.Input<string>; /** * Any comments you want to include about the distribution. */ comment?: pulumi.Input<string>; /** * Connection mode for the distribution. Always set to `tenant-only` for multi-tenant distributions. */ connectionMode?: pulumi.Input<string>; /** * One or more custom error response elements. See Custom Error Response below. */ customErrorResponses?: pulumi.Input<pulumi.Input<inputs.cloudfront.MultitenantDistributionCustomErrorResponse>[]>; /** * Default cache behavior for this distribution. See Default Cache Behavior below. */ defaultCacheBehavior?: pulumi.Input<inputs.cloudfront.MultitenantDistributionDefaultCacheBehavior>; /** * Object that you want CloudFront to return when an end user requests the root URL. */ defaultRootObject?: pulumi.Input<string>; /** * Domain name corresponding to the distribution. */ domainName?: pulumi.Input<string>; /** * Whether the distribution is enabled to accept end user requests for content. */ enabled?: pulumi.Input<boolean>; /** * Current version of the distribution's information. */ etag?: pulumi.Input<string>; /** * Maximum HTTP version to support on the distribution. Allowed values are `http1.1`, `http2`, `http2and3`, and `http3`. Default: `http2`. */ httpVersion?: pulumi.Input<string>; /** * Number of invalidation batches currently in progress. */ inProgressInvalidationBatches?: pulumi.Input<number>; /** * Date and time the distribution was last modified. */ lastModifiedTime?: pulumi.Input<string>; /** * One or more originGroup for this distribution (multiples allowed). See Origin Group below. */ originGroups?: pulumi.Input<pulumi.Input<inputs.cloudfront.MultitenantDistributionOriginGroup>[]>; /** * One or more origins for this distribution (multiples allowed). See Origin below. */ origins?: pulumi.Input<pulumi.Input<inputs.cloudfront.MultitenantDistributionOrigin>[]>; /** * Restriction configuration for this distribution. See Restrictions below. */ restrictions?: pulumi.Input<inputs.cloudfront.MultitenantDistributionRestrictions>; /** * Current status of the distribution. `Deployed` if the distribution's information is fully propagated throughout the Amazon CloudFront system. */ status?: pulumi.Input<string>; /** * Map of tags to assign to the resource. If configured with a provider `defaultTags` configuration block present, tags with matching keys will overwrite those defined at the provider-level. */ tags?: pulumi.Input<{ [key: string]: pulumi.Input<string>; }>; /** * Map of tags assigned to the resource, including those inherited from the provider `defaultTags` configuration block. */ tagsAll?: pulumi.Input<{ [key: string]: pulumi.Input<string>; }>; /** * Tenant configuration that contains parameter definitions for multi-tenant distributions. See Tenant Config below. */ tenantConfig?: pulumi.Input<inputs.cloudfront.MultitenantDistributionTenantConfig>; timeouts?: pulumi.Input<inputs.cloudfront.MultitenantDistributionTimeouts>; /** * SSL configuration for this distribution. See Viewer Certificate below. */ viewerCertificate?: pulumi.Input<inputs.cloudfront.MultitenantDistributionViewerCertificate>; /** * Unique identifier that specifies the AWS WAF v2 web ACL to associate with this distribution. */ webAclId?: pulumi.Input<string>; } /** * The set of arguments for constructing a MultitenantDistribution resource. */ export interface MultitenantDistributionArgs { /** * List of key groups that CloudFront can use to validate signed URLs or signed cookies. See Active Trusted Key Groups below. */ activeTrustedKeyGroups?: pulumi.Input<pulumi.Input<inputs.cloudfront.MultitenantDistributionActiveTrustedKeyGroup>[]>; /** * Ordered list of cache behaviors resource for this distribution. See Cache Behavior below. */ cacheBehaviors?: pulumi.Input<pulumi.Input<inputs.cloudfront.MultitenantDistributionCacheBehavior>[]>; /** * Any comments you want to include about the distribution. */ comment: pulumi.Input<string>; /** * One or more custom error response elements. See Custom Error Response below. */ customErrorResponses?: pulumi.Input<pulumi.Input<inputs.cloudfront.MultitenantDistributionCustomErrorResponse>[]>; /** * Default cache behavior for this distribution. See Default Cache Behavior below. */ defaultCacheBehavior?: pulumi.Input<inputs.cloudfront.MultitenantDistributionDefaultCacheBehavior>; /** * Object that you want CloudFront to return when an end user requests the root URL. */ defaultRootObject?: pulumi.Input<string>; /** * Whether the distribution is enabled to accept end user requests for content. */ enabled: pulumi.Input<boolean>; /** * Maximum HTTP version to support on the distribution. Allowed values are `http1.1`, `http2`, `http2and3`, and `http3`. Default: `http2`. */ httpVersion?: pulumi.Input<string>; /** * One or more originGroup for this distribution (multiples allowed). See Origin Group below. */ originGroups?: pulumi.Input<pulumi.Input<inputs.cloudfront.MultitenantDistributionOriginGroup>[]>; /** * One or more origins for this distribution (multiples allowed). See Origin below. */ origins?: pulumi.Input<pulumi.Input<inputs.cloudfront.MultitenantDistributionOrigin>[]>; /** * Restriction configuration for this distribution. See Restrictions below. */ restrictions?: pulumi.Input<inputs.cloudfront.MultitenantDistributionRestrictions>; /** * Map of tags to assign to the resource. If configured with a provider `defaultTags` configuration block present, tags with matching keys will overwrite those defined at the provider-level. */ tags?: pulumi.Input<{ [key: string]: pulumi.Input<string>; }>; /** * Tenant configuration that contains parameter definitions for multi-tenant distributions. See Tenant Config below. */ tenantConfig?: pulumi.Input<inputs.cloudfront.MultitenantDistributionTenantConfig>; timeouts?: pulumi.Input<inputs.cloudfront.MultitenantDistributionTimeouts>; /** * SSL configuration for this distribution. See Viewer Certificate below. */ viewerCertificate?: pulumi.Input<inputs.cloudfront.MultitenantDistributionViewerCertificate>; /** * Unique identifier that specifies the AWS WAF v2 web ACL to associate with this distribution. */ webAclId?: pulumi.Input<string>; }