如何在AWS步骤功能状态中动态创建一个具有另一个值的输入?

时间:2019-04-19 03:28:01

标签: java aws-step-functions

我想根据收到的输入来输出状态。

我创建了一个通用活动CopyFileActivity,该活动将文件从一个S3存储桶复制到另一个。 作为外部服务的名称的初始输入,执行一些其他活动,然后执行CopyFileActivity活动。 我有一个对应于每个服务的文件夹。有没有一种方法可以动态知道文件夹名称作为CopyFileActivity的输入?

初始输入如下:

{
    "service": "xyz"
}

我的S3文件夹结构类似于external-test-<service_name>,在这种情况下为external-test-xyz

我希望输入CopyFileActivity活动为:

{
    "sourceBucket": "external-test-xyz",
    "destBucket": "internal-test-xyz"
}

注意-前缀external-test-internal-test-是固定的。

各种方式:

  1. 更改活动代码,并在活动中创建sourceBucketdestBucket本身,而不是作为输入传递。但我想使此活动具有通用性,因为它将在许多其他情况下使用。
  2. 将初始输入更改为:

    {
        "service": "xyz",
        "sourceBucket": "external-test-xyz",
        "destBucket": "internal-test-xyz"
    }
    

    这可以工作,但是sourceBucketdestBucket是多余的参数。它也可能会产生错误,因为有人会给出存储桶名称。

  3. 通过状态,可以在其中创建所需的参数

    {
          "Type": "Pass",
          "Parameters": {
            "service.$": "$.service",
            "sourceBucket.$": "external-test-", (something logic here)
            "destBucket.$": "internal-test-", (same logic here)
            "fileName": "fileName"
          },
          "Next": "CopyFileActivity"
    }
    

我尝试做类似"sourceBucket.$": "external-test-" + "$.service"的事情,但不正确。

有没有办法做到这一点,或者有人可以建议其他任何方法来解决此问题。

0 个答案:

没有答案