我想根据收到的输入来输出状态。
我创建了一个通用活动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-
是固定的。
各种方式:
sourceBucket
和destBucket
本身,而不是作为输入传递。但我想使此活动具有通用性,因为它将在许多其他情况下使用。将初始输入更改为:
{
"service": "xyz",
"sourceBucket": "external-test-xyz",
"destBucket": "internal-test-xyz"
}
这可以工作,但是sourceBucket
和destBucket
是多余的参数。它也可能会产生错误,因为有人会给出存储桶名称。
通过状态,可以在其中创建所需的参数
{
"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"
的事情,但不正确。
有没有办法做到这一点,或者有人可以建议其他任何方法来解决此问题。