index_endpoint.proto 9.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205
  1. // Copyright 2021 Google LLC
  2. //
  3. // Licensed under the Apache License, Version 2.0 (the "License");
  4. // you may not use this file except in compliance with the License.
  5. // You may obtain a copy of the License at
  6. //
  7. // http://www.apache.org/licenses/LICENSE-2.0
  8. //
  9. // Unless required by applicable law or agreed to in writing, software
  10. // distributed under the License is distributed on an "AS IS" BASIS,
  11. // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
  12. // See the License for the specific language governing permissions and
  13. // limitations under the License.
  14. syntax = "proto3";
  15. package google.cloud.aiplatform.v1beta1;
  16. import "google/cloud/aiplatform/v1beta1/index.proto";
  17. import "google/api/field_behavior.proto";
  18. import "google/api/resource.proto";
  19. import "google/cloud/aiplatform/v1beta1/machine_resources.proto";
  20. import "google/protobuf/timestamp.proto";
  21. import "google/api/annotations.proto";
  22. option csharp_namespace = "Google.Cloud.AIPlatform.V1Beta1";
  23. option go_package = "google.golang.org/genproto/googleapis/cloud/aiplatform/v1beta1;aiplatform";
  24. option java_multiple_files = true;
  25. option java_outer_classname = "IndexEndpointProto";
  26. option java_package = "com.google.cloud.aiplatform.v1beta1";
  27. option php_namespace = "Google\\Cloud\\AIPlatform\\V1beta1";
  28. option ruby_package = "Google::Cloud::AIPlatform::V1beta1";
  29. // Indexes are deployed into it. An IndexEndpoint can have multiple
  30. // DeployedIndexes.
  31. message IndexEndpoint {
  32. option (google.api.resource) = {
  33. type: "aiplatform.googleapis.com/IndexEndpoint"
  34. pattern: "projects/{project}/locations/{location}/indexEndpoints/{index_endpoint}"
  35. };
  36. // Output only. The resource name of the IndexEndpoint.
  37. string name = 1 [(google.api.field_behavior) = OUTPUT_ONLY];
  38. // Required. The display name of the IndexEndpoint.
  39. // The name can be up to 128 characters long and can consist of any UTF-8
  40. // characters.
  41. string display_name = 2 [(google.api.field_behavior) = REQUIRED];
  42. // The description of the IndexEndpoint.
  43. string description = 3;
  44. // Output only. The indexes deployed in this endpoint.
  45. repeated DeployedIndex deployed_indexes = 4 [(google.api.field_behavior) = OUTPUT_ONLY];
  46. // Used to perform consistent read-modify-write updates. If not set, a blind
  47. // "overwrite" update happens.
  48. string etag = 5;
  49. // The labels with user-defined metadata to organize your IndexEndpoints.
  50. //
  51. // Label keys and values can be no longer than 64 characters
  52. // (Unicode codepoints), can only contain lowercase letters, numeric
  53. // characters, underscores and dashes. International characters are allowed.
  54. //
  55. // See https://goo.gl/xmQnxf for more information and examples of labels.
  56. map<string, string> labels = 6;
  57. // Output only. Timestamp when this IndexEndpoint was created.
  58. google.protobuf.Timestamp create_time = 7 [(google.api.field_behavior) = OUTPUT_ONLY];
  59. // Output only. Timestamp when this IndexEndpoint was last updated.
  60. // This timestamp is not updated when the endpoint's DeployedIndexes are
  61. // updated, e.g. due to updates of the original Indexes they are the
  62. // deployments of.
  63. google.protobuf.Timestamp update_time = 8 [(google.api.field_behavior) = OUTPUT_ONLY];
  64. // Required. Immutable. The full name of the Google Compute Engine
  65. // [network](https://cloud.google.com/compute/docs/networks-and-firewalls#networks)
  66. // to which the IndexEndpoint should be peered.
  67. //
  68. // Private services access must already be configured for the network. If left
  69. // unspecified, the Endpoint is not peered with any network.
  70. //
  71. // [Format](https://cloud.google.com/compute/docs/reference/rest/v1/networks/insert):
  72. // projects/{project}/global/networks/{network}.
  73. // Where {project} is a project number, as in '12345', and {network} is
  74. // network name.
  75. string network = 9 [
  76. (google.api.field_behavior) = REQUIRED,
  77. (google.api.field_behavior) = IMMUTABLE
  78. ];
  79. }
  80. // A deployment of an Index. IndexEndpoints contain one or more DeployedIndexes.
  81. message DeployedIndex {
  82. // Required. The user specified ID of the DeployedIndex.
  83. // The ID can be up to 128 characters long and must start with a letter and
  84. // only contain letters, numbers, and underscores.
  85. // The ID must be unique within the project it is created in.
  86. string id = 1 [(google.api.field_behavior) = REQUIRED];
  87. // Required. The name of the Index this is the deployment of.
  88. // We may refer to this Index as the DeployedIndex's "original" Index.
  89. string index = 2 [
  90. (google.api.field_behavior) = REQUIRED,
  91. (google.api.resource_reference) = {
  92. type: "aiplatform.googleapis.com/Index"
  93. }
  94. ];
  95. // The display name of the DeployedIndex. If not provided upon creation,
  96. // the Index's display_name is used.
  97. string display_name = 3;
  98. // Output only. Timestamp when the DeployedIndex was created.
  99. google.protobuf.Timestamp create_time = 4 [(google.api.field_behavior) = OUTPUT_ONLY];
  100. // Output only. Provides paths for users to send requests directly to the deployed index
  101. // services running on Cloud via private services access. This field is
  102. // populated if [network][google.cloud.aiplatform.v1beta1.IndexEndpoint.network] is configured.
  103. IndexPrivateEndpoints private_endpoints = 5 [(google.api.field_behavior) = OUTPUT_ONLY];
  104. // Output only. The DeployedIndex may depend on various data on its original Index.
  105. // Additionally when certain changes to the original Index are being done
  106. // (e.g. when what the Index contains is being changed) the DeployedIndex may
  107. // be asynchronously updated in the background to reflect this changes.
  108. // If this timestamp's value is at least the [Index.update_time][google.cloud.aiplatform.v1beta1.Index.update_time] of the
  109. // original Index, it means that this DeployedIndex and the original Index are
  110. // in sync. If this timestamp is older, then to see which updates this
  111. // DeployedIndex already contains (and which not), one must
  112. // [list][Operations.ListOperations] [Operations][Operation]
  113. // [working][Operation.name] on the original Index. Only
  114. // the successfully completed Operations with
  115. // [Operations.metadata.generic_metadata.update_time]
  116. // [google.cloud.aiplatform.v1beta1.GenericOperationMetadata.update_time]
  117. // equal or before this sync time are contained in this DeployedIndex.
  118. google.protobuf.Timestamp index_sync_time = 6 [(google.api.field_behavior) = OUTPUT_ONLY];
  119. // Optional. A description of resources that the DeployedIndex uses, which to large
  120. // degree are decided by Vertex AI, and optionally allows only a modest
  121. // additional configuration.
  122. // If min_replica_count is not set, the default value is 1. If
  123. // max_replica_count is not set, the default value is min_replica_count. The
  124. // max allowed replica count is 1000.
  125. //
  126. // The user is billed for the resources (at least their minimal amount) even
  127. // if the DeployedIndex receives no traffic.
  128. AutomaticResources automatic_resources = 7 [(google.api.field_behavior) = OPTIONAL];
  129. // Optional. If true, private endpoint's access logs are sent to StackDriver Logging.
  130. //
  131. // These logs are like standard server access logs, containing
  132. // information like timestamp and latency for each MatchRequest.
  133. //
  134. // Note that Stackdriver logs may incur a cost, especially if the deployed
  135. // index receives a high queries per second rate (QPS).
  136. // Estimate your costs before enabling this option.
  137. bool enable_access_logging = 8 [(google.api.field_behavior) = OPTIONAL];
  138. // Optional. If set, the authentication is enabled for the private endpoint.
  139. DeployedIndexAuthConfig deployed_index_auth_config = 9 [(google.api.field_behavior) = OPTIONAL];
  140. // Optional. A list of reserved ip ranges under the VPC network that can be
  141. // used for this DeployedIndex.
  142. //
  143. // If set, we will deploy the index within the provided ip ranges. Otherwise,
  144. // the index might be deployed to any ip ranges under the provided VPC
  145. // network.
  146. //
  147. // The value sohuld be the name of the address
  148. // (https://cloud.google.com/compute/docs/reference/rest/v1/addresses)
  149. // Example: 'vertex-ai-ip-range'.
  150. repeated string reserved_ip_ranges = 10 [(google.api.field_behavior) = OPTIONAL];
  151. }
  152. // Used to set up the auth on the DeployedIndex's private endpoint.
  153. message DeployedIndexAuthConfig {
  154. // Configuration for an authentication provider, including support for
  155. // [JSON Web Token
  156. // (JWT)](https://tools.ietf.org/html/draft-ietf-oauth-json-web-token-32).
  157. message AuthProvider {
  158. // The list of JWT
  159. // [audiences](https://tools.ietf.org/html/draft-ietf-oauth-json-web-token-32#section-4.1.3).
  160. // that are allowed to access. A JWT containing any of these audiences will
  161. // be accepted.
  162. repeated string audiences = 1;
  163. // A list of allowed JWT issuers. Each entry must be a valid Google
  164. // service account, in the following format:
  165. //
  166. // `service-account-name@project-id.iam.gserviceaccount.com`
  167. repeated string allowed_issuers = 2;
  168. }
  169. // Defines the authentication provider that the DeployedIndex uses.
  170. AuthProvider auth_provider = 1;
  171. }
  172. // IndexPrivateEndpoints proto is used to provide paths for users to send
  173. // requests via private services access.
  174. message IndexPrivateEndpoints {
  175. // Output only. The ip address used to send match gRPC requests.
  176. string match_grpc_address = 1 [(google.api.field_behavior) = OUTPUT_ONLY];
  177. }