Skip to main content

aws_sdk_glue/operation/create_job/
_create_job_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)]
5pub struct CreateJobInput {
6    /// <p>The name you assign to this job definition. It must be unique in your account.</p>
7    pub name: ::std::option::Option<::std::string::String>,
8    /// <p>A mode that describes how a job was created. Valid values are:</p>
9    /// <ul>
10    /// <li>
11    /// <p><code>SCRIPT</code> - The job was created using the Glue Studio script editor.</p></li>
12    /// <li>
13    /// <p><code>VISUAL</code> - The job was created using the Glue Studio visual editor.</p></li>
14    /// <li>
15    /// <p><code>NOTEBOOK</code> - The job was created using an interactive sessions notebook.</p></li>
16    /// </ul>
17    /// <p>When the <code>JobMode</code> field is missing or null, <code>SCRIPT</code> is assigned as the default value.</p>
18    pub job_mode: ::std::option::Option<crate::types::JobMode>,
19    /// <p>Specifies whether job run queuing is enabled for the job runs for this job.</p>
20    /// <p>A value of true means job run queuing is enabled for the job runs. If false or not populated, the job runs will not be considered for queueing.</p>
21    /// <p>If this field does not match the value set in the job run, then the value from the job run field will be used.</p>
22    pub job_run_queuing_enabled: ::std::option::Option<bool>,
23    /// <p>Description of the job being defined.</p>
24    pub description: ::std::option::Option<::std::string::String>,
25    /// <p>This field is reserved for future use.</p>
26    pub log_uri: ::std::option::Option<::std::string::String>,
27    /// <p>The name or Amazon Resource Name (ARN) of the IAM role associated with this job.</p>
28    pub role: ::std::option::Option<::std::string::String>,
29    /// <p>An <code>ExecutionProperty</code> specifying the maximum number of concurrent runs allowed for this job.</p>
30    pub execution_property: ::std::option::Option<crate::types::ExecutionProperty>,
31    /// <p>The <code>JobCommand</code> that runs this job.</p>
32    pub command: ::std::option::Option<crate::types::JobCommand>,
33    /// <p>The default arguments for every run of this job, specified as name-value pairs.</p>
34    /// <p>You can specify arguments here that your own job-execution script consumes, as well as arguments that Glue itself consumes.</p>
35    /// <p>Job arguments may be logged. Do not pass plaintext secrets as arguments. Retrieve secrets from a Glue Connection, Secrets Manager or other secret management mechanism if you intend to keep them within the Job.</p>
36    /// <p>For information about how to specify and consume your own Job arguments, see the <a href="https://docs.aws.amazon.com/glue/latest/dg/aws-glue-programming-python-calling.html">Calling Glue APIs in Python</a> topic in the developer guide.</p>
37    /// <p>For information about the arguments you can provide to this field when configuring Spark jobs, see the <a href="https://docs.aws.amazon.com/glue/latest/dg/aws-glue-programming-etl-glue-arguments.html">Special Parameters Used by Glue</a> topic in the developer guide.</p>
38    /// <p>For information about the arguments you can provide to this field when configuring Ray jobs, see <a href="https://docs.aws.amazon.com/glue/latest/dg/author-job-ray-job-parameters.html">Using job parameters in Ray jobs</a> in the developer guide.</p>
39    pub default_arguments: ::std::option::Option<::std::collections::HashMap<::std::string::String, ::std::string::String>>,
40    /// <p>Arguments for this job that are not overridden when providing job arguments in a job run, specified as name-value pairs.</p>
41    pub non_overridable_arguments: ::std::option::Option<::std::collections::HashMap<::std::string::String, ::std::string::String>>,
42    /// <p>The connections used for this job.</p>
43    pub connections: ::std::option::Option<crate::types::ConnectionsList>,
44    /// <p>The maximum number of times to retry this job if it fails.</p>
45    pub max_retries: ::std::option::Option<i32>,
46    /// <p>This parameter is deprecated. Use <code>MaxCapacity</code> instead.</p>
47    /// <p>The number of Glue data processing units (DPUs) to allocate to this Job. You can allocate a minimum of 2 DPUs; the default is 10. A DPU is a relative measure of processing power that consists of 4 vCPUs of compute capacity and 16 GB of memory. For more information, see the <a href="https://aws.amazon.com/glue/pricing/">Glue pricing page</a>.</p>
48    #[deprecated(note = "This property is deprecated, use MaxCapacity instead.")]
49    pub allocated_capacity: ::std::option::Option<i32>,
50    /// <p>The job timeout in minutes. This is the maximum time that a job run can consume resources before it is terminated and enters <code>TIMEOUT</code> status.</p>
51    /// <p>Jobs must have timeout values less than 7 days or 10080 minutes. Otherwise, the jobs will throw an exception.</p>
52    /// <p>When the value is left blank, the timeout is defaulted to 2,880 minutes for Glue version 4.0 and earlier, or 480 minutes for Glue version 5.0 and later.</p>
53    /// <p>Any existing Glue jobs that had a timeout value greater than 7 days will be defaulted to 7 days. For instance if you have specified a timeout of 20 days for a batch job, it will be stopped on the 7th day.</p>
54    /// <p>For streaming jobs, if you have set up a maintenance window, it will be restarted during the maintenance window after 7 days.</p>
55    pub timeout: ::std::option::Option<i32>,
56    /// <p>For Glue version 1.0 or earlier jobs, using the standard worker type, the number of Glue data processing units (DPUs) that can be allocated when this job runs. A DPU is a relative measure of processing power that consists of 4 vCPUs of compute capacity and 16 GB of memory. For more information, see the <a href="https://aws.amazon.com/glue/pricing/"> Glue pricing page</a>.</p>
57    /// <p>For Glue version 2.0+ jobs, you cannot specify a <code>Maximum capacity</code>. Instead, you should specify a <code>Worker type</code> and the <code>Number of workers</code>.</p>
58    /// <p>Do not set <code>MaxCapacity</code> if using <code>WorkerType</code> and <code>NumberOfWorkers</code>.</p>
59    /// <p>The value that can be allocated for <code>MaxCapacity</code> depends on whether you are running a Python shell job, an Apache Spark ETL job, or an Apache Spark streaming ETL job:</p>
60    /// <ul>
61    /// <li>
62    /// <p>When you specify a Python shell job (<code>JobCommand.Name</code>="pythonshell"), you can allocate either 0.0625 or 1 DPU. The default is 0.0625 DPU.</p></li>
63    /// <li>
64    /// <p>When you specify an Apache Spark ETL job (<code>JobCommand.Name</code>="glueetl") or Apache Spark streaming ETL job (<code>JobCommand.Name</code>="gluestreaming"), you can allocate from 2 to 100 DPUs. The default is 10 DPUs. This job type cannot have a fractional DPU allocation.</p></li>
65    /// </ul>
66    pub max_capacity: ::std::option::Option<f64>,
67    /// <p>The name of the <code>SecurityConfiguration</code> structure to be used with this job.</p>
68    pub security_configuration: ::std::option::Option<::std::string::String>,
69    /// <p>The tags to use with this job. You may use tags to limit access to the job. For more information about tags in Glue, see <a href="https://docs.aws.amazon.com/glue/latest/dg/monitor-tags.html">Amazon Web Services Tags in Glue</a> in the developer guide.</p>
70    pub tags: ::std::option::Option<::std::collections::HashMap<::std::string::String, ::std::string::String>>,
71    /// <p>Specifies configuration properties of a job notification.</p>
72    pub notification_property: ::std::option::Option<crate::types::NotificationProperty>,
73    /// <p>In Spark jobs, <code>GlueVersion</code> determines the versions of Apache Spark and Python that Glue available in a job. The Python version indicates the version supported for jobs of type Spark.</p>
74    /// <p>Ray jobs should set <code>GlueVersion</code> to <code>4.0</code> or greater. However, the versions of Ray, Python and additional libraries available in your Ray job are determined by the <code>Runtime</code> parameter of the Job command.</p>
75    /// <p>For more information about the available Glue versions and corresponding Spark and Python versions, see <a href="https://docs.aws.amazon.com/glue/latest/dg/add-job.html">Glue version</a> in the developer guide.</p>
76    /// <p>Jobs that are created without specifying a Glue version default to Glue 5.1.</p>
77    pub glue_version: ::std::option::Option<::std::string::String>,
78    /// <p>The number of workers of a defined <code>workerType</code> that are allocated when a job runs.</p>
79    pub number_of_workers: ::std::option::Option<i32>,
80    /// <p>The type of predefined worker that is allocated when a job runs. Accepts a value of G.025X, G.1X, G.2X, G.4X, G.8X, G.12X, G.16X, R.1X, R.2X, R.4X, or R.8X for Spark jobs. Accepts the value Z.2X for Ray jobs.</p>
81    /// <ul>
82    /// <li>
83    /// <p>For the <code>G.025X</code> worker type, each worker maps to 0.25 DPU (2 vCPUs, 4 GB of memory) with 84GB disk, and provides 1 executor per worker. We recommend this worker type for low volume streaming jobs. This worker type is only available for Glue version 3.0 or later streaming jobs.</p></li>
84    /// <li>
85    /// <p>For the <code>G.1X</code> worker type, each worker maps to 1 DPU (4 vCPUs, 16 GB of memory) with 94GB disk, and provides 1 executor per worker. We recommend this worker type for workloads such as data transforms, joins, and queries, to offers a scalable and cost effective way to run most jobs.</p></li>
86    /// <li>
87    /// <p>For the <code>G.2X</code> worker type, each worker maps to 2 DPU (8 vCPUs, 32 GB of memory) with 138GB disk, and provides 1 executor per worker. We recommend this worker type for workloads such as data transforms, joins, and queries, to offers a scalable and cost effective way to run most jobs.</p></li>
88    /// <li>
89    /// <p>For the <code>G.4X</code> worker type, each worker maps to 4 DPU (16 vCPUs, 64 GB of memory) with 256GB disk, and provides 1 executor per worker. We recommend this worker type for jobs whose workloads contain your most demanding transforms, aggregations, joins, and queries. This worker type is available only for Glue version 3.0 or later Spark ETL jobs in select Amazon Web Services Regions. For the supported Regions, see <a href="https://docs.aws.amazon.com/glue/latest/dg/add-job.html">Configuring job properties for Spark jobs</a> in the developer guide.</p></li>
90    /// <li>
91    /// <p>For the <code>G.8X</code> worker type, each worker maps to 8 DPU (32 vCPUs, 128 GB of memory) with 512GB disk, and provides 1 executor per worker. We recommend this worker type for jobs whose workloads contain your most demanding transforms, aggregations, joins, and queries. This worker type is available only for Glue version 3.0 or later Spark ETL jobs in select Amazon Web Services Regions. For the supported Regions, see <a href="https://docs.aws.amazon.com/glue/latest/dg/add-job.html">Configuring job properties for Spark jobs</a> in the developer guide.</p></li>
92    /// <li>
93    /// <p>For the <code>G.12X</code> worker type, each worker maps to 12 DPU (48 vCPUs, 192 GB of memory) with 768GB disk, and provides 1 executor per worker. We recommend this worker type for jobs with very large workloads. This worker type is available only for Glue version 4.0 or later Spark ETL jobs in select Amazon Web Services Regions. For the supported Regions, see <a href="https://docs.aws.amazon.com/glue/latest/dg/add-job.html">Configuring job properties for Spark jobs</a> in the developer guide.</p></li>
94    /// <li>
95    /// <p>For the <code>G.16X</code> worker type, each worker maps to 16 DPU (64 vCPUs, 256 GB of memory) with 1024GB disk, and provides 1 executor per worker. We recommend this worker type for jobs with very large workloads. This worker type is available only for Glue version 4.0 or later Spark ETL jobs in select Amazon Web Services Regions. For the supported Regions, see <a href="https://docs.aws.amazon.com/glue/latest/dg/add-job.html">Configuring job properties for Spark jobs</a> in the developer guide.</p></li>
96    /// <li>
97    /// <p>For the <code>R.1X</code> worker type, each worker maps to 1 M-DPU (4 vCPUs, 32 GB of memory) with 94GB disk, and provides 1 executor per worker. We recommend this worker type for memory-intensive workloads. This worker type is available only for Glue version 4.0 or later Spark ETL jobs in select Amazon Web Services Regions. For the supported Regions, see <a href="https://docs.aws.amazon.com/glue/latest/dg/add-job.html">Configuring job properties for Spark jobs</a> in the developer guide.</p></li>
98    /// <li>
99    /// <p>For the <code>R.2X</code> worker type, each worker maps to 2 M-DPU (8 vCPUs, 64 GB of memory) with 138GB disk, and provides 1 executor per worker. We recommend this worker type for memory-intensive workloads. This worker type is available only for Glue version 4.0 or later Spark ETL jobs in select Amazon Web Services Regions. For the supported Regions, see <a href="https://docs.aws.amazon.com/glue/latest/dg/add-job.html">Configuring job properties for Spark jobs</a> in the developer guide.</p></li>
100    /// <li>
101    /// <p>For the <code>R.4X</code> worker type, each worker maps to 4 M-DPU (16 vCPUs, 128 GB of memory) with 256GB disk, and provides 1 executor per worker. We recommend this worker type for memory-intensive workloads. This worker type is available only for Glue version 4.0 or later Spark ETL jobs in select Amazon Web Services Regions. For the supported Regions, see <a href="https://docs.aws.amazon.com/glue/latest/dg/add-job.html">Configuring job properties for Spark jobs</a> in the developer guide.</p></li>
102    /// <li>
103    /// <p>For the <code>R.8X</code> worker type, each worker maps to 8 M-DPU (32 vCPUs, 256 GB of memory) with 512GB disk, and provides 1 executor per worker. We recommend this worker type for memory-intensive workloads. This worker type is available only for Glue version 4.0 or later Spark ETL jobs in select Amazon Web Services Regions. For the supported Regions, see <a href="https://docs.aws.amazon.com/glue/latest/dg/add-job.html">Configuring job properties for Spark jobs</a> in the developer guide.</p></li>
104    /// <li>
105    /// <p>For the <code>Z.2X</code> worker type, each worker maps to 2 M-DPU (8vCPUs, 64 GB of memory) with 128 GB disk, and provides up to 8 Ray workers based on the autoscaler.</p></li>
106    /// </ul>
107    pub worker_type: ::std::option::Option<crate::types::WorkerType>,
108    /// <p>The representation of a directed acyclic graph on which both the Glue Studio visual component and Glue Studio code generation is based.</p>
109    pub code_gen_configuration_nodes:
110        ::std::option::Option<::std::collections::HashMap<::std::string::String, crate::types::CodeGenConfigurationNode>>,
111    /// <p>Indicates whether the job is run with a standard or flexible execution class. The standard execution-class is ideal for time-sensitive workloads that require fast job startup and dedicated resources.</p>
112    /// <p>The flexible execution class is appropriate for time-insensitive jobs whose start and completion times may vary.</p>
113    /// <p>Only jobs with Glue version 3.0 and above and command type <code>glueetl</code> will be allowed to set <code>ExecutionClass</code> to <code>FLEX</code>. The flexible execution class is available for Spark jobs.</p>
114    pub execution_class: ::std::option::Option<crate::types::ExecutionClass>,
115    /// <p>The details for a source control configuration for a job, allowing synchronization of job artifacts to or from a remote repository.</p>
116    pub source_control_details: ::std::option::Option<crate::types::SourceControlDetails>,
117    /// <p>This field specifies a day of the week and hour for a maintenance window for streaming jobs. Glue periodically performs maintenance activities. During these maintenance windows, Glue will need to restart your streaming jobs.</p>
118    /// <p>Glue will restart the job within 3 hours of the specified maintenance window. For instance, if you set up the maintenance window for Monday at 10:00AM GMT, your jobs will be restarted between 10:00AM GMT to 1:00PM GMT.</p>
119    pub maintenance_window: ::std::option::Option<::std::string::String>,
120}
121impl CreateJobInput {
122    /// <p>The name you assign to this job definition. It must be unique in your account.</p>
123    pub fn name(&self) -> ::std::option::Option<&str> {
124        self.name.as_deref()
125    }
126    /// <p>A mode that describes how a job was created. Valid values are:</p>
127    /// <ul>
128    /// <li>
129    /// <p><code>SCRIPT</code> - The job was created using the Glue Studio script editor.</p></li>
130    /// <li>
131    /// <p><code>VISUAL</code> - The job was created using the Glue Studio visual editor.</p></li>
132    /// <li>
133    /// <p><code>NOTEBOOK</code> - The job was created using an interactive sessions notebook.</p></li>
134    /// </ul>
135    /// <p>When the <code>JobMode</code> field is missing or null, <code>SCRIPT</code> is assigned as the default value.</p>
136    pub fn job_mode(&self) -> ::std::option::Option<&crate::types::JobMode> {
137        self.job_mode.as_ref()
138    }
139    /// <p>Specifies whether job run queuing is enabled for the job runs for this job.</p>
140    /// <p>A value of true means job run queuing is enabled for the job runs. If false or not populated, the job runs will not be considered for queueing.</p>
141    /// <p>If this field does not match the value set in the job run, then the value from the job run field will be used.</p>
142    pub fn job_run_queuing_enabled(&self) -> ::std::option::Option<bool> {
143        self.job_run_queuing_enabled
144    }
145    /// <p>Description of the job being defined.</p>
146    pub fn description(&self) -> ::std::option::Option<&str> {
147        self.description.as_deref()
148    }
149    /// <p>This field is reserved for future use.</p>
150    pub fn log_uri(&self) -> ::std::option::Option<&str> {
151        self.log_uri.as_deref()
152    }
153    /// <p>The name or Amazon Resource Name (ARN) of the IAM role associated with this job.</p>
154    pub fn role(&self) -> ::std::option::Option<&str> {
155        self.role.as_deref()
156    }
157    /// <p>An <code>ExecutionProperty</code> specifying the maximum number of concurrent runs allowed for this job.</p>
158    pub fn execution_property(&self) -> ::std::option::Option<&crate::types::ExecutionProperty> {
159        self.execution_property.as_ref()
160    }
161    /// <p>The <code>JobCommand</code> that runs this job.</p>
162    pub fn command(&self) -> ::std::option::Option<&crate::types::JobCommand> {
163        self.command.as_ref()
164    }
165    /// <p>The default arguments for every run of this job, specified as name-value pairs.</p>
166    /// <p>You can specify arguments here that your own job-execution script consumes, as well as arguments that Glue itself consumes.</p>
167    /// <p>Job arguments may be logged. Do not pass plaintext secrets as arguments. Retrieve secrets from a Glue Connection, Secrets Manager or other secret management mechanism if you intend to keep them within the Job.</p>
168    /// <p>For information about how to specify and consume your own Job arguments, see the <a href="https://docs.aws.amazon.com/glue/latest/dg/aws-glue-programming-python-calling.html">Calling Glue APIs in Python</a> topic in the developer guide.</p>
169    /// <p>For information about the arguments you can provide to this field when configuring Spark jobs, see the <a href="https://docs.aws.amazon.com/glue/latest/dg/aws-glue-programming-etl-glue-arguments.html">Special Parameters Used by Glue</a> topic in the developer guide.</p>
170    /// <p>For information about the arguments you can provide to this field when configuring Ray jobs, see <a href="https://docs.aws.amazon.com/glue/latest/dg/author-job-ray-job-parameters.html">Using job parameters in Ray jobs</a> in the developer guide.</p>
171    pub fn default_arguments(&self) -> ::std::option::Option<&::std::collections::HashMap<::std::string::String, ::std::string::String>> {
172        self.default_arguments.as_ref()
173    }
174    /// <p>Arguments for this job that are not overridden when providing job arguments in a job run, specified as name-value pairs.</p>
175    pub fn non_overridable_arguments(&self) -> ::std::option::Option<&::std::collections::HashMap<::std::string::String, ::std::string::String>> {
176        self.non_overridable_arguments.as_ref()
177    }
178    /// <p>The connections used for this job.</p>
179    pub fn connections(&self) -> ::std::option::Option<&crate::types::ConnectionsList> {
180        self.connections.as_ref()
181    }
182    /// <p>The maximum number of times to retry this job if it fails.</p>
183    pub fn max_retries(&self) -> ::std::option::Option<i32> {
184        self.max_retries
185    }
186    /// <p>This parameter is deprecated. Use <code>MaxCapacity</code> instead.</p>
187    /// <p>The number of Glue data processing units (DPUs) to allocate to this Job. You can allocate a minimum of 2 DPUs; the default is 10. A DPU is a relative measure of processing power that consists of 4 vCPUs of compute capacity and 16 GB of memory. For more information, see the <a href="https://aws.amazon.com/glue/pricing/">Glue pricing page</a>.</p>
188    #[deprecated(note = "This property is deprecated, use MaxCapacity instead.")]
189    pub fn allocated_capacity(&self) -> ::std::option::Option<i32> {
190        self.allocated_capacity
191    }
192    /// <p>The job timeout in minutes. This is the maximum time that a job run can consume resources before it is terminated and enters <code>TIMEOUT</code> status.</p>
193    /// <p>Jobs must have timeout values less than 7 days or 10080 minutes. Otherwise, the jobs will throw an exception.</p>
194    /// <p>When the value is left blank, the timeout is defaulted to 2,880 minutes for Glue version 4.0 and earlier, or 480 minutes for Glue version 5.0 and later.</p>
195    /// <p>Any existing Glue jobs that had a timeout value greater than 7 days will be defaulted to 7 days. For instance if you have specified a timeout of 20 days for a batch job, it will be stopped on the 7th day.</p>
196    /// <p>For streaming jobs, if you have set up a maintenance window, it will be restarted during the maintenance window after 7 days.</p>
197    pub fn timeout(&self) -> ::std::option::Option<i32> {
198        self.timeout
199    }
200    /// <p>For Glue version 1.0 or earlier jobs, using the standard worker type, the number of Glue data processing units (DPUs) that can be allocated when this job runs. A DPU is a relative measure of processing power that consists of 4 vCPUs of compute capacity and 16 GB of memory. For more information, see the <a href="https://aws.amazon.com/glue/pricing/"> Glue pricing page</a>.</p>
201    /// <p>For Glue version 2.0+ jobs, you cannot specify a <code>Maximum capacity</code>. Instead, you should specify a <code>Worker type</code> and the <code>Number of workers</code>.</p>
202    /// <p>Do not set <code>MaxCapacity</code> if using <code>WorkerType</code> and <code>NumberOfWorkers</code>.</p>
203    /// <p>The value that can be allocated for <code>MaxCapacity</code> depends on whether you are running a Python shell job, an Apache Spark ETL job, or an Apache Spark streaming ETL job:</p>
204    /// <ul>
205    /// <li>
206    /// <p>When you specify a Python shell job (<code>JobCommand.Name</code>="pythonshell"), you can allocate either 0.0625 or 1 DPU. The default is 0.0625 DPU.</p></li>
207    /// <li>
208    /// <p>When you specify an Apache Spark ETL job (<code>JobCommand.Name</code>="glueetl") or Apache Spark streaming ETL job (<code>JobCommand.Name</code>="gluestreaming"), you can allocate from 2 to 100 DPUs. The default is 10 DPUs. This job type cannot have a fractional DPU allocation.</p></li>
209    /// </ul>
210    pub fn max_capacity(&self) -> ::std::option::Option<f64> {
211        self.max_capacity
212    }
213    /// <p>The name of the <code>SecurityConfiguration</code> structure to be used with this job.</p>
214    pub fn security_configuration(&self) -> ::std::option::Option<&str> {
215        self.security_configuration.as_deref()
216    }
217    /// <p>The tags to use with this job. You may use tags to limit access to the job. For more information about tags in Glue, see <a href="https://docs.aws.amazon.com/glue/latest/dg/monitor-tags.html">Amazon Web Services Tags in Glue</a> in the developer guide.</p>
218    pub fn tags(&self) -> ::std::option::Option<&::std::collections::HashMap<::std::string::String, ::std::string::String>> {
219        self.tags.as_ref()
220    }
221    /// <p>Specifies configuration properties of a job notification.</p>
222    pub fn notification_property(&self) -> ::std::option::Option<&crate::types::NotificationProperty> {
223        self.notification_property.as_ref()
224    }
225    /// <p>In Spark jobs, <code>GlueVersion</code> determines the versions of Apache Spark and Python that Glue available in a job. The Python version indicates the version supported for jobs of type Spark.</p>
226    /// <p>Ray jobs should set <code>GlueVersion</code> to <code>4.0</code> or greater. However, the versions of Ray, Python and additional libraries available in your Ray job are determined by the <code>Runtime</code> parameter of the Job command.</p>
227    /// <p>For more information about the available Glue versions and corresponding Spark and Python versions, see <a href="https://docs.aws.amazon.com/glue/latest/dg/add-job.html">Glue version</a> in the developer guide.</p>
228    /// <p>Jobs that are created without specifying a Glue version default to Glue 5.1.</p>
229    pub fn glue_version(&self) -> ::std::option::Option<&str> {
230        self.glue_version.as_deref()
231    }
232    /// <p>The number of workers of a defined <code>workerType</code> that are allocated when a job runs.</p>
233    pub fn number_of_workers(&self) -> ::std::option::Option<i32> {
234        self.number_of_workers
235    }
236    /// <p>The type of predefined worker that is allocated when a job runs. Accepts a value of G.025X, G.1X, G.2X, G.4X, G.8X, G.12X, G.16X, R.1X, R.2X, R.4X, or R.8X for Spark jobs. Accepts the value Z.2X for Ray jobs.</p>
237    /// <ul>
238    /// <li>
239    /// <p>For the <code>G.025X</code> worker type, each worker maps to 0.25 DPU (2 vCPUs, 4 GB of memory) with 84GB disk, and provides 1 executor per worker. We recommend this worker type for low volume streaming jobs. This worker type is only available for Glue version 3.0 or later streaming jobs.</p></li>
240    /// <li>
241    /// <p>For the <code>G.1X</code> worker type, each worker maps to 1 DPU (4 vCPUs, 16 GB of memory) with 94GB disk, and provides 1 executor per worker. We recommend this worker type for workloads such as data transforms, joins, and queries, to offers a scalable and cost effective way to run most jobs.</p></li>
242    /// <li>
243    /// <p>For the <code>G.2X</code> worker type, each worker maps to 2 DPU (8 vCPUs, 32 GB of memory) with 138GB disk, and provides 1 executor per worker. We recommend this worker type for workloads such as data transforms, joins, and queries, to offers a scalable and cost effective way to run most jobs.</p></li>
244    /// <li>
245    /// <p>For the <code>G.4X</code> worker type, each worker maps to 4 DPU (16 vCPUs, 64 GB of memory) with 256GB disk, and provides 1 executor per worker. We recommend this worker type for jobs whose workloads contain your most demanding transforms, aggregations, joins, and queries. This worker type is available only for Glue version 3.0 or later Spark ETL jobs in select Amazon Web Services Regions. For the supported Regions, see <a href="https://docs.aws.amazon.com/glue/latest/dg/add-job.html">Configuring job properties for Spark jobs</a> in the developer guide.</p></li>
246    /// <li>
247    /// <p>For the <code>G.8X</code> worker type, each worker maps to 8 DPU (32 vCPUs, 128 GB of memory) with 512GB disk, and provides 1 executor per worker. We recommend this worker type for jobs whose workloads contain your most demanding transforms, aggregations, joins, and queries. This worker type is available only for Glue version 3.0 or later Spark ETL jobs in select Amazon Web Services Regions. For the supported Regions, see <a href="https://docs.aws.amazon.com/glue/latest/dg/add-job.html">Configuring job properties for Spark jobs</a> in the developer guide.</p></li>
248    /// <li>
249    /// <p>For the <code>G.12X</code> worker type, each worker maps to 12 DPU (48 vCPUs, 192 GB of memory) with 768GB disk, and provides 1 executor per worker. We recommend this worker type for jobs with very large workloads. This worker type is available only for Glue version 4.0 or later Spark ETL jobs in select Amazon Web Services Regions. For the supported Regions, see <a href="https://docs.aws.amazon.com/glue/latest/dg/add-job.html">Configuring job properties for Spark jobs</a> in the developer guide.</p></li>
250    /// <li>
251    /// <p>For the <code>G.16X</code> worker type, each worker maps to 16 DPU (64 vCPUs, 256 GB of memory) with 1024GB disk, and provides 1 executor per worker. We recommend this worker type for jobs with very large workloads. This worker type is available only for Glue version 4.0 or later Spark ETL jobs in select Amazon Web Services Regions. For the supported Regions, see <a href="https://docs.aws.amazon.com/glue/latest/dg/add-job.html">Configuring job properties for Spark jobs</a> in the developer guide.</p></li>
252    /// <li>
253    /// <p>For the <code>R.1X</code> worker type, each worker maps to 1 M-DPU (4 vCPUs, 32 GB of memory) with 94GB disk, and provides 1 executor per worker. We recommend this worker type for memory-intensive workloads. This worker type is available only for Glue version 4.0 or later Spark ETL jobs in select Amazon Web Services Regions. For the supported Regions, see <a href="https://docs.aws.amazon.com/glue/latest/dg/add-job.html">Configuring job properties for Spark jobs</a> in the developer guide.</p></li>
254    /// <li>
255    /// <p>For the <code>R.2X</code> worker type, each worker maps to 2 M-DPU (8 vCPUs, 64 GB of memory) with 138GB disk, and provides 1 executor per worker. We recommend this worker type for memory-intensive workloads. This worker type is available only for Glue version 4.0 or later Spark ETL jobs in select Amazon Web Services Regions. For the supported Regions, see <a href="https://docs.aws.amazon.com/glue/latest/dg/add-job.html">Configuring job properties for Spark jobs</a> in the developer guide.</p></li>
256    /// <li>
257    /// <p>For the <code>R.4X</code> worker type, each worker maps to 4 M-DPU (16 vCPUs, 128 GB of memory) with 256GB disk, and provides 1 executor per worker. We recommend this worker type for memory-intensive workloads. This worker type is available only for Glue version 4.0 or later Spark ETL jobs in select Amazon Web Services Regions. For the supported Regions, see <a href="https://docs.aws.amazon.com/glue/latest/dg/add-job.html">Configuring job properties for Spark jobs</a> in the developer guide.</p></li>
258    /// <li>
259    /// <p>For the <code>R.8X</code> worker type, each worker maps to 8 M-DPU (32 vCPUs, 256 GB of memory) with 512GB disk, and provides 1 executor per worker. We recommend this worker type for memory-intensive workloads. This worker type is available only for Glue version 4.0 or later Spark ETL jobs in select Amazon Web Services Regions. For the supported Regions, see <a href="https://docs.aws.amazon.com/glue/latest/dg/add-job.html">Configuring job properties for Spark jobs</a> in the developer guide.</p></li>
260    /// <li>
261    /// <p>For the <code>Z.2X</code> worker type, each worker maps to 2 M-DPU (8vCPUs, 64 GB of memory) with 128 GB disk, and provides up to 8 Ray workers based on the autoscaler.</p></li>
262    /// </ul>
263    pub fn worker_type(&self) -> ::std::option::Option<&crate::types::WorkerType> {
264        self.worker_type.as_ref()
265    }
266    /// <p>The representation of a directed acyclic graph on which both the Glue Studio visual component and Glue Studio code generation is based.</p>
267    pub fn code_gen_configuration_nodes(
268        &self,
269    ) -> ::std::option::Option<&::std::collections::HashMap<::std::string::String, crate::types::CodeGenConfigurationNode>> {
270        self.code_gen_configuration_nodes.as_ref()
271    }
272    /// <p>Indicates whether the job is run with a standard or flexible execution class. The standard execution-class is ideal for time-sensitive workloads that require fast job startup and dedicated resources.</p>
273    /// <p>The flexible execution class is appropriate for time-insensitive jobs whose start and completion times may vary.</p>
274    /// <p>Only jobs with Glue version 3.0 and above and command type <code>glueetl</code> will be allowed to set <code>ExecutionClass</code> to <code>FLEX</code>. The flexible execution class is available for Spark jobs.</p>
275    pub fn execution_class(&self) -> ::std::option::Option<&crate::types::ExecutionClass> {
276        self.execution_class.as_ref()
277    }
278    /// <p>The details for a source control configuration for a job, allowing synchronization of job artifacts to or from a remote repository.</p>
279    pub fn source_control_details(&self) -> ::std::option::Option<&crate::types::SourceControlDetails> {
280        self.source_control_details.as_ref()
281    }
282    /// <p>This field specifies a day of the week and hour for a maintenance window for streaming jobs. Glue periodically performs maintenance activities. During these maintenance windows, Glue will need to restart your streaming jobs.</p>
283    /// <p>Glue will restart the job within 3 hours of the specified maintenance window. For instance, if you set up the maintenance window for Monday at 10:00AM GMT, your jobs will be restarted between 10:00AM GMT to 1:00PM GMT.</p>
284    pub fn maintenance_window(&self) -> ::std::option::Option<&str> {
285        self.maintenance_window.as_deref()
286    }
287}
288impl ::std::fmt::Debug for CreateJobInput {
289    fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
290        let mut formatter = f.debug_struct("CreateJobInput");
291        formatter.field("name", &self.name);
292        formatter.field("job_mode", &self.job_mode);
293        formatter.field("job_run_queuing_enabled", &self.job_run_queuing_enabled);
294        formatter.field("description", &self.description);
295        formatter.field("log_uri", &self.log_uri);
296        formatter.field("role", &self.role);
297        formatter.field("execution_property", &self.execution_property);
298        formatter.field("command", &self.command);
299        formatter.field("default_arguments", &self.default_arguments);
300        formatter.field("non_overridable_arguments", &self.non_overridable_arguments);
301        formatter.field("connections", &self.connections);
302        formatter.field("max_retries", &self.max_retries);
303        formatter.field("allocated_capacity", &self.allocated_capacity);
304        formatter.field("timeout", &self.timeout);
305        formatter.field("max_capacity", &self.max_capacity);
306        formatter.field("security_configuration", &self.security_configuration);
307        formatter.field("tags", &self.tags);
308        formatter.field("notification_property", &self.notification_property);
309        formatter.field("glue_version", &self.glue_version);
310        formatter.field("number_of_workers", &self.number_of_workers);
311        formatter.field("worker_type", &self.worker_type);
312        formatter.field("code_gen_configuration_nodes", &"*** Sensitive Data Redacted ***");
313        formatter.field("execution_class", &self.execution_class);
314        formatter.field("source_control_details", &self.source_control_details);
315        formatter.field("maintenance_window", &self.maintenance_window);
316        formatter.finish()
317    }
318}
319impl CreateJobInput {
320    /// Creates a new builder-style object to manufacture [`CreateJobInput`](crate::operation::create_job::CreateJobInput).
321    pub fn builder() -> crate::operation::create_job::builders::CreateJobInputBuilder {
322        crate::operation::create_job::builders::CreateJobInputBuilder::default()
323    }
324}
325
326/// A builder for [`CreateJobInput`](crate::operation::create_job::CreateJobInput).
327#[derive(::std::clone::Clone, ::std::cmp::PartialEq, ::std::default::Default)]
328#[non_exhaustive]
329pub struct CreateJobInputBuilder {
330    pub(crate) name: ::std::option::Option<::std::string::String>,
331    pub(crate) job_mode: ::std::option::Option<crate::types::JobMode>,
332    pub(crate) job_run_queuing_enabled: ::std::option::Option<bool>,
333    pub(crate) description: ::std::option::Option<::std::string::String>,
334    pub(crate) log_uri: ::std::option::Option<::std::string::String>,
335    pub(crate) role: ::std::option::Option<::std::string::String>,
336    pub(crate) execution_property: ::std::option::Option<crate::types::ExecutionProperty>,
337    pub(crate) command: ::std::option::Option<crate::types::JobCommand>,
338    pub(crate) default_arguments: ::std::option::Option<::std::collections::HashMap<::std::string::String, ::std::string::String>>,
339    pub(crate) non_overridable_arguments: ::std::option::Option<::std::collections::HashMap<::std::string::String, ::std::string::String>>,
340    pub(crate) connections: ::std::option::Option<crate::types::ConnectionsList>,
341    pub(crate) max_retries: ::std::option::Option<i32>,
342    pub(crate) allocated_capacity: ::std::option::Option<i32>,
343    pub(crate) timeout: ::std::option::Option<i32>,
344    pub(crate) max_capacity: ::std::option::Option<f64>,
345    pub(crate) security_configuration: ::std::option::Option<::std::string::String>,
346    pub(crate) tags: ::std::option::Option<::std::collections::HashMap<::std::string::String, ::std::string::String>>,
347    pub(crate) notification_property: ::std::option::Option<crate::types::NotificationProperty>,
348    pub(crate) glue_version: ::std::option::Option<::std::string::String>,
349    pub(crate) number_of_workers: ::std::option::Option<i32>,
350    pub(crate) worker_type: ::std::option::Option<crate::types::WorkerType>,
351    pub(crate) code_gen_configuration_nodes:
352        ::std::option::Option<::std::collections::HashMap<::std::string::String, crate::types::CodeGenConfigurationNode>>,
353    pub(crate) execution_class: ::std::option::Option<crate::types::ExecutionClass>,
354    pub(crate) source_control_details: ::std::option::Option<crate::types::SourceControlDetails>,
355    pub(crate) maintenance_window: ::std::option::Option<::std::string::String>,
356}
357impl CreateJobInputBuilder {
358    /// <p>The name you assign to this job definition. It must be unique in your account.</p>
359    /// This field is required.
360    pub fn name(mut self, input: impl ::std::convert::Into<::std::string::String>) -> Self {
361        self.name = ::std::option::Option::Some(input.into());
362        self
363    }
364    /// <p>The name you assign to this job definition. It must be unique in your account.</p>
365    pub fn set_name(mut self, input: ::std::option::Option<::std::string::String>) -> Self {
366        self.name = input;
367        self
368    }
369    /// <p>The name you assign to this job definition. It must be unique in your account.</p>
370    pub fn get_name(&self) -> &::std::option::Option<::std::string::String> {
371        &self.name
372    }
373    /// <p>A mode that describes how a job was created. Valid values are:</p>
374    /// <ul>
375    /// <li>
376    /// <p><code>SCRIPT</code> - The job was created using the Glue Studio script editor.</p></li>
377    /// <li>
378    /// <p><code>VISUAL</code> - The job was created using the Glue Studio visual editor.</p></li>
379    /// <li>
380    /// <p><code>NOTEBOOK</code> - The job was created using an interactive sessions notebook.</p></li>
381    /// </ul>
382    /// <p>When the <code>JobMode</code> field is missing or null, <code>SCRIPT</code> is assigned as the default value.</p>
383    pub fn job_mode(mut self, input: crate::types::JobMode) -> Self {
384        self.job_mode = ::std::option::Option::Some(input);
385        self
386    }
387    /// <p>A mode that describes how a job was created. Valid values are:</p>
388    /// <ul>
389    /// <li>
390    /// <p><code>SCRIPT</code> - The job was created using the Glue Studio script editor.</p></li>
391    /// <li>
392    /// <p><code>VISUAL</code> - The job was created using the Glue Studio visual editor.</p></li>
393    /// <li>
394    /// <p><code>NOTEBOOK</code> - The job was created using an interactive sessions notebook.</p></li>
395    /// </ul>
396    /// <p>When the <code>JobMode</code> field is missing or null, <code>SCRIPT</code> is assigned as the default value.</p>
397    pub fn set_job_mode(mut self, input: ::std::option::Option<crate::types::JobMode>) -> Self {
398        self.job_mode = input;
399        self
400    }
401    /// <p>A mode that describes how a job was created. Valid values are:</p>
402    /// <ul>
403    /// <li>
404    /// <p><code>SCRIPT</code> - The job was created using the Glue Studio script editor.</p></li>
405    /// <li>
406    /// <p><code>VISUAL</code> - The job was created using the Glue Studio visual editor.</p></li>
407    /// <li>
408    /// <p><code>NOTEBOOK</code> - The job was created using an interactive sessions notebook.</p></li>
409    /// </ul>
410    /// <p>When the <code>JobMode</code> field is missing or null, <code>SCRIPT</code> is assigned as the default value.</p>
411    pub fn get_job_mode(&self) -> &::std::option::Option<crate::types::JobMode> {
412        &self.job_mode
413    }
414    /// <p>Specifies whether job run queuing is enabled for the job runs for this job.</p>
415    /// <p>A value of true means job run queuing is enabled for the job runs. If false or not populated, the job runs will not be considered for queueing.</p>
416    /// <p>If this field does not match the value set in the job run, then the value from the job run field will be used.</p>
417    pub fn job_run_queuing_enabled(mut self, input: bool) -> Self {
418        self.job_run_queuing_enabled = ::std::option::Option::Some(input);
419        self
420    }
421    /// <p>Specifies whether job run queuing is enabled for the job runs for this job.</p>
422    /// <p>A value of true means job run queuing is enabled for the job runs. If false or not populated, the job runs will not be considered for queueing.</p>
423    /// <p>If this field does not match the value set in the job run, then the value from the job run field will be used.</p>
424    pub fn set_job_run_queuing_enabled(mut self, input: ::std::option::Option<bool>) -> Self {
425        self.job_run_queuing_enabled = input;
426        self
427    }
428    /// <p>Specifies whether job run queuing is enabled for the job runs for this job.</p>
429    /// <p>A value of true means job run queuing is enabled for the job runs. If false or not populated, the job runs will not be considered for queueing.</p>
430    /// <p>If this field does not match the value set in the job run, then the value from the job run field will be used.</p>
431    pub fn get_job_run_queuing_enabled(&self) -> &::std::option::Option<bool> {
432        &self.job_run_queuing_enabled
433    }
434    /// <p>Description of the job being defined.</p>
435    pub fn description(mut self, input: impl ::std::convert::Into<::std::string::String>) -> Self {
436        self.description = ::std::option::Option::Some(input.into());
437        self
438    }
439    /// <p>Description of the job being defined.</p>
440    pub fn set_description(mut self, input: ::std::option::Option<::std::string::String>) -> Self {
441        self.description = input;
442        self
443    }
444    /// <p>Description of the job being defined.</p>
445    pub fn get_description(&self) -> &::std::option::Option<::std::string::String> {
446        &self.description
447    }
448    /// <p>This field is reserved for future use.</p>
449    pub fn log_uri(mut self, input: impl ::std::convert::Into<::std::string::String>) -> Self {
450        self.log_uri = ::std::option::Option::Some(input.into());
451        self
452    }
453    /// <p>This field is reserved for future use.</p>
454    pub fn set_log_uri(mut self, input: ::std::option::Option<::std::string::String>) -> Self {
455        self.log_uri = input;
456        self
457    }
458    /// <p>This field is reserved for future use.</p>
459    pub fn get_log_uri(&self) -> &::std::option::Option<::std::string::String> {
460        &self.log_uri
461    }
462    /// <p>The name or Amazon Resource Name (ARN) of the IAM role associated with this job.</p>
463    /// This field is required.
464    pub fn role(mut self, input: impl ::std::convert::Into<::std::string::String>) -> Self {
465        self.role = ::std::option::Option::Some(input.into());
466        self
467    }
468    /// <p>The name or Amazon Resource Name (ARN) of the IAM role associated with this job.</p>
469    pub fn set_role(mut self, input: ::std::option::Option<::std::string::String>) -> Self {
470        self.role = input;
471        self
472    }
473    /// <p>The name or Amazon Resource Name (ARN) of the IAM role associated with this job.</p>
474    pub fn get_role(&self) -> &::std::option::Option<::std::string::String> {
475        &self.role
476    }
477    /// <p>An <code>ExecutionProperty</code> specifying the maximum number of concurrent runs allowed for this job.</p>
478    pub fn execution_property(mut self, input: crate::types::ExecutionProperty) -> Self {
479        self.execution_property = ::std::option::Option::Some(input);
480        self
481    }
482    /// <p>An <code>ExecutionProperty</code> specifying the maximum number of concurrent runs allowed for this job.</p>
483    pub fn set_execution_property(mut self, input: ::std::option::Option<crate::types::ExecutionProperty>) -> Self {
484        self.execution_property = input;
485        self
486    }
487    /// <p>An <code>ExecutionProperty</code> specifying the maximum number of concurrent runs allowed for this job.</p>
488    pub fn get_execution_property(&self) -> &::std::option::Option<crate::types::ExecutionProperty> {
489        &self.execution_property
490    }
491    /// <p>The <code>JobCommand</code> that runs this job.</p>
492    /// This field is required.
493    pub fn command(mut self, input: crate::types::JobCommand) -> Self {
494        self.command = ::std::option::Option::Some(input);
495        self
496    }
497    /// <p>The <code>JobCommand</code> that runs this job.</p>
498    pub fn set_command(mut self, input: ::std::option::Option<crate::types::JobCommand>) -> Self {
499        self.command = input;
500        self
501    }
502    /// <p>The <code>JobCommand</code> that runs this job.</p>
503    pub fn get_command(&self) -> &::std::option::Option<crate::types::JobCommand> {
504        &self.command
505    }
506    /// Adds a key-value pair to `default_arguments`.
507    ///
508    /// To override the contents of this collection use [`set_default_arguments`](Self::set_default_arguments).
509    ///
510    /// <p>The default arguments for every run of this job, specified as name-value pairs.</p>
511    /// <p>You can specify arguments here that your own job-execution script consumes, as well as arguments that Glue itself consumes.</p>
512    /// <p>Job arguments may be logged. Do not pass plaintext secrets as arguments. Retrieve secrets from a Glue Connection, Secrets Manager or other secret management mechanism if you intend to keep them within the Job.</p>
513    /// <p>For information about how to specify and consume your own Job arguments, see the <a href="https://docs.aws.amazon.com/glue/latest/dg/aws-glue-programming-python-calling.html">Calling Glue APIs in Python</a> topic in the developer guide.</p>
514    /// <p>For information about the arguments you can provide to this field when configuring Spark jobs, see the <a href="https://docs.aws.amazon.com/glue/latest/dg/aws-glue-programming-etl-glue-arguments.html">Special Parameters Used by Glue</a> topic in the developer guide.</p>
515    /// <p>For information about the arguments you can provide to this field when configuring Ray jobs, see <a href="https://docs.aws.amazon.com/glue/latest/dg/author-job-ray-job-parameters.html">Using job parameters in Ray jobs</a> in the developer guide.</p>
516    pub fn default_arguments(
517        mut self,
518        k: impl ::std::convert::Into<::std::string::String>,
519        v: impl ::std::convert::Into<::std::string::String>,
520    ) -> Self {
521        let mut hash_map = self.default_arguments.unwrap_or_default();
522        hash_map.insert(k.into(), v.into());
523        self.default_arguments = ::std::option::Option::Some(hash_map);
524        self
525    }
526    /// <p>The default arguments for every run of this job, specified as name-value pairs.</p>
527    /// <p>You can specify arguments here that your own job-execution script consumes, as well as arguments that Glue itself consumes.</p>
528    /// <p>Job arguments may be logged. Do not pass plaintext secrets as arguments. Retrieve secrets from a Glue Connection, Secrets Manager or other secret management mechanism if you intend to keep them within the Job.</p>
529    /// <p>For information about how to specify and consume your own Job arguments, see the <a href="https://docs.aws.amazon.com/glue/latest/dg/aws-glue-programming-python-calling.html">Calling Glue APIs in Python</a> topic in the developer guide.</p>
530    /// <p>For information about the arguments you can provide to this field when configuring Spark jobs, see the <a href="https://docs.aws.amazon.com/glue/latest/dg/aws-glue-programming-etl-glue-arguments.html">Special Parameters Used by Glue</a> topic in the developer guide.</p>
531    /// <p>For information about the arguments you can provide to this field when configuring Ray jobs, see <a href="https://docs.aws.amazon.com/glue/latest/dg/author-job-ray-job-parameters.html">Using job parameters in Ray jobs</a> in the developer guide.</p>
532    pub fn set_default_arguments(
533        mut self,
534        input: ::std::option::Option<::std::collections::HashMap<::std::string::String, ::std::string::String>>,
535    ) -> Self {
536        self.default_arguments = input;
537        self
538    }
539    /// <p>The default arguments for every run of this job, specified as name-value pairs.</p>
540    /// <p>You can specify arguments here that your own job-execution script consumes, as well as arguments that Glue itself consumes.</p>
541    /// <p>Job arguments may be logged. Do not pass plaintext secrets as arguments. Retrieve secrets from a Glue Connection, Secrets Manager or other secret management mechanism if you intend to keep them within the Job.</p>
542    /// <p>For information about how to specify and consume your own Job arguments, see the <a href="https://docs.aws.amazon.com/glue/latest/dg/aws-glue-programming-python-calling.html">Calling Glue APIs in Python</a> topic in the developer guide.</p>
543    /// <p>For information about the arguments you can provide to this field when configuring Spark jobs, see the <a href="https://docs.aws.amazon.com/glue/latest/dg/aws-glue-programming-etl-glue-arguments.html">Special Parameters Used by Glue</a> topic in the developer guide.</p>
544    /// <p>For information about the arguments you can provide to this field when configuring Ray jobs, see <a href="https://docs.aws.amazon.com/glue/latest/dg/author-job-ray-job-parameters.html">Using job parameters in Ray jobs</a> in the developer guide.</p>
545    pub fn get_default_arguments(&self) -> &::std::option::Option<::std::collections::HashMap<::std::string::String, ::std::string::String>> {
546        &self.default_arguments
547    }
548    /// Adds a key-value pair to `non_overridable_arguments`.
549    ///
550    /// To override the contents of this collection use [`set_non_overridable_arguments`](Self::set_non_overridable_arguments).
551    ///
552    /// <p>Arguments for this job that are not overridden when providing job arguments in a job run, specified as name-value pairs.</p>
553    pub fn non_overridable_arguments(
554        mut self,
555        k: impl ::std::convert::Into<::std::string::String>,
556        v: impl ::std::convert::Into<::std::string::String>,
557    ) -> Self {
558        let mut hash_map = self.non_overridable_arguments.unwrap_or_default();
559        hash_map.insert(k.into(), v.into());
560        self.non_overridable_arguments = ::std::option::Option::Some(hash_map);
561        self
562    }
563    /// <p>Arguments for this job that are not overridden when providing job arguments in a job run, specified as name-value pairs.</p>
564    pub fn set_non_overridable_arguments(
565        mut self,
566        input: ::std::option::Option<::std::collections::HashMap<::std::string::String, ::std::string::String>>,
567    ) -> Self {
568        self.non_overridable_arguments = input;
569        self
570    }
571    /// <p>Arguments for this job that are not overridden when providing job arguments in a job run, specified as name-value pairs.</p>
572    pub fn get_non_overridable_arguments(&self) -> &::std::option::Option<::std::collections::HashMap<::std::string::String, ::std::string::String>> {
573        &self.non_overridable_arguments
574    }
575    /// <p>The connections used for this job.</p>
576    pub fn connections(mut self, input: crate::types::ConnectionsList) -> Self {
577        self.connections = ::std::option::Option::Some(input);
578        self
579    }
580    /// <p>The connections used for this job.</p>
581    pub fn set_connections(mut self, input: ::std::option::Option<crate::types::ConnectionsList>) -> Self {
582        self.connections = input;
583        self
584    }
585    /// <p>The connections used for this job.</p>
586    pub fn get_connections(&self) -> &::std::option::Option<crate::types::ConnectionsList> {
587        &self.connections
588    }
589    /// <p>The maximum number of times to retry this job if it fails.</p>
590    pub fn max_retries(mut self, input: i32) -> Self {
591        self.max_retries = ::std::option::Option::Some(input);
592        self
593    }
594    /// <p>The maximum number of times to retry this job if it fails.</p>
595    pub fn set_max_retries(mut self, input: ::std::option::Option<i32>) -> Self {
596        self.max_retries = input;
597        self
598    }
599    /// <p>The maximum number of times to retry this job if it fails.</p>
600    pub fn get_max_retries(&self) -> &::std::option::Option<i32> {
601        &self.max_retries
602    }
603    /// <p>This parameter is deprecated. Use <code>MaxCapacity</code> instead.</p>
604    /// <p>The number of Glue data processing units (DPUs) to allocate to this Job. You can allocate a minimum of 2 DPUs; the default is 10. A DPU is a relative measure of processing power that consists of 4 vCPUs of compute capacity and 16 GB of memory. For more information, see the <a href="https://aws.amazon.com/glue/pricing/">Glue pricing page</a>.</p>
605    #[deprecated(note = "This property is deprecated, use MaxCapacity instead.")]
606    pub fn allocated_capacity(mut self, input: i32) -> Self {
607        self.allocated_capacity = ::std::option::Option::Some(input);
608        self
609    }
610    /// <p>This parameter is deprecated. Use <code>MaxCapacity</code> instead.</p>
611    /// <p>The number of Glue data processing units (DPUs) to allocate to this Job. You can allocate a minimum of 2 DPUs; the default is 10. A DPU is a relative measure of processing power that consists of 4 vCPUs of compute capacity and 16 GB of memory. For more information, see the <a href="https://aws.amazon.com/glue/pricing/">Glue pricing page</a>.</p>
612    #[deprecated(note = "This property is deprecated, use MaxCapacity instead.")]
613    pub fn set_allocated_capacity(mut self, input: ::std::option::Option<i32>) -> Self {
614        self.allocated_capacity = input;
615        self
616    }
617    /// <p>This parameter is deprecated. Use <code>MaxCapacity</code> instead.</p>
618    /// <p>The number of Glue data processing units (DPUs) to allocate to this Job. You can allocate a minimum of 2 DPUs; the default is 10. A DPU is a relative measure of processing power that consists of 4 vCPUs of compute capacity and 16 GB of memory. For more information, see the <a href="https://aws.amazon.com/glue/pricing/">Glue pricing page</a>.</p>
619    #[deprecated(note = "This property is deprecated, use MaxCapacity instead.")]
620    pub fn get_allocated_capacity(&self) -> &::std::option::Option<i32> {
621        &self.allocated_capacity
622    }
623    /// <p>The job timeout in minutes. This is the maximum time that a job run can consume resources before it is terminated and enters <code>TIMEOUT</code> status.</p>
624    /// <p>Jobs must have timeout values less than 7 days or 10080 minutes. Otherwise, the jobs will throw an exception.</p>
625    /// <p>When the value is left blank, the timeout is defaulted to 2,880 minutes for Glue version 4.0 and earlier, or 480 minutes for Glue version 5.0 and later.</p>
626    /// <p>Any existing Glue jobs that had a timeout value greater than 7 days will be defaulted to 7 days. For instance if you have specified a timeout of 20 days for a batch job, it will be stopped on the 7th day.</p>
627    /// <p>For streaming jobs, if you have set up a maintenance window, it will be restarted during the maintenance window after 7 days.</p>
628    pub fn timeout(mut self, input: i32) -> Self {
629        self.timeout = ::std::option::Option::Some(input);
630        self
631    }
632    /// <p>The job timeout in minutes. This is the maximum time that a job run can consume resources before it is terminated and enters <code>TIMEOUT</code> status.</p>
633    /// <p>Jobs must have timeout values less than 7 days or 10080 minutes. Otherwise, the jobs will throw an exception.</p>
634    /// <p>When the value is left blank, the timeout is defaulted to 2,880 minutes for Glue version 4.0 and earlier, or 480 minutes for Glue version 5.0 and later.</p>
635    /// <p>Any existing Glue jobs that had a timeout value greater than 7 days will be defaulted to 7 days. For instance if you have specified a timeout of 20 days for a batch job, it will be stopped on the 7th day.</p>
636    /// <p>For streaming jobs, if you have set up a maintenance window, it will be restarted during the maintenance window after 7 days.</p>
637    pub fn set_timeout(mut self, input: ::std::option::Option<i32>) -> Self {
638        self.timeout = input;
639        self
640    }
641    /// <p>The job timeout in minutes. This is the maximum time that a job run can consume resources before it is terminated and enters <code>TIMEOUT</code> status.</p>
642    /// <p>Jobs must have timeout values less than 7 days or 10080 minutes. Otherwise, the jobs will throw an exception.</p>
643    /// <p>When the value is left blank, the timeout is defaulted to 2,880 minutes for Glue version 4.0 and earlier, or 480 minutes for Glue version 5.0 and later.</p>
644    /// <p>Any existing Glue jobs that had a timeout value greater than 7 days will be defaulted to 7 days. For instance if you have specified a timeout of 20 days for a batch job, it will be stopped on the 7th day.</p>
645    /// <p>For streaming jobs, if you have set up a maintenance window, it will be restarted during the maintenance window after 7 days.</p>
646    pub fn get_timeout(&self) -> &::std::option::Option<i32> {
647        &self.timeout
648    }
649    /// <p>For Glue version 1.0 or earlier jobs, using the standard worker type, the number of Glue data processing units (DPUs) that can be allocated when this job runs. A DPU is a relative measure of processing power that consists of 4 vCPUs of compute capacity and 16 GB of memory. For more information, see the <a href="https://aws.amazon.com/glue/pricing/"> Glue pricing page</a>.</p>
650    /// <p>For Glue version 2.0+ jobs, you cannot specify a <code>Maximum capacity</code>. Instead, you should specify a <code>Worker type</code> and the <code>Number of workers</code>.</p>
651    /// <p>Do not set <code>MaxCapacity</code> if using <code>WorkerType</code> and <code>NumberOfWorkers</code>.</p>
652    /// <p>The value that can be allocated for <code>MaxCapacity</code> depends on whether you are running a Python shell job, an Apache Spark ETL job, or an Apache Spark streaming ETL job:</p>
653    /// <ul>
654    /// <li>
655    /// <p>When you specify a Python shell job (<code>JobCommand.Name</code>="pythonshell"), you can allocate either 0.0625 or 1 DPU. The default is 0.0625 DPU.</p></li>
656    /// <li>
657    /// <p>When you specify an Apache Spark ETL job (<code>JobCommand.Name</code>="glueetl") or Apache Spark streaming ETL job (<code>JobCommand.Name</code>="gluestreaming"), you can allocate from 2 to 100 DPUs. The default is 10 DPUs. This job type cannot have a fractional DPU allocation.</p></li>
658    /// </ul>
659    pub fn max_capacity(mut self, input: f64) -> Self {
660        self.max_capacity = ::std::option::Option::Some(input);
661        self
662    }
663    /// <p>For Glue version 1.0 or earlier jobs, using the standard worker type, the number of Glue data processing units (DPUs) that can be allocated when this job runs. A DPU is a relative measure of processing power that consists of 4 vCPUs of compute capacity and 16 GB of memory. For more information, see the <a href="https://aws.amazon.com/glue/pricing/"> Glue pricing page</a>.</p>
664    /// <p>For Glue version 2.0+ jobs, you cannot specify a <code>Maximum capacity</code>. Instead, you should specify a <code>Worker type</code> and the <code>Number of workers</code>.</p>
665    /// <p>Do not set <code>MaxCapacity</code> if using <code>WorkerType</code> and <code>NumberOfWorkers</code>.</p>
666    /// <p>The value that can be allocated for <code>MaxCapacity</code> depends on whether you are running a Python shell job, an Apache Spark ETL job, or an Apache Spark streaming ETL job:</p>
667    /// <ul>
668    /// <li>
669    /// <p>When you specify a Python shell job (<code>JobCommand.Name</code>="pythonshell"), you can allocate either 0.0625 or 1 DPU. The default is 0.0625 DPU.</p></li>
670    /// <li>
671    /// <p>When you specify an Apache Spark ETL job (<code>JobCommand.Name</code>="glueetl") or Apache Spark streaming ETL job (<code>JobCommand.Name</code>="gluestreaming"), you can allocate from 2 to 100 DPUs. The default is 10 DPUs. This job type cannot have a fractional DPU allocation.</p></li>
672    /// </ul>
673    pub fn set_max_capacity(mut self, input: ::std::option::Option<f64>) -> Self {
674        self.max_capacity = input;
675        self
676    }
677    /// <p>For Glue version 1.0 or earlier jobs, using the standard worker type, the number of Glue data processing units (DPUs) that can be allocated when this job runs. A DPU is a relative measure of processing power that consists of 4 vCPUs of compute capacity and 16 GB of memory. For more information, see the <a href="https://aws.amazon.com/glue/pricing/"> Glue pricing page</a>.</p>
678    /// <p>For Glue version 2.0+ jobs, you cannot specify a <code>Maximum capacity</code>. Instead, you should specify a <code>Worker type</code> and the <code>Number of workers</code>.</p>
679    /// <p>Do not set <code>MaxCapacity</code> if using <code>WorkerType</code> and <code>NumberOfWorkers</code>.</p>
680    /// <p>The value that can be allocated for <code>MaxCapacity</code> depends on whether you are running a Python shell job, an Apache Spark ETL job, or an Apache Spark streaming ETL job:</p>
681    /// <ul>
682    /// <li>
683    /// <p>When you specify a Python shell job (<code>JobCommand.Name</code>="pythonshell"), you can allocate either 0.0625 or 1 DPU. The default is 0.0625 DPU.</p></li>
684    /// <li>
685    /// <p>When you specify an Apache Spark ETL job (<code>JobCommand.Name</code>="glueetl") or Apache Spark streaming ETL job (<code>JobCommand.Name</code>="gluestreaming"), you can allocate from 2 to 100 DPUs. The default is 10 DPUs. This job type cannot have a fractional DPU allocation.</p></li>
686    /// </ul>
687    pub fn get_max_capacity(&self) -> &::std::option::Option<f64> {
688        &self.max_capacity
689    }
690    /// <p>The name of the <code>SecurityConfiguration</code> structure to be used with this job.</p>
691    pub fn security_configuration(mut self, input: impl ::std::convert::Into<::std::string::String>) -> Self {
692        self.security_configuration = ::std::option::Option::Some(input.into());
693        self
694    }
695    /// <p>The name of the <code>SecurityConfiguration</code> structure to be used with this job.</p>
696    pub fn set_security_configuration(mut self, input: ::std::option::Option<::std::string::String>) -> Self {
697        self.security_configuration = input;
698        self
699    }
700    /// <p>The name of the <code>SecurityConfiguration</code> structure to be used with this job.</p>
701    pub fn get_security_configuration(&self) -> &::std::option::Option<::std::string::String> {
702        &self.security_configuration
703    }
704    /// Adds a key-value pair to `tags`.
705    ///
706    /// To override the contents of this collection use [`set_tags`](Self::set_tags).
707    ///
708    /// <p>The tags to use with this job. You may use tags to limit access to the job. For more information about tags in Glue, see <a href="https://docs.aws.amazon.com/glue/latest/dg/monitor-tags.html">Amazon Web Services Tags in Glue</a> in the developer guide.</p>
709    pub fn tags(mut self, k: impl ::std::convert::Into<::std::string::String>, v: impl ::std::convert::Into<::std::string::String>) -> Self {
710        let mut hash_map = self.tags.unwrap_or_default();
711        hash_map.insert(k.into(), v.into());
712        self.tags = ::std::option::Option::Some(hash_map);
713        self
714    }
715    /// <p>The tags to use with this job. You may use tags to limit access to the job. For more information about tags in Glue, see <a href="https://docs.aws.amazon.com/glue/latest/dg/monitor-tags.html">Amazon Web Services Tags in Glue</a> in the developer guide.</p>
716    pub fn set_tags(mut self, input: ::std::option::Option<::std::collections::HashMap<::std::string::String, ::std::string::String>>) -> Self {
717        self.tags = input;
718        self
719    }
720    /// <p>The tags to use with this job. You may use tags to limit access to the job. For more information about tags in Glue, see <a href="https://docs.aws.amazon.com/glue/latest/dg/monitor-tags.html">Amazon Web Services Tags in Glue</a> in the developer guide.</p>
721    pub fn get_tags(&self) -> &::std::option::Option<::std::collections::HashMap<::std::string::String, ::std::string::String>> {
722        &self.tags
723    }
724    /// <p>Specifies configuration properties of a job notification.</p>
725    pub fn notification_property(mut self, input: crate::types::NotificationProperty) -> Self {
726        self.notification_property = ::std::option::Option::Some(input);
727        self
728    }
729    /// <p>Specifies configuration properties of a job notification.</p>
730    pub fn set_notification_property(mut self, input: ::std::option::Option<crate::types::NotificationProperty>) -> Self {
731        self.notification_property = input;
732        self
733    }
734    /// <p>Specifies configuration properties of a job notification.</p>
735    pub fn get_notification_property(&self) -> &::std::option::Option<crate::types::NotificationProperty> {
736        &self.notification_property
737    }
738    /// <p>In Spark jobs, <code>GlueVersion</code> determines the versions of Apache Spark and Python that Glue available in a job. The Python version indicates the version supported for jobs of type Spark.</p>
739    /// <p>Ray jobs should set <code>GlueVersion</code> to <code>4.0</code> or greater. However, the versions of Ray, Python and additional libraries available in your Ray job are determined by the <code>Runtime</code> parameter of the Job command.</p>
740    /// <p>For more information about the available Glue versions and corresponding Spark and Python versions, see <a href="https://docs.aws.amazon.com/glue/latest/dg/add-job.html">Glue version</a> in the developer guide.</p>
741    /// <p>Jobs that are created without specifying a Glue version default to Glue 5.1.</p>
742    pub fn glue_version(mut self, input: impl ::std::convert::Into<::std::string::String>) -> Self {
743        self.glue_version = ::std::option::Option::Some(input.into());
744        self
745    }
746    /// <p>In Spark jobs, <code>GlueVersion</code> determines the versions of Apache Spark and Python that Glue available in a job. The Python version indicates the version supported for jobs of type Spark.</p>
747    /// <p>Ray jobs should set <code>GlueVersion</code> to <code>4.0</code> or greater. However, the versions of Ray, Python and additional libraries available in your Ray job are determined by the <code>Runtime</code> parameter of the Job command.</p>
748    /// <p>For more information about the available Glue versions and corresponding Spark and Python versions, see <a href="https://docs.aws.amazon.com/glue/latest/dg/add-job.html">Glue version</a> in the developer guide.</p>
749    /// <p>Jobs that are created without specifying a Glue version default to Glue 5.1.</p>
750    pub fn set_glue_version(mut self, input: ::std::option::Option<::std::string::String>) -> Self {
751        self.glue_version = input;
752        self
753    }
754    /// <p>In Spark jobs, <code>GlueVersion</code> determines the versions of Apache Spark and Python that Glue available in a job. The Python version indicates the version supported for jobs of type Spark.</p>
755    /// <p>Ray jobs should set <code>GlueVersion</code> to <code>4.0</code> or greater. However, the versions of Ray, Python and additional libraries available in your Ray job are determined by the <code>Runtime</code> parameter of the Job command.</p>
756    /// <p>For more information about the available Glue versions and corresponding Spark and Python versions, see <a href="https://docs.aws.amazon.com/glue/latest/dg/add-job.html">Glue version</a> in the developer guide.</p>
757    /// <p>Jobs that are created without specifying a Glue version default to Glue 5.1.</p>
758    pub fn get_glue_version(&self) -> &::std::option::Option<::std::string::String> {
759        &self.glue_version
760    }
761    /// <p>The number of workers of a defined <code>workerType</code> that are allocated when a job runs.</p>
762    pub fn number_of_workers(mut self, input: i32) -> Self {
763        self.number_of_workers = ::std::option::Option::Some(input);
764        self
765    }
766    /// <p>The number of workers of a defined <code>workerType</code> that are allocated when a job runs.</p>
767    pub fn set_number_of_workers(mut self, input: ::std::option::Option<i32>) -> Self {
768        self.number_of_workers = input;
769        self
770    }
771    /// <p>The number of workers of a defined <code>workerType</code> that are allocated when a job runs.</p>
772    pub fn get_number_of_workers(&self) -> &::std::option::Option<i32> {
773        &self.number_of_workers
774    }
775    /// <p>The type of predefined worker that is allocated when a job runs. Accepts a value of G.025X, G.1X, G.2X, G.4X, G.8X, G.12X, G.16X, R.1X, R.2X, R.4X, or R.8X for Spark jobs. Accepts the value Z.2X for Ray jobs.</p>
776    /// <ul>
777    /// <li>
778    /// <p>For the <code>G.025X</code> worker type, each worker maps to 0.25 DPU (2 vCPUs, 4 GB of memory) with 84GB disk, and provides 1 executor per worker. We recommend this worker type for low volume streaming jobs. This worker type is only available for Glue version 3.0 or later streaming jobs.</p></li>
779    /// <li>
780    /// <p>For the <code>G.1X</code> worker type, each worker maps to 1 DPU (4 vCPUs, 16 GB of memory) with 94GB disk, and provides 1 executor per worker. We recommend this worker type for workloads such as data transforms, joins, and queries, to offers a scalable and cost effective way to run most jobs.</p></li>
781    /// <li>
782    /// <p>For the <code>G.2X</code> worker type, each worker maps to 2 DPU (8 vCPUs, 32 GB of memory) with 138GB disk, and provides 1 executor per worker. We recommend this worker type for workloads such as data transforms, joins, and queries, to offers a scalable and cost effective way to run most jobs.</p></li>
783    /// <li>
784    /// <p>For the <code>G.4X</code> worker type, each worker maps to 4 DPU (16 vCPUs, 64 GB of memory) with 256GB disk, and provides 1 executor per worker. We recommend this worker type for jobs whose workloads contain your most demanding transforms, aggregations, joins, and queries. This worker type is available only for Glue version 3.0 or later Spark ETL jobs in select Amazon Web Services Regions. For the supported Regions, see <a href="https://docs.aws.amazon.com/glue/latest/dg/add-job.html">Configuring job properties for Spark jobs</a> in the developer guide.</p></li>
785    /// <li>
786    /// <p>For the <code>G.8X</code> worker type, each worker maps to 8 DPU (32 vCPUs, 128 GB of memory) with 512GB disk, and provides 1 executor per worker. We recommend this worker type for jobs whose workloads contain your most demanding transforms, aggregations, joins, and queries. This worker type is available only for Glue version 3.0 or later Spark ETL jobs in select Amazon Web Services Regions. For the supported Regions, see <a href="https://docs.aws.amazon.com/glue/latest/dg/add-job.html">Configuring job properties for Spark jobs</a> in the developer guide.</p></li>
787    /// <li>
788    /// <p>For the <code>G.12X</code> worker type, each worker maps to 12 DPU (48 vCPUs, 192 GB of memory) with 768GB disk, and provides 1 executor per worker. We recommend this worker type for jobs with very large workloads. This worker type is available only for Glue version 4.0 or later Spark ETL jobs in select Amazon Web Services Regions. For the supported Regions, see <a href="https://docs.aws.amazon.com/glue/latest/dg/add-job.html">Configuring job properties for Spark jobs</a> in the developer guide.</p></li>
789    /// <li>
790    /// <p>For the <code>G.16X</code> worker type, each worker maps to 16 DPU (64 vCPUs, 256 GB of memory) with 1024GB disk, and provides 1 executor per worker. We recommend this worker type for jobs with very large workloads. This worker type is available only for Glue version 4.0 or later Spark ETL jobs in select Amazon Web Services Regions. For the supported Regions, see <a href="https://docs.aws.amazon.com/glue/latest/dg/add-job.html">Configuring job properties for Spark jobs</a> in the developer guide.</p></li>
791    /// <li>
792    /// <p>For the <code>R.1X</code> worker type, each worker maps to 1 M-DPU (4 vCPUs, 32 GB of memory) with 94GB disk, and provides 1 executor per worker. We recommend this worker type for memory-intensive workloads. This worker type is available only for Glue version 4.0 or later Spark ETL jobs in select Amazon Web Services Regions. For the supported Regions, see <a href="https://docs.aws.amazon.com/glue/latest/dg/add-job.html">Configuring job properties for Spark jobs</a> in the developer guide.</p></li>
793    /// <li>
794    /// <p>For the <code>R.2X</code> worker type, each worker maps to 2 M-DPU (8 vCPUs, 64 GB of memory) with 138GB disk, and provides 1 executor per worker. We recommend this worker type for memory-intensive workloads. This worker type is available only for Glue version 4.0 or later Spark ETL jobs in select Amazon Web Services Regions. For the supported Regions, see <a href="https://docs.aws.amazon.com/glue/latest/dg/add-job.html">Configuring job properties for Spark jobs</a> in the developer guide.</p></li>
795    /// <li>
796    /// <p>For the <code>R.4X</code> worker type, each worker maps to 4 M-DPU (16 vCPUs, 128 GB of memory) with 256GB disk, and provides 1 executor per worker. We recommend this worker type for memory-intensive workloads. This worker type is available only for Glue version 4.0 or later Spark ETL jobs in select Amazon Web Services Regions. For the supported Regions, see <a href="https://docs.aws.amazon.com/glue/latest/dg/add-job.html">Configuring job properties for Spark jobs</a> in the developer guide.</p></li>
797    /// <li>
798    /// <p>For the <code>R.8X</code> worker type, each worker maps to 8 M-DPU (32 vCPUs, 256 GB of memory) with 512GB disk, and provides 1 executor per worker. We recommend this worker type for memory-intensive workloads. This worker type is available only for Glue version 4.0 or later Spark ETL jobs in select Amazon Web Services Regions. For the supported Regions, see <a href="https://docs.aws.amazon.com/glue/latest/dg/add-job.html">Configuring job properties for Spark jobs</a> in the developer guide.</p></li>
799    /// <li>
800    /// <p>For the <code>Z.2X</code> worker type, each worker maps to 2 M-DPU (8vCPUs, 64 GB of memory) with 128 GB disk, and provides up to 8 Ray workers based on the autoscaler.</p></li>
801    /// </ul>
802    pub fn worker_type(mut self, input: crate::types::WorkerType) -> Self {
803        self.worker_type = ::std::option::Option::Some(input);
804        self
805    }
806    /// <p>The type of predefined worker that is allocated when a job runs. Accepts a value of G.025X, G.1X, G.2X, G.4X, G.8X, G.12X, G.16X, R.1X, R.2X, R.4X, or R.8X for Spark jobs. Accepts the value Z.2X for Ray jobs.</p>
807    /// <ul>
808    /// <li>
809    /// <p>For the <code>G.025X</code> worker type, each worker maps to 0.25 DPU (2 vCPUs, 4 GB of memory) with 84GB disk, and provides 1 executor per worker. We recommend this worker type for low volume streaming jobs. This worker type is only available for Glue version 3.0 or later streaming jobs.</p></li>
810    /// <li>
811    /// <p>For the <code>G.1X</code> worker type, each worker maps to 1 DPU (4 vCPUs, 16 GB of memory) with 94GB disk, and provides 1 executor per worker. We recommend this worker type for workloads such as data transforms, joins, and queries, to offers a scalable and cost effective way to run most jobs.</p></li>
812    /// <li>
813    /// <p>For the <code>G.2X</code> worker type, each worker maps to 2 DPU (8 vCPUs, 32 GB of memory) with 138GB disk, and provides 1 executor per worker. We recommend this worker type for workloads such as data transforms, joins, and queries, to offers a scalable and cost effective way to run most jobs.</p></li>
814    /// <li>
815    /// <p>For the <code>G.4X</code> worker type, each worker maps to 4 DPU (16 vCPUs, 64 GB of memory) with 256GB disk, and provides 1 executor per worker. We recommend this worker type for jobs whose workloads contain your most demanding transforms, aggregations, joins, and queries. This worker type is available only for Glue version 3.0 or later Spark ETL jobs in select Amazon Web Services Regions. For the supported Regions, see <a href="https://docs.aws.amazon.com/glue/latest/dg/add-job.html">Configuring job properties for Spark jobs</a> in the developer guide.</p></li>
816    /// <li>
817    /// <p>For the <code>G.8X</code> worker type, each worker maps to 8 DPU (32 vCPUs, 128 GB of memory) with 512GB disk, and provides 1 executor per worker. We recommend this worker type for jobs whose workloads contain your most demanding transforms, aggregations, joins, and queries. This worker type is available only for Glue version 3.0 or later Spark ETL jobs in select Amazon Web Services Regions. For the supported Regions, see <a href="https://docs.aws.amazon.com/glue/latest/dg/add-job.html">Configuring job properties for Spark jobs</a> in the developer guide.</p></li>
818    /// <li>
819    /// <p>For the <code>G.12X</code> worker type, each worker maps to 12 DPU (48 vCPUs, 192 GB of memory) with 768GB disk, and provides 1 executor per worker. We recommend this worker type for jobs with very large workloads. This worker type is available only for Glue version 4.0 or later Spark ETL jobs in select Amazon Web Services Regions. For the supported Regions, see <a href="https://docs.aws.amazon.com/glue/latest/dg/add-job.html">Configuring job properties for Spark jobs</a> in the developer guide.</p></li>
820    /// <li>
821    /// <p>For the <code>G.16X</code> worker type, each worker maps to 16 DPU (64 vCPUs, 256 GB of memory) with 1024GB disk, and provides 1 executor per worker. We recommend this worker type for jobs with very large workloads. This worker type is available only for Glue version 4.0 or later Spark ETL jobs in select Amazon Web Services Regions. For the supported Regions, see <a href="https://docs.aws.amazon.com/glue/latest/dg/add-job.html">Configuring job properties for Spark jobs</a> in the developer guide.</p></li>
822    /// <li>
823    /// <p>For the <code>R.1X</code> worker type, each worker maps to 1 M-DPU (4 vCPUs, 32 GB of memory) with 94GB disk, and provides 1 executor per worker. We recommend this worker type for memory-intensive workloads. This worker type is available only for Glue version 4.0 or later Spark ETL jobs in select Amazon Web Services Regions. For the supported Regions, see <a href="https://docs.aws.amazon.com/glue/latest/dg/add-job.html">Configuring job properties for Spark jobs</a> in the developer guide.</p></li>
824    /// <li>
825    /// <p>For the <code>R.2X</code> worker type, each worker maps to 2 M-DPU (8 vCPUs, 64 GB of memory) with 138GB disk, and provides 1 executor per worker. We recommend this worker type for memory-intensive workloads. This worker type is available only for Glue version 4.0 or later Spark ETL jobs in select Amazon Web Services Regions. For the supported Regions, see <a href="https://docs.aws.amazon.com/glue/latest/dg/add-job.html">Configuring job properties for Spark jobs</a> in the developer guide.</p></li>
826    /// <li>
827    /// <p>For the <code>R.4X</code> worker type, each worker maps to 4 M-DPU (16 vCPUs, 128 GB of memory) with 256GB disk, and provides 1 executor per worker. We recommend this worker type for memory-intensive workloads. This worker type is available only for Glue version 4.0 or later Spark ETL jobs in select Amazon Web Services Regions. For the supported Regions, see <a href="https://docs.aws.amazon.com/glue/latest/dg/add-job.html">Configuring job properties for Spark jobs</a> in the developer guide.</p></li>
828    /// <li>
829    /// <p>For the <code>R.8X</code> worker type, each worker maps to 8 M-DPU (32 vCPUs, 256 GB of memory) with 512GB disk, and provides 1 executor per worker. We recommend this worker type for memory-intensive workloads. This worker type is available only for Glue version 4.0 or later Spark ETL jobs in select Amazon Web Services Regions. For the supported Regions, see <a href="https://docs.aws.amazon.com/glue/latest/dg/add-job.html">Configuring job properties for Spark jobs</a> in the developer guide.</p></li>
830    /// <li>
831    /// <p>For the <code>Z.2X</code> worker type, each worker maps to 2 M-DPU (8vCPUs, 64 GB of memory) with 128 GB disk, and provides up to 8 Ray workers based on the autoscaler.</p></li>
832    /// </ul>
833    pub fn set_worker_type(mut self, input: ::std::option::Option<crate::types::WorkerType>) -> Self {
834        self.worker_type = input;
835        self
836    }
837    /// <p>The type of predefined worker that is allocated when a job runs. Accepts a value of G.025X, G.1X, G.2X, G.4X, G.8X, G.12X, G.16X, R.1X, R.2X, R.4X, or R.8X for Spark jobs. Accepts the value Z.2X for Ray jobs.</p>
838    /// <ul>
839    /// <li>
840    /// <p>For the <code>G.025X</code> worker type, each worker maps to 0.25 DPU (2 vCPUs, 4 GB of memory) with 84GB disk, and provides 1 executor per worker. We recommend this worker type for low volume streaming jobs. This worker type is only available for Glue version 3.0 or later streaming jobs.</p></li>
841    /// <li>
842    /// <p>For the <code>G.1X</code> worker type, each worker maps to 1 DPU (4 vCPUs, 16 GB of memory) with 94GB disk, and provides 1 executor per worker. We recommend this worker type for workloads such as data transforms, joins, and queries, to offers a scalable and cost effective way to run most jobs.</p></li>
843    /// <li>
844    /// <p>For the <code>G.2X</code> worker type, each worker maps to 2 DPU (8 vCPUs, 32 GB of memory) with 138GB disk, and provides 1 executor per worker. We recommend this worker type for workloads such as data transforms, joins, and queries, to offers a scalable and cost effective way to run most jobs.</p></li>
845    /// <li>
846    /// <p>For the <code>G.4X</code> worker type, each worker maps to 4 DPU (16 vCPUs, 64 GB of memory) with 256GB disk, and provides 1 executor per worker. We recommend this worker type for jobs whose workloads contain your most demanding transforms, aggregations, joins, and queries. This worker type is available only for Glue version 3.0 or later Spark ETL jobs in select Amazon Web Services Regions. For the supported Regions, see <a href="https://docs.aws.amazon.com/glue/latest/dg/add-job.html">Configuring job properties for Spark jobs</a> in the developer guide.</p></li>
847    /// <li>
848    /// <p>For the <code>G.8X</code> worker type, each worker maps to 8 DPU (32 vCPUs, 128 GB of memory) with 512GB disk, and provides 1 executor per worker. We recommend this worker type for jobs whose workloads contain your most demanding transforms, aggregations, joins, and queries. This worker type is available only for Glue version 3.0 or later Spark ETL jobs in select Amazon Web Services Regions. For the supported Regions, see <a href="https://docs.aws.amazon.com/glue/latest/dg/add-job.html">Configuring job properties for Spark jobs</a> in the developer guide.</p></li>
849    /// <li>
850    /// <p>For the <code>G.12X</code> worker type, each worker maps to 12 DPU (48 vCPUs, 192 GB of memory) with 768GB disk, and provides 1 executor per worker. We recommend this worker type for jobs with very large workloads. This worker type is available only for Glue version 4.0 or later Spark ETL jobs in select Amazon Web Services Regions. For the supported Regions, see <a href="https://docs.aws.amazon.com/glue/latest/dg/add-job.html">Configuring job properties for Spark jobs</a> in the developer guide.</p></li>
851    /// <li>
852    /// <p>For the <code>G.16X</code> worker type, each worker maps to 16 DPU (64 vCPUs, 256 GB of memory) with 1024GB disk, and provides 1 executor per worker. We recommend this worker type for jobs with very large workloads. This worker type is available only for Glue version 4.0 or later Spark ETL jobs in select Amazon Web Services Regions. For the supported Regions, see <a href="https://docs.aws.amazon.com/glue/latest/dg/add-job.html">Configuring job properties for Spark jobs</a> in the developer guide.</p></li>
853    /// <li>
854    /// <p>For the <code>R.1X</code> worker type, each worker maps to 1 M-DPU (4 vCPUs, 32 GB of memory) with 94GB disk, and provides 1 executor per worker. We recommend this worker type for memory-intensive workloads. This worker type is available only for Glue version 4.0 or later Spark ETL jobs in select Amazon Web Services Regions. For the supported Regions, see <a href="https://docs.aws.amazon.com/glue/latest/dg/add-job.html">Configuring job properties for Spark jobs</a> in the developer guide.</p></li>
855    /// <li>
856    /// <p>For the <code>R.2X</code> worker type, each worker maps to 2 M-DPU (8 vCPUs, 64 GB of memory) with 138GB disk, and provides 1 executor per worker. We recommend this worker type for memory-intensive workloads. This worker type is available only for Glue version 4.0 or later Spark ETL jobs in select Amazon Web Services Regions. For the supported Regions, see <a href="https://docs.aws.amazon.com/glue/latest/dg/add-job.html">Configuring job properties for Spark jobs</a> in the developer guide.</p></li>
857    /// <li>
858    /// <p>For the <code>R.4X</code> worker type, each worker maps to 4 M-DPU (16 vCPUs, 128 GB of memory) with 256GB disk, and provides 1 executor per worker. We recommend this worker type for memory-intensive workloads. This worker type is available only for Glue version 4.0 or later Spark ETL jobs in select Amazon Web Services Regions. For the supported Regions, see <a href="https://docs.aws.amazon.com/glue/latest/dg/add-job.html">Configuring job properties for Spark jobs</a> in the developer guide.</p></li>
859    /// <li>
860    /// <p>For the <code>R.8X</code> worker type, each worker maps to 8 M-DPU (32 vCPUs, 256 GB of memory) with 512GB disk, and provides 1 executor per worker. We recommend this worker type for memory-intensive workloads. This worker type is available only for Glue version 4.0 or later Spark ETL jobs in select Amazon Web Services Regions. For the supported Regions, see <a href="https://docs.aws.amazon.com/glue/latest/dg/add-job.html">Configuring job properties for Spark jobs</a> in the developer guide.</p></li>
861    /// <li>
862    /// <p>For the <code>Z.2X</code> worker type, each worker maps to 2 M-DPU (8vCPUs, 64 GB of memory) with 128 GB disk, and provides up to 8 Ray workers based on the autoscaler.</p></li>
863    /// </ul>
864    pub fn get_worker_type(&self) -> &::std::option::Option<crate::types::WorkerType> {
865        &self.worker_type
866    }
867    /// Adds a key-value pair to `code_gen_configuration_nodes`.
868    ///
869    /// To override the contents of this collection use [`set_code_gen_configuration_nodes`](Self::set_code_gen_configuration_nodes).
870    ///
871    /// <p>The representation of a directed acyclic graph on which both the Glue Studio visual component and Glue Studio code generation is based.</p>
872    pub fn code_gen_configuration_nodes(
873        mut self,
874        k: impl ::std::convert::Into<::std::string::String>,
875        v: crate::types::CodeGenConfigurationNode,
876    ) -> Self {
877        let mut hash_map = self.code_gen_configuration_nodes.unwrap_or_default();
878        hash_map.insert(k.into(), v);
879        self.code_gen_configuration_nodes = ::std::option::Option::Some(hash_map);
880        self
881    }
882    /// <p>The representation of a directed acyclic graph on which both the Glue Studio visual component and Glue Studio code generation is based.</p>
883    pub fn set_code_gen_configuration_nodes(
884        mut self,
885        input: ::std::option::Option<::std::collections::HashMap<::std::string::String, crate::types::CodeGenConfigurationNode>>,
886    ) -> Self {
887        self.code_gen_configuration_nodes = input;
888        self
889    }
890    /// <p>The representation of a directed acyclic graph on which both the Glue Studio visual component and Glue Studio code generation is based.</p>
891    pub fn get_code_gen_configuration_nodes(
892        &self,
893    ) -> &::std::option::Option<::std::collections::HashMap<::std::string::String, crate::types::CodeGenConfigurationNode>> {
894        &self.code_gen_configuration_nodes
895    }
896    /// <p>Indicates whether the job is run with a standard or flexible execution class. The standard execution-class is ideal for time-sensitive workloads that require fast job startup and dedicated resources.</p>
897    /// <p>The flexible execution class is appropriate for time-insensitive jobs whose start and completion times may vary.</p>
898    /// <p>Only jobs with Glue version 3.0 and above and command type <code>glueetl</code> will be allowed to set <code>ExecutionClass</code> to <code>FLEX</code>. The flexible execution class is available for Spark jobs.</p>
899    pub fn execution_class(mut self, input: crate::types::ExecutionClass) -> Self {
900        self.execution_class = ::std::option::Option::Some(input);
901        self
902    }
903    /// <p>Indicates whether the job is run with a standard or flexible execution class. The standard execution-class is ideal for time-sensitive workloads that require fast job startup and dedicated resources.</p>
904    /// <p>The flexible execution class is appropriate for time-insensitive jobs whose start and completion times may vary.</p>
905    /// <p>Only jobs with Glue version 3.0 and above and command type <code>glueetl</code> will be allowed to set <code>ExecutionClass</code> to <code>FLEX</code>. The flexible execution class is available for Spark jobs.</p>
906    pub fn set_execution_class(mut self, input: ::std::option::Option<crate::types::ExecutionClass>) -> Self {
907        self.execution_class = input;
908        self
909    }
910    /// <p>Indicates whether the job is run with a standard or flexible execution class. The standard execution-class is ideal for time-sensitive workloads that require fast job startup and dedicated resources.</p>
911    /// <p>The flexible execution class is appropriate for time-insensitive jobs whose start and completion times may vary.</p>
912    /// <p>Only jobs with Glue version 3.0 and above and command type <code>glueetl</code> will be allowed to set <code>ExecutionClass</code> to <code>FLEX</code>. The flexible execution class is available for Spark jobs.</p>
913    pub fn get_execution_class(&self) -> &::std::option::Option<crate::types::ExecutionClass> {
914        &self.execution_class
915    }
916    /// <p>The details for a source control configuration for a job, allowing synchronization of job artifacts to or from a remote repository.</p>
917    pub fn source_control_details(mut self, input: crate::types::SourceControlDetails) -> Self {
918        self.source_control_details = ::std::option::Option::Some(input);
919        self
920    }
921    /// <p>The details for a source control configuration for a job, allowing synchronization of job artifacts to or from a remote repository.</p>
922    pub fn set_source_control_details(mut self, input: ::std::option::Option<crate::types::SourceControlDetails>) -> Self {
923        self.source_control_details = input;
924        self
925    }
926    /// <p>The details for a source control configuration for a job, allowing synchronization of job artifacts to or from a remote repository.</p>
927    pub fn get_source_control_details(&self) -> &::std::option::Option<crate::types::SourceControlDetails> {
928        &self.source_control_details
929    }
930    /// <p>This field specifies a day of the week and hour for a maintenance window for streaming jobs. Glue periodically performs maintenance activities. During these maintenance windows, Glue will need to restart your streaming jobs.</p>
931    /// <p>Glue will restart the job within 3 hours of the specified maintenance window. For instance, if you set up the maintenance window for Monday at 10:00AM GMT, your jobs will be restarted between 10:00AM GMT to 1:00PM GMT.</p>
932    pub fn maintenance_window(mut self, input: impl ::std::convert::Into<::std::string::String>) -> Self {
933        self.maintenance_window = ::std::option::Option::Some(input.into());
934        self
935    }
936    /// <p>This field specifies a day of the week and hour for a maintenance window for streaming jobs. Glue periodically performs maintenance activities. During these maintenance windows, Glue will need to restart your streaming jobs.</p>
937    /// <p>Glue will restart the job within 3 hours of the specified maintenance window. For instance, if you set up the maintenance window for Monday at 10:00AM GMT, your jobs will be restarted between 10:00AM GMT to 1:00PM GMT.</p>
938    pub fn set_maintenance_window(mut self, input: ::std::option::Option<::std::string::String>) -> Self {
939        self.maintenance_window = input;
940        self
941    }
942    /// <p>This field specifies a day of the week and hour for a maintenance window for streaming jobs. Glue periodically performs maintenance activities. During these maintenance windows, Glue will need to restart your streaming jobs.</p>
943    /// <p>Glue will restart the job within 3 hours of the specified maintenance window. For instance, if you set up the maintenance window for Monday at 10:00AM GMT, your jobs will be restarted between 10:00AM GMT to 1:00PM GMT.</p>
944    pub fn get_maintenance_window(&self) -> &::std::option::Option<::std::string::String> {
945        &self.maintenance_window
946    }
947    /// Consumes the builder and constructs a [`CreateJobInput`](crate::operation::create_job::CreateJobInput).
948    pub fn build(self) -> ::std::result::Result<crate::operation::create_job::CreateJobInput, ::aws_smithy_types::error::operation::BuildError> {
949        ::std::result::Result::Ok(crate::operation::create_job::CreateJobInput {
950            name: self.name,
951            job_mode: self.job_mode,
952            job_run_queuing_enabled: self.job_run_queuing_enabled,
953            description: self.description,
954            log_uri: self.log_uri,
955            role: self.role,
956            execution_property: self.execution_property,
957            command: self.command,
958            default_arguments: self.default_arguments,
959            non_overridable_arguments: self.non_overridable_arguments,
960            connections: self.connections,
961            max_retries: self.max_retries,
962            allocated_capacity: self.allocated_capacity,
963            timeout: self.timeout,
964            max_capacity: self.max_capacity,
965            security_configuration: self.security_configuration,
966            tags: self.tags,
967            notification_property: self.notification_property,
968            glue_version: self.glue_version,
969            number_of_workers: self.number_of_workers,
970            worker_type: self.worker_type,
971            code_gen_configuration_nodes: self.code_gen_configuration_nodes,
972            execution_class: self.execution_class,
973            source_control_details: self.source_control_details,
974            maintenance_window: self.maintenance_window,
975        })
976    }
977}
978impl ::std::fmt::Debug for CreateJobInputBuilder {
979    fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
980        let mut formatter = f.debug_struct("CreateJobInputBuilder");
981        formatter.field("name", &self.name);
982        formatter.field("job_mode", &self.job_mode);
983        formatter.field("job_run_queuing_enabled", &self.job_run_queuing_enabled);
984        formatter.field("description", &self.description);
985        formatter.field("log_uri", &self.log_uri);
986        formatter.field("role", &self.role);
987        formatter.field("execution_property", &self.execution_property);
988        formatter.field("command", &self.command);
989        formatter.field("default_arguments", &self.default_arguments);
990        formatter.field("non_overridable_arguments", &self.non_overridable_arguments);
991        formatter.field("connections", &self.connections);
992        formatter.field("max_retries", &self.max_retries);
993        formatter.field("allocated_capacity", &self.allocated_capacity);
994        formatter.field("timeout", &self.timeout);
995        formatter.field("max_capacity", &self.max_capacity);
996        formatter.field("security_configuration", &self.security_configuration);
997        formatter.field("tags", &self.tags);
998        formatter.field("notification_property", &self.notification_property);
999        formatter.field("glue_version", &self.glue_version);
1000        formatter.field("number_of_workers", &self.number_of_workers);
1001        formatter.field("worker_type", &self.worker_type);
1002        formatter.field("code_gen_configuration_nodes", &"*** Sensitive Data Redacted ***");
1003        formatter.field("execution_class", &self.execution_class);
1004        formatter.field("source_control_details", &self.source_control_details);
1005        formatter.field("maintenance_window", &self.maintenance_window);
1006        formatter.finish()
1007    }
1008}