1

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

我创建了一个通用活动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",但不正确。

有什么办法可以做到这一点,或者任何人都可以建议任何其他方法来处理这个问题。

4

0 回答 0