Utiliser les systèmes de contrôle de version Git dans AWS Glue - AWS Glue

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 les systèmes de contrôle de version Git dans AWS Glue

Note

Les bloc-notes ne sont actuellement pas pris en charge pour le contrôle de version dans AWS Glue Studio. Cependant, le contrôle de version pour les scripts de tâche AWS Glue et les tâches ETL visuelles est pris en charge.

Si vous disposez de référentiels distants et que vous souhaitez gérer vos AWS Glue tâches à l'aide de ceux-ci, vous pouvez les utiliser AWS Glue Studio ou les synchroniser AWS CLI pour synchroniser les modifications apportées à vos référentiels et à vos tâches dans. AWS Glue Lorsque vous synchronisez les changements de cette manière, vous transférez la tâche depuis AWS Glue Studio vers votre référentiel, ou l'extrayez depuis le référentiel vers AWS Glue Studio.

Avec l'intégration de Git dans AWS Glue Studio, vous pouvez :

  • Intégrez les systèmes de contrôle de version Git AWS CodeCommit, tels que GitHub, GitLab, et Bitbucket

  • modifier les tâches AWS Glue dans AWS Glue Studio si vous utilisez des tâches visuelles ou des tâches de script et que vous les synchronisez avec un référentiel ;

  • paramétrer les sources et les cibles dans les tâches ;

  • extraire des tâches d'un référentiel et lesmodifier dans AWS Glue Studio ;

  • tester des tâches en les extrayant depuis des branches et/ou en les transférant vers des branches en utilisant des flux de travail multi-branches dans AWS Glue Studio ;

  • télécharger des fichiers à partir d'un référentiel et charger des tâches dans AWS Glue Studio pour la création de tâches entre comptes ;

  • Utilisez l'outil d'automatisation de votre choix (par exemple, Jenkins AWS CodeDeploy, etc.)

Cette vidéo montre comment intégrer AWS Glue à Git et créer un pipeline de code continu et collaboratif.

Autorisations IAM

Assurez-vous que la tâche dispose de l'une des autorisations IAM suivantes. Pour plus d'informations sur la configuration des autorisations IAM, consultez Set up IAM permissions for AWS Glue Studio.

  • AWSGlueServiceRole

  • AWSGlueConsoleFullAccess

Au minimum, les actions suivantes sont nécessaires pour l'intégration de Git :

  • glue:UpdateJobFromSourceControl : pour pouvoir mettre à jour AWS Glue avec une tâche présente dans un système de contrôle de version

  • glue:UpdateSourceControlFromJob : pour pouvoir mettre à jour le système de contrôle de version avec une tâche stockée dans AWS Glue

  • s3:GetObject : pour pouvoir récupérer le script de la tâche tout en le transférant vers le système de contrôle de version

  • s3:PutObject : pour pouvoir mettre à jour le script lors de l'extraction d'une tâche depuis un système de contrôle de source

Prérequis

Pour transférer des tâches vers un référentiel de contrôle de source, vous aurez besoin :

  • d'un référentiel qui a déjà été créé par votre administrateur ;

  • d'une branche dans le référentiel ;

  • d'un jeton d'accès personnel (pour Bitbucket, il s'agit du jeton d'accès au référentiel) ;

  • du nom d'utilisateur du propriétaire du référentiel ;

  • de définir des autorisations dans le référentiel pour autoriser AWS Glue Studio à lire et écrire dans le référentiel

    • GitLab— définit les portées des jetons sur api, read_repository et write_repository

    • Bitbucket : définissez les autorisations suivantes :

      • Abonnement à Workspace : read, write

      • Projets : write, admin read

      • Référentiels : read, write, admin, delete

Note

Lors de l'utilisation AWS CodeCommit, le jeton d'accès personnel et le propriétaire du référentiel ne sont pas nécessaires. Consultez Getting started with Git and AWS CodeCommit.

Utiliser des tâches de votre référentiel de contrôle de source dans AWS Glue Studio

Pour extraire une tâche de votre référentiel de contrôle de source qui ne se trouve pas dans AWS Glue Studio et pour l'utiliser dans AWS Glue Studio, les prérequis dépendront du type de tâche.

