amazon-web-services - AWS:将作业参数值从 Step 函数传递给 Glue 作业
问题描述
我创建了 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 开始执行 --state-machine-arn arn:aws:states:us-east-1:123456789012:stateMachine:HelloWorld --input "{runid":"Runid_10"}
状态机正在成功执行,但 Runid 值未传递给 Gluejob 参数。
请让我知道如何传递具有内部状态机定义的 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",
"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 是整数并且会改变。
我将 runid_10 值附加到 Glue 作业中的输出文件,输出文件类似于 GlueJob-Firstjob_output_runid_10.csv
解决方案
您需要在属性内添加它,Arguments
这样Parameters
它就会像:
"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"
}
推荐阅读
- r - 条形图 - 轴刻度不根据条形调整
- node.js - 如何使用 PM2 API 查看进程的 PM2 日志
- postgresql - Jpa Query 将部分查询作为参数发送
- android - 如何确定哪个应用程序正在记录 logcat 上的哪一行?
- javascript - 如何在包含角度翻译的标签中获取文本?
- android - xml中的矩形没有底边
- python - 如何在 Python 中格式化带有 SI 前缀(k,M ...)的浮点数?
- python-3.x - 每次将块大小写入熊猫中的数据库时,如何打印一条消息?
- scala - 根据不同的列值在列上应用函数
- grpc - Python gRPC 健康检查