AWS Step Functions 使用输入负载中的属性作为参数

AWS Step Functions Use Properties from input payload as parameters

我正在尝试在步骤 Function/State 机器中使用 AWS 提供的 RDS CreateSnapshot 步骤。

Lambda 函数在输出一个简单负载之前立即运行,该负载具有与 CreateSnapshot 步骤所需的两个参数相对应的两个属性。在控制台中,此相同的负载显示为 RDS CreateSnapshot 步骤的“步骤输入”:

{
  "dbInstance": "mydb",
  "dbSnapshotName": "mydb-5-21-2022--17-21"
}

RDS CreateSnapshot 定义为:

Create-Snapshot:
    Type: Task
    Resource: arn:aws:states:::aws-sdk:rds:createDBSnapshot
    Parameters:
      DbInstanceIdentifier: $.dbInstance
      DbSnapshotIdentifier: $.dbSnapshotName
    Next: SNS-Finished

我收到以下错误:

Error

Rds.RdsException
Cause

Invalid database identifier:  $.dbInstance (Service: Rds, Status Code: 400, Request ID: 18242626-0839-4e28-920e-1c6ea13c80c6)

我对如何从输入中获取值并将其映射到参数的理解似乎遗漏了一些东西。

我使用新的 AWS Workflow Studio bootstrap 创建我的管道;添加 AWS 提供的 RDS CreateSnapshot 步骤时,它将 API 参数设置为静态输入:

但是,在这种情况下,输入应该是动态的,因为它们都将由管道中的前面步骤提供并作为输入传递到此步骤。这些属性的语法需要在参数中进行相应调整,以便可以正确选择它们 up/referenced。

具体来说,RDS SDK API 调用的参数需要在每个参数的末尾附加“.$”。

{
  "DbInstanceIdentifier.$": "$.dbInstance",
  "DbSnapshotIdentifier.$": "$.dbSnapshotName"
}