Pour les tâches visuelles :

  • Vous avez besoin d'un dossier et d'un fichier JSON contenant la définition de la tâche correspondant au nom de la tâche.

    Par exemple, consultez la définition de la tâche ci-dessous. La branche de votre référentiel doit contenir un chemin my-visual-job/my-visual-job.json où le dossier et le fichier JSON correspondent au nom de la tâche.

    { "name" : "my-visual-job", "description" : "", "role" : "arn:aws:iam::aws_account_id:role/Rolename", "command" : { "name" : "glueetl", "scriptLocation" : "s3://foldername/scripts/my-visual-job.py", "pythonVersion" : "3" }, "codeGenConfigurationNodes" : "{\"node-nodeID\":{\"S3CsvSource\":{\"AdditionalOptions\":{\"EnableSamplePath\":false,\"SamplePath\":\"s3://notebook-test-input/netflix_titles.csv\"},\"Escaper\":\"\",\"Exclusions\":[],\"Name\":\"Amazon S3\",\"OptimizePerformance\":false,\"OutputSchemas\":[{\"Columns\":[{\"Name\":\"show_id\",\"Type\":\"string\"},{\"Name\":\"type\",\"Type\":\"string\"},{\"Name\":\"title\",\"Type\":\"choice\"},{\"Name\":\"director\",\"Type\":\"string\"},{\"Name\":\"cast\",\"Type\":\"string\"},{\"Name\":\"country\",\"Type\":\"string\"},{\"Name\":\"date_added\",\"Type\":\"string\"},{\"Name\":\"release_year\",\"Type\":\"bigint\"},{\"Name\":\"rating\",\"Type\":\"string\"},{\"Name\":\"duration\",\"Type\":\"string\"},{\"Name\":\"listed_in\",\"Type\":\"string\"},{\"Name\":\"description\",\"Type\":\"string\"}]}],\"Paths\":[\"s3://dalamgir-notebook-test-input/netflix_titles.csv\"],\"QuoteChar\":\"quote\",\"Recurse\":true,\"Separator\":\"comma\",\"WithHeader\":true}}}" }

Pour les tâches de script :

  • vous avez besoin d'un dossier, d'un fichier JSON contenant la définition de la tâche, et du script.

  • le dossier et le fichier JSON doivent correspondre au nom de la tâche. Le nom du script doit correspondre à scriptLocation dans la définition de la tâche avec l'extension de fichier.

    Par exemple, dans la définition de la tâche ci-dessous, la branche de votre référentiel doit contenir un chemin my-script-job/my-script-job.json et my-script-job/my-script-job.py. Le nom du script doit correspondre au nom dans scriptLocation y compris l'extension du script.

    { "name" : "my-script-job", "description" : "", "role" : "arn:aws:iam::aws_account_id:role/Rolename", "command" : { "name" : "glueetl", "scriptLocation" : "s3://foldername/scripts/my-script-job.py", "pythonVersion" : "3" } }

Limites

Connexion des référentiels de contrôle de version avec AWS Glue

Vous pouvez saisir les détails de votre référentiel de contrôle de version et les gérer dans l'onglet Version Control (Contrôle de version) dans l'éditeur de tâche AWS Glue Studio. Pour intégrer votre référentiel Git, vous devez vous connecter à votre référentiel Git chaque fois que vous vous connectez à AWS Glue Studio.

