

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.

# Exécution de tâches ETL sur des tables Amazon S3 avec AWS Glue
<a name="s3-tables-integrating-glue"></a>

AWS Glue est un service d'intégration de données sans serveur qui permet aux utilisateurs d'outils d'analyse de découvrir, de préparer, de déplacer et d'intégrer facilement des données provenant de sources multiples. Vous pouvez utiliser AWS Glue des tâches pour exécuter des pipelines d'extraction, de transformation et de chargement (ETL) afin de charger des données dans vos lacs de données. Pour plus d'informations AWS Glue, voir [Qu'est-ce que c'est AWS Glue ?](https://docs.aws.amazon.com//glue/latest/dg/what-is-glue.html) dans le *Guide AWS Glue du développeur*.

Une AWS Glue tâche encapsule un script qui se connecte à vos données source, les traite, puis les écrit dans votre cible de données. En général, une tâche exécute les scripts d'extraction, de transformation et de chargement (ETL). Les tâches peuvent exécuter des scripts conçus pour les environnements d’exécution Apache Spark. Vous pouvez surveiller les exécutions de tâche pour comprendre les métriques d’exécution telles que le statut d’achèvement, la durée et l’heure de début.

Vous pouvez utiliser des AWS Glue tâches pour traiter les données de vos tables S3 en vous connectant à vos tables via l'intégration avec les services d' AWS analyse, ou en vous connectant directement à l'aide du point de Iceberg REST terminaison Amazon S3 Tables ou du catalogue de tables Amazon S3 pourApache Iceberg. Ce guide décrit les étapes de base pour commencer à utiliser AWS Glue S3 Tables, notamment :

**Topics**
+ [Étape 1 : prérequis](#glue-etl-prereqs)
+ [Étape 2 : création d’un script pour se connecter aux compartiments de table](#glue-etl-script)
+ [Étape 3 — Création d'une AWS Glue tâche qui interroge les tables](#glue-etl-job)

Choisissez votre méthode d'accès en fonction des exigences spécifiques de votre poste AWS Glue ETL :
+ **AWS intégration des services d'analyse (recommandée)** : recommandée lorsque vous avez besoin d'une gestion centralisée des métadonnées entre plusieurs services AWS d'analyse, lorsque vous devez tirer parti des autorisations existantes du catalogue de AWS Glue données et éventuellement de Lake Formation, ou lorsque vous créez des pipelines ETL de production qui s'intègrent à d'autres AWS services tels qu'Athena ou Amazon EMR.
+ Point de **Iceberg RESTterminaison Amazon S3 Tables** : recommandé lorsque vous devez vous connecter à des tables S3 à partir de moteurs de requêtes tiers qui prennent en charge Apache Iceberg ou créent des applications ETL personnalisées nécessitant un accès direct à l'API REST, ou lorsque vous souhaitez contrôler les opérations du catalogue sans dépendre du catalogue de AWS Glue données.
+ **Catalogue d’Amazon S3 Tables pour Apache Iceberg** : à utiliser uniquement pour les applications héritées ou pour des scénarios de programmation spécifiques nécessitant la bibliothèque client Java. Cette méthode n'est pas recommandée pour les nouvelles implémentations de tâches AWS Glue ETL en raison de la complexité et de la gestion des `JAR` dépendances supplémentaires.

**Note**  
S3 Tables est pris en charge sur [AWS Glue version 5.0 ou supérieure](https://docs.aws.amazon.com//glue/latest/dg/release-notes.html).

## Étape 1 : prérequis
<a name="glue-etl-prereqs"></a>

Avant de pouvoir interroger des tables à partir d'une AWS Glue tâche, vous devez configurer un rôle IAM qui AWS Glue peut être utilisé pour exécuter la tâche. Choisissez votre méthode d’accès pour voir les prérequis spécifiques à cette méthode.

------
#### [ AWS analytics services integration (Recommended) ]

Conditions préalables requises pour utiliser l'intégration AWS analytique de S3 Tables pour exécuter des AWS Glue tâches.
+ [Intégrez vos compartiments de tables avec les services d’analytique AWS](s3-tables-integrating-aws.md).
+ [Créez un rôle IAM pour AWS Glue](https://docs.aws.amazon.com//glue/latest/dg/create-an-iam-role.html).
  + Attachez la stratégie gérée par `AmazonS3TablesFullAccess` au rôle.
  + Attachez la stratégie gérée par `AmazonS3FullAccess` au rôle.

------
#### [ Amazon S3 Tables REST Iceberg endpoint ]

Conditions requises pour utiliser le point de Iceberg REST terminaison Amazon S3 Tables pour exécuter des tâches AWS Glue ETL.
+ [Créez un rôle IAM pour AWS Glue](https://docs.aws.amazon.com//glue/latest/dg/create-an-iam-role.html).
  + Attachez la stratégie gérée par `AmazonS3TablesFullAccess` au rôle.
  + Attachez la stratégie gérée par `AmazonS3FullAccess` au rôle.

------
#### [ Amazon S3 Tables Catalog for Apache Iceberg ]

Les prérequis utilisent le catalogue de tables Amazon S3 Apache Iceberg pour exécuter des tâches AWS Glue ETL.
+ [Créez un rôle IAM pour AWS Glue](https://docs.aws.amazon.com//glue/latest/dg/create-an-iam-role.html).
  + Attachez la stratégie gérée par `AmazonS3TablesFullAccess` au rôle.
  + Attachez la stratégie gérée par `AmazonS3FullAccess` au rôle.
  + Pour utiliser le catalogue d’Amazon S3 Tables pour Apache Iceberg, vous devez télécharger le catalogue client JAR et le charger dans un compartiment S3.

****Téléchargement du catalogue JAR****

    1. Vérifiez la dernière version sur [Maven Central](https://mvnrepository.com/artifact/software.amazon.s3tables/s3-tables-catalog-for-iceberg-runtime). Vous pouvez le télécharger JAR depuis Maven Central à l’aide de votre navigateur ou à l’aide de la commande suivante. Assurez-vous de remplacer le *version number* par la dernière version.

       ```
       wget https://repo1.maven.org/maven2/software/amazon/s3tables/s3-tables-catalog-for-iceberg-runtime/0.1.5/s3-tables-catalog-for-iceberg-runtime-0.1.5.jar                       
       ```

    1. Chargez le fichier téléchargé JAR dans un compartiment S3 auquel votre rôle IAM AWS Glue peut accéder. Vous pouvez utiliser la AWS CLI commande suivante pour télécharger leJAR. Assurez-vous de remplacer le *version number* par la dernière version et le *bucket name* et *path* par la vôtre.

       ```
       aws s3 cp s3-tables-catalog-for-iceberg-runtime-0.1.5.jar s3://amzn-s3-demo-bucket/jars/
       ```

------

## Étape 2 : création d’un script pour se connecter aux compartiments de table
<a name="glue-etl-script"></a>

Pour accéder aux données de votre table lorsque vous exécutez une tâche AWS Glue ETL, vous configurez une Spark session Apache Iceberg qui se connecte à votre compartiment de table S3. Vous pouvez modifier un script existant pour vous connecter à votre compartiment de table ou créer un nouveau script. Pour plus d'informations sur la création de AWS Glue scripts, consultez [Tutoriel : rédaction d'un script AWS Glue pour Spark](https://docs.aws.amazon.com/glue/latest/dg/aws-glue-programming-intro-tutorial.html) dans le *guide du AWS Glue développeur*.

Vous pouvez configurer la session pour vous connecter à vos compartiments de table via l’une des méthodes d’accès à S3 Tables suivantes :
+ Intégration des services AWS d'analyse S3 Tables (recommandé)
+ Point de terminaison Iceberg REST d’Amazon S3 Tables
+ Catalogue d’Amazon S3 Tables pour Apache Iceberg

Choisissez l’une des méthodes d’accès suivantes pour consulter les instructions de configuration et les exemples de configuration.

------
#### [ AWS analytics services integration (Recommended) ]

Pour interroger des tables en AWS Glue utilisant l'intégration Spark des services AWS d'analyse, vous devez [intégrer vos compartiments de tables aux AWS](s3-tables-integrating-aws.md) services d'analyse

Vous pouvez configurer la connexion à votre compartiment de table par le biais d'une Spark session dans le cadre d'une tâche ou par AWS Glue Studio magie dans le cadre d'une session interactive. Pour utiliser les exemples suivants, remplacez les par *placeholder values* les informations relatives à votre propre compartiment de table.

**À l'aide d'un PySpark script**  
Utilisez l'extrait de code suivant dans un PySpark script pour configurer une AWS Glue tâche afin de se connecter à votre compartiment de table à l'aide de l'intégration.  

```
spark = SparkSession.builder.appName("SparkIcebergSQL") \
    .config("spark.jars.packages", "org.apache.iceberg:iceberg-spark-runtime-3.4_2.12:1.4.2") \
    .config("spark.sql.extensions", "org.apache.iceberg.spark.extensions.IcebergSparkSessionExtensions") \
    .config("spark.sql.defaultCatalog","s3tables") \
    .config("spark.sql.catalog.s3tables", "org.apache.iceberg.spark.SparkCatalog") \
    .config("spark.sql.catalog.s3tables.catalog-impl", "org.apache.iceberg.aws.glue.GlueCatalog") \
    .config("spark.sql.catalog.s3tables.glue.id", "111122223333:s3tablescatalog/amzn-s3-demo-table-bucket") \
    .config("spark.sql.catalog.s3tables.warehouse", "s3://amzn-s3-demo-table-bucket/warehouse/") \
    .getOrCreate()
```

**Utilisation d’une session AWS Glue interactive**  
Si vous utilisez une session de bloc-notes interactive avec AWS Glue  5.0, spécifiez les mêmes configurations en utilisant la magie `%%configure` d’une cellule avant l’exécution du code.  

```
%%configure
{"conf": "spark.sql.extensions=org.apache.iceberg.spark.extensions.IcebergSparkSessionExtensions --conf spark.sql.defaultCatalog=s3tables --conf spark.sql.catalog.s3tables=org.apache.iceberg.spark.SparkCatalog --conf spark.sql.catalog.s3tables.catalog-impl=org.apache.iceberg.aws.glue.GlueCatalog --conf spark.sql.catalog.s3tables.glue.id=111122223333:s3tablescatalog/amzn-s3-demo-table-bucket --conf spark.sql.catalog.s3tables.warehouse=s3://amzn-s3-demo-table-bucket/warehouse/"}
```

------
#### [ Amazon S3 Tables REST Iceberg endpoint ]

Vous pouvez configurer la connexion à votre compartiment de table par le biais d'une Spark session dans le cadre d'une tâche ou par AWS Glue Studio magie dans le cadre d'une session interactive. Pour utiliser les exemples suivants, remplacez les par *placeholder values* les informations relatives à votre propre compartiment de table.

**À l'aide d'un PySpark script**  
Utilisez l'extrait de code suivant dans un PySpark script pour configurer une AWS Glue tâche afin de se connecter à votre compartiment de table à l'aide du point de terminaison.   

```
spark = SparkSession.builder.appName("glue-s3-tables-rest") \
    .config("spark.jars.packages", "org.apache.iceberg:iceberg-spark-runtime-3.4_2.12:1.4.2") \
    .config("spark.sql.extensions", "org.apache.iceberg.spark.extensions.IcebergSparkSessionExtensions") \
    .config("spark.sql.defaultCatalog", "s3_rest_catalog") \
    .config("spark.sql.catalog.s3_rest_catalog", "org.apache.iceberg.spark.SparkCatalog") \
    .config("spark.sql.catalog.s3_rest_catalog.type", "rest") \
    .config("spark.sql.catalog.s3_rest_catalog.uri", "https://s3tables.Region.amazonaws.com/iceberg") \
    .config("spark.sql.catalog.s3_rest_catalog.warehouse", "arn:aws:s3tables:Region:111122223333:bucket/amzn-s3-demo-table-bucket") \
    .config("spark.sql.catalog.s3_rest_catalog.rest.sigv4-enabled", "true") \
    .config("spark.sql.catalog.s3_rest_catalog.rest.signing-name", "s3tables") \
    .config("spark.sql.catalog.s3_rest_catalog.rest.signing-region", "Region") \
    .config('spark.sql.catalog.s3_rest_catalog.io-impl','org.apache.iceberg.aws.s3.S3FileIO') \
    .config('spark.sql.catalog.s3_rest_catalog.rest-metrics-reporting-enabled','false') \
    .getOrCreate()
```

**Utilisation d’une session AWS Glue interactive**  
Si vous utilisez une session de bloc-notes interactive avec la AWS Glue version 5.0, spécifiez les mêmes configurations en utilisant la `%%configure` magie d'une cellule avant l'exécution du code. Remplacez les valeurs des espaces réservés par les informations de votre compartiment de table.  

```
%%configure
{"conf": "spark.sql.extensions=org.apache.iceberg.spark.extensions.IcebergSparkSessionExtensions --conf spark.sql.defaultCatalog=s3_rest_catalog --conf spark.sql.catalog.s3_rest_catalog=org.apache.iceberg.spark.SparkCatalog --conf spark.sql.catalog.s3_rest_catalog.type=rest --conf spark.sql.catalog.s3_rest_catalog.uri=https://s3tables.Region.amazonaws.com/iceberg --conf spark.sql.catalog.s3_rest_catalog.warehouse=arn:aws:s3tables:Region:111122223333:bucket/amzn-s3-demo-table-bucket --conf spark.sql.catalog.s3_rest_catalog.rest.sigv4-enabled=true --conf spark.sql.catalog.s3_rest_catalog.rest.signing-name=s3tables --conf spark.sql.catalog.s3_rest_catalog.rest.signing-region=Region --conf spark.sql.catalog.s3_rest_catalog.io-impl=org.apache.iceberg.aws.s3.S3FileIO --conf spark.sql.catalog.s3_rest_catalog.rest-metrics-reporting-enabled=false"}
```

------
#### [ Amazon S3 Tables Catalog for Apache Iceberg ]

Pour vous connecter à des tables à l’aide du catalogue d’Amazon S3 Tables pour Apache Iceberg, vous devez d’abord télécharger le dernier fichier jar du catalogue et le charger dans un compartiment S3. Ensuite, lorsque vous créez votre tâche, vous ajoutez le chemin d’accès au catalogue client JAR en tant que paramètre spécial. Pour plus d'informations sur les paramètres des tâches dans AWS Glue, consultez la section [Paramètres spéciaux utilisés dans les AWS Glue tâches](https://docs.aws.amazon.com/glue/latest/dg/aws-glue-programming-etl-glue-arguments.html) du *Guide du AWS Glue développeur*.

Vous pouvez configurer la connexion à votre compartiment de table par le biais d'une Spark session dans le cadre d'une tâche ou par AWS Glue Studio magie dans le cadre d'une session interactive. Pour utiliser les exemples suivants, remplacez les par *placeholder values* les informations relatives à votre propre compartiment de table.

**Utilisation d’un script PySpark**  
Utilisez l'extrait de code suivant dans un PySpark script pour configurer une AWS Glue tâche afin de se connecter à votre compartiment de table à l'aide du. JAR Remplacez les valeurs des espaces réservés par les informations de votre compartiment de table.  

```
spark = SparkSession.builder.appName("glue-s3-tables") \
    .config("spark.jars.packages", "org.apache.iceberg:iceberg-spark-runtime-3.4_2.12:1.4.2") \
    .config("spark.sql.extensions", "org.apache.iceberg.spark.extensions.IcebergSparkSessionExtensions") \
    .config("spark.sql.defaultCatalog", "s3tablesbucket") \
    .config("spark.sql.catalog.s3tablesbucket", "org.apache.iceberg.spark.SparkCatalog") \
    .config("spark.sql.catalog.s3tablesbucket.catalog-impl", "software.amazon.s3tables.iceberg.S3TablesCatalog") \
    .config("spark.sql.catalog.s3tablesbucket.warehouse", "arn:aws:s3tables:Region:111122223333:bucket/amzn-s3-demo-table-bucket") \
    .getOrCreate()
```

**Utilisation d’une session AWS Glue interactive**  
Si vous utilisez une session de bloc-notes interactive avec la AWS Glue version 5.0, spécifiez les mêmes configurations en utilisant la `%%configure` magie d'une cellule avant l'exécution du code. Remplacez les valeurs des espaces réservés par les informations de votre compartiment de table.  

```
%%configure
{"conf": "spark.sql.extensions=org.apache.iceberg.spark.extensions.IcebergSparkSessionExtensions --conf spark.sql.defaultCatalog=s3tablesbucket --conf spark.sql.catalog.s3tablesbucket=org.apache.iceberg.spark.SparkCatalog --conf spark.sql.catalog.s3tablesbucket.catalog-impl=software.amazon.s3tables.iceberg.S3TablesCatalog --conf spark.sql.catalog.s3tablesbucket.warehouse=arn:aws:s3tables:Region:111122223333:bucket/amzn-s3-demo-table-bucket", "extra-jars": "s3://amzn-s3-demo-bucket/jars/s3-tables-catalog-for-iceberg-runtime-0.1.5.jar"}
```

------

### Exemples de scripts
<a name="w2aac20c25c29c19c13"></a>

Les exemples de PySpark scripts suivants peuvent être utilisés pour tester l'interrogation des tables S3 avec une AWS Glue tâche. Ces scripts se connectent à votre compartiment de table et exécutent des requêtes pour : créer un nouvel espace de noms, créer un exemple de table, insérer des données dans la table et renvoyer les données de la table. Pour utiliser les scripts, remplacez-les par *placeholder values* les informations relatives à votre propre compartiment de table.

Choisissez parmi les scripts suivants en fonction de votre méthode d’accès à S3 Tables.

------
#### [ S3 Tables integration with AWS analytics services ]

```
from pyspark.sql import SparkSession

spark = SparkSession.builder.appName("SparkIcebergSQL") \
    .config("spark.jars.packages", "org.apache.iceberg:iceberg-spark-runtime-3.4_2.12:1.4.2") \
    .config("spark.sql.extensions", "org.apache.iceberg.spark.extensions.IcebergSparkSessionExtensions") \
    .config("spark.sql.defaultCatalog","s3tables")
    .config("spark.sql.catalog.s3tables", "org.apache.iceberg.spark.SparkCatalog") \
    .config("spark.sql.catalog.s3tables.catalog-impl", "org.apache.iceberg.aws.glue.GlueCatalog") \
    .config("spark.sql.catalog.s3tables.glue.id", "111122223333:s3tablescatalog/amzn-s3-demo-table-bucket") \
    .config("spark.sql.catalog.s3tables.warehouse", "s3://amzn-s3-demo-table-bucket/bucket/amzn-s3-demo-table-bucket") \
    .getOrCreate()

namespace = "new_namespace"
table = "new_table"

spark.sql("SHOW DATABASES").show()

spark.sql(f"DESCRIBE NAMESPACE {namespace}").show()

spark.sql(f"""
    CREATE TABLE IF NOT EXISTS {namespace}.{table} (
       id INT,
       name STRING,
       value INT
    )
""")

spark.sql(f"""
    INSERT INTO {namespace}.{table}
    VALUES 
       (1, 'ABC', 100),
       (2, 'XYZ', 200)
""")

spark.sql(f"SELECT * FROM {namespace}.{table} LIMIT 10").show()
```

------
#### [ Amazon S3 Tables REST Iceberg endpoint ]

```
from pyspark.sql import SparkSession

spark = SparkSession.builder.appName("glue-s3-tables-rest") \
    .config("spark.jars.packages", "org.apache.iceberg:iceberg-spark-runtime-3.4_2.12:1.4.2") \
    .config("spark.sql.extensions", "org.apache.iceberg.spark.extensions.IcebergSparkSessionExtensions") \
    .config("spark.sql.defaultCatalog", "s3_rest_catalog") \
    .config("spark.sql.catalog.s3_rest_catalog", "org.apache.iceberg.spark.SparkCatalog") \
    .config("spark.sql.catalog.s3_rest_catalog.type", "rest") \
    .config("spark.sql.catalog.s3_rest_catalog.uri", "https://s3tables.Region.amazonaws.com/iceberg") \
    .config("spark.sql.catalog.s3_rest_catalog.warehouse", "arn:aws:s3tables:Region:111122223333:bucket/amzn-s3-demo-table-bucket") \
    .config("spark.sql.catalog.s3_rest_catalog.rest.sigv4-enabled", "true") \
    .config("spark.sql.catalog.s3_rest_catalog.rest.signing-name", "s3tables") \
    .config("spark.sql.catalog.s3_rest_catalog.rest.signing-region", "Region") \
    .config('spark.sql.catalog.s3_rest_catalog.io-impl','org.apache.iceberg.aws.s3.S3FileIO') \
    .config('spark.sql.catalog.s3_rest_catalog.rest-metrics-reporting-enabled','false') \
    .getOrCreate()

namespace = "s3_tables_rest_namespace"
table = "new_table_s3_rest"

spark.sql("SHOW DATABASES").show()

spark.sql(f"DESCRIBE NAMESPACE {namespace}").show()

spark.sql(f"""
    CREATE TABLE IF NOT EXISTS {namespace}.{table} (
       id INT,
       name STRING,
       value INT
    )
""")

spark.sql(f"""
    INSERT INTO {namespace}.{table}
    VALUES 
       (1, 'ABC', 100),
       (2, 'XYZ', 200)
""")

spark.sql(f"SELECT * FROM {namespace}.{table} LIMIT 10").show()
```

------
#### [ Amazon S3 Tables Catalog for Apache Iceberg ]

```
from pyspark.sql import SparkSession

#Spark session configurations
spark = SparkSession.builder.appName("glue-s3-tables") \
    .config("spark.jars.packages", "org.apache.iceberg:iceberg-spark-runtime-3.4_2.12:1.4.2") \
    .config("spark.sql.extensions", "org.apache.iceberg.spark.extensions.IcebergSparkSessionExtensions") \
    .config("spark.sql.defaultCatalog", "s3tablesbucket") \
    .config("spark.sql.catalog.s3tablesbucket", "org.apache.iceberg.spark.SparkCatalog") \
    .config("spark.sql.catalog.s3tablesbucket.catalog-impl", "software.amazon.s3tables.iceberg.S3TablesCatalog") \
    .config("spark.sql.catalog.s3tablesbucket.warehouse", "arn:aws:s3tables:Region:111122223333:bucket/amzn-s3-demo-table-bucket") \
    .getOrCreate()

#Script
namespace = "new_namespace"
table = "new_table"

spark.sql(f"CREATE NAMESPACE IF NOT EXISTS s3tablesbucket.{namespace}")
spark.sql(f"DESCRIBE NAMESPACE {namespace}").show()

spark.sql(f"""
    CREATE TABLE IF NOT EXISTS {namespace}.{table} (
       id INT,
       name STRING,
       value INT
    )
""")

spark.sql(f"""
    INSERT INTO {namespace}.{table}
    VALUES 
       (1, 'ABC', 100),
       (2, 'XYZ', 200)
""")

spark.sql(f"SELECT * FROM {namespace}.{table} LIMIT 10").show()
```

------

## Étape 3 — Création d'une AWS Glue tâche qui interroge les tables
<a name="glue-etl-job"></a>

Les procédures suivantes indiquent comment configurer des AWS Glue tâches qui se connectent à vos compartiments de table S3. Vous pouvez le faire en utilisant AWS CLI ou en utilisant la console avec l'éditeur de AWS Glue Studio script. Pour plus d’informations, consultez [Création de tâches dans AWS Glue](https://docs.aws.amazon.com/glue/latest/dg/author-job-glue.html) dans le *Guide de l’utilisateur AWS Glue *.

### Utilisation de l'éditeur de AWS Glue Studio script
<a name="tables-glue-studio-job"></a>

La procédure suivante montre comment utiliser l'éditeur de AWS Glue Studio script pour créer une tâche ETL qui interroge vos tables S3.

**Conditions préalables**
+ [Étape 1 : prérequis](#glue-etl-prereqs)
+ [Étape 2 : création d’un script pour se connecter aux compartiments de table](#glue-etl-script)

1. Ouvrez la AWS Glue console à l'adresse [https://console.aws.amazon.com/glue/](https://console.aws.amazon.com/glue/).

1. Dans le volet de navigation, choisissez **Tâches ETL**.

1. Choisissez **Éditeur de script**, puis choisissez **Charger un script** et chargez le script PySpark que vous avez créé pour interroger les tables S3.

1. Sélectionnez l’onglet **Détails de la tâche** et saisissez les informations suivantes pour **Propriétés de base**.
   + Pour **Nom**, saisissez le nom de la tâche.
   + Pour **rôle IAM**, sélectionnez le rôle que vous avez créé pour AWS Glue.

1. (Facultatif) Si vous utilisez le catalogue de tables Amazon S3 pour la méthode Apache Iceberg d'accès, pour étendre les **propriétés avancées** et pour le ** JARs chemin dépendant**, entrez l'URI S3 du fichier jar du catalogue client que vous avez chargé dans un compartiment S3 comme condition préalable. Par exemple, s3 ://*amzn-s3-demo-bucket1*/*jars*/s3- tables-catalog-for-iceberg -runtime- .jar *0.1.5*

1. Choisissez **Enregistrer** pour créer la tâche.

1. Choisissez **Exécuter**, lancez la tâche et vérifiez le statut de la tâche sous l’onglet **Exécutions**.

### En utilisant le AWS CLI
<a name="tables-glue-cli-job"></a>

La procédure suivante montre comment utiliser le AWS CLI pour créer une tâche ETL qui interroge vos tables S3. Pour utiliser les commandes, remplacez-les *placeholder values* par les vôtres.

**Conditions préalables**
+ [Étape 1 : prérequis](#glue-etl-prereqs)
+ [Étape 2 : création d’un script pour se connecter aux compartiments de table](#glue-etl-script) et chargez-le dans un compartiment S3.

1. Créez un AWS Glue emploi.

   ```
   aws glue create-job \
   --name etl-tables-job \
   --role arn:aws:iam::111122223333:role/AWSGlueServiceRole \
   --command '{
       "Name": "glueetl",
       "ScriptLocation": "s3://amzn-s3-demo-bucket1/scripts/glue-etl-query.py",
       "PythonVersion": "3"
   }' \
   --default-arguments '{
       "--job-language": "python",
       "--class": "GlueApp"
   }' \
   --glue-version "5.0"
   ```
**Note**  
(Facultatif) Si vous utilisez le catalogue d’Amazon S3 Tables pour Apache Iceberg comme méthode d’accès, ajoutez le catalogue client JAR aux `--default-arguments` avec le paramètre `--extra-jars`. Remplacez le *input placeholders* par le vôtre lorsque vous ajoutez le paramètre.  

   ```
                               "--extra-jars": "s3://amzn-s3-demo-bucket/jar-path/s3-tables-catalog-for-iceberg-runtime-0.1.5.jar" 
   ```

1. Démarrez votre tâche.

   ```
   aws glue start-job-run \
   --job-name etl-tables-job
   ```

1. Pour vérifier le statut de votre tâche, copiez l’ID d’exécution de la commande précédente et saisissez-le dans la commande suivante.

   ```
   aws glue get-job-run --job-name etl-tables-job \
   --run-id jr_ec9a8a302e71f8483060f87b6c309601ea9ee9c1ffc2db56706dfcceb3d0e1ad
   ```