在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
EXPERTE
gefragt vor 6 Monaten26 Aufrufe
1 Antwort
0

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

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

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

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

profile picture
EXPERTE
beantwortet vor 6 Monaten

Du bist nicht angemeldet. Anmelden um eine Antwort zu veröffentlichen.

Eine gute Antwort beantwortet die Frage klar, gibt konstruktives Feedback und fördert die berufliche Weiterentwicklung des Fragenstellers.

Richtlinien für die Beantwortung von Fragen