startjobrun 和 getjobrun-StepFunction with Glue 有什么区别?

问题描述

这是文档:https://docs.aws.amazon.com/glue/latest/dg/aws-glue-api-jobs-runs.html#aws-glue-api-jobs-runs-StartJobRun

我有一个 stepfunction,我想用它来触发现有的 glue 作业并运行它,我应该使用 startjobrun 还是 getjobrun?我的 glue 作业是由 terraform 创建的,我已经尝试过(请参阅此问题:Glue job succeeded without StepFunction,but failed if it's kicked off by StepFunction)我在 stepfunction 中使用了 "Resource": "arn:aws:states:::glue:startJobRun.sync",,但粘合作业将失败。

我的问题是针对我的情况,因为我已经创建了胶水作业,我应该在 step 函数中使用 "Resource": "arn:aws:states:::glue:getJobRun.sync", 吗?如果是这样,我该如何传递 runId ?(https://docs.aws.amazon.com/glue/latest/dg/aws-glue-api-jobs-runs.html#aws-glue-api-jobs-runs-GetJobRun)

RunId – required: UTF-8 string,not less than 1 or more than 255 bytes long,matching the Single-line string pattern.
The ID of the job run.

解决方法

是的。我们需要使用资源 arn:aws:states:::glue:startJobRun.syncstep function task 开始粘合作业,我们不需要传递 runId。对于胶水 start-job-run runId 仅在重试时才需要。

 {
         "Type":"Task","Resource":"arn:aws:states:::glue:startJobRun.sync","Parameters":{
            "JobName":"my-glue-job","Timeout":60,"NotificationProperty":{
               "NotifyDelayAfter":30
            }
         }
      }

get-job-run 仅用于获取先前执行作业的元数据。