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>. 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>
33    pub launch_template: ::std::option::Option<crate::types::LaunchTemplateSpecification>,
34    /// <p>The node group update configuration.</p>
35    pub update_config: ::std::option::Option<crate::types::NodegroupUpdateConfig>,
36    /// <p>The node auto repair configuration for the node group.</p>
37    pub node_repair_config: ::std::option::Option<crate::types::NodeRepairConfig>,
38    /// <p>The capacity type for your node group.</p>
39    pub capacity_type: ::std::option::Option<crate::types::CapacityTypes>,
40    /// <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>
41    pub version: ::std::option::Option<::std::string::String>,
42    /// <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>
43    /// <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>
44    pub release_version: ::std::option::Option<::std::string::String>,
45}
46impl CreateNodegroupInput {
47    /// <p>The name of your cluster.</p>
48    pub fn cluster_name(&self) -> ::std::option::Option<&str> {
49        self.cluster_name.as_deref()
50    }
51    /// <p>The unique name to give your node group.</p>
52    pub fn nodegroup_name(&self) -> ::std::option::Option<&str> {
53        self.nodegroup_name.as_deref()
54    }
55    /// <p>The scaling configuration details for the Auto Scaling group that is created for your node group.</p>
56    pub fn scaling_config(&self) -> ::std::option::Option<&crate::types::NodegroupScalingConfig> {
57        self.scaling_config.as_ref()
58    }
59    /// <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>
60    pub fn disk_size(&self) -> ::std::option::Option<i32> {
61        self.disk_size
62    }
63    /// <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>
64    ///
65    /// 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()`.
66    pub fn subnets(&self) -> &[::std::string::String] {
67        self.subnets.as_deref().unwrap_or_default()
68    }
69    /// <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>
70    ///
71    /// 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()`.
72    pub fn instance_types(&self) -> &[::std::string::String] {
73        self.instance_types.as_deref().unwrap_or_default()
74    }
75    /// <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>
76    pub fn ami_type(&self) -> ::std::option::Option<&crate::types::AmiTypes> {
77        self.ami_type.as_ref()
78    }
79    /// <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>
80    pub fn remote_access(&self) -> ::std::option::Option<&crate::types::RemoteAccessConfig> {
81        self.remote_access.as_ref()
82    }
83    /// <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>
84    pub fn node_role(&self) -> ::std::option::Option<&str> {
85        self.node_role.as_deref()
86    }
87    /// <p>The Kubernetes <code>labels</code> to apply to the nodes in the node group when they are created.</p>
88    pub fn labels(&self) -> ::std::option::Option<&::std::collections::HashMap<::std::string::String, ::std::string::String>> {
89        self.labels.as_ref()
90    }
91    /// <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>
92    ///
93    /// 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()`.
94    pub fn taints(&self) -> &[crate::types::Taint] {
95        self.taints.as_deref().unwrap_or_default()
96    }
97    /// <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>
98    pub fn tags(&self) -> ::std::option::Option<&::std::collections::HashMap<::std::string::String, ::std::string::String>> {
99        self.tags.as_ref()
100    }
101    /// <p>A unique, case-sensitive identifier that you provide to ensure the idempotency of the request.</p>
102    pub fn client_request_token(&self) -> ::std::option::Option<&str> {
103        self.client_request_token.as_deref()
104    }
105    /// <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>. 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>
106    pub fn launch_template(&self) -> ::std::option::Option<&crate::types::LaunchTemplateSpecification> {
107        self.launch_template.as_ref()
108    }
109    /// <p>The node group update configuration.</p>
110    pub fn update_config(&self) -> ::std::option::Option<&crate::types::NodegroupUpdateConfig> {
111        self.update_config.as_ref()
112    }
113    /// <p>The node auto repair configuration for the node group.</p>
114    pub fn node_repair_config(&self) -> ::std::option::Option<&crate::types::NodeRepairConfig> {
115        self.node_repair_config.as_ref()
116    }
117    /// <p>The capacity type for your node group.</p>
118    pub fn capacity_type(&self) -> ::std::option::Option<&crate::types::CapacityTypes> {
119        self.capacity_type.as_ref()
120    }
121    /// <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>
122    pub fn version(&self) -> ::std::option::Option<&str> {
123        self.version.as_deref()
124    }
125    /// <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>
126    /// <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>
127    pub fn release_version(&self) -> ::std::option::Option<&str> {
128        self.release_version.as_deref()
129    }
130}
131impl CreateNodegroupInput {
132    /// Creates a new builder-style object to manufacture [`CreateNodegroupInput`](crate::operation::create_nodegroup::CreateNodegroupInput).
133    pub fn builder() -> crate::operation::create_nodegroup::builders::CreateNodegroupInputBuilder {
134        crate::operation::create_nodegroup::builders::CreateNodegroupInputBuilder::default()
135    }
136}
137
138/// A builder for [`CreateNodegroupInput`](crate::operation::create_nodegroup::CreateNodegroupInput).
139#[derive(::std::clone::Clone, ::std::cmp::PartialEq, ::std::default::Default, ::std::fmt::Debug)]
140#[non_exhaustive]
141pub struct CreateNodegroupInputBuilder {
142    pub(crate) cluster_name: ::std::option::Option<::std::string::String>,
143    pub(crate) nodegroup_name: ::std::option::Option<::std::string::String>,
144    pub(crate) scaling_config: ::std::option::Option<crate::types::NodegroupScalingConfig>,
145    pub(crate) disk_size: ::std::option::Option<i32>,
146    pub(crate) subnets: ::std::option::Option<::std::vec::Vec<::std::string::String>>,
147    pub(crate) instance_types: ::std::option::Option<::std::vec::Vec<::std::string::String>>,
148    pub(crate) ami_type: ::std::option::Option<crate::types::AmiTypes>,
149    pub(crate) remote_access: ::std::option::Option<crate::types::RemoteAccessConfig>,
150    pub(crate) node_role: ::std::option::Option<::std::string::String>,
151    pub(crate) labels: ::std::option::Option<::std::collections::HashMap<::std::string::String, ::std::string::String>>,
152    pub(crate) taints: ::std::option::Option<::std::vec::Vec<crate::types::Taint>>,
153    pub(crate) tags: ::std::option::Option<::std::collections::HashMap<::std::string::String, ::std::string::String>>,
154    pub(crate) client_request_token: ::std::option::Option<::std::string::String>,
155    pub(crate) launch_template: ::std::option::Option<crate::types::LaunchTemplateSpecification>,
156    pub(crate) update_config: ::std::option::Option<crate::types::NodegroupUpdateConfig>,
157    pub(crate) node_repair_config: ::std::option::Option<crate::types::NodeRepairConfig>,
158    pub(crate) capacity_type: ::std::option::Option<crate::types::CapacityTypes>,
159    pub(crate) version: ::std::option::Option<::std::string::String>,
160    pub(crate) release_version: ::std::option::Option<::std::string::String>,
161}
162impl CreateNodegroupInputBuilder {
163    /// <p>The name of your cluster.</p>
164    /// This field is required.
165    pub fn cluster_name(mut self, input: impl ::std::convert::Into<::std::string::String>) -> Self {
166        self.cluster_name = ::std::option::Option::Some(input.into());
167        self
168    }
169    /// <p>The name of your cluster.</p>
170    pub fn set_cluster_name(mut self, input: ::std::option::Option<::std::string::String>) -> Self {
171        self.cluster_name = input;
172        self
173    }
174    /// <p>The name of your cluster.</p>
175    pub fn get_cluster_name(&self) -> &::std::option::Option<::std::string::String> {
176        &self.cluster_name
177    }
178    /// <p>The unique name to give your node group.</p>
179    /// This field is required.
180    pub fn nodegroup_name(mut self, input: impl ::std::convert::Into<::std::string::String>) -> Self {
181        self.nodegroup_name = ::std::option::Option::Some(input.into());
182        self
183    }
184    /// <p>The unique name to give your node group.</p>
185    pub fn set_nodegroup_name(mut self, input: ::std::option::Option<::std::string::String>) -> Self {
186        self.nodegroup_name = input;
187        self
188    }
189    /// <p>The unique name to give your node group.</p>
190    pub fn get_nodegroup_name(&self) -> &::std::option::Option<::std::string::String> {
191        &self.nodegroup_name
192    }
193    /// <p>The scaling configuration details for the Auto Scaling group that is created for your node group.</p>
194    pub fn scaling_config(mut self, input: crate::types::NodegroupScalingConfig) -> Self {
195        self.scaling_config = ::std::option::Option::Some(input);
196        self
197    }
198    /// <p>The scaling configuration details for the Auto Scaling group that is created for your node group.</p>
199    pub fn set_scaling_config(mut self, input: ::std::option::Option<crate::types::NodegroupScalingConfig>) -> Self {
200        self.scaling_config = input;
201        self
202    }
203    /// <p>The scaling configuration details for the Auto Scaling group that is created for your node group.</p>
204    pub fn get_scaling_config(&self) -> &::std::option::Option<crate::types::NodegroupScalingConfig> {
205        &self.scaling_config
206    }
207    /// <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>
208    pub fn disk_size(mut self, input: i32) -> Self {
209        self.disk_size = ::std::option::Option::Some(input);
210        self
211    }
212    /// <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>
213    pub fn set_disk_size(mut self, input: ::std::option::Option<i32>) -> Self {
214        self.disk_size = input;
215        self
216    }
217    /// <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>
218    pub fn get_disk_size(&self) -> &::std::option::Option<i32> {
219        &self.disk_size
220    }
221    /// Appends an item to `subnets`.
222    ///
223    /// To override the contents of this collection use [`set_subnets`](Self::set_subnets).
224    ///
225    /// <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>
226    pub fn subnets(mut self, input: impl ::std::convert::Into<::std::string::String>) -> Self {
227        let mut v = self.subnets.unwrap_or_default();
228        v.push(input.into());
229        self.subnets = ::std::option::Option::Some(v);
230        self
231    }
232    /// <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>
233    pub fn set_subnets(mut self, input: ::std::option::Option<::std::vec::Vec<::std::string::String>>) -> Self {
234        self.subnets = input;
235        self
236    }
237    /// <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>
238    pub fn get_subnets(&self) -> &::std::option::Option<::std::vec::Vec<::std::string::String>> {
239        &self.subnets
240    }
241    /// Appends an item to `instance_types`.
242    ///
243    /// To override the contents of this collection use [`set_instance_types`](Self::set_instance_types).
244    ///
245    /// <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>
246    pub fn instance_types(mut self, input: impl ::std::convert::Into<::std::string::String>) -> Self {
247        let mut v = self.instance_types.unwrap_or_default();
248        v.push(input.into());
249        self.instance_types = ::std::option::Option::Some(v);
250        self
251    }
252    /// <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>
253    pub fn set_instance_types(mut self, input: ::std::option::Option<::std::vec::Vec<::std::string::String>>) -> Self {
254        self.instance_types = input;
255        self
256    }
257    /// <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>
258    pub fn get_instance_types(&self) -> &::std::option::Option<::std::vec::Vec<::std::string::String>> {
259        &self.instance_types
260    }
261    /// <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>
262    pub fn ami_type(mut self, input: crate::types::AmiTypes) -> Self {
263        self.ami_type = ::std::option::Option::Some(input);
264        self
265    }
266    /// <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>
267    pub fn set_ami_type(mut self, input: ::std::option::Option<crate::types::AmiTypes>) -> Self {
268        self.ami_type = input;
269        self
270    }
271    /// <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>
272    pub fn get_ami_type(&self) -> &::std::option::Option<crate::types::AmiTypes> {
273        &self.ami_type
274    }
275    /// <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>
276    pub fn remote_access(mut self, input: crate::types::RemoteAccessConfig) -> Self {
277        self.remote_access = ::std::option::Option::Some(input);
278        self
279    }
280    /// <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>
281    pub fn set_remote_access(mut self, input: ::std::option::Option<crate::types::RemoteAccessConfig>) -> Self {
282        self.remote_access = input;
283        self
284    }
285    /// <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>
286    pub fn get_remote_access(&self) -> &::std::option::Option<crate::types::RemoteAccessConfig> {
287        &self.remote_access
288    }
289    /// <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>
290    /// This field is required.
291    pub fn node_role(mut self, input: impl ::std::convert::Into<::std::string::String>) -> Self {
292        self.node_role = ::std::option::Option::Some(input.into());
293        self
294    }
295    /// <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>
296    pub fn set_node_role(mut self, input: ::std::option::Option<::std::string::String>) -> Self {
297        self.node_role = input;
298        self
299    }
300    /// <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>
301    pub fn get_node_role(&self) -> &::std::option::Option<::std::string::String> {
302        &self.node_role
303    }
304    /// Adds a key-value pair to `labels`.
305    ///
306    /// To override the contents of this collection use [`set_labels`](Self::set_labels).
307    ///
308    /// <p>The Kubernetes <code>labels</code> to apply to the nodes in the node group when they are created.</p>
309    pub fn labels(mut self, k: impl ::std::convert::Into<::std::string::String>, v: impl ::std::convert::Into<::std::string::String>) -> Self {
310        let mut hash_map = self.labels.unwrap_or_default();
311        hash_map.insert(k.into(), v.into());
312        self.labels = ::std::option::Option::Some(hash_map);
313        self
314    }
315    /// <p>The Kubernetes <code>labels</code> to apply to the nodes in the node group when they are created.</p>
316    pub fn set_labels(mut self, input: ::std::option::Option<::std::collections::HashMap<::std::string::String, ::std::string::String>>) -> Self {
317        self.labels = input;
318        self
319    }
320    /// <p>The Kubernetes <code>labels</code> to apply to the nodes in the node group when they are created.</p>
321    pub fn get_labels(&self) -> &::std::option::Option<::std::collections::HashMap<::std::string::String, ::std::string::String>> {
322        &self.labels
323    }
324    /// Appends an item to `taints`.
325    ///
326    /// To override the contents of this collection use [`set_taints`](Self::set_taints).
327    ///
328    /// <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>
329    pub fn taints(mut self, input: crate::types::Taint) -> Self {
330        let mut v = self.taints.unwrap_or_default();
331        v.push(input);
332        self.taints = ::std::option::Option::Some(v);
333        self
334    }
335    /// <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>
336    pub fn set_taints(mut self, input: ::std::option::Option<::std::vec::Vec<crate::types::Taint>>) -> Self {
337        self.taints = input;
338        self
339    }
340    /// <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>
341    pub fn get_taints(&self) -> &::std::option::Option<::std::vec::Vec<crate::types::Taint>> {
342        &self.taints
343    }
344    /// Adds a key-value pair to `tags`.
345    ///
346    /// To override the contents of this collection use [`set_tags`](Self::set_tags).
347    ///
348    /// <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>
349    pub fn tags(mut self, k: impl ::std::convert::Into<::std::string::String>, v: impl ::std::convert::Into<::std::string::String>) -> Self {
350        let mut hash_map = self.tags.unwrap_or_default();
351        hash_map.insert(k.into(), v.into());
352        self.tags = ::std::option::Option::Some(hash_map);
353        self
354    }
355    /// <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>
356    pub fn set_tags(mut self, input: ::std::option::Option<::std::collections::HashMap<::std::string::String, ::std::string::String>>) -> Self {
357        self.tags = input;
358        self
359    }
360    /// <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>
361    pub fn get_tags(&self) -> &::std::option::Option<::std::collections::HashMap<::std::string::String, ::std::string::String>> {
362        &self.tags
363    }
364    /// <p>A unique, case-sensitive identifier that you provide to ensure the idempotency of the request.</p>
365    pub fn client_request_token(mut self, input: impl ::std::convert::Into<::std::string::String>) -> Self {
366        self.client_request_token = ::std::option::Option::Some(input.into());
367        self
368    }
369    /// <p>A unique, case-sensitive identifier that you provide to ensure the idempotency of the request.</p>
370    pub fn set_client_request_token(mut self, input: ::std::option::Option<::std::string::String>) -> Self {
371        self.client_request_token = input;
372        self
373    }
374    /// <p>A unique, case-sensitive identifier that you provide to ensure the idempotency of the request.</p>
375    pub fn get_client_request_token(&self) -> &::std::option::Option<::std::string::String> {
376        &self.client_request_token
377    }
378    /// <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>. 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>
379    pub fn launch_template(mut self, input: crate::types::LaunchTemplateSpecification) -> Self {
380        self.launch_template = ::std::option::Option::Some(input);
381        self
382    }
383    /// <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>. 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>
384    pub fn set_launch_template(mut self, input: ::std::option::Option<crate::types::LaunchTemplateSpecification>) -> Self {
385        self.launch_template = input;
386        self
387    }
388    /// <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>. 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 get_launch_template(&self) -> &::std::option::Option<crate::types::LaunchTemplateSpecification> {
390        &self.launch_template
391    }
392    /// <p>The node group update configuration.</p>
393    pub fn update_config(mut self, input: crate::types::NodegroupUpdateConfig) -> Self {
394        self.update_config = ::std::option::Option::Some(input);
395        self
396    }
397    /// <p>The node group update configuration.</p>
398    pub fn set_update_config(mut self, input: ::std::option::Option<crate::types::NodegroupUpdateConfig>) -> Self {
399        self.update_config = input;
400        self
401    }
402    /// <p>The node group update configuration.</p>
403    pub fn get_update_config(&self) -> &::std::option::Option<crate::types::NodegroupUpdateConfig> {
404        &self.update_config
405    }
406    /// <p>The node auto repair configuration for the node group.</p>
407    pub fn node_repair_config(mut self, input: crate::types::NodeRepairConfig) -> Self {
408        self.node_repair_config = ::std::option::Option::Some(input);
409        self
410    }
411    /// <p>The node auto repair configuration for the node group.</p>
412    pub fn set_node_repair_config(mut self, input: ::std::option::Option<crate::types::NodeRepairConfig>) -> Self {
413        self.node_repair_config = input;
414        self
415    }
416    /// <p>The node auto repair configuration for the node group.</p>
417    pub fn get_node_repair_config(&self) -> &::std::option::Option<crate::types::NodeRepairConfig> {
418        &self.node_repair_config
419    }
420    /// <p>The capacity type for your node group.</p>
421    pub fn capacity_type(mut self, input: crate::types::CapacityTypes) -> Self {
422        self.capacity_type = ::std::option::Option::Some(input);
423        self
424    }
425    /// <p>The capacity type for your node group.</p>
426    pub fn set_capacity_type(mut self, input: ::std::option::Option<crate::types::CapacityTypes>) -> Self {
427        self.capacity_type = input;
428        self
429    }
430    /// <p>The capacity type for your node group.</p>
431    pub fn get_capacity_type(&self) -> &::std::option::Option<crate::types::CapacityTypes> {
432        &self.capacity_type
433    }
434    /// <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>
435    pub fn version(mut self, input: impl ::std::convert::Into<::std::string::String>) -> Self {
436        self.version = ::std::option::Option::Some(input.into());
437        self
438    }
439    /// <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>
440    pub fn set_version(mut self, input: ::std::option::Option<::std::string::String>) -> Self {
441        self.version = input;
442        self
443    }
444    /// <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>
445    pub fn get_version(&self) -> &::std::option::Option<::std::string::String> {
446        &self.version
447    }
448    /// <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>
449    /// <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>
450    pub fn release_version(mut self, input: impl ::std::convert::Into<::std::string::String>) -> Self {
451        self.release_version = ::std::option::Option::Some(input.into());
452        self
453    }
454    /// <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>
455    /// <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>
456    pub fn set_release_version(mut self, input: ::std::option::Option<::std::string::String>) -> Self {
457        self.release_version = input;
458        self
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 get_release_version(&self) -> &::std::option::Option<::std::string::String> {
463        &self.release_version
464    }
465    /// Consumes the builder and constructs a [`CreateNodegroupInput`](crate::operation::create_nodegroup::CreateNodegroupInput).
466    pub fn build(
467        self,
468    ) -> ::std::result::Result<crate::operation::create_nodegroup::CreateNodegroupInput, ::aws_smithy_types::error::operation::BuildError> {
469        ::std::result::Result::Ok(crate::operation::create_nodegroup::CreateNodegroupInput {
470            cluster_name: self.cluster_name,
471            nodegroup_name: self.nodegroup_name,
472            scaling_config: self.scaling_config,
473            disk_size: self.disk_size,
474            subnets: self.subnets,
475            instance_types: self.instance_types,
476            ami_type: self.ami_type,
477            remote_access: self.remote_access,
478            node_role: self.node_role,
479            labels: self.labels,
480            taints: self.taints,
481            tags: self.tags,
482            client_request_token: self.client_request_token,
483            launch_template: self.launch_template,
484            update_config: self.update_config,
485            node_repair_config: self.node_repair_config,
486            capacity_type: self.capacity_type,
487            version: self.version,
488            release_version: self.release_version,
489        })
490    }
491}