超过一个对象匹配 AWS 数据管道中的谓词(总共 2 个)

More that one object matches the predicate (2 in total) in AWS data pipeline

在 AWS 数据管道控制台中,当我上传管道定义文件时,我总是会收到此错误 -

管道创建失败。 Data Pipeline 无法创建管道:超过一个对象与谓词匹配(总共 2 个)。 (服务:null;状态代码:0;错误代码:null;请求ID:null)

尝试使用 'Build from architect' 选项创建管道定义。它起作用了,然后我导出了管道定义并尝试使用 'Upload pipeline' 创建另一个管道。这样做只是为了确保我创建的管道没有任何错误。但仍然得到同样的错误。有什么解决办法吗?

与 API 以及 aws cli 相比,在数据管道功能方面,管道控制台总是赶上来。最好的办法是安装并使用 aws cli 导入管道定义。

http://docs.aws.amazon.com/datapipeline/latest/DeveloperGuide/dp-cli-ref.html

我们 运行 遇到了一些无法通过控制台导入管道的场景 - 但在使用 aws cli 导入时可以正常工作。

与在 Architect 中的 'Export' 中看到的管道定义相比,上传管道定义时 AWS 期望的管道定义文件在语法上有所不同。

AWS documentation 中解释的管道定义格式为:

{
"objects" : [
    {
       "name1" : "value1",
       "name2" : "value2"
    },
    {
       "name1" : "value3",
       "name3" : "value4",
       "name4" : "value5"
    }
]}

这是您在使用数据管道的使用 Architect 功能创建管道后尝试导出管道定义时可以看到的格式。

但是当您通过导入管道定义文件或使用 Boto 创建管道时预期的格式是以下格式:

{u'parameterObjects': [], 
 u'pipelineObjects': [{u'fields': [{u'key': u'schedule',
                                u'refValue': u'ScheduleId_1'},
                               {u'key': u'scriptUri',
                                u'stringValue': u'S3://<Script path>'},
                               {u'key': u'workerGroup',
                                u'stringValue': u'EC2Cluster'},
                               {u'key': u'type',
                                u'stringValue': u'ShellCommandActivity'}],
                    u'id': u'ActivityId_1',
                    u'name': u'Activity 1'
                    }
                ]
}