aws_resources.proto 22 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556
  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.gkemulticloud.v1;
  16. import "google/api/field_behavior.proto";
  17. import "google/api/resource.proto";
  18. import "google/cloud/gkemulticloud/v1/common_resources.proto";
  19. import "google/protobuf/timestamp.proto";
  20. option csharp_namespace = "Google.Cloud.GkeMultiCloud.V1";
  21. option go_package = "google.golang.org/genproto/googleapis/cloud/gkemulticloud/v1;gkemulticloud";
  22. option java_multiple_files = true;
  23. option java_outer_classname = "AwsResourcesProto";
  24. option java_package = "com.google.cloud.gkemulticloud.v1";
  25. option php_namespace = "Google\\Cloud\\GkeMultiCloud\\V1";
  26. option ruby_package = "Google::Cloud::GkeMultiCloud::V1";
  27. // An Anthos cluster running on AWS.
  28. message AwsCluster {
  29. option (google.api.resource) = {
  30. type: "gkemulticloud.googleapis.com/AwsCluster"
  31. pattern: "projects/{project}/locations/{location}/awsClusters/{aws_cluster}"
  32. };
  33. // The lifecycle state of the cluster.
  34. enum State {
  35. // Not set.
  36. STATE_UNSPECIFIED = 0;
  37. // The PROVISIONING state indicates the cluster is being created.
  38. PROVISIONING = 1;
  39. // The RUNNING state indicates the cluster has been created and is fully
  40. // usable.
  41. RUNNING = 2;
  42. // The RECONCILING state indicates that some work is actively being done on
  43. // the cluster, such as upgrading the control plane replicas.
  44. RECONCILING = 3;
  45. // The STOPPING state indicates the cluster is being deleted.
  46. STOPPING = 4;
  47. // The ERROR state indicates the cluster is in a broken unrecoverable
  48. // state.
  49. ERROR = 5;
  50. // The DEGRADED state indicates the cluster requires user action to
  51. // restore full functionality.
  52. DEGRADED = 6;
  53. }
  54. // The name of this resource.
  55. //
  56. // Cluster names are formatted as
  57. // `projects/<project-number>/locations/<region>/awsClusters/<cluster-id>`.
  58. //
  59. // See [Resource Names](https://cloud.google.com/apis/design/resource_names)
  60. // for more details on GCP resource names.
  61. string name = 1;
  62. // Optional. A human readable description of this cluster.
  63. // Cannot be longer than 255 UTF-8 encoded bytes.
  64. string description = 2 [(google.api.field_behavior) = OPTIONAL];
  65. // Required. Cluster-wide networking configuration.
  66. AwsClusterNetworking networking = 3 [(google.api.field_behavior) = REQUIRED];
  67. // Required. The AWS region where the cluster runs.
  68. //
  69. // Each Google Cloud region supports a subset of nearby AWS regions.
  70. // You can call
  71. // [GetAwsServerConfig][google.cloud.gkemulticloud.v1.AwsClusters.GetAwsServerConfig]
  72. // to list all supported AWS regions within a given Google Cloud region.
  73. string aws_region = 4 [(google.api.field_behavior) = REQUIRED];
  74. // Required. Configuration related to the cluster control plane.
  75. AwsControlPlane control_plane = 5 [(google.api.field_behavior) = REQUIRED];
  76. // Required. Configuration related to the cluster RBAC settings.
  77. AwsAuthorization authorization = 15 [(google.api.field_behavior) = REQUIRED];
  78. // Output only. The current state of the cluster.
  79. State state = 7 [(google.api.field_behavior) = OUTPUT_ONLY];
  80. // Output only. The endpoint of the cluster's API server.
  81. string endpoint = 8 [(google.api.field_behavior) = OUTPUT_ONLY];
  82. // Output only. A globally unique identifier for the cluster.
  83. string uid = 9 [(google.api.field_behavior) = OUTPUT_ONLY];
  84. // Output only. If set, there are currently changes in flight to the cluster.
  85. bool reconciling = 10 [(google.api.field_behavior) = OUTPUT_ONLY];
  86. // Output only. The time at which this cluster was created.
  87. google.protobuf.Timestamp create_time = 11 [(google.api.field_behavior) = OUTPUT_ONLY];
  88. // Output only. The time at which this cluster was last updated.
  89. google.protobuf.Timestamp update_time = 12 [(google.api.field_behavior) = OUTPUT_ONLY];
  90. // Allows clients to perform consistent read-modify-writes
  91. // through optimistic concurrency control.
  92. //
  93. // Can be sent on update and delete requests to ensure the
  94. // client has an up-to-date value before proceeding.
  95. string etag = 13;
  96. // Optional. Annotations on the cluster.
  97. //
  98. // This field has the same restrictions as Kubernetes annotations.
  99. // The total size of all keys and values combined is limited to 256k.
  100. // Key can have 2 segments: prefix (optional) and name (required),
  101. // separated by a slash (/).
  102. // Prefix must be a DNS subdomain.
  103. // Name must be 63 characters or less, begin and end with alphanumerics,
  104. // with dashes (-), underscores (_), dots (.), and alphanumerics between.
  105. map<string, string> annotations = 14 [(google.api.field_behavior) = OPTIONAL];
  106. // Output only. Workload Identity settings.
  107. WorkloadIdentityConfig workload_identity_config = 16 [(google.api.field_behavior) = OUTPUT_ONLY];
  108. // Output only. PEM encoded x509 certificate of the cluster root of trust.
  109. string cluster_ca_certificate = 17 [(google.api.field_behavior) = OUTPUT_ONLY];
  110. // Optional. Fleet configuration.
  111. Fleet fleet = 18 [(google.api.field_behavior) = OPTIONAL];
  112. // Optional. Logging configuration for this cluster.
  113. LoggingConfig logging_config = 19 [(google.api.field_behavior) = OPTIONAL];
  114. }
  115. // ControlPlane defines common parameters between control plane nodes.
  116. message AwsControlPlane {
  117. // Required. The Kubernetes version to run on control plane replicas
  118. // (e.g. `1.19.10-gke.1000`).
  119. //
  120. // You can list all supported versions on a given Google Cloud region by
  121. // calling
  122. // [GetAwsServerConfig][google.cloud.gkemulticloud.v1.AwsClusters.GetAwsServerConfig].
  123. string version = 1 [(google.api.field_behavior) = REQUIRED];
  124. // Optional. The AWS instance type.
  125. //
  126. // When unspecified, it uses a default based on the cluster's version.
  127. string instance_type = 2 [(google.api.field_behavior) = OPTIONAL];
  128. // Optional. SSH configuration for how to access the underlying control plane
  129. // machines.
  130. AwsSshConfig ssh_config = 14 [(google.api.field_behavior) = OPTIONAL];
  131. // Required. The list of subnets where control plane replicas will run.
  132. // A replica will be provisioned on each subnet and up to three values
  133. // can be provided.
  134. // Each subnet must be in a different AWS Availability Zone (AZ).
  135. repeated string subnet_ids = 4 [(google.api.field_behavior) = REQUIRED];
  136. // Optional. The IDs of additional security groups to add to control plane
  137. // replicas. The Anthos Multi-Cloud API will automatically create and manage
  138. // security groups with the minimum rules needed for a functioning cluster.
  139. repeated string security_group_ids = 5 [(google.api.field_behavior) = OPTIONAL];
  140. // Required. The name or ARN of the AWS IAM instance profile to assign to each control
  141. // plane replica.
  142. string iam_instance_profile = 7 [(google.api.field_behavior) = REQUIRED];
  143. // Optional. Configuration related to the root volume provisioned for each
  144. // control plane replica.
  145. //
  146. // Volumes will be provisioned in the availability zone associated
  147. // with the corresponding subnet.
  148. //
  149. // When unspecified, it defaults to 32 GiB with the GP2 volume type.
  150. AwsVolumeTemplate root_volume = 8 [(google.api.field_behavior) = OPTIONAL];
  151. // Optional. Configuration related to the main volume provisioned for each
  152. // control plane replica.
  153. // The main volume is in charge of storing all of the cluster's etcd state.
  154. //
  155. // Volumes will be provisioned in the availability zone associated
  156. // with the corresponding subnet.
  157. //
  158. // When unspecified, it defaults to 8 GiB with the GP2 volume type.
  159. AwsVolumeTemplate main_volume = 9 [(google.api.field_behavior) = OPTIONAL];
  160. // Required. The ARN of the AWS KMS key used to encrypt cluster secrets.
  161. AwsDatabaseEncryption database_encryption = 10 [(google.api.field_behavior) = REQUIRED];
  162. // Optional. A set of AWS resource tags to propagate to all underlying managed AWS
  163. // resources.
  164. //
  165. // Specify at most 50 pairs containing alphanumerics, spaces, and symbols
  166. // (.+-=_:@/). Keys can be up to 127 Unicode characters. Values can be up to
  167. // 255 Unicode characters.
  168. map<string, string> tags = 11 [(google.api.field_behavior) = OPTIONAL];
  169. // Required. Authentication configuration for management of AWS resources.
  170. AwsServicesAuthentication aws_services_authentication = 12 [(google.api.field_behavior) = REQUIRED];
  171. // Optional. Proxy configuration for outbound HTTP(S) traffic.
  172. AwsProxyConfig proxy_config = 16 [(google.api.field_behavior) = OPTIONAL];
  173. // Required. Config encryption for user data.
  174. AwsConfigEncryption config_encryption = 17 [(google.api.field_behavior) = REQUIRED];
  175. // Optional. The placement to use on control plane instances.
  176. // When unspecified, the VPC's default tenancy will be used.
  177. AwsInstancePlacement instance_placement = 18 [(google.api.field_behavior) = OPTIONAL];
  178. }
  179. // Authentication configuration for the management of AWS resources.
  180. message AwsServicesAuthentication {
  181. // Required. The Amazon Resource Name (ARN) of the role that the Anthos Multi-Cloud API
  182. // will assume when managing AWS resources on your account.
  183. string role_arn = 1 [(google.api.field_behavior) = REQUIRED];
  184. // Optional. An identifier for the assumed role session.
  185. //
  186. // When unspecified, it defaults to `multicloud-service-agent`.
  187. string role_session_name = 2 [(google.api.field_behavior) = OPTIONAL];
  188. }
  189. // Configuration related to the cluster RBAC settings.
  190. message AwsAuthorization {
  191. // Required. Users that can perform operations as a cluster admin. A managed
  192. // ClusterRoleBinding will be created to grant the `cluster-admin` ClusterRole
  193. // to the users. Up to ten admin users can be provided.
  194. //
  195. // For more info on RBAC, see
  196. // https://kubernetes.io/docs/reference/access-authn-authz/rbac/#user-facing-roles
  197. repeated AwsClusterUser admin_users = 1 [(google.api.field_behavior) = REQUIRED];
  198. }
  199. // Identities of a user-type subject for AWS clusters.
  200. message AwsClusterUser {
  201. // Required. The name of the user, e.g. `my-gcp-id@gmail.com`.
  202. string username = 1 [(google.api.field_behavior) = REQUIRED];
  203. }
  204. // Configuration related to application-layer secrets encryption.
  205. message AwsDatabaseEncryption {
  206. // Required. The ARN of the AWS KMS key used to encrypt cluster secrets.
  207. string kms_key_arn = 1 [(google.api.field_behavior) = REQUIRED];
  208. }
  209. // Configuration template for AWS EBS volumes.
  210. message AwsVolumeTemplate {
  211. // Types of supported EBS volumes. We currently only support GP2 or GP3
  212. // volumes.
  213. // See https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/EBSVolumeTypes.html
  214. // for more information.
  215. enum VolumeType {
  216. // Not set.
  217. VOLUME_TYPE_UNSPECIFIED = 0;
  218. // GP2 (General Purpose SSD volume type).
  219. GP2 = 1;
  220. // GP3 (General Purpose SSD volume type).
  221. GP3 = 2;
  222. }
  223. // Optional. The size of the volume, in GiBs.
  224. //
  225. // When unspecified, a default value is provided. See the specific reference
  226. // in the parent resource.
  227. int32 size_gib = 1 [(google.api.field_behavior) = OPTIONAL];
  228. // Optional. Type of the EBS volume.
  229. //
  230. // When unspecified, it defaults to GP2 volume.
  231. VolumeType volume_type = 2 [(google.api.field_behavior) = OPTIONAL];
  232. // Optional. The number of I/O operations per second (IOPS) to provision for GP3 volume.
  233. int32 iops = 3 [(google.api.field_behavior) = OPTIONAL];
  234. // Optional. The Amazon Resource Name (ARN) of the Customer Managed Key (CMK) used to
  235. // encrypt AWS EBS volumes.
  236. //
  237. // If not specified, the default Amazon managed key associated to
  238. // the AWS region where this cluster runs will be used.
  239. string kms_key_arn = 4 [(google.api.field_behavior) = OPTIONAL];
  240. }
  241. // ClusterNetworking defines cluster-wide networking configuration.
  242. //
  243. // Anthos clusters on AWS run on a single VPC. This includes control
  244. // plane replicas and node pool nodes.
  245. message AwsClusterNetworking {
  246. // Required. The VPC associated with the cluster. All component clusters
  247. // (i.e. control plane and node pools) run on a single VPC.
  248. //
  249. // This field cannot be changed after creation.
  250. string vpc_id = 1 [(google.api.field_behavior) = REQUIRED];
  251. // Required. All pods in the cluster are assigned an IPv4 address from these ranges.
  252. // Only a single range is supported.
  253. // This field cannot be changed after creation.
  254. repeated string pod_address_cidr_blocks = 2 [(google.api.field_behavior) = REQUIRED];
  255. // Required. All services in the cluster are assigned an IPv4 address from these ranges.
  256. // Only a single range is supported.
  257. // This field cannot be changed after creation.
  258. repeated string service_address_cidr_blocks = 3 [(google.api.field_behavior) = REQUIRED];
  259. }
  260. // An Anthos node pool running on AWS.
  261. message AwsNodePool {
  262. option (google.api.resource) = {
  263. type: "gkemulticloud.googleapis.com/AwsNodePool"
  264. pattern: "projects/{project}/locations/{location}/awsClusters/{aws_cluster}/awsNodePools/{aws_node_pool}"
  265. };
  266. // The lifecycle state of the node pool.
  267. enum State {
  268. // Not set.
  269. STATE_UNSPECIFIED = 0;
  270. // The PROVISIONING state indicates the node pool is being created.
  271. PROVISIONING = 1;
  272. // The RUNNING state indicates the node pool has been created
  273. // and is fully usable.
  274. RUNNING = 2;
  275. // The RECONCILING state indicates that the node pool is being reconciled.
  276. RECONCILING = 3;
  277. // The STOPPING state indicates the node pool is being deleted.
  278. STOPPING = 4;
  279. // The ERROR state indicates the node pool is in a broken unrecoverable
  280. // state.
  281. ERROR = 5;
  282. // The DEGRADED state indicates the node pool requires user action to
  283. // restore full functionality.
  284. DEGRADED = 6;
  285. }
  286. // The name of this resource.
  287. //
  288. // Node pool names are formatted as
  289. // `projects/<project-number>/locations/<region>/awsClusters/<cluster-id>/awsNodePools/<node-pool-id>`.
  290. //
  291. // For more details on Google Cloud resource names,
  292. // see [Resource Names](https://cloud.google.com/apis/design/resource_names)
  293. string name = 1;
  294. // Required. The Kubernetes version to run on this node pool (e.g. `1.19.10-gke.1000`).
  295. //
  296. // You can list all supported versions on a given Google Cloud region by
  297. // calling
  298. // [GetAwsServerConfig][google.cloud.gkemulticloud.v1.AwsClusters.GetAwsServerConfig].
  299. string version = 3 [(google.api.field_behavior) = REQUIRED];
  300. // Required. The configuration of the node pool.
  301. AwsNodeConfig config = 28 [(google.api.field_behavior) = REQUIRED];
  302. // Required. Autoscaler configuration for this node pool.
  303. AwsNodePoolAutoscaling autoscaling = 25 [(google.api.field_behavior) = REQUIRED];
  304. // Required. The subnet where the node pool node run.
  305. string subnet_id = 6 [(google.api.field_behavior) = REQUIRED];
  306. // Output only. The lifecycle state of the node pool.
  307. State state = 16 [(google.api.field_behavior) = OUTPUT_ONLY];
  308. // Output only. A globally unique identifier for the node pool.
  309. string uid = 17 [(google.api.field_behavior) = OUTPUT_ONLY];
  310. // Output only. If set, there are currently changes in flight to the node
  311. // pool.
  312. bool reconciling = 18 [(google.api.field_behavior) = OUTPUT_ONLY];
  313. // Output only. The time at which this node pool was created.
  314. google.protobuf.Timestamp create_time = 19 [(google.api.field_behavior) = OUTPUT_ONLY];
  315. // Output only. The time at which this node pool was last updated.
  316. google.protobuf.Timestamp update_time = 20 [(google.api.field_behavior) = OUTPUT_ONLY];
  317. // Allows clients to perform consistent read-modify-writes
  318. // through optimistic concurrency control.
  319. //
  320. // Can be sent on update and delete requests to ensure the
  321. // client has an up-to-date value before proceeding.
  322. string etag = 21;
  323. // Optional. Annotations on the node pool.
  324. //
  325. // This field has the same restrictions as Kubernetes annotations.
  326. // The total size of all keys and values combined is limited to 256k.
  327. // Key can have 2 segments: prefix (optional) and name (required),
  328. // separated by a slash (/).
  329. // Prefix must be a DNS subdomain.
  330. // Name must be 63 characters or less, begin and end with alphanumerics,
  331. // with dashes (-), underscores (_), dots (.), and alphanumerics between.
  332. map<string, string> annotations = 22 [(google.api.field_behavior) = OPTIONAL];
  333. // Required. The constraint on the maximum number of pods that can be run
  334. // simultaneously on a node in the node pool.
  335. MaxPodsConstraint max_pods_constraint = 27 [(google.api.field_behavior) = REQUIRED];
  336. }
  337. // Parameters that describe the nodes in a cluster.
  338. message AwsNodeConfig {
  339. // Optional. The AWS instance type.
  340. //
  341. // When unspecified, it uses a default based on the node pool's version.
  342. string instance_type = 1 [(google.api.field_behavior) = OPTIONAL];
  343. // Optional. Template for the root volume provisioned for node pool nodes.
  344. // Volumes will be provisioned in the availability zone assigned
  345. // to the node pool subnet.
  346. //
  347. // When unspecified, it defaults to 32 GiB with the GP2 volume type.
  348. AwsVolumeTemplate root_volume = 2 [(google.api.field_behavior) = OPTIONAL];
  349. // Optional. The initial taints assigned to nodes of this node pool.
  350. repeated NodeTaint taints = 3 [(google.api.field_behavior) = OPTIONAL];
  351. // Optional. The initial labels assigned to nodes of this node pool. An object
  352. // containing a list of "key": value pairs. Example: { "name": "wrench",
  353. // "mass": "1.3kg", "count": "3" }.
  354. map<string, string> labels = 4 [(google.api.field_behavior) = OPTIONAL];
  355. // Optional. Key/value metadata to assign to each underlying AWS resource. Specify at
  356. // most 50 pairs containing alphanumerics, spaces, and symbols (.+-=_:@/).
  357. // Keys can be up to 127 Unicode characters.
  358. // Values can be up to 255 Unicode characters.
  359. map<string, string> tags = 5 [(google.api.field_behavior) = OPTIONAL];
  360. // Required. The name or ARN of the AWS IAM role assigned to nodes in the pool.
  361. string iam_instance_profile = 6 [(google.api.field_behavior) = REQUIRED];
  362. // Optional. The OS image type to use on node pool instances.
  363. // Can have a value of `ubuntu`, or `windows` if the cluster enables
  364. // the Windows node pool preview feature.
  365. //
  366. // When unspecified, it defaults to `ubuntu`.
  367. string image_type = 11 [(google.api.field_behavior) = OPTIONAL];
  368. // Optional. The SSH configuration.
  369. AwsSshConfig ssh_config = 9 [(google.api.field_behavior) = OPTIONAL];
  370. // Optional. The IDs of additional security groups to add to nodes in this pool. The
  371. // manager will automatically create security groups with minimum rules
  372. // needed for a functioning cluster.
  373. repeated string security_group_ids = 10 [(google.api.field_behavior) = OPTIONAL];
  374. // Optional. Proxy configuration for outbound HTTP(S) traffic.
  375. AwsProxyConfig proxy_config = 12 [(google.api.field_behavior) = OPTIONAL];
  376. // Required. Config encryption for user data.
  377. AwsConfigEncryption config_encryption = 13 [(google.api.field_behavior) = REQUIRED];
  378. // Optional. Placement related info for this node.
  379. // When unspecified, the VPC's default tenancy will be used.
  380. AwsInstancePlacement instance_placement = 14 [(google.api.field_behavior) = OPTIONAL];
  381. }
  382. // AwsNodePoolAutoscaling contains information required by cluster autoscaler
  383. // to adjust the size of the node pool to the current cluster usage.
  384. message AwsNodePoolAutoscaling {
  385. // Required. Minimum number of nodes in the node pool. Must be greater than or equal to
  386. // 1 and less than or equal to max_node_count.
  387. int32 min_node_count = 1 [(google.api.field_behavior) = REQUIRED];
  388. // Required. Maximum number of nodes in the node pool. Must be greater than or equal to
  389. // min_node_count and less than or equal to 50.
  390. int32 max_node_count = 2 [(google.api.field_behavior) = REQUIRED];
  391. }
  392. // AwsServerConfig is the configuration of GKE cluster on AWS.
  393. message AwsServerConfig {
  394. option (google.api.resource) = {
  395. type: "gkemulticloud.googleapis.com/AwsServerConfig"
  396. pattern: "projects/{project}/locations/{location}/awsServerConfig"
  397. };
  398. // The resource name of the config.
  399. string name = 1;
  400. // List of valid Kubernetes versions.
  401. repeated AwsK8sVersionInfo valid_versions = 2;
  402. // The list of supported AWS regions.
  403. repeated string supported_aws_regions = 3;
  404. }
  405. // Kubernetes version information of GKE cluster on AWS.
  406. message AwsK8sVersionInfo {
  407. // Kubernetes version name.
  408. string version = 1;
  409. }
  410. // SSH configuration for AWS resources.
  411. message AwsSshConfig {
  412. // Required. The name of the EC2 key pair used to login into cluster machines.
  413. string ec2_key_pair = 1 [(google.api.field_behavior) = REQUIRED];
  414. }
  415. // Details of a proxy config stored in AWS Secret Manager.
  416. message AwsProxyConfig {
  417. // The ARN of the AWS Secret Manager secret that contains the HTTP(S) proxy
  418. // configuration.
  419. string secret_arn = 1;
  420. // The version string of the AWS Secret Manager secret that contains the
  421. // HTTP(S) proxy configuration.
  422. string secret_version = 2;
  423. }
  424. // Config encryption for user data.
  425. message AwsConfigEncryption {
  426. // Required. The ARN of the AWS KMS key used to encrypt user data.
  427. string kms_key_arn = 1 [(google.api.field_behavior) = REQUIRED];
  428. }
  429. // Details of placement information for an instance.
  430. // Limitations for using the `host` tenancy:
  431. //
  432. // * T3 instances that use the unlimited CPU credit option don't support host
  433. // tenancy.
  434. message AwsInstancePlacement {
  435. // Tenancy defines how EC2 instances are distributed across physical hardware.
  436. enum Tenancy {
  437. // Not set.
  438. TENANCY_UNSPECIFIED = 0;
  439. // Use default VPC tenancy.
  440. DEFAULT = 1;
  441. // Run a dedicated instance.
  442. DEDICATED = 2;
  443. // Launch this instance to a dedicated host.
  444. HOST = 3;
  445. }
  446. // Required. The tenancy for instance.
  447. Tenancy tenancy = 1 [(google.api.field_behavior) = REQUIRED];
  448. }