gpt4 book ai didi

python - AWS 胶水 : Failed to start job run due to missing metadata

转载 作者:行者123 更新时间:2023-12-02 03:19:36 29 4
gpt4 key购买 nike

为了使用 boto3 运行作业,documentation仅国家 JobName是必须的。但是,我的代码:

    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)

客户端是:

    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'),
)

当通过 Python3 执行时,给出一个错误:

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

但是当我从 UI 和 cli( aws glue start-job-run --job-name march15_9 ) 对同一个作业执行相同的操作时,一切正常。

最佳答案

根据我的经验,错误通常意味着找不到工作。一旦作业绑定(bind)到区域,名称和区域的组合就会唯一标识一个作业,其中任何一个错误(包括琐碎的错误类型)都会导致您遇到的错误(d)。例如,我正在使用的作业位于 us-east-1,因此以下语句执行成功。

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

但是,下面的代码片段会产生与您相同的错误

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

botocore.errorfactory.EntityNotFoundException:调用 StartJobRun 操作时发生错误 (EntityNotFoundException):由于缺少元数据,无法启 Action 业运行

在上面的例子中,通过使用 --region 参数指定运行的 cli,检查起来相对容易

它会是这样的:aws glue start-job-run --job-name march15_9 --region ap-south-1

如果运行成功(因此该区域确实是 ap-south-1),我会在代码中明确设置参数以消除未知因素,而不是通过环境变量传递它们,您可以临时将字符串值放入代码。

一旦代码使用硬编码值,您就可以一个一个地删除它们,从而找到一个(或几个)需要正确传递的值。

一切顺利

附言确实,文档是正确的,只需要将 JobName 设置为参数,我有这样工作的代码

关于python - AWS 胶水 : Failed to start job run due to missing metadata,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55182466/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com