Skip to main content

aws_sdk_eks/operation/create_nodegroup/
_create_nodegroup_input.rs

1// Code generated by software.amazon.smithy.rust.codegen.smithy-rs. DO NOT EDIT.
2#[allow(missing_docs)] // documentation missing in model
3#[non_exhaustive]
4#[derive(::std::clone::Clone, ::std::cmp::PartialEq, ::std::fmt::Debug)]
5pub struct CreateNodegroupInput {
6    /// <p>The name of your cluster.</p>
7    pub cluster_name: ::std::option::Option<::std::string::String>,
8    /// <p>The unique name to give your node group.</p>
9    pub nodegroup_name: ::std::option::Option<::std::string::String>,
10    /// <p>The scaling configuration details for the Auto Scaling group that is created for your node group.</p>
11    pub scaling_config: ::std::option::Option<crate::types::NodegroupScalingConfig>,
12    /// <p>The root device disk size (in GiB) for your node group instances. The default disk size is 20 GiB for Linux and Bottlerocket. The default disk size is 50 GiB for Windows. If you specify <code>launchTemplate</code>, then don't specify <code>diskSize</code>, or the node group deployment will fail. For more information about using launch templates with Amazon EKS, see <a href="https://docs.aws.amazon.com/eks/latest/userguide/launch-templates.html">Customizing managed nodes with launch templates</a> in the <i>Amazon EKS User Guide</i>.</p>
13    pub disk_size: ::std::option::Option<i32>,
14    /// <p>The subnets to use for the Auto Scaling group that is created for your node group. If you specify <code>launchTemplate</code>, then don't specify <code> <a href="https://docs.aws.amazon.com/AWSEC2/latest/APIReference/API_CreateNetworkInterface.html">SubnetId</a> </code> in your launch template, or the node group deployment will fail. For more information about using launch templates with Amazon EKS, see <a href="https://docs.aws.amazon.com/eks/latest/userguide/launch-templates.html">Customizing managed nodes with launch templates</a> in the <i>Amazon EKS User Guide</i>.</p>
15    pub subnets: ::std::option::Option<::std::vec::Vec<::std::string::String>>,
16    /// <p>Specify the instance types for a node group. If you specify a GPU instance type, make sure to also specify an applicable GPU AMI type with the <code>amiType</code> parameter. If you specify <code>launchTemplate</code>, then you can specify zero or one instance type in your launch template <i>or</i> you can specify 0-20 instance types for <code>instanceTypes</code>. If however, you specify an instance type in your launch template <i>and</i> specify any <code>instanceTypes</code>, the node group deployment will fail. If you don't specify an instance type in a launch template or for <code>instanceTypes</code>, then <code>t3.medium</code> is used, by default. If you specify <code>Spot</code> for <code>capacityType</code>, then we recommend specifying multiple values for <code>instanceTypes</code>. For more information, see <a href="https://docs.aws.amazon.com/eks/latest/userguide/managed-node-groups.html#managed-node-group-capacity-types">Managed node group capacity types</a> and <a href="https://docs.aws.amazon.com/eks/latest/userguide/launch-templates.html">Customizing managed nodes with launch templates</a> in the <i>Amazon EKS User Guide</i>.</p>
17    pub instance_types: ::std::option::Option<::std::vec::Vec<::std::string::String>>,
18    /// <p>The AMI type for your node group. If you specify <code>launchTemplate</code>, and your launch template uses a custom AMI, then don't specify <code>amiType</code>, or the node group deployment will fail. If your launch template uses a Windows custom AMI, then add <code>eks:kube-proxy-windows</code> to your Windows nodes <code>rolearn</code> in the <code>aws-auth</code> <code>ConfigMap</code>. For more information about using launch templates with Amazon EKS, see <a href="https://docs.aws.amazon.com/eks/latest/userguide/launch-templates.html">Customizing managed nodes with launch templates</a> in the <i>Amazon EKS User Guide</i>.</p>
19    pub ami_type: ::std::option::Option<crate::types::AmiTypes>,
20    /// <p>The remote access configuration to use with your node group. For Linux, the protocol is SSH. For Windows, the protocol is RDP. If you specify <code>launchTemplate</code>, then don't specify <code>remoteAccess</code>, or the node group deployment will fail. For more information about using launch templates with Amazon EKS, see <a href="https://docs.aws.amazon.com/eks/latest/userguide/launch-templates.html">Customizing managed nodes with launch templates</a> in the <i>Amazon EKS User Guide</i>.</p>
21    pub remote_access: ::std::option::Option<crate::types::RemoteAccessConfig>,
22    /// <p>The Amazon Resource Name (ARN) of the IAM role to associate with your node group. The Amazon EKS worker node <code>kubelet</code> daemon makes calls to Amazon Web Services APIs on your behalf. Nodes receive permissions for these API calls through an IAM instance profile and associated policies. Before you can launch nodes and register them into a cluster, you must create an IAM role for those nodes to use when they are launched. For more information, see <a href="https://docs.aws.amazon.com/eks/latest/userguide/create-node-role.html">Amazon EKS node IAM role</a> in the <i> <i>Amazon EKS User Guide</i> </i>. If you specify <code>launchTemplate</code>, then don't specify <code> <a href="https://docs.aws.amazon.com/AWSEC2/latest/APIReference/API_IamInstanceProfile.html">IamInstanceProfile</a> </code> in your launch template, or the node group deployment will fail. For more information about using launch templates with Amazon EKS, see <a href="https://docs.aws.amazon.com/eks/latest/userguide/launch-templates.html">Customizing managed nodes with launch templates</a> in the <i>Amazon EKS User Guide</i>.</p>
23    pub node_role: ::std::option::Option<::std::string::String>,
24    /// <p>The Kubernetes <code>labels</code> to apply to the nodes in the node group when they are created.</p>
25    pub labels: ::std::option::Option<::std::collections::HashMap<::std::string::String, ::std::string::String>>,
26    /// <p>The Kubernetes taints to be applied to the nodes in the node group. For more information, see <a href="https://docs.aws.amazon.com/eks/latest/userguide/node-taints-managed-node-groups.html">Node taints on managed node groups</a>.</p>
27    pub taints: ::std::option::Option<::std::vec::Vec<crate::types::Taint>>,
28    /// <p>Metadata that assists with categorization and organization. Each tag consists of a key and an optional value. You define both. Tags don't propagate to any other cluster or Amazon Web Services resources.</p>
29    pub tags: ::std::option::Option<::std::collections::HashMap<::std::string::String, ::std::string::String>>,
30    /// <p>A unique, case-sensitive identifier that you provide to ensure the idempotency of the request.</p>
31    pub client_request_token: ::std::option::Option<::std::string::String>,
32    /// <p>An object representing a node group's launch template specification. When using this object, don't directly specify <code>instanceTypes</code>, <code>diskSize</code>, or <code>remoteAccess</code>. You cannot later specify a different launch template ID or name than what was used to create the node group.</p>
33    /// <p>Make sure that the launch template meets the requirements in <code>launchTemplateSpecification</code>. Also refer to <a href="https://docs.aws.amazon.com/eks/latest/userguide/launch-templates.html">Customizing managed nodes with launch templates</a> in the <i>Amazon EKS User Guide</i>.</p>
34    pub launch_template: ::std::option::Option<crate::types::LaunchTemplateSpecification>,
35    /// <p>The node group update configuration.</p>
36    pub update_config: ::std::option::Option<crate::types::NodegroupUpdateConfig>,
37    /// <p>The node auto repair configuration for the node group.</p>
38    pub node_repair_config: ::std::option::Option<crate::types::NodeRepairConfig>,
39    /// <p>The capacity type for your node group.</p>
40    pub capacity_type: ::std::option::Option<crate::types::CapacityTypes>,
41    /// <p>The Kubernetes version to use for your managed nodes. By default, the Kubernetes version of the cluster is used, and this is the only accepted specified value. If you specify <code>launchTemplate</code>, and your launch template uses a custom AMI, then don't specify <code>version</code>, or the node group deployment will fail. For more information about using launch templates with Amazon EKS, see <a href="https://docs.aws.amazon.com/eks/latest/userguide/launch-templates.html">Customizing managed nodes with launch templates</a> in the <i>Amazon EKS User Guide</i>.</p>
42    pub version: ::std::option::Option<::std::string::String>,
43    /// <p>The AMI version of the Amazon EKS optimized AMI to use with your node group. By default, the latest available AMI version for the node group's current Kubernetes version is used. For information about Linux versions, see <a href="https://docs.aws.amazon.com/eks/latest/userguide/eks-linux-ami-versions.html">Amazon EKS optimized Amazon Linux AMI versions</a> in the <i>Amazon EKS User Guide</i>. Amazon EKS managed node groups support the November 2022 and later releases of the Windows AMIs. For information about Windows versions, see <a href="https://docs.aws.amazon.com/eks/latest/userguide/eks-ami-versions-windows.html">Amazon EKS optimized Windows AMI versions</a> in the <i>Amazon EKS User Guide</i>.</p>
44    /// <p>If you specify <code>launchTemplate</code>, and your launch template uses a custom AMI, then don't specify <code>releaseVersion</code>, or the node group deployment will fail. For more information about using launch templates with Amazon EKS, see <a href="https://docs.aws.amazon.com/eks/latest/userguide/launch-templates.html">Customizing managed nodes with launch templates</a> in the <i>Amazon EKS User Guide</i>.</p>
45    pub release_version: ::std::option::Option<::std::string::String>,
46    /// <p>The warm pool configuration for the node group. Warm pools maintain pre-initialized EC2 instances that can quickly join your cluster during scale-out events, improving application scaling performance and reducing costs.</p>
47    pub warm_pool_config: ::std::option::Option<crate::types::WarmPoolConfig>,
48}
49impl CreateNodegroupInput {
50    /// <p>The name of your cluster.</p>
51    pub fn cluster_name(&self) -> ::std::option::Option<&str> {
52        self.cluster_name.as_deref()
53    }
54    /// <p>The unique name to give your node group.</p>
55    pub fn nodegroup_name(&self) -> ::std::option::Option<&str> {
56        self.nodegroup_name.as_deref()
57    }
58    /// <p>The scaling configuration details for the Auto Scaling group that is created for your node group.</p>
59    pub fn scaling_config(&self) -> ::std::option::Option<&crate::types::NodegroupScalingConfig> {
60        self.scaling_config.as_ref()
61    }
62    /// <p>The root device disk size (in GiB) for your node group instances. The default disk size is 20 GiB for Linux and Bottlerocket. The default disk size is 50 GiB for Windows. If you specify <code>launchTemplate</code>, then don't specify <code>diskSize</code>, or the node group deployment will fail. For more information about using launch templates with Amazon EKS, see <a href="https://docs.aws.amazon.com/eks/latest/userguide/launch-templates.html">Customizing managed nodes with launch templates</a> in the <i>Amazon EKS User Guide</i>.</p>
63    pub fn disk_size(&self) -> ::std::option::Option<i32> {
64        self.disk_size
65    }
66    /// <p>The subnets to use for the Auto Scaling group that is created for your node group. If you specify <code>launchTemplate</code>, then don't specify <code> <a href="https://docs.aws.amazon.com/AWSEC2/latest/APIReference/API_CreateNetworkInterface.html">SubnetId</a> </code> in your launch template, or the node group deployment will fail. For more information about using launch templates with Amazon EKS, see <a href="https://docs.aws.amazon.com/eks/latest/userguide/launch-templates.html">Customizing managed nodes with launch templates</a> in the <i>Amazon EKS User Guide</i>.</p>
67    ///
68    /// If no value was sent for this field, a default will be set. If you want to determine if no value was sent, use `.subnets.is_none()`.
69    pub fn subnets(&self) -> &[::std::string::String] {
70        self.subnets.as_deref().unwrap_or_default()
71    }
72    /// <p>Specify the instance types for a node group. If you specify a GPU instance type, make sure to also specify an applicable GPU AMI type with the <code>amiType</code> parameter. If you specify <code>launchTemplate</code>, then you can specify zero or one instance type in your launch template <i>or</i> you can specify 0-20 instance types for <code>instanceTypes</code>. If however, you specify an instance type in your launch template <i>and</i> specify any <code>instanceTypes</code>, the node group deployment will fail. If you don't specify an instance type in a launch template or for <code>instanceTypes</code>, then <code>t3.medium</code> is used, by default. If you specify <code>Spot</code> for <code>capacityType</code>, then we recommend specifying multiple values for <code>instanceTypes</code>. For more information, see <a href="https://docs.aws.amazon.com/eks/latest/userguide/managed-node-groups.html#managed-node-group-capacity-types">Managed node group capacity types</a> and <a href="https://docs.aws.amazon.com/eks/latest/userguide/launch-templates.html">Customizing managed nodes with launch templates</a> in the <i>Amazon EKS User Guide</i>.</p>
73    ///
74    /// If no value was sent for this field, a default will be set. If you want to determine if no value was sent, use `.instance_types.is_none()`.
75    pub fn instance_types(&self) -> &[::std::string::String] {
76        self.instance_types.as_deref().unwrap_or_default()
77    }
78    /// <p>The AMI type for your node group. If you specify <code>launchTemplate</code>, and your launch template uses a custom AMI, then don't specify <code>amiType</code>, or the node group deployment will fail. If your launch template uses a Windows custom AMI, then add <code>eks:kube-proxy-windows</code> to your Windows nodes <code>rolearn</code> in the <code>aws-auth</code> <code>ConfigMap</code>. For more information about using launch templates with Amazon EKS, see <a href="https://docs.aws.amazon.com/eks/latest/userguide/launch-templates.html">Customizing managed nodes with launch templates</a> in the <i>Amazon EKS User Guide</i>.</p>
79    pub fn ami_type(&self) -> ::std::option::Option<&crate::types::AmiTypes> {
80        self.ami_type.as_ref()
81    }
82    /// <p>The remote access configuration to use with your node group. For Linux, the protocol is SSH. For Windows, the protocol is RDP. If you specify <code>launchTemplate</code>, then don't specify <code>remoteAccess</code>, or the node group deployment will fail. For more information about using launch templates with Amazon EKS, see <a href="https://docs.aws.amazon.com/eks/latest/userguide/launch-templates.html">Customizing managed nodes with launch templates</a> in the <i>Amazon EKS User Guide</i>.</p>
83    pub fn remote_access(&self) -> ::std::option::Option<&crate::types::RemoteAccessConfig> {
84        self.remote_access.as_ref()
85    }
86    /// <p>The Amazon Resource Name (ARN) of the IAM role to associate with your node group. The Amazon EKS worker node <code>kubelet</code> daemon makes calls to Amazon Web Services APIs on your behalf. Nodes receive permissions for these API calls through an IAM instance profile and associated policies. Before you can launch nodes and register them into a cluster, you must create an IAM role for those nodes to use when they are launched. For more information, see <a href="https://docs.aws.amazon.com/eks/latest/userguide/create-node-role.html">Amazon EKS node IAM role</a> in the <i> <i>Amazon EKS User Guide</i> </i>. If you specify <code>launchTemplate</code>, then don't specify <code> <a href="https://docs.aws.amazon.com/AWSEC2/latest/APIReference/API_IamInstanceProfile.html">IamInstanceProfile</a> </code> in your launch template, or the node group deployment will fail. For more information about using launch templates with Amazon EKS, see <a href="https://docs.aws.amazon.com/eks/latest/userguide/launch-templates.html">Customizing managed nodes with launch templates</a> in the <i>Amazon EKS User Guide</i>.</p>
87    pub fn node_role(&self) -> ::std::option::Option<&str> {
88        self.node_role.as_deref()
89    }
90    /// <p>The Kubernetes <code>labels</code> to apply to the nodes in the node group when they are created.</p>
91    pub fn labels(&self) -> ::std::option::Option<&::std::collections::HashMap<::std::string::String, ::std::string::String>> {
92        self.labels.as_ref()
93    }
94    /// <p>The Kubernetes taints to be applied to the nodes in the node group. For more information, see <a href="https://docs.aws.amazon.com/eks/latest/userguide/node-taints-managed-node-groups.html">Node taints on managed node groups</a>.</p>
95    ///
96    /// If no value was sent for this field, a default will be set. If you want to determine if no value was sent, use `.taints.is_none()`.
97    pub fn taints(&self) -> &[crate::types::Taint] {
98        self.taints.as_deref().unwrap_or_default()
99    }
100    /// <p>Metadata that assists with categorization and organization. Each tag consists of a key and an optional value. You define both. Tags don't propagate to any other cluster or Amazon Web Services resources.</p>
101    pub fn tags(&self) -> ::std::option::Option<&::std::collections::HashMap<::std::string::String, ::std::string::String>> {
102        self.tags.as_ref()
103    }
104    /// <p>A unique, case-sensitive identifier that you provide to ensure the idempotency of the request.</p>
105    pub fn client_request_token(&self) -> ::std::option::Option<&str> {
106        self.client_request_token.as_deref()
107    }
108    /// <p>An object representing a node group's launch template specification. When using this object, don't directly specify <code>instanceTypes</code>, <code>diskSize</code>, or <code>remoteAccess</code>. You cannot later specify a different launch template ID or name than what was used to create the node group.</p>
109    /// <p>Make sure that the launch template meets the requirements in <code>launchTemplateSpecification</code>. Also refer to <a href="https://docs.aws.amazon.com/eks/latest/userguide/launch-templates.html">Customizing managed nodes with launch templates</a> in the <i>Amazon EKS User Guide</i>.</p>
110    pub fn launch_template(&self) -> ::std::option::Option<&crate::types::LaunchTemplateSpecification> {
111        self.launch_template.as_ref()
112    }
113    /// <p>The node group update configuration.</p>
114    pub fn update_config(&self) -> ::std::option::Option<&crate::types::NodegroupUpdateConfig> {
115        self.update_config.as_ref()
116    }
117    /// <p>The node auto repair configuration for the node group.</p>
118    pub fn node_repair_config(&self) -> ::std::option::Option<&crate::types::NodeRepairConfig> {
119        self.node_repair_config.as_ref()
120    }
121    /// <p>The capacity type for your node group.</p>
122    pub fn capacity_type(&self) -> ::std::option::Option<&crate::types::CapacityTypes> {
123        self.capacity_type.as_ref()
124    }
125    /// <p>The Kubernetes version to use for your managed nodes. By default, the Kubernetes version of the cluster is used, and this is the only accepted specified value. If you specify <code>launchTemplate</code>, and your launch template uses a custom AMI, then don't specify <code>version</code>, or the node group deployment will fail. For more information about using launch templates with Amazon EKS, see <a href="https://docs.aws.amazon.com/eks/latest/userguide/launch-templates.html">Customizing managed nodes with launch templates</a> in the <i>Amazon EKS User Guide</i>.</p>
126    pub fn version(&self) -> ::std::option::Option<&str> {
127        self.version.as_deref()
128    }
129    /// <p>The AMI version of the Amazon EKS optimized AMI to use with your node group. By default, the latest available AMI version for the node group's current Kubernetes version is used. For information about Linux versions, see <a href="https://docs.aws.amazon.com/eks/latest/userguide/eks-linux-ami-versions.html">Amazon EKS optimized Amazon Linux AMI versions</a> in the <i>Amazon EKS User Guide</i>. Amazon EKS managed node groups support the November 2022 and later releases of the Windows AMIs. For information about Windows versions, see <a href="https://docs.aws.amazon.com/eks/latest/userguide/eks-ami-versions-windows.html">Amazon EKS optimized Windows AMI versions</a> in the <i>Amazon EKS User Guide</i>.</p>
130    /// <p>If you specify <code>launchTemplate</code>, and your launch template uses a custom AMI, then don't specify <code>releaseVersion</code>, or the node group deployment will fail. For more information about using launch templates with Amazon EKS, see <a href="https://docs.aws.amazon.com/eks/latest/userguide/launch-templates.html">Customizing managed nodes with launch templates</a> in the <i>Amazon EKS User Guide</i>.</p>
131    pub fn release_version(&self) -> ::std::option::Option<&str> {
132        self.release_version.as_deref()
133    }
134    /// <p>The warm pool configuration for the node group. Warm pools maintain pre-initialized EC2 instances that can quickly join your cluster during scale-out events, improving application scaling performance and reducing costs.</p>
135    pub fn warm_pool_config(&self) -> ::std::option::Option<&crate::types::WarmPoolConfig> {
136        self.warm_pool_config.as_ref()
137    }
138}
139impl CreateNodegroupInput {
140    /// Creates a new builder-style object to manufacture [`CreateNodegroupInput`](crate::operation::create_nodegroup::CreateNodegroupInput).
141    pub fn builder() -> crate::operation::create_nodegroup::builders::CreateNodegroupInputBuilder {
142        crate::operation::create_nodegroup::builders::CreateNodegroupInputBuilder::default()
143    }
144}
145
146/// A builder for [`CreateNodegroupInput`](crate::operation::create_nodegroup::CreateNodegroupInput).
147#[derive(::std::clone::Clone, ::std::cmp::PartialEq, ::std::default::Default, ::std::fmt::Debug)]
148#[non_exhaustive]
149pub struct CreateNodegroupInputBuilder {
150    pub(crate) cluster_name: ::std::option::Option<::std::string::String>,
151    pub(crate) nodegroup_name: ::std::option::Option<::std::string::String>,
152    pub(crate) scaling_config: ::std::option::Option<crate::types::NodegroupScalingConfig>,
153    pub(crate) disk_size: ::std::option::Option<i32>,
154    pub(crate) subnets: ::std::option::Option<::std::vec::Vec<::std::string::String>>,
155    pub(crate) instance_types: ::std::option::Option<::std::vec::Vec<::std::string::String>>,
156    pub(crate) ami_type: ::std::option::Option<crate::types::AmiTypes>,
157    pub(crate) remote_access: ::std::option::Option<crate::types::RemoteAccessConfig>,
158    pub(crate) node_role: ::std::option::Option<::std::string::String>,
159    pub(crate) labels: ::std::option::Option<::std::collections::HashMap<::std::string::String, ::std::string::String>>,
160    pub(crate) taints: ::std::option::Option<::std::vec::Vec<crate::types::Taint>>,
161    pub(crate) tags: ::std::option::Option<::std::collections::HashMap<::std::string::String, ::std::string::String>>,
162    pub(crate) client_request_token: ::std::option::Option<::std::string::String>,
163    pub(crate) launch_template: ::std::option::Option<crate::types::LaunchTemplateSpecification>,
164    pub(crate) update_config: ::std::option::Option<crate::types::NodegroupUpdateConfig>,
165    pub(crate) node_repair_config: ::std::option::Option<crate::types::NodeRepairConfig>,
166    pub(crate) capacity_type: ::std::option::Option<crate::types::CapacityTypes>,
167    pub(crate) version: ::std::option::Option<::std::string::String>,
168    pub(crate) release_version: ::std::option::Option<::std::string::String>,
169    pub(crate) warm_pool_config: ::std::option::Option<crate::types::WarmPoolConfig>,
170}
171impl CreateNodegroupInputBuilder {
172    /// <p>The name of your cluster.</p>
173    /// This field is required.
174    pub fn cluster_name(mut self, input: impl ::std::convert::Into<::std::string::String>) -> Self {
175        self.cluster_name = ::std::option::Option::Some(input.into());
176        self
177    }
178    /// <p>The name of your cluster.</p>
179    pub fn set_cluster_name(mut self, input: ::std::option::Option<::std::string::String>) -> Self {
180        self.cluster_name = input;
181        self
182    }
183    /// <p>The name of your cluster.</p>
184    pub fn get_cluster_name(&self) -> &::std::option::Option<::std::string::String> {
185        &self.cluster_name
186    }
187    /// <p>The unique name to give your node group.</p>
188    /// This field is required.
189    pub fn nodegroup_name(mut self, input: impl ::std::convert::Into<::std::string::String>) -> Self {
190        self.nodegroup_name = ::std::option::Option::Some(input.into());
191        self
192    }
193    /// <p>The unique name to give your node group.</p>
194    pub fn set_nodegroup_name(mut self, input: ::std::option::Option<::std::string::String>) -> Self {
195        self.nodegroup_name = input;
196        self
197    }
198    /// <p>The unique name to give your node group.</p>
199    pub fn get_nodegroup_name(&self) -> &::std::option::Option<::std::string::String> {
200        &self.nodegroup_name
201    }
202    /// <p>The scaling configuration details for the Auto Scaling group that is created for your node group.</p>
203    pub fn scaling_config(mut self, input: crate::types::NodegroupScalingConfig) -> Self {
204        self.scaling_config = ::std::option::Option::Some(input);
205        self
206    }
207    /// <p>The scaling configuration details for the Auto Scaling group that is created for your node group.</p>
208    pub fn set_scaling_config(mut self, input: ::std::option::Option<crate::types::NodegroupScalingConfig>) -> Self {
209        self.scaling_config = input;
210        self
211    }
212    /// <p>The scaling configuration details for the Auto Scaling group that is created for your node group.</p>
213    pub fn get_scaling_config(&self) -> &::std::option::Option<crate::types::NodegroupScalingConfig> {
214        &self.scaling_config
215    }
216    /// <p>The root device disk size (in GiB) for your node group instances. The default disk size is 20 GiB for Linux and Bottlerocket. The default disk size is 50 GiB for Windows. If you specify <code>launchTemplate</code>, then don't specify <code>diskSize</code>, or the node group deployment will fail. For more information about using launch templates with Amazon EKS, see <a href="https://docs.aws.amazon.com/eks/latest/userguide/launch-templates.html">Customizing managed nodes with launch templates</a> in the <i>Amazon EKS User Guide</i>.</p>
217    pub fn disk_size(mut self, input: i32) -> Self {
218        self.disk_size = ::std::option::Option::Some(input);
219        self
220    }
221    /// <p>The root device disk size (in GiB) for your node group instances. The default disk size is 20 GiB for Linux and Bottlerocket. The default disk size is 50 GiB for Windows. If you specify <code>launchTemplate</code>, then don't specify <code>diskSize</code>, or the node group deployment will fail. For more information about using launch templates with Amazon EKS, see <a href="https://docs.aws.amazon.com/eks/latest/userguide/launch-templates.html">Customizing managed nodes with launch templates</a> in the <i>Amazon EKS User Guide</i>.</p>
222    pub fn set_disk_size(mut self, input: ::std::option::Option<i32>) -> Self {
223        self.disk_size = input;
224        self
225    }
226    /// <p>The root device disk size (in GiB) for your node group instances. The default disk size is 20 GiB for Linux and Bottlerocket. The default disk size is 50 GiB for Windows. If you specify <code>launchTemplate</code>, then don't specify <code>diskSize</code>, or the node group deployment will fail. For more information about using launch templates with Amazon EKS, see <a href="https://docs.aws.amazon.com/eks/latest/userguide/launch-templates.html">Customizing managed nodes with launch templates</a> in the <i>Amazon EKS User Guide</i>.</p>
227    pub fn get_disk_size(&self) -> &::std::option::Option<i32> {
228        &self.disk_size
229    }
230    /// Appends an item to `subnets`.
231    ///
232    /// To override the contents of this collection use [`set_subnets`](Self::set_subnets).
233    ///
234    /// <p>The subnets to use for the Auto Scaling group that is created for your node group. If you specify <code>launchTemplate</code>, then don't specify <code> <a href="https://docs.aws.amazon.com/AWSEC2/latest/APIReference/API_CreateNetworkInterface.html">SubnetId</a> </code> in your launch template, or the node group deployment will fail. For more information about using launch templates with Amazon EKS, see <a href="https://docs.aws.amazon.com/eks/latest/userguide/launch-templates.html">Customizing managed nodes with launch templates</a> in the <i>Amazon EKS User Guide</i>.</p>
235    pub fn subnets(mut self, input: impl ::std::convert::Into<::std::string::String>) -> Self {
236        let mut v = self.subnets.unwrap_or_default();
237        v.push(input.into());
238        self.subnets = ::std::option::Option::Some(v);
239        self
240    }
241    /// <p>The subnets to use for the Auto Scaling group that is created for your node group. If you specify <code>launchTemplate</code>, then don't specify <code> <a href="https://docs.aws.amazon.com/AWSEC2/latest/APIReference/API_CreateNetworkInterface.html">SubnetId</a> </code> in your launch template, or the node group deployment will fail. For more information about using launch templates with Amazon EKS, see <a href="https://docs.aws.amazon.com/eks/latest/userguide/launch-templates.html">Customizing managed nodes with launch templates</a> in the <i>Amazon EKS User Guide</i>.</p>
242    pub fn set_subnets(mut self, input: ::std::option::Option<::std::vec::Vec<::std::string::String>>) -> Self {
243        self.subnets = input;
244        self
245    }
246    /// <p>The subnets to use for the Auto Scaling group that is created for your node group. If you specify <code>launchTemplate</code>, then don't specify <code> <a href="https://docs.aws.amazon.com/AWSEC2/latest/APIReference/API_CreateNetworkInterface.html">SubnetId</a> </code> in your launch template, or the node group deployment will fail. For more information about using launch templates with Amazon EKS, see <a href="https://docs.aws.amazon.com/eks/latest/userguide/launch-templates.html">Customizing managed nodes with launch templates</a> in the <i>Amazon EKS User Guide</i>.</p>
247    pub fn get_subnets(&self) -> &::std::option::Option<::std::vec::Vec<::std::string::String>> {
248        &self.subnets
249    }
250    /// Appends an item to `instance_types`.
251    ///
252    /// To override the contents of this collection use [`set_instance_types`](Self::set_instance_types).
253    ///
254    /// <p>Specify the instance types for a node group. If you specify a GPU instance type, make sure to also specify an applicable GPU AMI type with the <code>amiType</code> parameter. If you specify <code>launchTemplate</code>, then you can specify zero or one instance type in your launch template <i>or</i> you can specify 0-20 instance types for <code>instanceTypes</code>. If however, you specify an instance type in your launch template <i>and</i> specify any <code>instanceTypes</code>, the node group deployment will fail. If you don't specify an instance type in a launch template or for <code>instanceTypes</code>, then <code>t3.medium</code> is used, by default. If you specify <code>Spot</code> for <code>capacityType</code>, then we recommend specifying multiple values for <code>instanceTypes</code>. For more information, see <a href="https://docs.aws.amazon.com/eks/latest/userguide/managed-node-groups.html#managed-node-group-capacity-types">Managed node group capacity types</a> and <a href="https://docs.aws.amazon.com/eks/latest/userguide/launch-templates.html">Customizing managed nodes with launch templates</a> in the <i>Amazon EKS User Guide</i>.</p>
255    pub fn instance_types(mut self, input: impl ::std::convert::Into<::std::string::String>) -> Self {
256        let mut v = self.instance_types.unwrap_or_default();
257        v.push(input.into());
258        self.instance_types = ::std::option::Option::Some(v);
259        self
260    }
261    /// <p>Specify the instance types for a node group. If you specify a GPU instance type, make sure to also specify an applicable GPU AMI type with the <code>amiType</code> parameter. If you specify <code>launchTemplate</code>, then you can specify zero or one instance type in your launch template <i>or</i> you can specify 0-20 instance types for <code>instanceTypes</code>. If however, you specify an instance type in your launch template <i>and</i> specify any <code>instanceTypes</code>, the node group deployment will fail. If you don't specify an instance type in a launch template or for <code>instanceTypes</code>, then <code>t3.medium</code> is used, by default. If you specify <code>Spot</code> for <code>capacityType</code>, then we recommend specifying multiple values for <code>instanceTypes</code>. For more information, see <a href="https://docs.aws.amazon.com/eks/latest/userguide/managed-node-groups.html#managed-node-group-capacity-types">Managed node group capacity types</a> and <a href="https://docs.aws.amazon.com/eks/latest/userguide/launch-templates.html">Customizing managed nodes with launch templates</a> in the <i>Amazon EKS User Guide</i>.</p>
262    pub fn set_instance_types(mut self, input: ::std::option::Option<::std::vec::Vec<::std::string::String>>) -> Self {
263        self.instance_types = input;
264        self
265    }
266    /// <p>Specify the instance types for a node group. If you specify a GPU instance type, make sure to also specify an applicable GPU AMI type with the <code>amiType</code> parameter. If you specify <code>launchTemplate</code>, then you can specify zero or one instance type in your launch template <i>or</i> you can specify 0-20 instance types for <code>instanceTypes</code>. If however, you specify an instance type in your launch template <i>and</i> specify any <code>instanceTypes</code>, the node group deployment will fail. If you don't specify an instance type in a launch template or for <code>instanceTypes</code>, then <code>t3.medium</code> is used, by default. If you specify <code>Spot</code> for <code>capacityType</code>, then we recommend specifying multiple values for <code>instanceTypes</code>. For more information, see <a href="https://docs.aws.amazon.com/eks/latest/userguide/managed-node-groups.html#managed-node-group-capacity-types">Managed node group capacity types</a> and <a href="https://docs.aws.amazon.com/eks/latest/userguide/launch-templates.html">Customizing managed nodes with launch templates</a> in the <i>Amazon EKS User Guide</i>.</p>
267    pub fn get_instance_types(&self) -> &::std::option::Option<::std::vec::Vec<::std::string::String>> {
268        &self.instance_types
269    }
270    /// <p>The AMI type for your node group. If you specify <code>launchTemplate</code>, and your launch template uses a custom AMI, then don't specify <code>amiType</code>, or the node group deployment will fail. If your launch template uses a Windows custom AMI, then add <code>eks:kube-proxy-windows</code> to your Windows nodes <code>rolearn</code> in the <code>aws-auth</code> <code>ConfigMap</code>. For more information about using launch templates with Amazon EKS, see <a href="https://docs.aws.amazon.com/eks/latest/userguide/launch-templates.html">Customizing managed nodes with launch templates</a> in the <i>Amazon EKS User Guide</i>.</p>
271    pub fn ami_type(mut self, input: crate::types::AmiTypes) -> Self {
272        self.ami_type = ::std::option::Option::Some(input);
273        self
274    }
275    /// <p>The AMI type for your node group. If you specify <code>launchTemplate</code>, and your launch template uses a custom AMI, then don't specify <code>amiType</code>, or the node group deployment will fail. If your launch template uses a Windows custom AMI, then add <code>eks:kube-proxy-windows</code> to your Windows nodes <code>rolearn</code> in the <code>aws-auth</code> <code>ConfigMap</code>. For more information about using launch templates with Amazon EKS, see <a href="https://docs.aws.amazon.com/eks/latest/userguide/launch-templates.html">Customizing managed nodes with launch templates</a> in the <i>Amazon EKS User Guide</i>.</p>
276    pub fn set_ami_type(mut self, input: ::std::option::Option<crate::types::AmiTypes>) -> Self {
277        self.ami_type = input;
278        self
279    }
280    /// <p>The AMI type for your node group. If you specify <code>launchTemplate</code>, and your launch template uses a custom AMI, then don't specify <code>amiType</code>, or the node group deployment will fail. If your launch template uses a Windows custom AMI, then add <code>eks:kube-proxy-windows</code> to your Windows nodes <code>rolearn</code> in the <code>aws-auth</code> <code>ConfigMap</code>. For more information about using launch templates with Amazon EKS, see <a href="https://docs.aws.amazon.com/eks/latest/userguide/launch-templates.html">Customizing managed nodes with launch templates</a> in the <i>Amazon EKS User Guide</i>.</p>
281    pub fn get_ami_type(&self) -> &::std::option::Option<crate::types::AmiTypes> {
282        &self.ami_type
283    }
284    /// <p>The remote access configuration to use with your node group. For Linux, the protocol is SSH. For Windows, the protocol is RDP. If you specify <code>launchTemplate</code>, then don't specify <code>remoteAccess</code>, or the node group deployment will fail. For more information about using launch templates with Amazon EKS, see <a href="https://docs.aws.amazon.com/eks/latest/userguide/launch-templates.html">Customizing managed nodes with launch templates</a> in the <i>Amazon EKS User Guide</i>.</p>
285    pub fn remote_access(mut self, input: crate::types::RemoteAccessConfig) -> Self {
286        self.remote_access = ::std::option::Option::Some(input);
287        self
288    }
289    /// <p>The remote access configuration to use with your node group. For Linux, the protocol is SSH. For Windows, the protocol is RDP. If you specify <code>launchTemplate</code>, then don't specify <code>remoteAccess</code>, or the node group deployment will fail. For more information about using launch templates with Amazon EKS, see <a href="https://docs.aws.amazon.com/eks/latest/userguide/launch-templates.html">Customizing managed nodes with launch templates</a> in the <i>Amazon EKS User Guide</i>.</p>
290    pub fn set_remote_access(mut self, input: ::std::option::Option<crate::types::RemoteAccessConfig>) -> Self {
291        self.remote_access = input;
292        self
293    }
294    /// <p>The remote access configuration to use with your node group. For Linux, the protocol is SSH. For Windows, the protocol is RDP. If you specify <code>launchTemplate</code>, then don't specify <code>remoteAccess</code>, or the node group deployment will fail. For more information about using launch templates with Amazon EKS, see <a href="https://docs.aws.amazon.com/eks/latest/userguide/launch-templates.html">Customizing managed nodes with launch templates</a> in the <i>Amazon EKS User Guide</i>.</p>
295    pub fn get_remote_access(&self) -> &::std::option::Option<crate::types::RemoteAccessConfig> {
296        &self.remote_access
297    }
298    /// <p>The Amazon Resource Name (ARN) of the IAM role to associate with your node group. The Amazon EKS worker node <code>kubelet</code> daemon makes calls to Amazon Web Services APIs on your behalf. Nodes receive permissions for these API calls through an IAM instance profile and associated policies. Before you can launch nodes and register them into a cluster, you must create an IAM role for those nodes to use when they are launched. For more information, see <a href="https://docs.aws.amazon.com/eks/latest/userguide/create-node-role.html">Amazon EKS node IAM role</a> in the <i> <i>Amazon EKS User Guide</i> </i>. If you specify <code>launchTemplate</code>, then don't specify <code> <a href="https://docs.aws.amazon.com/AWSEC2/latest/APIReference/API_IamInstanceProfile.html">IamInstanceProfile</a> </code> in your launch template, or the node group deployment will fail. For more information about using launch templates with Amazon EKS, see <a href="https://docs.aws.amazon.com/eks/latest/userguide/launch-templates.html">Customizing managed nodes with launch templates</a> in the <i>Amazon EKS User Guide</i>.</p>
299    /// This field is required.
300    pub fn node_role(mut self, input: impl ::std::convert::Into<::std::string::String>) -> Self {
301        self.node_role = ::std::option::Option::Some(input.into());
302        self
303    }
304    /// <p>The Amazon Resource Name (ARN) of the IAM role to associate with your node group. The Amazon EKS worker node <code>kubelet</code> daemon makes calls to Amazon Web Services APIs on your behalf. Nodes receive permissions for these API calls through an IAM instance profile and associated policies. Before you can launch nodes and register them into a cluster, you must create an IAM role for those nodes to use when they are launched. For more information, see <a href="https://docs.aws.amazon.com/eks/latest/userguide/create-node-role.html">Amazon EKS node IAM role</a> in the <i> <i>Amazon EKS User Guide</i> </i>. If you specify <code>launchTemplate</code>, then don't specify <code> <a href="https://docs.aws.amazon.com/AWSEC2/latest/APIReference/API_IamInstanceProfile.html">IamInstanceProfile</a> </code> in your launch template, or the node group deployment will fail. For more information about using launch templates with Amazon EKS, see <a href="https://docs.aws.amazon.com/eks/latest/userguide/launch-templates.html">Customizing managed nodes with launch templates</a> in the <i>Amazon EKS User Guide</i>.</p>
305    pub fn set_node_role(mut self, input: ::std::option::Option<::std::string::String>) -> Self {
306        self.node_role = input;
307        self
308    }
309    /// <p>The Amazon Resource Name (ARN) of the IAM role to associate with your node group. The Amazon EKS worker node <code>kubelet</code> daemon makes calls to Amazon Web Services APIs on your behalf. Nodes receive permissions for these API calls through an IAM instance profile and associated policies. Before you can launch nodes and register them into a cluster, you must create an IAM role for those nodes to use when they are launched. For more information, see <a href="https://docs.aws.amazon.com/eks/latest/userguide/create-node-role.html">Amazon EKS node IAM role</a> in the <i> <i>Amazon EKS User Guide</i> </i>. If you specify <code>launchTemplate</code>, then don't specify <code> <a href="https://docs.aws.amazon.com/AWSEC2/latest/APIReference/API_IamInstanceProfile.html">IamInstanceProfile</a> </code> in your launch template, or the node group deployment will fail. For more information about using launch templates with Amazon EKS, see <a href="https://docs.aws.amazon.com/eks/latest/userguide/launch-templates.html">Customizing managed nodes with launch templates</a> in the <i>Amazon EKS User Guide</i>.</p>
310    pub fn get_node_role(&self) -> &::std::option::Option<::std::string::String> {
311        &self.node_role
312    }
313    /// Adds a key-value pair to `labels`.
314    ///
315    /// To override the contents of this collection use [`set_labels`](Self::set_labels).
316    ///
317    /// <p>The Kubernetes <code>labels</code> to apply to the nodes in the node group when they are created.</p>
318    pub fn labels(mut self, k: impl ::std::convert::Into<::std::string::String>, v: impl ::std::convert::Into<::std::string::String>) -> Self {
319        let mut hash_map = self.labels.unwrap_or_default();
320        hash_map.insert(k.into(), v.into());
321        self.labels = ::std::option::Option::Some(hash_map);
322        self
323    }
324    /// <p>The Kubernetes <code>labels</code> to apply to the nodes in the node group when they are created.</p>
325    pub fn set_labels(mut self, input: ::std::option::Option<::std::collections::HashMap<::std::string::String, ::std::string::String>>) -> Self {
326        self.labels = input;
327        self
328    }
329    /// <p>The Kubernetes <code>labels</code> to apply to the nodes in the node group when they are created.</p>
330    pub fn get_labels(&self) -> &::std::option::Option<::std::collections::HashMap<::std::string::String, ::std::string::String>> {
331        &self.labels
332    }
333    /// Appends an item to `taints`.
334    ///
335    /// To override the contents of this collection use [`set_taints`](Self::set_taints).
336    ///
337    /// <p>The Kubernetes taints to be applied to the nodes in the node group. For more information, see <a href="https://docs.aws.amazon.com/eks/latest/userguide/node-taints-managed-node-groups.html">Node taints on managed node groups</a>.</p>
338    pub fn taints(mut self, input: crate::types::Taint) -> Self {
339        let mut v = self.taints.unwrap_or_default();
340        v.push(input);
341        self.taints = ::std::option::Option::Some(v);
342        self
343    }
344    /// <p>The Kubernetes taints to be applied to the nodes in the node group. For more information, see <a href="https://docs.aws.amazon.com/eks/latest/userguide/node-taints-managed-node-groups.html">Node taints on managed node groups</a>.</p>
345    pub fn set_taints(mut self, input: ::std::option::Option<::std::vec::Vec<crate::types::Taint>>) -> Self {
346        self.taints = input;
347        self
348    }
349    /// <p>The Kubernetes taints to be applied to the nodes in the node group. For more information, see <a href="https://docs.aws.amazon.com/eks/latest/userguide/node-taints-managed-node-groups.html">Node taints on managed node groups</a>.</p>
350    pub fn get_taints(&self) -> &::std::option::Option<::std::vec::Vec<crate::types::Taint>> {
351        &self.taints
352    }
353    /// Adds a key-value pair to `tags`.
354    ///
355    /// To override the contents of this collection use [`set_tags`](Self::set_tags).
356    ///
357    /// <p>Metadata that assists with categorization and organization. Each tag consists of a key and an optional value. You define both. Tags don't propagate to any other cluster or Amazon Web Services resources.</p>
358    pub fn tags(mut self, k: impl ::std::convert::Into<::std::string::String>, v: impl ::std::convert::Into<::std::string::String>) -> Self {
359        let mut hash_map = self.tags.unwrap_or_default();
360        hash_map.insert(k.into(), v.into());
361        self.tags = ::std::option::Option::Some(hash_map);
362        self
363    }
364    /// <p>Metadata that assists with categorization and organization. Each tag consists of a key and an optional value. You define both. Tags don't propagate to any other cluster or Amazon Web Services resources.</p>
365    pub fn set_tags(mut self, input: ::std::option::Option<::std::collections::HashMap<::std::string::String, ::std::string::String>>) -> Self {
366        self.tags = input;
367        self
368    }
369    /// <p>Metadata that assists with categorization and organization. Each tag consists of a key and an optional value. You define both. Tags don't propagate to any other cluster or Amazon Web Services resources.</p>
370    pub fn get_tags(&self) -> &::std::option::Option<::std::collections::HashMap<::std::string::String, ::std::string::String>> {
371        &self.tags
372    }
373    /// <p>A unique, case-sensitive identifier that you provide to ensure the idempotency of the request.</p>
374    pub fn client_request_token(mut self, input: impl ::std::convert::Into<::std::string::String>) -> Self {
375        self.client_request_token = ::std::option::Option::Some(input.into());
376        self
377    }
378    /// <p>A unique, case-sensitive identifier that you provide to ensure the idempotency of the request.</p>
379    pub fn set_client_request_token(mut self, input: ::std::option::Option<::std::string::String>) -> Self {
380        self.client_request_token = input;
381        self
382    }
383    /// <p>A unique, case-sensitive identifier that you provide to ensure the idempotency of the request.</p>
384    pub fn get_client_request_token(&self) -> &::std::option::Option<::std::string::String> {
385        &self.client_request_token
386    }
387    /// <p>An object representing a node group's launch template specification. When using this object, don't directly specify <code>instanceTypes</code>, <code>diskSize</code>, or <code>remoteAccess</code>. You cannot later specify a different launch template ID or name than what was used to create the node group.</p>
388    /// <p>Make sure that the launch template meets the requirements in <code>launchTemplateSpecification</code>. Also refer to <a href="https://docs.aws.amazon.com/eks/latest/userguide/launch-templates.html">Customizing managed nodes with launch templates</a> in the <i>Amazon EKS User Guide</i>.</p>
389    pub fn launch_template(mut self, input: crate::types::LaunchTemplateSpecification) -> Self {
390        self.launch_template = ::std::option::Option::Some(input);
391        self
392    }
393    /// <p>An object representing a node group's launch template specification. When using this object, don't directly specify <code>instanceTypes</code>, <code>diskSize</code>, or <code>remoteAccess</code>. You cannot later specify a different launch template ID or name than what was used to create the node group.</p>
394    /// <p>Make sure that the launch template meets the requirements in <code>launchTemplateSpecification</code>. Also refer to <a href="https://docs.aws.amazon.com/eks/latest/userguide/launch-templates.html">Customizing managed nodes with launch templates</a> in the <i>Amazon EKS User Guide</i>.</p>
395    pub fn set_launch_template(mut self, input: ::std::option::Option<crate::types::LaunchTemplateSpecification>) -> Self {
396        self.launch_template = input;
397        self
398    }
399    /// <p>An object representing a node group's launch template specification. When using this object, don't directly specify <code>instanceTypes</code>, <code>diskSize</code>, or <code>remoteAccess</code>. You cannot later specify a different launch template ID or name than what was used to create the node group.</p>
400    /// <p>Make sure that the launch template meets the requirements in <code>launchTemplateSpecification</code>. Also refer to <a href="https://docs.aws.amazon.com/eks/latest/userguide/launch-templates.html">Customizing managed nodes with launch templates</a> in the <i>Amazon EKS User Guide</i>.</p>
401    pub fn get_launch_template(&self) -> &::std::option::Option<crate::types::LaunchTemplateSpecification> {
402        &self.launch_template
403    }
404    /// <p>The node group update configuration.</p>
405    pub fn update_config(mut self, input: crate::types::NodegroupUpdateConfig) -> Self {
406        self.update_config = ::std::option::Option::Some(input);
407        self
408    }
409    /// <p>The node group update configuration.</p>
410    pub fn set_update_config(mut self, input: ::std::option::Option<crate::types::NodegroupUpdateConfig>) -> Self {
411        self.update_config = input;
412        self
413    }
414    /// <p>The node group update configuration.</p>
415    pub fn get_update_config(&self) -> &::std::option::Option<crate::types::NodegroupUpdateConfig> {
416        &self.update_config
417    }
418    /// <p>The node auto repair configuration for the node group.</p>
419    pub fn node_repair_config(mut self, input: crate::types::NodeRepairConfig) -> Self {
420        self.node_repair_config = ::std::option::Option::Some(input);
421        self
422    }
423    /// <p>The node auto repair configuration for the node group.</p>
424    pub fn set_node_repair_config(mut self, input: ::std::option::Option<crate::types::NodeRepairConfig>) -> Self {
425        self.node_repair_config = input;
426        self
427    }
428    /// <p>The node auto repair configuration for the node group.</p>
429    pub fn get_node_repair_config(&self) -> &::std::option::Option<crate::types::NodeRepairConfig> {
430        &self.node_repair_config
431    }
432    /// <p>The capacity type for your node group.</p>
433    pub fn capacity_type(mut self, input: crate::types::CapacityTypes) -> Self {
434        self.capacity_type = ::std::option::Option::Some(input);
435        self
436    }
437    /// <p>The capacity type for your node group.</p>
438    pub fn set_capacity_type(mut self, input: ::std::option::Option<crate::types::CapacityTypes>) -> Self {
439        self.capacity_type = input;
440        self
441    }
442    /// <p>The capacity type for your node group.</p>
443    pub fn get_capacity_type(&self) -> &::std::option::Option<crate::types::CapacityTypes> {
444        &self.capacity_type
445    }
446    /// <p>The Kubernetes version to use for your managed nodes. By default, the Kubernetes version of the cluster is used, and this is the only accepted specified value. If you specify <code>launchTemplate</code>, and your launch template uses a custom AMI, then don't specify <code>version</code>, or the node group deployment will fail. For more information about using launch templates with Amazon EKS, see <a href="https://docs.aws.amazon.com/eks/latest/userguide/launch-templates.html">Customizing managed nodes with launch templates</a> in the <i>Amazon EKS User Guide</i>.</p>
447    pub fn version(mut self, input: impl ::std::convert::Into<::std::string::String>) -> Self {
448        self.version = ::std::option::Option::Some(input.into());
449        self
450    }
451    /// <p>The Kubernetes version to use for your managed nodes. By default, the Kubernetes version of the cluster is used, and this is the only accepted specified value. If you specify <code>launchTemplate</code>, and your launch template uses a custom AMI, then don't specify <code>version</code>, or the node group deployment will fail. For more information about using launch templates with Amazon EKS, see <a href="https://docs.aws.amazon.com/eks/latest/userguide/launch-templates.html">Customizing managed nodes with launch templates</a> in the <i>Amazon EKS User Guide</i>.</p>
452    pub fn set_version(mut self, input: ::std::option::Option<::std::string::String>) -> Self {
453        self.version = input;
454        self
455    }
456    /// <p>The Kubernetes version to use for your managed nodes. By default, the Kubernetes version of the cluster is used, and this is the only accepted specified value. If you specify <code>launchTemplate</code>, and your launch template uses a custom AMI, then don't specify <code>version</code>, or the node group deployment will fail. For more information about using launch templates with Amazon EKS, see <a href="https://docs.aws.amazon.com/eks/latest/userguide/launch-templates.html">Customizing managed nodes with launch templates</a> in the <i>Amazon EKS User Guide</i>.</p>
457    pub fn get_version(&self) -> &::std::option::Option<::std::string::String> {
458        &self.version
459    }
460    /// <p>The AMI version of the Amazon EKS optimized AMI to use with your node group. By default, the latest available AMI version for the node group's current Kubernetes version is used. For information about Linux versions, see <a href="https://docs.aws.amazon.com/eks/latest/userguide/eks-linux-ami-versions.html">Amazon EKS optimized Amazon Linux AMI versions</a> in the <i>Amazon EKS User Guide</i>. Amazon EKS managed node groups support the November 2022 and later releases of the Windows AMIs. For information about Windows versions, see <a href="https://docs.aws.amazon.com/eks/latest/userguide/eks-ami-versions-windows.html">Amazon EKS optimized Windows AMI versions</a> in the <i>Amazon EKS User Guide</i>.</p>
461    /// <p>If you specify <code>launchTemplate</code>, and your launch template uses a custom AMI, then don't specify <code>releaseVersion</code>, or the node group deployment will fail. For more information about using launch templates with Amazon EKS, see <a href="https://docs.aws.amazon.com/eks/latest/userguide/launch-templates.html">Customizing managed nodes with launch templates</a> in the <i>Amazon EKS User Guide</i>.</p>
462    pub fn release_version(mut self, input: impl ::std::convert::Into<::std::string::String>) -> Self {
463        self.release_version = ::std::option::Option::Some(input.into());
464        self
465    }
466    /// <p>The AMI version of the Amazon EKS optimized AMI to use with your node group. By default, the latest available AMI version for the node group's current Kubernetes version is used. For information about Linux versions, see <a href="https://docs.aws.amazon.com/eks/latest/userguide/eks-linux-ami-versions.html">Amazon EKS optimized Amazon Linux AMI versions</a> in the <i>Amazon EKS User Guide</i>. Amazon EKS managed node groups support the November 2022 and later releases of the Windows AMIs. For information about Windows versions, see <a href="https://docs.aws.amazon.com/eks/latest/userguide/eks-ami-versions-windows.html">Amazon EKS optimized Windows AMI versions</a> in the <i>Amazon EKS User Guide</i>.</p>
467    /// <p>If you specify <code>launchTemplate</code>, and your launch template uses a custom AMI, then don't specify <code>releaseVersion</code>, or the node group deployment will fail. For more information about using launch templates with Amazon EKS, see <a href="https://docs.aws.amazon.com/eks/latest/userguide/launch-templates.html">Customizing managed nodes with launch templates</a> in the <i>Amazon EKS User Guide</i>.</p>
468    pub fn set_release_version(mut self, input: ::std::option::Option<::std::string::String>) -> Self {
469        self.release_version = input;
470        self
471    }
472    /// <p>The AMI version of the Amazon EKS optimized AMI to use with your node group. By default, the latest available AMI version for the node group's current Kubernetes version is used. For information about Linux versions, see <a href="https://docs.aws.amazon.com/eks/latest/userguide/eks-linux-ami-versions.html">Amazon EKS optimized Amazon Linux AMI versions</a> in the <i>Amazon EKS User Guide</i>. Amazon EKS managed node groups support the November 2022 and later releases of the Windows AMIs. For information about Windows versions, see <a href="https://docs.aws.amazon.com/eks/latest/userguide/eks-ami-versions-windows.html">Amazon EKS optimized Windows AMI versions</a> in the <i>Amazon EKS User Guide</i>.</p>
473    /// <p>If you specify <code>launchTemplate</code>, and your launch template uses a custom AMI, then don't specify <code>releaseVersion</code>, or the node group deployment will fail. For more information about using launch templates with Amazon EKS, see <a href="https://docs.aws.amazon.com/eks/latest/userguide/launch-templates.html">Customizing managed nodes with launch templates</a> in the <i>Amazon EKS User Guide</i>.</p>
474    pub fn get_release_version(&self) -> &::std::option::Option<::std::string::String> {
475        &self.release_version
476    }
477    /// <p>The warm pool configuration for the node group. Warm pools maintain pre-initialized EC2 instances that can quickly join your cluster during scale-out events, improving application scaling performance and reducing costs.</p>
478    pub fn warm_pool_config(mut self, input: crate::types::WarmPoolConfig) -> Self {
479        self.warm_pool_config = ::std::option::Option::Some(input);
480        self
481    }
482    /// <p>The warm pool configuration for the node group. Warm pools maintain pre-initialized EC2 instances that can quickly join your cluster during scale-out events, improving application scaling performance and reducing costs.</p>
483    pub fn set_warm_pool_config(mut self, input: ::std::option::Option<crate::types::WarmPoolConfig>) -> Self {
484        self.warm_pool_config = input;
485        self
486    }
487    /// <p>The warm pool configuration for the node group. Warm pools maintain pre-initialized EC2 instances that can quickly join your cluster during scale-out events, improving application scaling performance and reducing costs.</p>
488    pub fn get_warm_pool_config(&self) -> &::std::option::Option<crate::types::WarmPoolConfig> {
489        &self.warm_pool_config
490    }
491    /// Consumes the builder and constructs a [`CreateNodegroupInput`](crate::operation::create_nodegroup::CreateNodegroupInput).
492    pub fn build(
493        self,
494    ) -> ::std::result::Result<crate::operation::create_nodegroup::CreateNodegroupInput, ::aws_smithy_types::error::operation::BuildError> {
495        ::std::result::Result::Ok(crate::operation::create_nodegroup::CreateNodegroupInput {
496            cluster_name: self.cluster_name,
497            nodegroup_name: self.nodegroup_name,
498            scaling_config: self.scaling_config,
499            disk_size: self.disk_size,
500            subnets: self.subnets,
501            instance_types: self.instance_types,
502            ami_type: self.ami_type,
503            remote_access: self.remote_access,
504            node_role: self.node_role,
505            labels: self.labels,
506            taints: self.taints,
507            tags: self.tags,
508            client_request_token: self.client_request_token,
509            launch_template: self.launch_template,
510            update_config: self.update_config,
511            node_repair_config: self.node_repair_config,
512            capacity_type: self.capacity_type,
513            version: self.version,
514            release_version: self.release_version,
515            warm_pool_config: self.warm_pool_config,
516        })
517    }
518}