index_endpoint.proto 11 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245
  1. // Copyright 2022 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.v1;
  16. import "google/api/field_behavior.proto";
  17. import "google/api/resource.proto";
  18. import "google/cloud/aiplatform/v1/machine_resources.proto";
  19. import "google/protobuf/timestamp.proto";
  20. option csharp_namespace = "Google.Cloud.AIPlatform.V1";
  21. option go_package = "google.golang.org/genproto/googleapis/cloud/aiplatform/v1;aiplatform";
  22. option java_multiple_files = true;
  23. option java_outer_classname = "IndexEndpointProto";
  24. option java_package = "com.google.cloud.aiplatform.v1";
  25. option php_namespace = "Google\\Cloud\\AIPlatform\\V1";
  26. option ruby_package = "Google::Cloud::AIPlatform::V1";
  27. // Indexes are deployed into it. An IndexEndpoint can have multiple
  28. // DeployedIndexes.
  29. message IndexEndpoint {
  30. option (google.api.resource) = {
  31. type: "aiplatform.googleapis.com/IndexEndpoint"
  32. pattern: "projects/{project}/locations/{location}/indexEndpoints/{index_endpoint}"
  33. };
  34. // Output only. The resource name of the IndexEndpoint.
  35. string name = 1 [(google.api.field_behavior) = OUTPUT_ONLY];
  36. // Required. The display name of the IndexEndpoint.
  37. // The name can be up to 128 characters long and can consist of any UTF-8
  38. // characters.
  39. string display_name = 2 [(google.api.field_behavior) = REQUIRED];
  40. // The description of the IndexEndpoint.
  41. string description = 3;
  42. // Output only. The indexes deployed in this endpoint.
  43. repeated DeployedIndex deployed_indexes = 4 [(google.api.field_behavior) = OUTPUT_ONLY];
  44. // Used to perform consistent read-modify-write updates. If not set, a blind
  45. // "overwrite" update happens.
  46. string etag = 5;
  47. // The labels with user-defined metadata to organize your IndexEndpoints.
  48. //
  49. // Label keys and values can be no longer than 64 characters
  50. // (Unicode codepoints), can only contain lowercase letters, numeric
  51. // characters, underscores and dashes. International characters are allowed.
  52. //
  53. // See https://goo.gl/xmQnxf for more information and examples of labels.
  54. map<string, string> labels = 6;
  55. // Output only. Timestamp when this IndexEndpoint was created.
  56. google.protobuf.Timestamp create_time = 7 [(google.api.field_behavior) = OUTPUT_ONLY];
  57. // Output only. Timestamp when this IndexEndpoint was last updated.
  58. // This timestamp is not updated when the endpoint's DeployedIndexes are
  59. // updated, e.g. due to updates of the original Indexes they are the
  60. // deployments of.
  61. google.protobuf.Timestamp update_time = 8 [(google.api.field_behavior) = OUTPUT_ONLY];
  62. // Optional. The full name of the Google Compute Engine
  63. // [network](https://cloud.google.com/compute/docs/networks-and-firewalls#networks)
  64. // to which the IndexEndpoint should be peered.
  65. //
  66. // Private services access must already be configured for the network. If left
  67. // unspecified, the Endpoint is not peered with any network.
  68. //
  69. // [network][google.cloud.aiplatform.v1.IndexEndpoint.network] and
  70. // [private_service_connect_config][google.cloud.aiplatform.v1.IndexEndpoint.private_service_connect_config]
  71. // are mutually exclusive.
  72. //
  73. // [Format](https://cloud.google.com/compute/docs/reference/rest/v1/networks/insert):
  74. // `projects/{project}/global/networks/{network}`.
  75. // Where {project} is a project number, as in '12345', and {network} is
  76. // network name.
  77. string network = 9 [(google.api.field_behavior) = OPTIONAL];
  78. // Optional. Deprecated: If true, expose the IndexEndpoint via private service connect.
  79. //
  80. // Only one of the fields, [network][google.cloud.aiplatform.v1.IndexEndpoint.network] or
  81. // [enable_private_service_connect][google.cloud.aiplatform.v1.IndexEndpoint.enable_private_service_connect],
  82. // can be set.
  83. bool enable_private_service_connect = 10 [
  84. deprecated = true,
  85. (google.api.field_behavior) = OPTIONAL
  86. ];
  87. }
  88. // A deployment of an Index. IndexEndpoints contain one or more DeployedIndexes.
  89. message DeployedIndex {
  90. // Required. The user specified ID of the DeployedIndex.
  91. // The ID can be up to 128 characters long and must start with a letter and
  92. // only contain letters, numbers, and underscores.
  93. // The ID must be unique within the project it is created in.
  94. string id = 1 [(google.api.field_behavior) = REQUIRED];
  95. // Required. The name of the Index this is the deployment of.
  96. // We may refer to this Index as the DeployedIndex's "original" Index.
  97. string index = 2 [
  98. (google.api.field_behavior) = REQUIRED,
  99. (google.api.resource_reference) = {
  100. type: "aiplatform.googleapis.com/Index"
  101. }
  102. ];
  103. // The display name of the DeployedIndex. If not provided upon creation,
  104. // the Index's display_name is used.
  105. string display_name = 3;
  106. // Output only. Timestamp when the DeployedIndex was created.
  107. google.protobuf.Timestamp create_time = 4 [(google.api.field_behavior) = OUTPUT_ONLY];
  108. // Output only. Provides paths for users to send requests directly to the deployed index
  109. // services running on Cloud via private services access. This field is
  110. // populated if [network][google.cloud.aiplatform.v1.IndexEndpoint.network] is configured.
  111. IndexPrivateEndpoints private_endpoints = 5 [(google.api.field_behavior) = OUTPUT_ONLY];
  112. // Output only. The DeployedIndex may depend on various data on its original Index.
  113. // Additionally when certain changes to the original Index are being done
  114. // (e.g. when what the Index contains is being changed) the DeployedIndex may
  115. // be asynchronously updated in the background to reflect this changes.
  116. // If this timestamp's value is at least the [Index.update_time][google.cloud.aiplatform.v1.Index.update_time] of the
  117. // original Index, it means that this DeployedIndex and the original Index are
  118. // in sync. If this timestamp is older, then to see which updates this
  119. // DeployedIndex already contains (and which not), one must
  120. // [list][Operations.ListOperations] [Operations][Operation]
  121. // [working][Operation.name] on the original Index. Only
  122. // the successfully completed Operations with
  123. // [Operations.metadata.generic_metadata.update_time]
  124. // [google.cloud.aiplatform.v1.GenericOperationMetadata.update_time]
  125. // equal or before this sync time are contained in this DeployedIndex.
  126. google.protobuf.Timestamp index_sync_time = 6 [(google.api.field_behavior) = OUTPUT_ONLY];
  127. // Optional. A description of resources that the DeployedIndex uses, which to large
  128. // degree are decided by Vertex AI, and optionally allows only a modest
  129. // additional configuration.
  130. // If min_replica_count is not set, the default value is 2 (we don't provide
  131. // SLA when min_replica_count=1). If max_replica_count is not set, the
  132. // default value is min_replica_count. The max allowed replica count is
  133. // 1000.
  134. AutomaticResources automatic_resources = 7 [(google.api.field_behavior) = OPTIONAL];
  135. // Optional. A description of resources that are dedicated to the DeployedIndex, and
  136. // that need a higher degree of manual configuration.
  137. // If min_replica_count is not set, the default value is 2 (we don't provide
  138. // SLA when min_replica_count=1). If max_replica_count is not set, the
  139. // default value is min_replica_count. The max allowed replica count is
  140. // 1000.
  141. //
  142. // Available machine types:
  143. // n1-standard-16
  144. // n1-standard-32
  145. DedicatedResources dedicated_resources = 16 [(google.api.field_behavior) = OPTIONAL];
  146. // Optional. If true, private endpoint's access logs are sent to StackDriver Logging.
  147. //
  148. // These logs are like standard server access logs, containing
  149. // information like timestamp and latency for each MatchRequest.
  150. //
  151. // Note that Stackdriver logs may incur a cost, especially if the deployed
  152. // index receives a high queries per second rate (QPS).
  153. // Estimate your costs before enabling this option.
  154. bool enable_access_logging = 8 [(google.api.field_behavior) = OPTIONAL];
  155. // Optional. If set, the authentication is enabled for the private endpoint.
  156. DeployedIndexAuthConfig deployed_index_auth_config = 9 [(google.api.field_behavior) = OPTIONAL];
  157. // Optional. A list of reserved ip ranges under the VPC network that can be
  158. // used for this DeployedIndex.
  159. //
  160. // If set, we will deploy the index within the provided ip ranges. Otherwise,
  161. // the index might be deployed to any ip ranges under the provided VPC
  162. // network.
  163. //
  164. // The value sohuld be the name of the address
  165. // (https://cloud.google.com/compute/docs/reference/rest/v1/addresses)
  166. // Example: 'vertex-ai-ip-range'.
  167. repeated string reserved_ip_ranges = 10 [(google.api.field_behavior) = OPTIONAL];
  168. // Optional. The deployment group can be no longer than 64 characters (eg:
  169. // 'test', 'prod'). If not set, we will use the 'default' deployment group.
  170. //
  171. // Creating `deployment_groups` with `reserved_ip_ranges` is a recommended
  172. // practice when the peered network has multiple peering ranges. This creates
  173. // your deployments from predictable IP spaces for easier traffic
  174. // administration. Also, one deployment_group (except 'default') can only be
  175. // used with the same reserved_ip_ranges which means if the deployment_group
  176. // has been used with reserved_ip_ranges: [a, b, c], using it with [a, b] or
  177. // [d, e] is disallowed.
  178. //
  179. // Note: we only support up to 5 deployment groups(not including 'default').
  180. string deployment_group = 11 [(google.api.field_behavior) = OPTIONAL];
  181. }
  182. // Used to set up the auth on the DeployedIndex's private endpoint.
  183. message DeployedIndexAuthConfig {
  184. // Configuration for an authentication provider, including support for
  185. // [JSON Web Token
  186. // (JWT)](https://tools.ietf.org/html/draft-ietf-oauth-json-web-token-32).
  187. message AuthProvider {
  188. // The list of JWT
  189. // [audiences](https://tools.ietf.org/html/draft-ietf-oauth-json-web-token-32#section-4.1.3).
  190. // that are allowed to access. A JWT containing any of these audiences will
  191. // be accepted.
  192. repeated string audiences = 1;
  193. // A list of allowed JWT issuers. Each entry must be a valid Google
  194. // service account, in the following format:
  195. //
  196. // `service-account-name@project-id.iam.gserviceaccount.com`
  197. repeated string allowed_issuers = 2;
  198. }
  199. // Defines the authentication provider that the DeployedIndex uses.
  200. AuthProvider auth_provider = 1;
  201. }
  202. // IndexPrivateEndpoints proto is used to provide paths for users to send
  203. // requests via private endpoints (e.g. private service access, private service
  204. // connect).
  205. // To send request via private service access, use match_grpc_address.
  206. // To send request via private service connect, use service_attachment.
  207. message IndexPrivateEndpoints {
  208. // Output only. The ip address used to send match gRPC requests.
  209. string match_grpc_address = 1 [(google.api.field_behavior) = OUTPUT_ONLY];
  210. // Output only. The name of the service attachment resource. Populated if private service
  211. // connect is enabled.
  212. string service_attachment = 2 [(google.api.field_behavior) = OUTPUT_ONLY];
  213. }