Class Job


  • public class Job
    extends com.pulumi.resources.CustomResource
    Provides 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
     
     package 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());
     
         }
     }
     
     
    ### Pythonshell Job
     
     package 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());
     
         }
     }
     
     
    ### Ray Job
     
     package 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());
     
         }
     }
     
     
    ### Scala Job
     
     package 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());
     
         }
     }
     
     
    ### Streaming Job
     
     package 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());
     
         }
     }
     
     
    ### Enabling CloudWatch Logs and Metrics
     
     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());
     
         }
     }
     
     
    ## 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 ```
    • Nested Class Summary

      • Nested classes/interfaces inherited from class com.pulumi.resources.CustomResource

        com.pulumi.resources.CustomResource.CustomResourceInternal
      • Nested classes/interfaces inherited from class com.pulumi.resources.Resource

        com.pulumi.resources.Resource.LazyField<T extends java.lang.Object>, com.pulumi.resources.Resource.LazyFields, com.pulumi.resources.Resource.ResourceInternal
    • Field Summary

      • Fields inherited from class com.pulumi.resources.Resource

        childResources, remote
    • Constructor Summary

      Constructors 
      Constructor Description
      Job​(java.lang.String name)  
      Job​(java.lang.String name, JobArgs args)  
      Job​(java.lang.String name, JobArgs args, com.pulumi.resources.CustomResourceOptions options)  
    • 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 Job get​(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()  
      • Methods inherited from class com.pulumi.resources.CustomResource

        getId, id, idFuture
      • Methods inherited from class com.pulumi.resources.Resource

        getChildResources, getResourceName, getResourceType, getUrn, pulumiChildResources, pulumiResourceName, pulumiResourceType, urn
      • Methods inherited from class java.lang.Object

        clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
    • 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.