@pulumi/aws
Version:
A Pulumi package for creating and managing Amazon Web Services (AWS) cloud resources.
348 lines (347 loc) • 16.3 kB
TypeScript
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>;
}