import * as pulumi from "@pulumi/pulumi"; import * as inputs from "../types/input"; import * as outputs from "../types/output"; /** * EdgeCacheOrigin represents a HTTP-reachable backend for an EdgeCacheService. * * To get more information about EdgeCacheOrigin, see: * * * [API documentation](https://cloud.google.com/media-cdn/docs/reference/rest/v1/projects.locations.edgeCacheOrigins) * * ## Example Usage * * ### Network Services Edge Cache Origin Basic * * ```typescript * import * as pulumi from "@pulumi/pulumi"; * import * as gcp from "@pulumi/gcp"; * * const _default = new gcp.networkservices.EdgeCacheOrigin("default", { * name: "my-origin", * originAddress: "gs://media-edge-default", * description: "The default bucket for media edge test", * }); * ``` * ### Network Services Edge Cache Origin Advanced * * ```typescript * import * as pulumi from "@pulumi/pulumi"; * import * as gcp from "@pulumi/gcp"; * * const fallback = new gcp.networkservices.EdgeCacheOrigin("fallback", { * name: "my-fallback", * originAddress: "fallback.example.com", * description: "The default bucket for media edge test", * maxAttempts: 3, * protocol: "HTTP", * port: 80, * retryConditions: [ * "CONNECT_FAILURE", * "NOT_FOUND", * "HTTP_5XX", * "FORBIDDEN", * ], * timeout: { * connectTimeout: "10s", * maxAttemptsTimeout: "20s", * responseTimeout: "60s", * readTimeout: "5s", * }, * originOverrideAction: { * urlRewrite: { * hostRewrite: "example.com", * }, * headerAction: { * requestHeadersToAdds: [{ * headerName: "x-header", * headerValue: "value", * replace: true, * }], * }, * }, * originRedirect: { * redirectConditions: [ * "MOVED_PERMANENTLY", * "FOUND", * "SEE_OTHER", * "TEMPORARY_REDIRECT", * "PERMANENT_REDIRECT", * ], * }, * }); * const _default = new gcp.networkservices.EdgeCacheOrigin("default", { * name: "my-origin", * originAddress: "gs://media-edge-default", * failoverOrigin: fallback.id, * description: "The default bucket for media edge test", * maxAttempts: 2, * labels: { * a: "b", * }, * timeout: { * connectTimeout: "10s", * }, * }); * ``` * ### Network Services Edge Cache Origin V4auth * * ```typescript * import * as pulumi from "@pulumi/pulumi"; * import * as gcp from "@pulumi/gcp"; * * const secret_basic = new gcp.secretmanager.Secret("secret-basic", { * secretId: "secret-name", * replication: { * auto: {}, * }, * }); * const secret_version_basic = new gcp.secretmanager.SecretVersion("secret-version-basic", { * secret: secret_basic.id, * secretData: "secret-data", * }); * const _default = new gcp.networkservices.EdgeCacheOrigin("default", { * name: "my-origin", * originAddress: "gs://media-edge-default", * description: "The default bucket for V4 authentication", * awsV4Authentication: { * accessKeyId: "ACCESSKEYID", * secretAccessKeyVersion: secret_version_basic.id, * originRegion: "auto", * }, * }); * ``` * * ## Import * * EdgeCacheOrigin can be imported using any of these accepted formats: * * * `projects/{{project}}/locations/global/edgeCacheOrigins/{{name}}` * * `{{project}}/{{name}}` * * `{{name}}` * * When using the `pulumi import` command, EdgeCacheOrigin can be imported using one of the formats above. For example: * * ```sh * $ pulumi import gcp:networkservices/edgeCacheOrigin:EdgeCacheOrigin default projects/{{project}}/locations/global/edgeCacheOrigins/{{name}} * $ pulumi import gcp:networkservices/edgeCacheOrigin:EdgeCacheOrigin default {{project}}/{{name}} * $ pulumi import gcp:networkservices/edgeCacheOrigin:EdgeCacheOrigin default {{name}} * ``` */ export declare class EdgeCacheOrigin extends pulumi.CustomResource { /** * Get an existing EdgeCacheOrigin 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, state?: EdgeCacheOriginState, opts?: pulumi.CustomResourceOptions): EdgeCacheOrigin; /** * Returns true if the given object is an instance of EdgeCacheOrigin. 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 EdgeCacheOrigin; /** * Enable AWS Signature Version 4 origin authentication. * Structure is documented below. */ readonly awsV4Authentication: pulumi.Output; /** * A human-readable description of the resource. */ readonly description: pulumi.Output; /** * All of labels (key/value pairs) present on the resource in GCP, including the labels configured through Pulumi, other clients and services. */ readonly effectiveLabels: pulumi.Output<{ [key: string]: string; }>; /** * The Origin resource to try when the current origin cannot be reached. * After maxAttempts is reached, the configured failoverOrigin will be used to fulfil the request. * The value of timeout.maxAttemptsTimeout dictates the timeout across all origins. * A reference to a Topic resource. */ readonly failoverOrigin: pulumi.Output; /** * The FlexShieldingOptions to be used for all routes to this origin. * If not set, defaults to a global caching layer in front of the origin. * Structure is documented below. */ readonly flexShielding: pulumi.Output; /** * Set of label tags associated with the EdgeCache resource. * **Note**: This field is non-authoritative, and will only manage the labels present in your configuration. * Please refer to the field `effectiveLabels` for all of the labels present on the resource. */ readonly labels: pulumi.Output<{ [key: string]: string; } | undefined>; /** * The maximum number of attempts to cache fill from this origin. Another attempt is made when a cache fill fails with one of the retryConditions. * Once maxAttempts to this origin have failed the failoverOrigin will be used, if one is specified. That failoverOrigin may specify its own maxAttempts, * retryConditions and failoverOrigin to control its own cache fill failures. * The total number of allowed attempts to cache fill across this and failover origins is limited to four. * The total time allowed for cache fill attempts across this and failover origins can be controlled with maxAttemptsTimeout. * The last valid, non-retried response from all origins will be returned to the client. * If no origin returns a valid response, an HTTP 502 will be returned to the client. * Defaults to 1. Must be a value greater than 0 and less than 4. */ readonly maxAttempts: pulumi.Output; /** * Name of the resource; provided by the client when the resource is created. * The name must be 1-64 characters long, and match the regular expression [a-zA-Z][a-zA-Z0-9_-]* which means the first character must be a letter, * and all following characters must be a dash, underscore, letter or digit. */ readonly name: pulumi.Output; /** * A fully qualified domain name (FQDN) or IP address reachable over the public Internet, or the address of a Google Cloud Storage bucket. * This address will be used as the origin for cache requests - e.g. FQDN: media-backend.example.com, IPv4: 35.218.1.1, IPv6: 2607:f8b0:4012:809::200e, Cloud Storage: gs://bucketname * When providing an FQDN (hostname), it must be publicly resolvable (e.g. via Google public DNS) and IP addresses must be publicly routable. It must not contain a protocol (e.g., https://) and it must not contain any slashes. * If a Cloud Storage bucket is provided, it must be in the canonical "gs://bucketname" format. Other forms, such as "storage.googleapis.com", will be rejected. */ readonly originAddress: pulumi.Output; /** * The override actions, including url rewrites and header * additions, for requests that use this origin. * Structure is documented below. */ readonly originOverrideAction: pulumi.Output; /** * Follow redirects from this origin. * Structure is documented below. */ readonly originRedirect: pulumi.Output; /** * The port to connect to the origin on. * Defaults to port 443 for HTTP2 and HTTPS protocols, and port 80 for HTTP. */ readonly port: pulumi.Output; /** * The ID of the project in which the resource belongs. * If it is not provided, the provider project is used. */ readonly project: pulumi.Output; /** * The protocol to use to connect to the configured origin. Defaults to HTTP2, and it is strongly recommended that users use HTTP2 for both security & performance. * When using HTTP2 or HTTPS as the protocol, a valid, publicly-signed, unexpired TLS (SSL) certificate must be presented by the origin server. * Possible values are: `HTTP2`, `HTTPS`, `HTTP`. */ readonly protocol: pulumi.Output; /** * The combination of labels configured directly on the resource * and default labels configured on the provider. */ readonly pulumiLabels: pulumi.Output<{ [key: string]: string; }>; /** * Specifies one or more retry conditions for the configured origin. * If the failure mode during a connection attempt to the origin matches the configured retryCondition(s), * the origin request will be retried up to maxAttempts times. The failoverOrigin, if configured, will then be used to satisfy the request. * The default retryCondition is "CONNECT_FAILURE". * retryConditions apply to this origin, and not subsequent failoverOrigin(s), * which may specify their own retryConditions and maxAttempts. * Valid values are: * - CONNECT_FAILURE: Retry on failures connecting to origins, for example due to connection timeouts. * - HTTP_5XX: Retry if the origin responds with any 5xx response code, or if the origin does not respond at all, example: disconnects, reset, read timeout, connection failure, and refused streams. * - GATEWAY_ERROR: Similar to 5xx, but only applies to response codes 502, 503 or 504. * - RETRIABLE_4XX: Retry for retriable 4xx response codes, which include HTTP 409 (Conflict) and HTTP 429 (Too Many Requests) * - NOT_FOUND: Retry if the origin returns a HTTP 404 (Not Found). This can be useful when generating video content, and the segment is not available yet. * - FORBIDDEN: Retry if the origin returns a HTTP 403 (Forbidden). * Each value may be one of: `CONNECT_FAILURE`, `HTTP_5XX`, `GATEWAY_ERROR`, `RETRIABLE_4XX`, `NOT_FOUND`, `FORBIDDEN`. */ readonly retryConditions: pulumi.Output; /** * The connection and HTTP timeout configuration for this origin. * Structure is documented below. */ readonly timeout: pulumi.Output; /** * Create a EdgeCacheOrigin 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: EdgeCacheOriginArgs, opts?: pulumi.CustomResourceOptions); } /** * Input properties used for looking up and filtering EdgeCacheOrigin resources. */ export interface EdgeCacheOriginState { /** * Enable AWS Signature Version 4 origin authentication. * Structure is documented below. */ awsV4Authentication?: pulumi.Input; /** * A human-readable description of the resource. */ description?: pulumi.Input; /** * All of labels (key/value pairs) present on the resource in GCP, including the labels configured through Pulumi, other clients and services. */ effectiveLabels?: pulumi.Input<{ [key: string]: pulumi.Input; }>; /** * The Origin resource to try when the current origin cannot be reached. * After maxAttempts is reached, the configured failoverOrigin will be used to fulfil the request. * The value of timeout.maxAttemptsTimeout dictates the timeout across all origins. * A reference to a Topic resource. */ failoverOrigin?: pulumi.Input; /** * The FlexShieldingOptions to be used for all routes to this origin. * If not set, defaults to a global caching layer in front of the origin. * Structure is documented below. */ flexShielding?: pulumi.Input; /** * Set of label tags associated with the EdgeCache resource. * **Note**: This field is non-authoritative, and will only manage the labels present in your configuration. * Please refer to the field `effectiveLabels` for all of the labels present on the resource. */ labels?: pulumi.Input<{ [key: string]: pulumi.Input; }>; /** * The maximum number of attempts to cache fill from this origin. Another attempt is made when a cache fill fails with one of the retryConditions. * Once maxAttempts to this origin have failed the failoverOrigin will be used, if one is specified. That failoverOrigin may specify its own maxAttempts, * retryConditions and failoverOrigin to control its own cache fill failures. * The total number of allowed attempts to cache fill across this and failover origins is limited to four. * The total time allowed for cache fill attempts across this and failover origins can be controlled with maxAttemptsTimeout. * The last valid, non-retried response from all origins will be returned to the client. * If no origin returns a valid response, an HTTP 502 will be returned to the client. * Defaults to 1. Must be a value greater than 0 and less than 4. */ maxAttempts?: pulumi.Input; /** * Name of the resource; provided by the client when the resource is created. * The name must be 1-64 characters long, and match the regular expression [a-zA-Z][a-zA-Z0-9_-]* which means the first character must be a letter, * and all following characters must be a dash, underscore, letter or digit. */ name?: pulumi.Input; /** * A fully qualified domain name (FQDN) or IP address reachable over the public Internet, or the address of a Google Cloud Storage bucket. * This address will be used as the origin for cache requests - e.g. FQDN: media-backend.example.com, IPv4: 35.218.1.1, IPv6: 2607:f8b0:4012:809::200e, Cloud Storage: gs://bucketname * When providing an FQDN (hostname), it must be publicly resolvable (e.g. via Google public DNS) and IP addresses must be publicly routable. It must not contain a protocol (e.g., https://) and it must not contain any slashes. * If a Cloud Storage bucket is provided, it must be in the canonical "gs://bucketname" format. Other forms, such as "storage.googleapis.com", will be rejected. */ originAddress?: pulumi.Input; /** * The override actions, including url rewrites and header * additions, for requests that use this origin. * Structure is documented below. */ originOverrideAction?: pulumi.Input; /** * Follow redirects from this origin. * Structure is documented below. */ originRedirect?: pulumi.Input; /** * The port to connect to the origin on. * Defaults to port 443 for HTTP2 and HTTPS protocols, and port 80 for HTTP. */ port?: pulumi.Input; /** * The ID of the project in which the resource belongs. * If it is not provided, the provider project is used. */ project?: pulumi.Input; /** * The protocol to use to connect to the configured origin. Defaults to HTTP2, and it is strongly recommended that users use HTTP2 for both security & performance. * When using HTTP2 or HTTPS as the protocol, a valid, publicly-signed, unexpired TLS (SSL) certificate must be presented by the origin server. * Possible values are: `HTTP2`, `HTTPS`, `HTTP`. */ protocol?: pulumi.Input; /** * The combination of labels configured directly on the resource * and default labels configured on the provider. */ pulumiLabels?: pulumi.Input<{ [key: string]: pulumi.Input; }>; /** * Specifies one or more retry conditions for the configured origin. * If the failure mode during a connection attempt to the origin matches the configured retryCondition(s), * the origin request will be retried up to maxAttempts times. The failoverOrigin, if configured, will then be used to satisfy the request. * The default retryCondition is "CONNECT_FAILURE". * retryConditions apply to this origin, and not subsequent failoverOrigin(s), * which may specify their own retryConditions and maxAttempts. * Valid values are: * - CONNECT_FAILURE: Retry on failures connecting to origins, for example due to connection timeouts. * - HTTP_5XX: Retry if the origin responds with any 5xx response code, or if the origin does not respond at all, example: disconnects, reset, read timeout, connection failure, and refused streams. * - GATEWAY_ERROR: Similar to 5xx, but only applies to response codes 502, 503 or 504. * - RETRIABLE_4XX: Retry for retriable 4xx response codes, which include HTTP 409 (Conflict) and HTTP 429 (Too Many Requests) * - NOT_FOUND: Retry if the origin returns a HTTP 404 (Not Found). This can be useful when generating video content, and the segment is not available yet. * - FORBIDDEN: Retry if the origin returns a HTTP 403 (Forbidden). * Each value may be one of: `CONNECT_FAILURE`, `HTTP_5XX`, `GATEWAY_ERROR`, `RETRIABLE_4XX`, `NOT_FOUND`, `FORBIDDEN`. */ retryConditions?: pulumi.Input[]>; /** * The connection and HTTP timeout configuration for this origin. * Structure is documented below. */ timeout?: pulumi.Input; } /** * The set of arguments for constructing a EdgeCacheOrigin resource. */ export interface EdgeCacheOriginArgs { /** * Enable AWS Signature Version 4 origin authentication. * Structure is documented below. */ awsV4Authentication?: pulumi.Input; /** * A human-readable description of the resource. */ description?: pulumi.Input; /** * The Origin resource to try when the current origin cannot be reached. * After maxAttempts is reached, the configured failoverOrigin will be used to fulfil the request. * The value of timeout.maxAttemptsTimeout dictates the timeout across all origins. * A reference to a Topic resource. */ failoverOrigin?: pulumi.Input; /** * The FlexShieldingOptions to be used for all routes to this origin. * If not set, defaults to a global caching layer in front of the origin. * Structure is documented below. */ flexShielding?: pulumi.Input; /** * Set of label tags associated with the EdgeCache resource. * **Note**: This field is non-authoritative, and will only manage the labels present in your configuration. * Please refer to the field `effectiveLabels` for all of the labels present on the resource. */ labels?: pulumi.Input<{ [key: string]: pulumi.Input; }>; /** * The maximum number of attempts to cache fill from this origin. Another attempt is made when a cache fill fails with one of the retryConditions. * Once maxAttempts to this origin have failed the failoverOrigin will be used, if one is specified. That failoverOrigin may specify its own maxAttempts, * retryConditions and failoverOrigin to control its own cache fill failures. * The total number of allowed attempts to cache fill across this and failover origins is limited to four. * The total time allowed for cache fill attempts across this and failover origins can be controlled with maxAttemptsTimeout. * The last valid, non-retried response from all origins will be returned to the client. * If no origin returns a valid response, an HTTP 502 will be returned to the client. * Defaults to 1. Must be a value greater than 0 and less than 4. */ maxAttempts?: pulumi.Input; /** * Name of the resource; provided by the client when the resource is created. * The name must be 1-64 characters long, and match the regular expression [a-zA-Z][a-zA-Z0-9_-]* which means the first character must be a letter, * and all following characters must be a dash, underscore, letter or digit. */ name?: pulumi.Input; /** * A fully qualified domain name (FQDN) or IP address reachable over the public Internet, or the address of a Google Cloud Storage bucket. * This address will be used as the origin for cache requests - e.g. FQDN: media-backend.example.com, IPv4: 35.218.1.1, IPv6: 2607:f8b0:4012:809::200e, Cloud Storage: gs://bucketname * When providing an FQDN (hostname), it must be publicly resolvable (e.g. via Google public DNS) and IP addresses must be publicly routable. It must not contain a protocol (e.g., https://) and it must not contain any slashes. * If a Cloud Storage bucket is provided, it must be in the canonical "gs://bucketname" format. Other forms, such as "storage.googleapis.com", will be rejected. */ originAddress: pulumi.Input; /** * The override actions, including url rewrites and header * additions, for requests that use this origin. * Structure is documented below. */ originOverrideAction?: pulumi.Input; /** * Follow redirects from this origin. * Structure is documented below. */ originRedirect?: pulumi.Input; /** * The port to connect to the origin on. * Defaults to port 443 for HTTP2 and HTTPS protocols, and port 80 for HTTP. */ port?: pulumi.Input; /** * The ID of the project in which the resource belongs. * If it is not provided, the provider project is used. */ project?: pulumi.Input; /** * The protocol to use to connect to the configured origin. Defaults to HTTP2, and it is strongly recommended that users use HTTP2 for both security & performance. * When using HTTP2 or HTTPS as the protocol, a valid, publicly-signed, unexpired TLS (SSL) certificate must be presented by the origin server. * Possible values are: `HTTP2`, `HTTPS`, `HTTP`. */ protocol?: pulumi.Input; /** * Specifies one or more retry conditions for the configured origin. * If the failure mode during a connection attempt to the origin matches the configured retryCondition(s), * the origin request will be retried up to maxAttempts times. The failoverOrigin, if configured, will then be used to satisfy the request. * The default retryCondition is "CONNECT_FAILURE". * retryConditions apply to this origin, and not subsequent failoverOrigin(s), * which may specify their own retryConditions and maxAttempts. * Valid values are: * - CONNECT_FAILURE: Retry on failures connecting to origins, for example due to connection timeouts. * - HTTP_5XX: Retry if the origin responds with any 5xx response code, or if the origin does not respond at all, example: disconnects, reset, read timeout, connection failure, and refused streams. * - GATEWAY_ERROR: Similar to 5xx, but only applies to response codes 502, 503 or 504. * - RETRIABLE_4XX: Retry for retriable 4xx response codes, which include HTTP 409 (Conflict) and HTTP 429 (Too Many Requests) * - NOT_FOUND: Retry if the origin returns a HTTP 404 (Not Found). This can be useful when generating video content, and the segment is not available yet. * - FORBIDDEN: Retry if the origin returns a HTTP 403 (Forbidden). * Each value may be one of: `CONNECT_FAILURE`, `HTTP_5XX`, `GATEWAY_ERROR`, `RETRIABLE_4XX`, `NOT_FOUND`, `FORBIDDEN`. */ retryConditions?: pulumi.Input[]>; /** * The connection and HTTP timeout configuration for this origin. * Structure is documented below. */ timeout?: pulumi.Input; }