amazon-web-services - AWS : Passing Job parameters

我创建了 3 个 Glue 作业,它们具有如下作业参数键/值之一:runid id

如果我像这样使用 AWS CLI 执行 Glue 作业,它工作正常: aws glue start-job-run --jobname $job --arguments='--runid="Runid_10"'

这 3 个 Glue 作业在一步函数和状态机中定义为:

{
  "Comment":"Sample Step Function",
  "StartAt":"First Glue Job",
  "States": {
      "First Glue Job":{
         "Type": "Task",
         "Resource": "arn:aws:states:::glue:startJobRun.sync",
         "Parameters": {
            "JobName": "GlueJob-Firstjob"
      },
      "Next": "Second Glue Job"
    },
    "Second Glue Job":{
         "Type": "Task",
         "Resource": "arn:aws:states:::glue:startJobRun.sync",
         "Parameters": {
            "JobName": "GlueJob-Secondjob"
      },
      "Next": "Third Glue Job"
    },
    "Third Glue Job":{
         "Type": "Task",
         "Resource": "arn:aws:states:::glue:startJobRun.sync",
         "Parameters": {
            "JobName": "GlueJob-Thirdjob"
      },
      "End": true
    }
  }
}

如果我尝试使用输入参数执行此状态机,则此输入参数值不会传递给 Gluejob。 我是否需要修改状态机作业定义以将输入参数值传递给作为状态机运行的一部分传递的 Glue 作业。请指导我如何操作。

aws stepfunctions start-execution --state-machine-arn arn:aws:states:us-east-1:123456789012:stateMachine:HelloWorld --input "{runid":"Runid_10"}

状态机正在成功执行,但 Runid 值未传递给 Gluejob 参数。

请让我知道如何传递具有内部状态机定义的 Glue 作业参数值。


我正在使用这样的 Arguments 参数:

{
  "Comment":"Sample Step Function",
  "StartAt":"First Glue Job",
  "States": {
      "First Glue Job":{
         "Type": "Task",
         "Resource": "arn:aws:states:::glue:startJobRun.sync",
         "Parameters": {
            "JobName": "GlueJob-Firstjob",
            "Arguments": {
                  "--runid":"$.runid"
                }
      },
      "ResultPath" : "$.runid",
      "Next": "Second Glue Job"
    },
    "Second Glue Job":{
         "Type": "Task",
         "Resource": "arn:aws:states:::glue:startJobRun.sync",
         "Parameters": {
            "JobName": "GlueJob-Secondjob",
            "Arguments": {
                  "--runid":"$.runid"
                }
      },
      "ResultPath" : "$.runid",
      "Next": "Third Glue Job"
    },
    "Third Glue Job":{
         "Type": "Task",
         "Resource": "arn:aws:states:::glue:startJobRun.sync",
         "Parameters": {
            "JobName": "GlueJob-Thirdjob",
            "Arguments": {
                  "--runid":"$.runid"
                }
      },
      "ResultPath" : "$.runid",
      "End": true
    }
  }
}

在执行“开始执行”状态机期间,在输入可选窗口中传递输入 JSON {"--runid": "runid_10"}。

请注意: runid_n ,其中 n 是整数并且会改变。

我将在 Glue 作业中将 runid_10 值附加到输出文件,输出文件类似于 GlueJob-Firstjob_output_runid_10.csv

最佳答案

您需要将它添加到 Parameters 属性中的 Arguments 中,这样它就像:

"Parameters" : {
           "JobName": "GlueJob-Firstjob",
           "Arguments": {
                  "--run_id":"$.runid"
                }

}

供您引用,您可以查看。支持的参数部分:here .

更新: 您需要在任务定义中添加 ResultPath,例如:

"First Glue Job":{
         "Type": "Task",
         "Resource": "arn:aws:states:::glue:startJobRun.sync",
         "Parameters": {
            "JobName": "GlueJob-Firstjob",
            "Arguments": {
                  "--runid":"$.runid"
                }
      },
       "ResultPath": "$.output"
}

关于amazon-web-services - AWS : Passing Job parameters Value to Glue job from Step function,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61545287/

相关文章:

svelte - 如何替换 Svelte 中目标的内容而不是附加到子项?

delphi - 如何在 Delphi 10.3 Rio 上安装 Indy?

node.js - Yarn workspaces——包别名

javascript - 我如何将所选项目从 React Native Paper Menu 传递到

reactjs - 是否有任何函数可以在 react-final-form 中获取表单值

amazon-web-services - 通过 HTTPS 提供静态 S3 网站时降低 Cloud

ruby-on-rails - 如何在 Ruby on Rails 6 中将 rich_text_a

python - 删除子列表重复项,包括反向

javascript - 如何在 React Native 中更改数组键名称

angular - 不同的路线,相同的组件 - 为什么组件不在路线更改时重新加载?