在Step Function中如何将拼接字符串作为动态参数传递给AWS Glue作业?

0

【以下的问题经过翻译处理】 大家好,

我有一个Step Function用于调用AWS Glue作业,步骤定义如下:

  "glue-redshift-call": {
      "Type": "Task",
      "Resource": "arn:aws:states:::glue:startJobRun.sync",
      "Parameters": {
        "JobName": "GlueJobRedshiftStoredProcCa-meJ8P3QMSC5p",
        "Arguments": {
          "--SQLStatement": "call dw_merge_vendor('TNG', 'ASENTINEL')"
        }
      },
      "Next": "post-processing"
    },

如上所示,SQLStatement参数在此处硬编码为 call dw_merge_vendor('TNG', 'ASENTINEL')。但我需要设置为动态的参数。如Step Function new features Blogpost所述,我尝试了以下语法,但不起作用。请问这种情况加正确的设置是什么?

"Arguments": {
  "--SQLStatement": "States.Format('call dw_merge_vendor('{}', '{}'),  ', $.param1, $.param2)"
}

谢谢。

profile picture
专家
已提问 5 个月前18 查看次数
1 回答
0

【以下的回答经过翻译处理】 你的设置有两个问题。首先,当你引用其他变量或内在函数时,你需要在键后面加 .$。其次,当你需要在字符串中包含 ' 时,你需要使用 \ 进行转义。如下所示:

"Arguments": {
"--SQLStatement.$": "States.Format('call dw_merge_vendor({}, {}),', $.param1, $.param2)"
}

如果需要在参数中加上 ',你应该使用如下的方法:

"Arguments": {
"--SQLStatement.$": "States.Format('call dw_merge_vendor(\\'{}\\', \\'{}\\'),', $.param1, $.param2)"
}

profile picture
专家
已回答 5 个月前

您未登录。 登录 发布回答。

一个好的回答可以清楚地解答问题和提供建设性反馈,并能促进提问者的职业发展。

回答问题的准则