Package com.pulumi.aws.glue
Class Job
- java.lang.Object
-
- com.pulumi.resources.Resource
-
- com.pulumi.resources.CustomResource
-
- com.pulumi.aws.glue.Job
-
public class Job extends com.pulumi.resources.CustomResourceProvides a Glue Job resource. > Glue functionality, such as monitoring and logging of jobs, is typically managed with the `defaultArguments` argument. See the [Special Parameters Used by AWS Glue](https://docs.aws.amazon.com/glue/latest/dg/aws-glue-programming-etl-glue-arguments.html) topic in the Glue developer guide for additional information. ## Example Usage ### Python Glue Job
### Pythonshell Jobpackage generated_program; import com.pulumi.Context; import com.pulumi.Pulumi; import com.pulumi.core.Output; import com.pulumi.aws.iam.Role; import com.pulumi.aws.iam.RoleArgs; import com.pulumi.aws.glue.Job; import com.pulumi.aws.glue.JobArgs; import com.pulumi.aws.glue.inputs.JobCommandArgs; import com.pulumi.aws.glue.inputs.JobNotificationPropertyArgs; import com.pulumi.aws.glue.inputs.JobExecutionPropertyArgs; import com.pulumi.aws.s3.BucketObjectv2; import com.pulumi.aws.s3.BucketObjectv2Args; import com.pulumi.asset.FileAsset; import static com.pulumi.codegen.internal.Serialization.*; import java.util.ArrayList; import java.util.Arrays; import java.util.Map; import java.io.File; import java.nio.file.Files; import java.nio.file.Paths; public class App { public static void main(String[] args) { Pulumi.run(App::stack); } public static void stack(Context ctx) { // IAM role for Glue jobs var glueJobRole = new Role("glueJobRole", RoleArgs.builder() .name("glue-job-role") .assumeRolePolicy(serializeJson( jsonObject( jsonProperty("Version", "2012-10-17"), jsonProperty("Statement", jsonArray(jsonObject( jsonProperty("Action", "sts:AssumeRole"), jsonProperty("Effect", "Allow"), jsonProperty("Principal", jsonObject( jsonProperty("Service", "glue.amazonaws.com") )) ))) ))) .build()); var etlJob = new Job("etlJob", JobArgs.builder() .command(JobCommandArgs.builder() .scriptLocation(String.format("s3://%s/jobs/etl_job.py", glueScripts.bucket())) .name("glueetl") .pythonVersion("3") .build()) .notificationProperty(JobNotificationPropertyArgs.builder() .notifyDelayAfter(3) .build()) .executionProperty(JobExecutionPropertyArgs.builder() .maxConcurrentRuns(1) .build()) .name("example-etl-job") .description("An example Glue ETL job") .roleArn(glueJobRole.arn()) .glueVersion("5.0") .maxRetries(0) .timeout(2880) .numberOfWorkers(2) .workerType("G.1X") .connections(example.name()) .executionClass("STANDARD") .defaultArguments(Map.ofEntries( Map.entry("--job-language", "python"), Map.entry("--continuous-log-logGroup", "/aws-glue/jobs"), Map.entry("--enable-continuous-cloudwatch-log", "true"), Map.entry("--enable-continuous-log-filter", "true"), Map.entry("--enable-metrics", ""), Map.entry("--enable-auto-scaling", "true") )) .tags(Map.of("ManagedBy", "AWS")) .build()); var glueEtlScript = new BucketObjectv2("glueEtlScript", BucketObjectv2Args.builder() .bucket(glueScripts.id()) .key("jobs/etl_job.py") .source(new FileAsset("jobs/etl_job.py")) .build()); } }
### Ray Jobpackage generated_program; import com.pulumi.Context; import com.pulumi.Pulumi; import com.pulumi.core.Output; import com.pulumi.aws.iam.Role; import com.pulumi.aws.iam.RoleArgs; import com.pulumi.aws.glue.Job; import com.pulumi.aws.glue.JobArgs; import com.pulumi.aws.glue.inputs.JobCommandArgs; import com.pulumi.aws.glue.inputs.JobExecutionPropertyArgs; import com.pulumi.aws.s3.BucketObjectv2; import com.pulumi.aws.s3.BucketObjectv2Args; import com.pulumi.asset.FileAsset; import static com.pulumi.codegen.internal.Serialization.*; import java.util.ArrayList; import java.util.Arrays; import java.util.Map; import java.io.File; import java.nio.file.Files; import java.nio.file.Paths; public class App { public static void main(String[] args) { Pulumi.run(App::stack); } public static void stack(Context ctx) { // IAM role for Glue jobs var glueJobRole = new Role("glueJobRole", RoleArgs.builder() .name("glue-job-role") .assumeRolePolicy(serializeJson( jsonObject( jsonProperty("Version", "2012-10-17"), jsonProperty("Statement", jsonArray(jsonObject( jsonProperty("Action", "sts:AssumeRole"), jsonProperty("Effect", "Allow"), jsonProperty("Principal", jsonObject( jsonProperty("Service", "glue.amazonaws.com") )) ))) ))) .build()); var pythonShellJob = new Job("pythonShellJob", JobArgs.builder() .command(JobCommandArgs.builder() .scriptLocation(String.format("s3://%s/jobs/shell_job.py", glueScripts.bucket())) .name("pythonshell") .pythonVersion("3.9") .build()) .executionProperty(JobExecutionPropertyArgs.builder() .maxConcurrentRuns(1) .build()) .name("example-python-shell-job") .description("An example Python shell job") .roleArn(glueJobRole.arn()) .maxCapacity(0.0625) .maxRetries(0) .timeout(2880) .connections(example.name()) .defaultArguments(Map.ofEntries( Map.entry("--job-language", "python"), Map.entry("--continuous-log-logGroup", "/aws-glue/jobs"), Map.entry("--enable-continuous-cloudwatch-log", "true"), Map.entry("library-set", "analytics") )) .tags(Map.of("ManagedBy", "AWS")) .build()); var pythonShellScript = new BucketObjectv2("pythonShellScript", BucketObjectv2Args.builder() .bucket(glueScripts.id()) .key("jobs/shell_job.py") .source(new FileAsset("jobs/shell_job.py")) .build()); } }
### Scala Jobpackage generated_program; import com.pulumi.Context; import com.pulumi.Pulumi; import com.pulumi.core.Output; import com.pulumi.aws.glue.Job; import com.pulumi.aws.glue.JobArgs; import com.pulumi.aws.glue.inputs.JobCommandArgs; import java.util.ArrayList; import java.util.Arrays; import java.util.Map; import java.io.File; import java.nio.file.Files; import java.nio.file.Paths; public class App { public static void main(String[] args) { Pulumi.run(App::stack); } public static void stack(Context ctx) { var example = new Job("example", JobArgs.builder() .command(JobCommandArgs.builder() .name("glueray") .pythonVersion("3.9") .runtime("Ray2.4") .scriptLocation(String.format("s3://%s/example.py", exampleAwsS3Bucket.bucket())) .build()) .name("example") .roleArn(exampleAwsIamRole.arn()) .glueVersion("4.0") .workerType("Z.2X") .build()); } }
### Streaming Jobpackage generated_program; import com.pulumi.Context; import com.pulumi.Pulumi; import com.pulumi.core.Output; import com.pulumi.aws.glue.Job; import com.pulumi.aws.glue.JobArgs; import com.pulumi.aws.glue.inputs.JobCommandArgs; import java.util.ArrayList; import java.util.Arrays; import java.util.Map; import java.io.File; import java.nio.file.Files; import java.nio.file.Paths; public class App { public static void main(String[] args) { Pulumi.run(App::stack); } public static void stack(Context ctx) { var example = new Job("example", JobArgs.builder() .command(JobCommandArgs.builder() .scriptLocation(String.format("s3://%s/example.scala", exampleAwsS3Bucket.bucket())) .build()) .name("example") .roleArn(exampleAwsIamRole.arn()) .defaultArguments(Map.of("--job-language", "scala")) .build()); } }
### Enabling CloudWatch Logs and Metricspackage generated_program; import com.pulumi.Context; import com.pulumi.Pulumi; import com.pulumi.core.Output; import com.pulumi.aws.glue.Job; import com.pulumi.aws.glue.JobArgs; import com.pulumi.aws.glue.inputs.JobCommandArgs; import java.util.ArrayList; import java.util.Arrays; import java.util.Map; import java.io.File; import java.nio.file.Files; import java.nio.file.Paths; public class App { public static void main(String[] args) { Pulumi.run(App::stack); } public static void stack(Context ctx) { var example = new Job("example", JobArgs.builder() .command(JobCommandArgs.builder() .name("gluestreaming") .scriptLocation(String.format("s3://%s/example.script", exampleAwsS3Bucket.bucket())) .build()) .name("example streaming job") .roleArn(exampleAwsIamRole.arn()) .build()); } }
## Import ### Identity Schema #### Required * `name` (String) Name of the Glue Job. #### Optional * `accountId` (String) AWS account ID. * `region` (String) Region where this resource is managed. Using `pulumi import`, import Glue Jobs using `name`. For example: ```sh $ pulumi import aws:glue/job:Job example example ```package generated_program; import com.pulumi.Context; import com.pulumi.Pulumi; import com.pulumi.core.Output; import com.pulumi.aws.cloudwatch.LogGroup; import com.pulumi.aws.cloudwatch.LogGroupArgs; import com.pulumi.aws.glue.Job; import com.pulumi.aws.glue.JobArgs; import java.util.ArrayList; import java.util.Arrays; import java.util.Map; import java.io.File; import java.nio.file.Files; import java.nio.file.Paths; public class App { public static void main(String[] args) { Pulumi.run(App::stack); } public static void stack(Context ctx) { var example = new LogGroup("example", LogGroupArgs.builder() .name("example") .retentionInDays(14) .build()); var exampleJob = new Job("exampleJob", JobArgs.builder() .defaultArguments(Map.ofEntries( Map.entry("--continuous-log-logGroup", example.name()), Map.entry("--enable-continuous-cloudwatch-log", "true"), Map.entry("--enable-continuous-log-filter", "true"), Map.entry("--enable-metrics", "") )) .build()); } }
-
-
Method Summary
All Methods Static Methods Instance Methods Concrete Methods Modifier and Type Method Description com.pulumi.core.Output<java.lang.String>arn()com.pulumi.core.Output<JobCommand>command()com.pulumi.core.Output<java.util.Optional<java.util.List<java.lang.String>>>connections()com.pulumi.core.Output<java.util.Optional<java.util.Map<java.lang.String,java.lang.String>>>defaultArguments()com.pulumi.core.Output<java.util.Optional<java.lang.String>>description()com.pulumi.core.Output<java.util.Optional<java.lang.String>>executionClass()com.pulumi.core.Output<JobExecutionProperty>executionProperty()static Jobget(java.lang.String name, com.pulumi.core.Output<java.lang.String> id, JobState state, com.pulumi.resources.CustomResourceOptions options)Get an existing Host resource's state with the given name, ID, and optional extra properties used to qualify the lookup.com.pulumi.core.Output<java.lang.String>glueVersion()com.pulumi.core.Output<java.lang.String>jobMode()com.pulumi.core.Output<java.util.Optional<java.lang.Boolean>>jobRunQueuingEnabled()com.pulumi.core.Output<java.util.Optional<java.lang.String>>maintenanceWindow()com.pulumi.core.Output<java.lang.Double>maxCapacity()com.pulumi.core.Output<java.util.Optional<java.lang.Integer>>maxRetries()com.pulumi.core.Output<java.lang.String>name()com.pulumi.core.Output<java.util.Optional<java.util.Map<java.lang.String,java.lang.String>>>nonOverridableArguments()com.pulumi.core.Output<JobNotificationProperty>notificationProperty()com.pulumi.core.Output<java.lang.Integer>numberOfWorkers()com.pulumi.core.Output<java.lang.String>region()com.pulumi.core.Output<java.lang.String>roleArn()com.pulumi.core.Output<java.util.Optional<java.lang.String>>securityConfiguration()com.pulumi.core.Output<java.util.Optional<JobSourceControlDetails>>sourceControlDetails()com.pulumi.core.Output<java.util.Optional<java.util.Map<java.lang.String,java.lang.String>>>tags()com.pulumi.core.Output<java.util.Map<java.lang.String,java.lang.String>>tagsAll()com.pulumi.core.Output<java.lang.Integer>timeout()com.pulumi.core.Output<java.lang.String>workerType()
-
-
-
Constructor Detail
-
Job
public Job(java.lang.String name)
- Parameters:
name- The _unique_ name of the resulting resource.
-
Job
public Job(java.lang.String name, JobArgs args)- Parameters:
name- The _unique_ name of the resulting resource.args- The arguments to use to populate this resource's properties.
-
Job
public Job(java.lang.String name, JobArgs args, @Nullable com.pulumi.resources.CustomResourceOptions options)- Parameters:
name- The _unique_ name of the resulting resource.args- The arguments to use to populate this resource's properties.options- A bag of options that control this resource's behavior.
-
-
Method Detail
-
arn
public com.pulumi.core.Output<java.lang.String> arn()
- Returns:
- ARN of Glue Job
-
command
public com.pulumi.core.Output<JobCommand> command()
- Returns:
- Command of the job. Defined below.
-
connections
public com.pulumi.core.Output<java.util.Optional<java.util.List<java.lang.String>>> connections()
- Returns:
- List of connections used for this job.
-
defaultArguments
public com.pulumi.core.Output<java.util.Optional<java.util.Map<java.lang.String,java.lang.String>>> defaultArguments()
- Returns:
- Map of default arguments for this job. You can specify arguments here that your own job-execution script consumes, as well as arguments that AWS Glue itself consumes. For information about how to specify and consume your own Job arguments, see the [Calling AWS Glue APIs in Python](http://docs.aws.amazon.com/glue/latest/dg/aws-glue-programming-python-calling.html) topic in the developer guide. For information about the key-value pairs that AWS Glue consumes to set up your job, see the [Special Parameters Used by AWS Glue](http://docs.aws.amazon.com/glue/latest/dg/aws-glue-programming-python-glue-arguments.html) topic in the developer guide.
-
description
public com.pulumi.core.Output<java.util.Optional<java.lang.String>> description()
- Returns:
- Description of the job.
-
executionClass
public com.pulumi.core.Output<java.util.Optional<java.lang.String>> executionClass()
- Returns:
- Execution class for the job. The standard execution class is ideal for time-sensitive workloads that require fast job startup and dedicated resources. Valid value: `FLEX`, `STANDARD`.
-
executionProperty
public com.pulumi.core.Output<JobExecutionProperty> executionProperty()
- Returns:
- Execution property of the job. Defined below.
-
glueVersion
public com.pulumi.core.Output<java.lang.String> glueVersion()
- Returns:
- Version of glue to use, for example "1.0". Ray jobs should set this to 4.0 or greater. For information about available versions, see the [AWS Glue Release Notes](https://docs.aws.amazon.com/glue/latest/dg/release-notes.html).
-
jobMode
public com.pulumi.core.Output<java.lang.String> jobMode()
- Returns:
- How a job was created. Valid values are `SCRIPT`, `NOTEBOOK` and `VISUAL`.
-
jobRunQueuingEnabled
public com.pulumi.core.Output<java.util.Optional<java.lang.Boolean>> jobRunQueuingEnabled()
- Returns:
- Whether job run queuing is enabled for the job runs for this job. 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.
-
maintenanceWindow
public com.pulumi.core.Output<java.util.Optional<java.lang.String>> maintenanceWindow()
- Returns:
- Day of the week and hour for the maintenance window for streaming jobs.
-
maxCapacity
public com.pulumi.core.Output<java.lang.Double> maxCapacity()
- Returns:
- Maximum number of AWS Glue data processing units (DPUs) that can be allocated when this job runs. `Required` when `pythonshell` is set, accept either `0.0625` or `1.0`. Use `numberOfWorkers` and `workerType` arguments instead with `glueVersion` `2.0` and above.
-
maxRetries
public com.pulumi.core.Output<java.util.Optional<java.lang.Integer>> maxRetries()
- Returns:
- Maximum number of times to retry this job if it fails.
-
name
public com.pulumi.core.Output<java.lang.String> name()
- Returns:
- Name you assign to this job. It must be unique in your account.
-
nonOverridableArguments
public com.pulumi.core.Output<java.util.Optional<java.util.Map<java.lang.String,java.lang.String>>> nonOverridableArguments()
- Returns:
- Non-overridable arguments for this job, specified as name-value pairs.
-
notificationProperty
public com.pulumi.core.Output<JobNotificationProperty> notificationProperty()
- Returns:
- Notification property of the job. Defined below.
-
numberOfWorkers
public com.pulumi.core.Output<java.lang.Integer> numberOfWorkers()
- Returns:
- Number of workers of a defined workerType that are allocated when a job runs.
-
region
public com.pulumi.core.Output<java.lang.String> region()
- Returns:
- Region where this resource will be [managed](https://docs.aws.amazon.com/general/latest/gr/rande.html#regional-endpoints). Defaults to the Region set in the provider configuration.
-
roleArn
public com.pulumi.core.Output<java.lang.String> roleArn()
- Returns:
- ARN of the IAM role associated with this job.
-
securityConfiguration
public com.pulumi.core.Output<java.util.Optional<java.lang.String>> securityConfiguration()
- Returns:
- Name of the Security Configuration to be associated with the job.
-
sourceControlDetails
public com.pulumi.core.Output<java.util.Optional<JobSourceControlDetails>> sourceControlDetails()
- Returns:
- Details for a source control configuration for a job, allowing synchronization of job artifacts to or from a remote repository. Defined below.
-
tags
public com.pulumi.core.Output<java.util.Optional<java.util.Map<java.lang.String,java.lang.String>>> tags()
- Returns:
- Key-value map of resource tags. If configured with a provider `defaultTags` configuration block present, tags with matching keys will overwrite those defined at the provider-level.
-
tagsAll
public com.pulumi.core.Output<java.util.Map<java.lang.String,java.lang.String>> tagsAll()
- Returns:
- Map of tags assigned to the resource, including those inherited from the provider `defaultTags` configuration block.
-
timeout
public com.pulumi.core.Output<java.lang.Integer> timeout()
- Returns:
- Job timeout in minutes. The default is 2880 minutes (48 hours) for `glueetl` and `pythonshell` jobs, and 0 (unlimited) for `gluestreaming` jobs. Leave this attribute argument unconfigured for `glueray` jobs.
-
workerType
public com.pulumi.core.Output<java.lang.String> workerType()
- Returns:
- Type of predefined worker that is allocated when a job runs. Valid values: `Standard`, `G.1X`, `G.2X`, `G.025X`, `G.4X`, `G.8X`, `G.12X`, `G.16X`, `R.1X`, `R.2X`, `R.4X`, `R.8X`, `Z.2X` (Ray jobs). See the [AWS documentation](https://docs.aws.amazon.com/glue/latest/dg/worker-types.html) for details.
-
get
public static Job get(java.lang.String name, com.pulumi.core.Output<java.lang.String> id, @Nullable JobState state, @Nullable com.pulumi.resources.CustomResourceOptions options)
Get an existing Host resource's state with the given name, ID, and optional extra properties used to qualify the lookup.- Parameters:
name- The _unique_ name of the resulting resource.id- The _unique_ provider ID of the resource to lookup.state-options- Optional settings to control the behavior of the CustomResource.
-
-