@pulumi/gcp
Version:
A Pulumi package for creating and managing Google Cloud Platform resources.
471 lines (470 loc) • 20.3 kB
TypeScript
import * as pulumi from "@pulumi/pulumi";
import * as inputs from "../types/input";
import * as outputs from "../types/output";
/**
* ## Example Usage
*
* ### Firebasehosting Customdomain Basic
*
* ```typescript
* import * as pulumi from "@pulumi/pulumi";
* import * as gcp from "@pulumi/gcp";
*
* const _default = new gcp.firebase.HostingCustomDomain("default", {
* project: "my-project-name",
* siteId: "site-id",
* customDomain: "custom.domain.com",
* });
* ```
* ### Firebasehosting Customdomain Full
*
* ```typescript
* import * as pulumi from "@pulumi/pulumi";
* import * as gcp from "@pulumi/gcp";
*
* const _default = new gcp.firebase.HostingSite("default", {
* project: "my-project-name",
* siteId: "site-id-full",
* });
* const defaultHostingCustomDomain = new gcp.firebase.HostingCustomDomain("default", {
* project: "my-project-name",
* siteId: _default.siteId,
* customDomain: "source.domain.com",
* certPreference: "GROUPED",
* redirectTarget: "destination.domain.com",
* waitDnsVerification: false,
* });
* ```
* ### Firebasehosting Customdomain Cloud Run
*
* ```typescript
* import * as pulumi from "@pulumi/pulumi";
* import * as gcp from "@pulumi/gcp";
*
* const _default = new gcp.firebase.HostingSite("default", {
* project: "my-project-name",
* siteId: "site-id",
* });
* const defaultService = new gcp.cloudrunv2.Service("default", {
* project: "my-project-name",
* name: "cloud-run-service-via-hosting",
* location: "us-central1",
* ingress: "INGRESS_TRAFFIC_ALL",
* template: {
* containers: [{
* image: "us-docker.pkg.dev/cloudrun/container/hello",
* }],
* },
* deletionProtection: true,
* });
* const defaultHostingVersion = new gcp.firebase.HostingVersion("default", {
* siteId: _default.siteId,
* config: {
* rewrites: [{
* glob: "/hello/**",
* run: {
* serviceId: defaultService.name,
* region: defaultService.location,
* },
* }],
* },
* });
* const defaultHostingRelease = new gcp.firebase.HostingRelease("default", {
* siteId: _default.siteId,
* versionName: defaultHostingVersion.name,
* message: "Cloud Run Integration",
* });
* const defaultHostingCustomDomain = new gcp.firebase.HostingCustomDomain("default", {
* project: "my-project-name",
* siteId: _default.siteId,
* customDomain: "run.custom.domain.com",
* waitDnsVerification: false,
* });
* ```
*
* ## Import
*
* CustomDomain can be imported using any of these accepted formats:
*
* * `projects/{{project}}/sites/{{site_id}}/customDomains/{{custom_domain}}`
*
* * `sites/{{site_id}}/customDomains/{{custom_domain}}`
*
* * `{{project}}/{{site_id}}/{{custom_domain}}`
*
* * `{{site_id}}/{{custom_domain}}`
*
* When using the `pulumi import` command, CustomDomain can be imported using one of the formats above. For example:
*
* ```sh
* $ pulumi import gcp:firebase/hostingCustomDomain:HostingCustomDomain default projects/{{project}}/sites/{{site_id}}/customDomains/{{custom_domain}}
* ```
*
* ```sh
* $ pulumi import gcp:firebase/hostingCustomDomain:HostingCustomDomain default sites/{{site_id}}/customDomains/{{custom_domain}}
* ```
*
* ```sh
* $ pulumi import gcp:firebase/hostingCustomDomain:HostingCustomDomain default {{project}}/{{site_id}}/{{custom_domain}}
* ```
*
* ```sh
* $ pulumi import gcp:firebase/hostingCustomDomain:HostingCustomDomain default {{site_id}}/{{custom_domain}}
* ```
*/
export declare class HostingCustomDomain extends pulumi.CustomResource {
/**
* Get an existing HostingCustomDomain 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?: HostingCustomDomainState, opts?: pulumi.CustomResourceOptions): HostingCustomDomain;
/**
* Returns true if the given object is an instance of HostingCustomDomain. 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 HostingCustomDomain;
/**
* A field that lets you specify which SSL certificate type Hosting creates
* for your domain name. Spark plan `CustomDomain`s only have access to the
* `GROUPED` cert type, while Blaze plan can select any option.
* Possible values are: `GROUPED`, `PROJECT_GROUPED`, `DEDICATED`.
*/
readonly certPreference: pulumi.Output<string>;
/**
* The SSL certificate Hosting has for this `CustomDomain`'s domain name.
* For new `CustomDomain`s, this often represents Hosting's intent to create
* a certificate, rather than an actual cert. Check the `state` field for
* more.
* Structure is documented below.
*/
readonly certs: pulumi.Output<outputs.firebase.HostingCustomDomainCert[]>;
/**
* The `CustomDomain`'s create time.
*/
readonly createTime: pulumi.Output<string>;
/**
* The ID of the `CustomDomain`, which is the domain name you'd like to use with Firebase Hosting.
*
*
* - - -
*/
readonly customDomain: pulumi.Output<string>;
/**
* The time the `CustomDomain` was deleted; null for `CustomDomains` that
* haven't been deleted. Deleted `CustomDomains` persist for approximately 30
* days, after which time Hosting removes them completely.
*/
readonly deleteTime: pulumi.Output<string>;
/**
* A string that represents the current state of the `CustomDomain` and
* allows you to confirm its initial state in requests that would modify it.
*/
readonly etag: pulumi.Output<string>;
/**
* The minimum time before a soft-deleted `CustomDomain` is completely removed
* from Hosting; null for `CustomDomains` that haven't been deleted.
*/
readonly expireTime: pulumi.Output<string>;
/**
* The host state of your domain name. Host state is determined by checking each
* IP address associated with your domain name to see if it's serving
* Hosting content.
* HOST_UNHOSTED:
* Your `CustomDomain`'s domain name isn't associated with any IP addresses.
* HOST_UNREACHABLE:
* Your `CustomDomain`'s domain name can't be reached. Hosting services' DNS
* queries to find your domain name's IP addresses resulted in errors. See
* your `CustomDomain`'s `issues` field for more details.
* HOST_MISMATCH:
* Your `CustomDomain`'s domain name has IP addresses that don't ultimately
* resolve to Hosting.
* HOST_CONFLICT:
* Your `CustomDomain`'s domain name has IP addresses that resolve to both
* Hosting and other services. To ensure consistent results, remove `A` and
* `AAAA` records related to non-Hosting services.
* HOST_ACTIVE:
* All requests against your `CustomDomain`'s domain name are served by
* Hosting. If the `CustomDomain`'s `OwnershipState` is also `ACTIVE`, Hosting
* serves your Hosting Site's content on the domain name.
*/
readonly hostState: pulumi.Output<string>;
/**
* A set of errors Hosting systems encountered when trying to establish
* Hosting's ability to serve secure content for your domain name. Resolve
* these issues to ensure your `CustomDomain` behaves properly.
* Structure is documented below.
*/
readonly issues: pulumi.Output<outputs.firebase.HostingCustomDomainIssue[]>;
/**
* The fully-qualified name of the `CustomDomain`.
*/
readonly name: pulumi.Output<string>;
/**
* The ownership state of your domain name. Ownership is determined at a
* Firebase project level, and established by adding `TXT` records to your
* domain name's DNS records.
* Ownership cascades to subdomains. Granting a project ownership of `foo.com`
* also grants that project ownership over `bar.foo.com`, unless you add
* specific `TXT` records to `bar.foo.com` that grant a different project
* ownership.
* If your `CustomDomain` is in an `OwnershipState` other than
* `OWNERSHIP_ACTIVE` for more than 30 days and it hasn't been updated in at
* least 30 days, Hosting's ownership systems delete the `CustomDomain`.
* OWNERSHIP_MISSING:
* Your `CustomDomain`'s domain name has no Hosting-related ownership records;
* no Firebase project has permission to act on the domain name's behalf.
* OWNERSHIP_UNREACHABLE:
* Your `CustomDomain`'s domain name can't be reached. Hosting services' DNS
* queries to find your domain name's ownership records resulted in errors.
* See your `CustomDomain`'s `issues` field for more details.
* OWNERSHIP_MISMATCH:
* Your `CustomDomain`'s domain name is owned by another Firebase project.
* Remove the conflicting `TXT` records and replace them with project-specific
* records for your current Firebase project.
* OWNERSHIP_CONFLICT:
* Your `CustomDomain`'s domain name has conflicting `TXT` records that
* indicate ownership by both your current Firebase project and another
* project. Remove the other project's ownership records to grant the current
* project ownership.
* OWNERSHIP_PENDING:
* Your `CustomDomain`'s DNS records are configured correctly. Hosting will
* transfer ownership of your domain to this `CustomDomain` within 24 hours.
* OWNERSHIP_ACTIVE:
* Your `CustomDomain`'s domain name has `TXT` records that grant its project
* permission to act on its behalf.
*/
readonly ownershipState: pulumi.Output<string>;
/**
* The ID of the project in which the resource belongs.
* If it is not provided, the provider project is used.
*/
readonly project: pulumi.Output<string>;
/**
* if true, indicates that Hosting's systems are attempting to
* make the `CustomDomain`'s state match your preferred state. This is most
* frequently `true` when initially provisioning a `CustomDomain` or when creating
* a new SSL certificate to match an updated `certPreference`
*/
readonly reconciling: pulumi.Output<boolean>;
/**
* A domain name that this CustomDomain should direct traffic towards. If
* specified, Hosting will respond to requests against this CustomDomain
* with an HTTP 301 code, and route traffic to the specified `redirectTarget`
* instead.
*/
readonly redirectTarget: pulumi.Output<string | undefined>;
/**
* A set of updates you should make to the domain name's DNS records to
* let Hosting serve secure content on its behalf.
* Structure is documented below.
*/
readonly requiredDnsUpdates: pulumi.Output<outputs.firebase.HostingCustomDomainRequiredDnsUpdate[]>;
/**
* The ID of the site in which to create this custom domain association.
*/
readonly siteId: pulumi.Output<string>;
/**
* The last time the `CustomDomain` was updated.
*/
readonly updateTime: pulumi.Output<string>;
readonly waitDnsVerification: pulumi.Output<boolean | undefined>;
/**
* Create a HostingCustomDomain 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: HostingCustomDomainArgs, opts?: pulumi.CustomResourceOptions);
}
/**
* Input properties used for looking up and filtering HostingCustomDomain resources.
*/
export interface HostingCustomDomainState {
/**
* A field that lets you specify which SSL certificate type Hosting creates
* for your domain name. Spark plan `CustomDomain`s only have access to the
* `GROUPED` cert type, while Blaze plan can select any option.
* Possible values are: `GROUPED`, `PROJECT_GROUPED`, `DEDICATED`.
*/
certPreference?: pulumi.Input<string>;
/**
* The SSL certificate Hosting has for this `CustomDomain`'s domain name.
* For new `CustomDomain`s, this often represents Hosting's intent to create
* a certificate, rather than an actual cert. Check the `state` field for
* more.
* Structure is documented below.
*/
certs?: pulumi.Input<pulumi.Input<inputs.firebase.HostingCustomDomainCert>[]>;
/**
* The `CustomDomain`'s create time.
*/
createTime?: pulumi.Input<string>;
/**
* The ID of the `CustomDomain`, which is the domain name you'd like to use with Firebase Hosting.
*
*
* - - -
*/
customDomain?: pulumi.Input<string>;
/**
* The time the `CustomDomain` was deleted; null for `CustomDomains` that
* haven't been deleted. Deleted `CustomDomains` persist for approximately 30
* days, after which time Hosting removes them completely.
*/
deleteTime?: pulumi.Input<string>;
/**
* A string that represents the current state of the `CustomDomain` and
* allows you to confirm its initial state in requests that would modify it.
*/
etag?: pulumi.Input<string>;
/**
* The minimum time before a soft-deleted `CustomDomain` is completely removed
* from Hosting; null for `CustomDomains` that haven't been deleted.
*/
expireTime?: pulumi.Input<string>;
/**
* The host state of your domain name. Host state is determined by checking each
* IP address associated with your domain name to see if it's serving
* Hosting content.
* HOST_UNHOSTED:
* Your `CustomDomain`'s domain name isn't associated with any IP addresses.
* HOST_UNREACHABLE:
* Your `CustomDomain`'s domain name can't be reached. Hosting services' DNS
* queries to find your domain name's IP addresses resulted in errors. See
* your `CustomDomain`'s `issues` field for more details.
* HOST_MISMATCH:
* Your `CustomDomain`'s domain name has IP addresses that don't ultimately
* resolve to Hosting.
* HOST_CONFLICT:
* Your `CustomDomain`'s domain name has IP addresses that resolve to both
* Hosting and other services. To ensure consistent results, remove `A` and
* `AAAA` records related to non-Hosting services.
* HOST_ACTIVE:
* All requests against your `CustomDomain`'s domain name are served by
* Hosting. If the `CustomDomain`'s `OwnershipState` is also `ACTIVE`, Hosting
* serves your Hosting Site's content on the domain name.
*/
hostState?: pulumi.Input<string>;
/**
* A set of errors Hosting systems encountered when trying to establish
* Hosting's ability to serve secure content for your domain name. Resolve
* these issues to ensure your `CustomDomain` behaves properly.
* Structure is documented below.
*/
issues?: pulumi.Input<pulumi.Input<inputs.firebase.HostingCustomDomainIssue>[]>;
/**
* The fully-qualified name of the `CustomDomain`.
*/
name?: pulumi.Input<string>;
/**
* The ownership state of your domain name. Ownership is determined at a
* Firebase project level, and established by adding `TXT` records to your
* domain name's DNS records.
* Ownership cascades to subdomains. Granting a project ownership of `foo.com`
* also grants that project ownership over `bar.foo.com`, unless you add
* specific `TXT` records to `bar.foo.com` that grant a different project
* ownership.
* If your `CustomDomain` is in an `OwnershipState` other than
* `OWNERSHIP_ACTIVE` for more than 30 days and it hasn't been updated in at
* least 30 days, Hosting's ownership systems delete the `CustomDomain`.
* OWNERSHIP_MISSING:
* Your `CustomDomain`'s domain name has no Hosting-related ownership records;
* no Firebase project has permission to act on the domain name's behalf.
* OWNERSHIP_UNREACHABLE:
* Your `CustomDomain`'s domain name can't be reached. Hosting services' DNS
* queries to find your domain name's ownership records resulted in errors.
* See your `CustomDomain`'s `issues` field for more details.
* OWNERSHIP_MISMATCH:
* Your `CustomDomain`'s domain name is owned by another Firebase project.
* Remove the conflicting `TXT` records and replace them with project-specific
* records for your current Firebase project.
* OWNERSHIP_CONFLICT:
* Your `CustomDomain`'s domain name has conflicting `TXT` records that
* indicate ownership by both your current Firebase project and another
* project. Remove the other project's ownership records to grant the current
* project ownership.
* OWNERSHIP_PENDING:
* Your `CustomDomain`'s DNS records are configured correctly. Hosting will
* transfer ownership of your domain to this `CustomDomain` within 24 hours.
* OWNERSHIP_ACTIVE:
* Your `CustomDomain`'s domain name has `TXT` records that grant its project
* permission to act on its behalf.
*/
ownershipState?: pulumi.Input<string>;
/**
* The ID of the project in which the resource belongs.
* If it is not provided, the provider project is used.
*/
project?: pulumi.Input<string>;
/**
* if true, indicates that Hosting's systems are attempting to
* make the `CustomDomain`'s state match your preferred state. This is most
* frequently `true` when initially provisioning a `CustomDomain` or when creating
* a new SSL certificate to match an updated `certPreference`
*/
reconciling?: pulumi.Input<boolean>;
/**
* A domain name that this CustomDomain should direct traffic towards. If
* specified, Hosting will respond to requests against this CustomDomain
* with an HTTP 301 code, and route traffic to the specified `redirectTarget`
* instead.
*/
redirectTarget?: pulumi.Input<string>;
/**
* A set of updates you should make to the domain name's DNS records to
* let Hosting serve secure content on its behalf.
* Structure is documented below.
*/
requiredDnsUpdates?: pulumi.Input<pulumi.Input<inputs.firebase.HostingCustomDomainRequiredDnsUpdate>[]>;
/**
* The ID of the site in which to create this custom domain association.
*/
siteId?: pulumi.Input<string>;
/**
* The last time the `CustomDomain` was updated.
*/
updateTime?: pulumi.Input<string>;
waitDnsVerification?: pulumi.Input<boolean>;
}
/**
* The set of arguments for constructing a HostingCustomDomain resource.
*/
export interface HostingCustomDomainArgs {
/**
* A field that lets you specify which SSL certificate type Hosting creates
* for your domain name. Spark plan `CustomDomain`s only have access to the
* `GROUPED` cert type, while Blaze plan can select any option.
* Possible values are: `GROUPED`, `PROJECT_GROUPED`, `DEDICATED`.
*/
certPreference?: pulumi.Input<string>;
/**
* The ID of the `CustomDomain`, which is the domain name you'd like to use with Firebase Hosting.
*
*
* - - -
*/
customDomain: pulumi.Input<string>;
/**
* The ID of the project in which the resource belongs.
* If it is not provided, the provider project is used.
*/
project?: pulumi.Input<string>;
/**
* A domain name that this CustomDomain should direct traffic towards. If
* specified, Hosting will respond to requests against this CustomDomain
* with an HTTP 301 code, and route traffic to the specified `redirectTarget`
* instead.
*/
redirectTarget?: pulumi.Input<string>;
/**
* The ID of the site in which to create this custom domain association.
*/
siteId: pulumi.Input<string>;
waitDnsVerification?: pulumi.Input<boolean>;
}