1
votes

AWS Glue: échec du démarrage de l'exécution de la tâche en raison de métadonnées manquantes

Pour exécuter une tâche à l'aide de boto3, documentation indique que seul JobName est requis. Cependant, mon code:

botocore.errorfactory.EntityNotFoundException: An error occurred (EntityNotFoundException) when calling the StartJobRun operation: Failed to start job run due to missing metadata

et le client est:

    self.client = boto3.client(
            'glue',
            region_name='ap-south-1',
            aws_access_key_id=os.getenv('AWS_ACCESS_KEY_ID'),
            aws_secret_access_key=os.getenv('AWS_SECRET_ACCESS_KEY'),
        )

lorsqu'il est exécuté via Python3, donne une erreur:

    def start_job_run(self, name):
        print("The name of the job to be run via client is: {}".format(name))
        self.response_de_start_job = self.client.start_job_run(
            JobName=name
        )
        print(self.response_de_start_job)

mais quand je fais la même opération sur le même travail depuis l'interface utilisateur et depuis le cli ( aws glue start-job-run --job-name march15_9 ) , tout fonctionne bien.


0 commentaires

4 Réponses :


0
votes

Quel journal d'erreurs de colle indique?

Vous utilisez peut-être certains paramètres dans glue job que vous ne transmettez pas lors de l'appel de job


0 commentaires

0
votes

J'ai moi aussi rencontré la même erreur, le problème est de passer l'ARN du travail de collage en tant que JobName. Résolu en transmettant uniquement le nom du travail de collage.

response = client.start_job_run(
    JobName='Glue Job Name not ARN'
)


0 commentaires

3
votes

D'après mon expérience, l'erreur signifie souvent Impossible de trouver l'emploi . Dès que les emplois sont liés à des régions, une combinaison de nom et de région identifie de manière unique un travail, et des erreurs dans l'un de ces domaines (y compris les erreurs de frappe triviales) entraîneront l'erreur que vous rencontrez (d). Par exemple, un travail que j'utilise est dans le us-east-1, donc l'instruction suivante s'exécute avec succès.

    glue_client = boto3.client('glue', region_name='us-west-1')
    response = glue_client.start_job_run(
        JobName = glue_job_name)

Cependant, l'extrait ci-dessous produira la même erreur que vous avez

    glue_client = boto3.client('glue', region_name='us-east-1')
    response = glue_client.start_job_run(
        JobName = glue_job_name)

botocore.errorfactory.EntityNotFoundException: une erreur s'est produite (EntityNotFoundException) lors de l'appel de l'opération StartJobRun: échec du démarrage du travail en raison de métadonnées manquantes

Dans le cas ci-dessus, il est relativement facile de vérifier, en spécifiant l'exécution de cli avec le paramètre --region

Ce serait quelque chose comme: aws glue start-job-run --job-name march15_9 --region ap-south-1

Si cela fonctionne correctement (donc la région est bien ap-south-1), je définirais explicitement paramètres dans le code pour supprimer les facteurs inconnus, et au lieu de les passer à travers des variables d'environnement, vous pouvez temporairement mettre des valeurs de chaîne dans le code.

Une fois que le code fonctionne avec des valeurs codées en dur, vous pouvez les supprimer une par une, ainsi en trouver un (ou quelques-uns) qui doivent passer correctement.

Tout le meilleur

P.S. En effet, la documentation est correcte, seul JobName doit être défini comme paramètre, j'ai du code qui fonctionne de cette façon


0 commentaires

0
votes

Vérifiez si le nom de votre travail de collage est correctement écrit. J'ai eu un cas similaire et je l'ai résolu de cette façon. (Par exemple: Job_ 01 au lieu de Job_01)


0 commentaires