@pulumi/gcp
Version:
A Pulumi package for creating and managing Google Cloud Platform resources.
448 lines (447 loc) • 23.2 kB
TypeScript
import * as pulumi from "@pulumi/pulumi";
import * as inputs from "../types/input";
import * as outputs from "../types/output";
/**
* Models are deployed into it, and afterwards Endpoint is called to obtain predictions and explanations.
*
* To get more information about Endpoint, see:
*
* * [API documentation](https://cloud.google.com/vertex-ai/docs/reference/rest/v1/projects.locations.endpoints)
* * How-to Guides
* * [Official Documentation](https://cloud.google.com/vertex-ai/docs)
*
* ## Example Usage
*
* ### Vertex Ai Endpoint Network
*
* ```typescript
* import * as pulumi from "@pulumi/pulumi";
* import * as gcp from "@pulumi/gcp";
*
* const vertexNetwork = new gcp.compute.Network("vertex_network", {name: "network-name"});
* const vertexRange = new gcp.compute.GlobalAddress("vertex_range", {
* name: "address-name",
* purpose: "VPC_PEERING",
* addressType: "INTERNAL",
* prefixLength: 24,
* network: vertexNetwork.id,
* });
* const vertexVpcConnection = new gcp.servicenetworking.Connection("vertex_vpc_connection", {
* network: vertexNetwork.id,
* service: "servicenetworking.googleapis.com",
* reservedPeeringRanges: [vertexRange.name],
* });
* const bqDataset = new gcp.bigquery.Dataset("bq_dataset", {
* datasetId: "some_dataset",
* friendlyName: "logging dataset",
* description: "This is a dataset that requests are logged to",
* location: "US",
* deleteContentsOnDestroy: true,
* });
* const project = gcp.organizations.getProject({});
* const endpoint = new gcp.vertex.AiEndpoint("endpoint", {
* name: "endpoint-name",
* displayName: "sample-endpoint",
* description: "A sample vertex endpoint",
* location: "us-central1",
* region: "us-central1",
* labels: {
* "label-one": "value-one",
* },
* network: pulumi.all([project, vertexNetwork.name]).apply(([project, name]) => `projects/${project.number}/global/networks/${name}`),
* encryptionSpec: {
* kmsKeyName: "kms-name",
* },
* predictRequestResponseLoggingConfig: {
* bigqueryDestination: {
* outputUri: pulumi.all([project, bqDataset.datasetId]).apply(([project, datasetId]) => `bq://${project.projectId}.${datasetId}.request_response_logging`),
* },
* enabled: true,
* samplingRate: 0.1,
* },
* trafficSplit: JSON.stringify({
* "12345": 100,
* }),
* }, {
* dependsOn: [vertexVpcConnection],
* });
* const cryptoKey = new gcp.kms.CryptoKeyIAMMember("crypto_key", {
* cryptoKeyId: "kms-name",
* role: "roles/cloudkms.cryptoKeyEncrypterDecrypter",
* member: project.then(project => `serviceAccount:service-${project.number}@gcp-sa-aiplatform.iam.gserviceaccount.com`),
* });
* ```
* ### Vertex Ai Endpoint Private Service Connect
*
* ```typescript
* import * as pulumi from "@pulumi/pulumi";
* import * as gcp from "@pulumi/gcp";
*
* const project = gcp.organizations.getProject({});
* const endpoint = new gcp.vertex.AiEndpoint("endpoint", {
* name: "endpoint-name_20665",
* displayName: "sample-endpoint",
* description: "A sample vertex endpoint",
* location: "us-central1",
* region: "us-central1",
* labels: {
* "label-one": "value-one",
* },
* privateServiceConnectConfig: {
* enablePrivateServiceConnect: true,
* projectAllowlists: [project.then(project => project.projectId)],
* },
* });
* ```
* ### Vertex Ai Endpoint Dedicated Endpoint
*
* ```typescript
* import * as pulumi from "@pulumi/pulumi";
* import * as gcp from "@pulumi/gcp";
*
* const endpoint = new gcp.vertex.AiEndpoint("endpoint", {
* name: "endpoint-name_85160",
* displayName: "sample-endpoint",
* description: "A sample vertex endpoint",
* location: "us-central1",
* region: "us-central1",
* labels: {
* "label-one": "value-one",
* },
* dedicatedEndpointEnabled: true,
* });
* const project = gcp.organizations.getProject({});
* ```
*
* ## Import
*
* Endpoint can be imported using any of these accepted formats:
*
* * `projects/{{project}}/locations/{{location}}/endpoints/{{name}}`
*
* * `{{project}}/{{location}}/{{name}}`
*
* * `{{location}}/{{name}}`
*
* When using the `pulumi import` command, Endpoint can be imported using one of the formats above. For example:
*
* ```sh
* $ pulumi import gcp:vertex/aiEndpoint:AiEndpoint default projects/{{project}}/locations/{{location}}/endpoints/{{name}}
* ```
*
* ```sh
* $ pulumi import gcp:vertex/aiEndpoint:AiEndpoint default {{project}}/{{location}}/{{name}}
* ```
*
* ```sh
* $ pulumi import gcp:vertex/aiEndpoint:AiEndpoint default {{location}}/{{name}}
* ```
*/
export declare class AiEndpoint extends pulumi.CustomResource {
/**
* Get an existing AiEndpoint 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?: AiEndpointState, opts?: pulumi.CustomResourceOptions): AiEndpoint;
/**
* Returns true if the given object is an instance of AiEndpoint. 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 AiEndpoint;
/**
* (Output)
* Output only. Timestamp when the DeployedModel was created.
*/
readonly createTime: pulumi.Output<string>;
/**
* Output only. DNS of the dedicated endpoint. Will only be populated if dedicatedEndpointEnabled is true. Format: `https://{endpointId}.{region}-{projectNumber}.prediction.vertexai.goog`.
*/
readonly dedicatedEndpointDns: pulumi.Output<string>;
/**
* If true, the endpoint will be exposed through a dedicated DNS [Endpoint.dedicated_endpoint_dns]. Your request to the dedicated DNS will be isolated from other users' traffic and will have better performance and reliability. Note: Once you enabled dedicated endpoint, you won't be able to send request to the shared DNS {region}-aiplatform.googleapis.com. The limitation will be removed soon.
*/
readonly dedicatedEndpointEnabled: pulumi.Output<boolean | undefined>;
/**
* Output only. The models deployed in this Endpoint. To add or remove DeployedModels use EndpointService.DeployModel and EndpointService.UndeployModel respectively. Models can also be deployed and undeployed using the [Cloud Console](https://console.cloud.google.com/vertex-ai/).
* Structure is documented below.
*/
readonly deployedModels: pulumi.Output<outputs.vertex.AiEndpointDeployedModel[]>;
/**
* The description of the Endpoint.
*/
readonly description: pulumi.Output<string | undefined>;
/**
* Required. The display name of the Endpoint. The name can be up to 128 characters long and can consist of any UTF-8 characters.
*/
readonly displayName: pulumi.Output<string>;
/**
* 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;
}>;
/**
* Customer-managed encryption key spec for an Endpoint. If set, this Endpoint and all sub-resources of this Endpoint will be secured by this key.
* Structure is documented below.
*/
readonly encryptionSpec: pulumi.Output<outputs.vertex.AiEndpointEncryptionSpec | undefined>;
/**
* Used to perform consistent read-modify-write updates. If not set, a blind "overwrite" update happens.
*/
readonly etag: pulumi.Output<string>;
/**
* The labels with user-defined metadata to organize your Endpoints. Label keys and values can be no longer than 64 characters (Unicode codepoints), can only contain lowercase letters, numeric characters, underscores and dashes. International characters are allowed. See https://goo.gl/xmQnxf for more information and examples of labels.
* **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 location for the resource
*/
readonly location: pulumi.Output<string>;
/**
* Output only. Resource name of the Model Monitoring job associated with this Endpoint if monitoring is enabled by CreateModelDeploymentMonitoringJob. Format: `projects/{project}/locations/{location}/modelDeploymentMonitoringJobs/{model_deployment_monitoring_job}`
*/
readonly modelDeploymentMonitoringJob: pulumi.Output<string>;
/**
* The resource name of the Endpoint. The name must be numeric with no leading zeros and can be at most 10 digits.
*/
readonly name: pulumi.Output<string>;
/**
* The full name of the Google Compute Engine [network](https://cloud.google.com//compute/docs/networks-and-firewalls#networks) to which the Endpoint should be peered. Private services access must already be configured for the network. If left unspecified, the Endpoint is not peered with any network. Only one of the fields, network or enable_private_service_connect, can be set. [Format](https://cloud.google.com/compute/docs/reference/rest/v1/networks/insert): `projects/{project}/global/networks/{network}`. Where `{project}` is a project number, as in `12345`, and `{network}` is network name. Only one of the fields, `network` or `privateServiceConnectConfig`, can be set.
*/
readonly network: pulumi.Output<string | undefined>;
/**
* Configures the request-response logging for online prediction.
* Structure is documented below.
*/
readonly predictRequestResponseLoggingConfig: pulumi.Output<outputs.vertex.AiEndpointPredictRequestResponseLoggingConfig | undefined>;
/**
* Configuration for private service connect. `network` and `privateServiceConnectConfig` are mutually exclusive.
* Structure is documented below.
*/
readonly privateServiceConnectConfig: pulumi.Output<outputs.vertex.AiEndpointPrivateServiceConnectConfig | undefined>;
/**
* 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>;
/**
* The combination of labels configured directly on the resource
* and default labels configured on the provider.
*/
readonly pulumiLabels: pulumi.Output<{
[key: string]: string;
}>;
/**
* The region for the resource
*/
readonly region: pulumi.Output<string | undefined>;
/**
* A map from a DeployedModel's id to the percentage of this Endpoint's traffic that should be forwarded to that DeployedModel.
* If a DeployedModel's id is not listed in this map, then it receives no traffic.
* The traffic percentage values must add up to 100, or map must be empty if the Endpoint is to not accept any traffic at a moment. See
* the `deployModel` [example](https://cloud.google.com/vertex-ai/docs/general/deployment#deploy_a_model_to_an_endpoint) and
* [documentation](https://cloud.google.com/vertex-ai/docs/reference/rest/v1beta1/projects.locations.endpoints/deployModel) for more information.
* > **Note:** To set the map to empty, set `"{}"`, apply, and then remove the field from your config.
*/
readonly trafficSplit: pulumi.Output<string>;
/**
* Output only. Timestamp when this Endpoint was last updated.
*/
readonly updateTime: pulumi.Output<string>;
/**
* Create a AiEndpoint 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: AiEndpointArgs, opts?: pulumi.CustomResourceOptions);
}
/**
* Input properties used for looking up and filtering AiEndpoint resources.
*/
export interface AiEndpointState {
/**
* (Output)
* Output only. Timestamp when the DeployedModel was created.
*/
createTime?: pulumi.Input<string>;
/**
* Output only. DNS of the dedicated endpoint. Will only be populated if dedicatedEndpointEnabled is true. Format: `https://{endpointId}.{region}-{projectNumber}.prediction.vertexai.goog`.
*/
dedicatedEndpointDns?: pulumi.Input<string>;
/**
* If true, the endpoint will be exposed through a dedicated DNS [Endpoint.dedicated_endpoint_dns]. Your request to the dedicated DNS will be isolated from other users' traffic and will have better performance and reliability. Note: Once you enabled dedicated endpoint, you won't be able to send request to the shared DNS {region}-aiplatform.googleapis.com. The limitation will be removed soon.
*/
dedicatedEndpointEnabled?: pulumi.Input<boolean>;
/**
* Output only. The models deployed in this Endpoint. To add or remove DeployedModels use EndpointService.DeployModel and EndpointService.UndeployModel respectively. Models can also be deployed and undeployed using the [Cloud Console](https://console.cloud.google.com/vertex-ai/).
* Structure is documented below.
*/
deployedModels?: pulumi.Input<pulumi.Input<inputs.vertex.AiEndpointDeployedModel>[]>;
/**
* The description of the Endpoint.
*/
description?: pulumi.Input<string>;
/**
* Required. The display name of the Endpoint. The name can be up to 128 characters long and can consist of any UTF-8 characters.
*/
displayName?: pulumi.Input<string>;
/**
* 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<string>;
}>;
/**
* Customer-managed encryption key spec for an Endpoint. If set, this Endpoint and all sub-resources of this Endpoint will be secured by this key.
* Structure is documented below.
*/
encryptionSpec?: pulumi.Input<inputs.vertex.AiEndpointEncryptionSpec>;
/**
* Used to perform consistent read-modify-write updates. If not set, a blind "overwrite" update happens.
*/
etag?: pulumi.Input<string>;
/**
* The labels with user-defined metadata to organize your Endpoints. Label keys and values can be no longer than 64 characters (Unicode codepoints), can only contain lowercase letters, numeric characters, underscores and dashes. International characters are allowed. See https://goo.gl/xmQnxf for more information and examples of labels.
* **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<string>;
}>;
/**
* The location for the resource
*/
location?: pulumi.Input<string>;
/**
* Output only. Resource name of the Model Monitoring job associated with this Endpoint if monitoring is enabled by CreateModelDeploymentMonitoringJob. Format: `projects/{project}/locations/{location}/modelDeploymentMonitoringJobs/{model_deployment_monitoring_job}`
*/
modelDeploymentMonitoringJob?: pulumi.Input<string>;
/**
* The resource name of the Endpoint. The name must be numeric with no leading zeros and can be at most 10 digits.
*/
name?: pulumi.Input<string>;
/**
* The full name of the Google Compute Engine [network](https://cloud.google.com//compute/docs/networks-and-firewalls#networks) to which the Endpoint should be peered. Private services access must already be configured for the network. If left unspecified, the Endpoint is not peered with any network. Only one of the fields, network or enable_private_service_connect, can be set. [Format](https://cloud.google.com/compute/docs/reference/rest/v1/networks/insert): `projects/{project}/global/networks/{network}`. Where `{project}` is a project number, as in `12345`, and `{network}` is network name. Only one of the fields, `network` or `privateServiceConnectConfig`, can be set.
*/
network?: pulumi.Input<string>;
/**
* Configures the request-response logging for online prediction.
* Structure is documented below.
*/
predictRequestResponseLoggingConfig?: pulumi.Input<inputs.vertex.AiEndpointPredictRequestResponseLoggingConfig>;
/**
* Configuration for private service connect. `network` and `privateServiceConnectConfig` are mutually exclusive.
* Structure is documented below.
*/
privateServiceConnectConfig?: pulumi.Input<inputs.vertex.AiEndpointPrivateServiceConnectConfig>;
/**
* The ID of the project in which the resource belongs.
* If it is not provided, the provider project is used.
*/
project?: pulumi.Input<string>;
/**
* The combination of labels configured directly on the resource
* and default labels configured on the provider.
*/
pulumiLabels?: pulumi.Input<{
[key: string]: pulumi.Input<string>;
}>;
/**
* The region for the resource
*/
region?: pulumi.Input<string>;
/**
* A map from a DeployedModel's id to the percentage of this Endpoint's traffic that should be forwarded to that DeployedModel.
* If a DeployedModel's id is not listed in this map, then it receives no traffic.
* The traffic percentage values must add up to 100, or map must be empty if the Endpoint is to not accept any traffic at a moment. See
* the `deployModel` [example](https://cloud.google.com/vertex-ai/docs/general/deployment#deploy_a_model_to_an_endpoint) and
* [documentation](https://cloud.google.com/vertex-ai/docs/reference/rest/v1beta1/projects.locations.endpoints/deployModel) for more information.
* > **Note:** To set the map to empty, set `"{}"`, apply, and then remove the field from your config.
*/
trafficSplit?: pulumi.Input<string>;
/**
* Output only. Timestamp when this Endpoint was last updated.
*/
updateTime?: pulumi.Input<string>;
}
/**
* The set of arguments for constructing a AiEndpoint resource.
*/
export interface AiEndpointArgs {
/**
* If true, the endpoint will be exposed through a dedicated DNS [Endpoint.dedicated_endpoint_dns]. Your request to the dedicated DNS will be isolated from other users' traffic and will have better performance and reliability. Note: Once you enabled dedicated endpoint, you won't be able to send request to the shared DNS {region}-aiplatform.googleapis.com. The limitation will be removed soon.
*/
dedicatedEndpointEnabled?: pulumi.Input<boolean>;
/**
* The description of the Endpoint.
*/
description?: pulumi.Input<string>;
/**
* Required. The display name of the Endpoint. The name can be up to 128 characters long and can consist of any UTF-8 characters.
*/
displayName: pulumi.Input<string>;
/**
* Customer-managed encryption key spec for an Endpoint. If set, this Endpoint and all sub-resources of this Endpoint will be secured by this key.
* Structure is documented below.
*/
encryptionSpec?: pulumi.Input<inputs.vertex.AiEndpointEncryptionSpec>;
/**
* The labels with user-defined metadata to organize your Endpoints. Label keys and values can be no longer than 64 characters (Unicode codepoints), can only contain lowercase letters, numeric characters, underscores and dashes. International characters are allowed. See https://goo.gl/xmQnxf for more information and examples of labels.
* **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<string>;
}>;
/**
* The location for the resource
*/
location: pulumi.Input<string>;
/**
* The resource name of the Endpoint. The name must be numeric with no leading zeros and can be at most 10 digits.
*/
name?: pulumi.Input<string>;
/**
* The full name of the Google Compute Engine [network](https://cloud.google.com//compute/docs/networks-and-firewalls#networks) to which the Endpoint should be peered. Private services access must already be configured for the network. If left unspecified, the Endpoint is not peered with any network. Only one of the fields, network or enable_private_service_connect, can be set. [Format](https://cloud.google.com/compute/docs/reference/rest/v1/networks/insert): `projects/{project}/global/networks/{network}`. Where `{project}` is a project number, as in `12345`, and `{network}` is network name. Only one of the fields, `network` or `privateServiceConnectConfig`, can be set.
*/
network?: pulumi.Input<string>;
/**
* Configures the request-response logging for online prediction.
* Structure is documented below.
*/
predictRequestResponseLoggingConfig?: pulumi.Input<inputs.vertex.AiEndpointPredictRequestResponseLoggingConfig>;
/**
* Configuration for private service connect. `network` and `privateServiceConnectConfig` are mutually exclusive.
* Structure is documented below.
*/
privateServiceConnectConfig?: pulumi.Input<inputs.vertex.AiEndpointPrivateServiceConnectConfig>;
/**
* The ID of the project in which the resource belongs.
* If it is not provided, the provider project is used.
*/
project?: pulumi.Input<string>;
/**
* The region for the resource
*/
region?: pulumi.Input<string>;
/**
* A map from a DeployedModel's id to the percentage of this Endpoint's traffic that should be forwarded to that DeployedModel.
* If a DeployedModel's id is not listed in this map, then it receives no traffic.
* The traffic percentage values must add up to 100, or map must be empty if the Endpoint is to not accept any traffic at a moment. See
* the `deployModel` [example](https://cloud.google.com/vertex-ai/docs/general/deployment#deploy_a_model_to_an_endpoint) and
* [documentation](https://cloud.google.com/vertex-ai/docs/reference/rest/v1beta1/projects.locations.endpoints/deployModel) for more information.
* > **Note:** To set the map to empty, set `"{}"`, apply, and then remove the field from your config.
*/
trafficSplit?: pulumi.Input<string>;
}