Les traductions sont fournies par des outils de traduction automatique. En cas de conflit entre le contenu d'une traduction et celui de la version originale en anglais, la version anglaise prévaudra.
À utiliser CreateJob avec AWS SDK ou CLI
Les exemples de code suivants illustrent comment utiliser CreateJob.
Les exemples d’actions sont des extraits de code de programmes de plus grande envergure et doivent être exécutés en contexte. Vous pouvez voir cette action en contexte dans l’exemple de code suivant :
- .NET
-
- SDK for .NET
-
Note
Il y en a plus à ce sujet GitHub. Trouvez l’exemple complet et découvrez comment le configurer et l’exécuter dans le référentiel d’exemples de code AWS
. /// <summary> /// Create an AWS Glue job. /// </summary> /// <param name="jobName">The name of the job.</param> /// <param name="roleName">The name of the IAM role to be assumed by /// the job.</param> /// <param name="description">A description of the job.</param> /// <param name="scriptUrl">The URL to the script.</param> /// <returns>A Boolean value indicating the success of the action.</returns> public async Task<bool> CreateJobAsync(string dbName, string tableName, string bucketUrl, string jobName, string roleName, string description, string scriptUrl) { var command = new JobCommand { PythonVersion = "3", Name = "glueetl", ScriptLocation = scriptUrl, }; var arguments = new Dictionary<string, string> { { "--input_database", dbName }, { "--input_table", tableName }, { "--output_bucket_url", bucketUrl } }; var request = new CreateJobRequest { Command = command, DefaultArguments = arguments, Description = description, GlueVersion = "3.0", Name = jobName, NumberOfWorkers = 10, Role = roleName, WorkerType = "G.1X" }; var response = await _amazonGlue.CreateJobAsync(request); return response.HttpStatusCode == HttpStatusCode.OK; }-
Pour plus de détails sur l'API, consultez CreateJob la section Référence de AWS SDK for .NET l'API.
-
- C++
-
- SDK pour C++
-
Note
Il y en a plus à ce sujet GitHub. Trouvez l’exemple complet et découvrez comment le configurer et l’exécuter dans le référentiel d’exemples de code AWS
. Aws::Client::ClientConfiguration clientConfig; // Optional: Set to the AWS Region in which the bucket was created (overrides config file). // clientConfig.region = "us-east-1"; Aws::Glue::GlueClient client(clientConfig); Aws::Glue::Model::CreateJobRequest request; request.SetName(JOB_NAME); request.SetRole(roleArn); request.SetGlueVersion(GLUE_VERSION); Aws::Glue::Model::JobCommand command; command.SetName(JOB_COMMAND_NAME); command.SetPythonVersion(JOB_PYTHON_VERSION); command.SetScriptLocation( Aws::String("s3://") + bucketName + "/" + PYTHON_SCRIPT); request.SetCommand(command); Aws::Glue::Model::CreateJobOutcome outcome = client.CreateJob(request); if (outcome.IsSuccess()) { std::cout << "Successfully created the job." << std::endl; } else { std::cerr << "Error creating the job. " << outcome.GetError().GetMessage() << std::endl; deleteAssets(CRAWLER_NAME, CRAWLER_DATABASE_NAME, "", bucketName, clientConfig); return false; }-
Pour plus de détails sur l'API, consultez CreateJob la section Référence de AWS SDK for C++ l'API.
-
- CLI
-
- AWS CLI
-
Pour créer une tâche afin de transformer des données
L’exemple
create-jobsuivant crée une tâche de streaming qui exécute un script stocké dans S3.aws glue create-job \ --namemy-testing-job\ --roleAWSGlueServiceRoleDefault\ --command '{ \ "Name": "gluestreaming", \ "ScriptLocation": "s3://amzn-s3-demo-bucket/folder/" \ }' \ --regionus-east-1\ --outputjson\ --default-arguments '{ \ "--job-language":"scala", \ "--class":"GlueApp" \ }' \ --profilemy-profile\ --endpointhttps://glue---us-east-1.amazonaws.com.rproxy.goskope.comContenu de
test_script.scala:import com.amazonaws.services.glue.ChoiceOption import com.amazonaws.services.glue.GlueContext import com.amazonaws.services.glue.MappingSpec import com.amazonaws.services.glue.ResolveSpec import com.amazonaws.services.glue.errors.CallSite import com.amazonaws.services.glue.util.GlueArgParser import com.amazonaws.services.glue.util.Job import com.amazonaws.services.glue.util.JsonOptions import org.apache.spark.SparkContext import scala.collection.JavaConverters._ object GlueApp { def main(sysArgs: Array[String]) { val spark: SparkContext = new SparkContext() val glueContext: GlueContext = new GlueContext(spark) // @params: [JOB_NAME] val args = GlueArgParser.getResolvedOptions(sysArgs, Seq("JOB_NAME").toArray) Job.init(args("JOB_NAME"), glueContext, args.asJava) // @type: DataSource // @args: [database = "tempdb", table_name = "s3-source", transformation_ctx = "datasource0"] // @return: datasource0 // @inputs: [] val datasource0 = glueContext.getCatalogSource(database = "tempdb", tableName = "s3-source", redshiftTmpDir = "", transformationContext = "datasource0").getDynamicFrame() // @type: ApplyMapping // @args: [mapping = [("sensorid", "int", "sensorid", "int"), ("currenttemperature", "int", "currenttemperature", "int"), ("status", "string", "status", "string")], transformation_ctx = "applymapping1"] // @return: applymapping1 // @inputs: [frame = datasource0] val applymapping1 = datasource0.applyMapping(mappings = Seq(("sensorid", "int", "sensorid", "int"), ("currenttemperature", "int", "currenttemperature", "int"), ("status", "string", "status", "string")), caseSensitive = false, transformationContext = "applymapping1") // @type: SelectFields // @args: [paths = ["sensorid", "currenttemperature", "status"], transformation_ctx = "selectfields2"] // @return: selectfields2 // @inputs: [frame = applymapping1] val selectfields2 = applymapping1.selectFields(paths = Seq("sensorid", "currenttemperature", "status"), transformationContext = "selectfields2") // @type: ResolveChoice // @args: [choice = "MATCH_CATALOG", database = "tempdb", table_name = "my-s3-sink", transformation_ctx = "resolvechoice3"] // @return: resolvechoice3 // @inputs: [frame = selectfields2] val resolvechoice3 = selectfields2.resolveChoice(choiceOption = Some(ChoiceOption("MATCH_CATALOG")), database = Some("tempdb"), tableName = Some("my-s3-sink"), transformationContext = "resolvechoice3") // @type: DataSink // @args: [database = "tempdb", table_name = "my-s3-sink", transformation_ctx = "datasink4"] // @return: datasink4 // @inputs: [frame = resolvechoice3] val datasink4 = glueContext.getCatalogSink(database = "tempdb", tableName = "my-s3-sink", redshiftTmpDir = "", transformationContext = "datasink4").writeDynamicFrame(resolvechoice3) Job.commit() } }Sortie :
{ "Name": "my-testing-job" }Pour plus d'informations, consultez la section Création de jobs dans AWS Glue dans le Guide du développeur de AWS Glue.
-
Pour plus de détails sur l'API, consultez CreateJob
la section Référence des AWS CLI commandes.
-
- Java
-
- SDK pour Java 2.x
-
Note
Il y en a plus à ce sujet GitHub. Trouvez l’exemple complet et découvrez comment le configurer et l’exécuter dans le référentiel d’exemples de code AWS
. /** * Creates a new AWS Glue job. * * @param glueClient the AWS Glue client to use for the operation * @param jobName the name of the job to create * @param iam the IAM role to associate with the job * @param scriptLocation the location of the script to be used by the job * @throws GlueException if there is an error creating the job */ public static void createJob(GlueClient glueClient, String jobName, String iam, String scriptLocation) { try { JobCommand command = JobCommand.builder() .pythonVersion("3") .name("glueetl") .scriptLocation(scriptLocation) .build(); CreateJobRequest jobRequest = CreateJobRequest.builder() .description("A Job created by using the AWS SDK for Java V2") .glueVersion("2.0") .workerType(WorkerType.G_1_X) .numberOfWorkers(10) .name(jobName) .role(iam) .command(command) .build(); glueClient.createJob(jobRequest); System.out.println(jobName + " was successfully created."); } catch (GlueException e) { throw e; } }-
Pour plus de détails sur l'API, consultez CreateJob la section Référence de AWS SDK for Java 2.x l'API.
-
- JavaScript
-
- SDK pour JavaScript (v3)
-
Note
Il y en a plus à ce sujet GitHub. Trouvez l’exemple complet et découvrez comment le configurer et l’exécuter dans le référentiel d’exemples de code AWS
. const createJob = (name, role, scriptBucketName, scriptKey) => { const client = new GlueClient({}); const command = new CreateJobCommand({ Name: name, Role: role, Command: { Name: "glueetl", PythonVersion: "3", ScriptLocation: `s3://${scriptBucketName}/${scriptKey}`, }, GlueVersion: "3.0", }); return client.send(command); };-
Pour plus de détails sur l'API, consultez CreateJob la section Référence de AWS SDK for JavaScript l'API.
-
- PHP
-
- Kit SDK pour PHP
-
Note
Il y en a plus à ce sujet GitHub. Trouvez l’exemple complet et découvrez comment le configurer et l’exécuter dans le référentiel d’exemples de code AWS
. $role = $iamService->getRole("AWSGlueServiceRole-DocExample"); $jobName = 'test-job-' . $uniqid; $scriptLocation = "s3://$bucketName/run_job.py"; $job = $glueService->createJob($jobName, $role['Role']['Arn'], $scriptLocation); public function createJob($jobName, $role, $scriptLocation, $pythonVersion = '3', $glueVersion = '3.0'): Result { return $this->glueClient->createJob([ 'Name' => $jobName, 'Role' => $role, 'Command' => [ 'Name' => 'glueetl', 'ScriptLocation' => $scriptLocation, 'PythonVersion' => $pythonVersion, ], 'GlueVersion' => $glueVersion, ]); }-
Pour plus de détails sur l'API, consultez CreateJob la section Référence de AWS SDK pour PHP l'API.
-
- PowerShell
-
- Outils pour PowerShell V4
-
Exemple 1 : Cet exemple crée une nouvelle tâche dans AWS Glue. La valeur du nom de commande est toujours
glueetl. AWS Glue prend en charge l'exécution de scripts de travail écrits en Python ou Scala. Dans cet exemple, le script de tâche (MyTestGlueJob.py) est écrit en Python. Les paramètres Python sont spécifiés dans la$DefArgsvariable, puis transmis à la PowerShell commande contenue dans leDefaultArgumentsparamètre, qui accepte une table de hachage. Les paramètres de la$JobParamsvariable proviennent de l' CreateJob API, décrite dans la rubrique Jobs (https://docs.aws.amazon.com/glue/latest/dg/aws-glue-api-jobs-job.html) de la référence de l'API AWS Glue.$Command = New-Object Amazon.Glue.Model.JobCommand $Command.Name = 'glueetl' $Command.ScriptLocation = 's3://amzn-s3-demo-source-bucket/admin/MyTestGlueJob.py' $Command $Source = "source_test_table" $Target = "target_test_table" $Connections = $Source, $Target $DefArgs = @{ '--TempDir' = 's3://amzn-s3-demo-bucket/admin' '--job-bookmark-option' = 'job-bookmark-disable' '--job-language' = 'python' } $DefArgs $ExecutionProp = New-Object Amazon.Glue.Model.ExecutionProperty $ExecutionProp.MaxConcurrentRuns = 1 $ExecutionProp $JobParams = @{ "AllocatedCapacity" = "5" "Command" = $Command "Connections_Connection" = $Connections "DefaultArguments" = $DefArgs "Description" = "This is a test" "ExecutionProperty" = $ExecutionProp "MaxRetries" = "1" "Name" = "MyOregonTestGlueJob" "Role" = "Amazon-GlueServiceRoleForSSM" "Timeout" = "20" } New-GlueJob @JobParams-
Pour plus de détails sur l'API, consultez CreateJob la section Outils AWS pour PowerShell Cmdlet Reference (V4).
-
- Outils pour PowerShell V5
-
Exemple 1 : Cet exemple crée une nouvelle tâche dans AWS Glue. La valeur du nom de commande est toujours
glueetl. AWS Glue prend en charge l'exécution de scripts de travail écrits en Python ou Scala. Dans cet exemple, le script de tâche (MyTestGlueJob.py) est écrit en Python. Les paramètres Python sont spécifiés dans la$DefArgsvariable, puis transmis à la PowerShell commande contenue dans leDefaultArgumentsparamètre, qui accepte une table de hachage. Les paramètres de la$JobParamsvariable proviennent de l' CreateJob API, décrite dans la rubrique Jobs (https://docs.aws.amazon.com/glue/latest/dg/aws-glue-api-jobs-job.html) de la référence de l'API AWS Glue.$Command = New-Object Amazon.Glue.Model.JobCommand $Command.Name = 'glueetl' $Command.ScriptLocation = 's3://amzn-s3-demo-source-bucket/admin/MyTestGlueJob.py' $Command $Source = "source_test_table" $Target = "target_test_table" $Connections = $Source, $Target $DefArgs = @{ '--TempDir' = 's3://amzn-s3-demo-bucket/admin' '--job-bookmark-option' = 'job-bookmark-disable' '--job-language' = 'python' } $DefArgs $ExecutionProp = New-Object Amazon.Glue.Model.ExecutionProperty $ExecutionProp.MaxConcurrentRuns = 1 $ExecutionProp $JobParams = @{ "AllocatedCapacity" = "5" "Command" = $Command "Connections_Connection" = $Connections "DefaultArguments" = $DefArgs "Description" = "This is a test" "ExecutionProperty" = $ExecutionProp "MaxRetries" = "1" "Name" = "MyOregonTestGlueJob" "Role" = "Amazon-GlueServiceRoleForSSM" "Timeout" = "20" } New-GlueJob @JobParams-
Pour plus de détails sur l'API, consultez CreateJob la section Outils AWS pour PowerShell Cmdlet Reference (V5).
-
- Python
-
- Kit SDK for Python (Boto3)
-
Note
Il y en a plus à ce sujet GitHub. Trouvez l’exemple complet et découvrez comment le configurer et l’exécuter dans le référentiel d’exemples de code AWS
. class GlueWrapper: """Encapsulates AWS Glue actions.""" def __init__(self, glue_client): """ :param glue_client: A Boto3 Glue client. """ self.glue_client = glue_client def create_job(self, name, description, role_arn, script_location): """ Creates a job definition for an extract, transform, and load (ETL) job that can be run by AWS Glue. :param name: The name of the job definition. :param description: The description of the job definition. :param role_arn: The ARN of an IAM role that grants AWS Glue the permissions it requires to run the job. :param script_location: The Amazon S3 URL of a Python ETL script that is run as part of the job. The script defines how the data is transformed. """ try: self.glue_client.create_job( Name=name, Description=description, Role=role_arn, Command={ "Name": "glueetl", "ScriptLocation": script_location, "PythonVersion": "3", }, GlueVersion="3.0", ) except ClientError as err: logger.error( "Couldn't create job %s. Here's why: %s: %s", name, err.response["Error"]["Code"], err.response["Error"]["Message"], ) raise-
Pour plus de détails sur l'API, consultez CreateJob la section Référence de l'API AWS SDK pour Python (Boto3).
-
- Ruby
-
- Kit SDK pour Ruby
-
Note
Il y en a plus à ce sujet GitHub. Trouvez l’exemple complet et découvrez comment le configurer et l’exécuter dans le référentiel d’exemples de code AWS
. # The `GlueWrapper` class serves as a wrapper around the AWS Glue API, providing a simplified interface for common operations. # It encapsulates the functionality of the AWS SDK for Glue and provides methods for interacting with Glue crawlers, databases, tables, jobs, and S3 resources. # The class initializes with a Glue client and a logger, allowing it to make API calls and log any errors or informational messages. class GlueWrapper def initialize(glue_client, logger) @glue_client = glue_client @logger = logger end # Creates a new job with the specified configuration. # # @param name [String] The name of the job. # @param description [String] The description of the job. # @param role_arn [String] The ARN of the IAM role to be used by the job. # @param script_location [String] The location of the ETL script for the job. # @return [void] def create_job(name, description, role_arn, script_location) @glue_client.create_job( name: name, description: description, role: role_arn, command: { name: 'glueetl', script_location: script_location, python_version: '3' }, glue_version: '3.0' ) rescue Aws::Glue::Errors::GlueException => e @logger.error("Glue could not create job #{name}: \n#{e.message}") raise end-
Pour plus de détails sur l'API, consultez CreateJob la section Référence de AWS SDK pour Ruby l'API.
-
- Rust
-
- SDK pour Rust
-
Note
Il y en a plus à ce sujet GitHub. Trouvez l’exemple complet et découvrez comment le configurer et l’exécuter dans le référentiel d’exemples de code AWS
. let create_job = glue .create_job() .name(self.job()) .role(self.iam_role.expose_secret()) .command( JobCommand::builder() .name("glueetl") .python_version("3") .script_location(format!("s3://{}/job.py", self.bucket())) .build(), ) .glue_version("3.0") .send() .await .map_err(GlueMvpError::from_glue_sdk)?; let job_name = create_job.name().ok_or_else(|| { GlueMvpError::Unknown("Did not get job name after creating job".into()) })?;-
Pour plus de détails sur l'API, consultez CreateJob
la section Référence de l'API AWS SDK pour Rust.
-
- SAP ABAP
-
- Kit SDK pour SAP ABAP
-
Note
Il y en a plus à ce sujet GitHub. Trouvez l’exemple complet et découvrez comment le configurer et l’exécuter dans le référentiel d’exemples de code AWS
. TRY. " iv_job_name = 'my-etl-job' " iv_description = 'ETL job for data transformation' " iv_role_arn = 'arn:aws:iam::123456789012:role/AWSGlueServiceRole-Test' " iv_script_location = 's3://example-bucket/scripts/my-script.py' DATA(lo_command) = NEW /aws1/cl_glujobcommand( iv_name = 'glueetl' iv_scriptlocation = iv_script_location iv_pythonversion = '3' ). lo_glu->createjob( iv_name = iv_job_name iv_description = iv_description iv_role = iv_role_arn io_command = lo_command iv_glueversion = '3.0' ). MESSAGE 'Job created successfully.' TYPE 'I'. CATCH /aws1/cx_glualreadyexistsex. MESSAGE 'Job already exists.' TYPE 'E'. CATCH /aws1/cx_gluinvalidinputex INTO DATA(lo_invalid_ex). DATA(lv_invalid_error) = lo_invalid_ex->if_message~get_longtext( ). MESSAGE lv_invalid_error TYPE 'E'. CATCH /aws1/cx_gluinternalserviceex INTO DATA(lo_internal_ex). DATA(lv_internal_error) = lo_internal_ex->if_message~get_longtext( ). MESSAGE lv_internal_error TYPE 'E'. CATCH /aws1/cx_gluoperationtimeoutex INTO DATA(lo_timeout_ex). DATA(lv_timeout_error) = lo_timeout_ex->if_message~get_longtext( ). MESSAGE lv_timeout_error TYPE 'E'. CATCH /aws1/cx_gluresrcnumlmtexcdex INTO DATA(lo_limit_ex). DATA(lv_limit_error) = lo_limit_ex->if_message~get_longtext( ). MESSAGE lv_limit_error TYPE 'E'. ENDTRY.-
Pour plus de détails sur l'API, consultez CreateJob le AWS SDK pour la référence de l'API SAP ABAP.
-
- Swift
-
- Kit SDK pour Swift
-
Note
Il y en a plus à ce sujet GitHub. Trouvez l’exemple complet et découvrez comment le configurer et l’exécuter dans le référentiel d’exemples de code AWS
. import AWSClientRuntime import AWSGlue /// Create a new AWS Glue job. /// /// - Parameters: /// - glueClient: The AWS Glue client to use. /// - jobName: The name to give the new job. /// - role: The IAM role for the job to use when accessing AWS services. /// - scriptLocation: The AWS S3 URI of the script to be run by the job. /// /// - Returns: `true` if the job is created successfully, otherwise `false`. func createJob(glueClient: GlueClient, name jobName: String, role: String, scriptLocation: String) async -> Bool { let command = GlueClientTypes.JobCommand( name: "glueetl", pythonVersion: "3", scriptLocation: scriptLocation ) do { _ = try await glueClient.createJob( input: CreateJobInput( command: command, description: "Created by the AWS SDK for Swift Glue basic scenario example.", glueVersion: "3.0", name: jobName, numberOfWorkers: 10, role: role, workerType: .g1x ) ) } catch { return false } return true }-
Pour plus de détails sur l'API, consultez CreateJob
la section Référence de l'API AWS SDK for Swift.
-
Pour obtenir la liste complète des guides du développeur du AWS SDK et des exemples de code, consultezL'utilisation de ce service avec AWS Kit SDK. Cette rubrique comprend également des informations sur le démarrage et sur les versions précédentes du kit SDK.