Pour connecter un système de contrôle de version Git :

  1. Dans AWS Glue Studio, commencez une nouvelle tâche et choisissez l'onglet Version Control (Contrôle de version).

    La capture d'écran montre une tâche avec l'onglet Version Control (Contrôle de version) sélectionné.
  2. Dans Système de contrôle de version, choisissez Git Service parmi les options disponibles en cliquant sur le menu déroulant.

    • AWS CodeCommit

    • GitHub

    • GitLab

    • Bitbucket

  3. Selon le système de contrôle de version Git que vous choisissez, vous aurez différents champs à remplir.

    Pour AWS CodeCommit :

    Terminez la configuration du référentiel en sélectionnant le référentiel et la branche correspondant à votre tâche :

    • Référentiel : si vous avez configuré des référentiels dans AWS CodeCommit, sélectionnez-les dans le menu déroulant. Vos référentiels apparaîtront automatiquement dans la liste

    • Branche : sélectionnez la branche dans le menu déroulant

    • Dossier : facultatif – Saisissez le nom du dossier dans lequel vous souhaitez enregistrer votre tâche. S'il est laissé vide, un dossier est automatiquement créé. Le nom du dossier est par défaut le nom de la tâche.

    Pour GitHub :

    Complétez la GitHub configuration en remplissant les champs suivants :

    • Jeton d'accès personnel : il s'agit du jeton fourni par le GitHub référentiel. Pour plus d'informations sur les jetons d'accès personnels, voir GitHub Docs

    • Propriétaire du dépôt : il s'agit du propriétaire du GitHub dépôt.

    Terminez la configuration du référentiel en sélectionnant le référentiel et la branche depuis GitHub.

    • Référentiel : si vous avez configuré des référentiels dans GitHub, sélectionnez-les dans le menu déroulant. Vos référentiels apparaîtront automatiquement dans la liste

    • Branche : sélectionnez la branche dans le menu déroulant

    • Dossier : facultatif – Saisissez le nom du dossier dans lequel vous souhaitez enregistrer votre tâche. S'il est laissé vide, un dossier est automatiquement créé. Le nom du dossier est par défaut le nom de la tâche.

    Pour GitLab :

    • Jeton d'accès personnel : il s'agit du jeton fourni par le GitLab référentiel. Pour plus d'informations sur les jetons d'accès personnels, voir Jetons d'accès GitLab personnels

    • Propriétaire du dépôt : il s'agit du propriétaire du GitLab dépôt.

    Terminez la configuration du référentiel en sélectionnant le référentiel et la branche depuis GitLab.

    • Référentiel : si vous avez configuré des référentiels dans GitLab, sélectionnez-les dans le menu déroulant. Vos référentiels apparaîtront automatiquement dans la liste

    • Branche : sélectionnez la branche dans le menu déroulant

    • Dossier : facultatif – Saisissez le nom du dossier dans lequel vous souhaitez enregistrer votre tâche. S'il est laissé vide, un dossier est automatiquement créé. Le nom du dossier est par défaut le nom de la tâche.

    Pour Bitbucket :

    • Mot de passe d'application : Bitbucket utilise des mots de passe d'application et non des jetons d'accès au référentiel. Pour plus d'informations sur les mots de passe des applications, consultez la section Mots de passe des applications.

    • Propriétaire du référentiel : il s'agit du propriétaire du référentiel Bitbucket. Dans Bitbucket, le propriétaire est le créateur du référentiel.

    Terminez la configuration du référentiel en sélectionnant l'espace de travail, le référentiel, la branche et le dossier depuis Bitbucket.

    • Espace de travail : si vous avez configuré des espaces de travail dans Bitbucket, sélectionnez l'espace de travail dans le menu déroulant. Vos espaces de travail sont automatiquement remplis.

    • Référentiel : si vous avez configuré des référentiels dans Bitbucket, sélectionnez le référentiel dans le menu déroulant. Vos référentiels sont automatiquement remplis.

    • Branche : sélectionnez la branche dans le menu déroulant. Vos branches sont automatiquement remplies.

    • Dossier : facultatif – Saisissez le nom du dossier dans lequel vous souhaitez enregistrer votre tâche. Si elles sont laissées vides, un dossier est automatiquement créé avec le nom de la tâche.

  4. Choisissez Save (Enregistrer) en haut de la tâche AWS Glue Studio

Transfert de tâches AWS Glue vers le référentiel source

Une fois que vous avez saisi les détails de votre système de contrôle de version, vous pouvez modifier des tâches dans AWS Glue Studio et transférez des jobs vers votre référentiel source. Si vous n'êtes pas familier avec les concepts de Git tels que le transfert et l'extraction, consultez ce didacticiel sur Getting started with Git and AWS CodeCommit

Pour transférer votre tâche vers un référentiel, vous devez saisir les détails de votre système de contrôle de version et enregistrer votre tâche.

  1. Dans la tâche AWS Glue Studio, choisissez Actions. Cette action ouvrira des options de menu supplémentaires.

    La capture d'écran montre une tâche avec le menu Actions ouvert. L'option Push to repository (Transfert vers le référentiel) est visible.
  2. Choisissez Push to repository.

    Cette action permettra de sauvegarder la tâche. Lorsque vous transférez des tâches vers le référentiel, AWS Glue Studio transfert le dernier enregistré. Si la tâche dans le référentiel a été modifiée par vous ou par un autre utilisateur et n'est pas synchronisée avec la tâche dans AWS Glue Studio, la tâche dans le référentiel est remplacée par la tâche enregistrée dans AWS Glue Studio lorsque vous transférez la tâche depuis AWS Glue Studio.

  3. Choisissez Confirm (Confirmer) pour terminer l'action. Cette action crée une validation dans le référentiel. Si vous l'utilisez AWS CodeCommit, un message de confirmation affichera un lien vers le dernier commit activé AWS CodeCommit.

Transfert de tâches AWS Glue depuis le référentiel source

Une fois que vous avez saisi les détails de votre référentiel Git dans l'onglet Version control (Contrôle de version), vous pouvez également extraire des tâches de votre référentiel et les modifier dans AWS Glue Studio.

  1. Dans la tâche AWS Glue Studio, choisissez Actions. Cette action ouvrira des options de menu supplémentaires.

    La capture d'écran montre une tâche avec le menu Actions ouvert. L'option Push to repository (Transfert vers le référentiel) est visible.
  2. Choisissez Pull from repository (Extraire depuis le référentiel).

  3. Choisissez Confirmer. Cette action récupère la dernière validation depuis le référentiel et met à jour votre tâche dans AWS Glue Studio.

  4. Modifier votre tâche dans AWS Glue Studio. Si vous apportez des changements, vous pouvez synchroniser votre tâches avec votre référentiel en choisissant Push to repository (Transférer vers le référentiel) depuis le menu déroulant Actions.