При использовании Boto3 и Create_Pipeline для получения ошибки PipelineActivity должен быть один и только один элемент.
У меня есть программа на Python, которая использует boto3 для создания пути IoT Analytics. Моя программа смогла успешно создать канал и хранилище данных, но не удается, когда я пытаюсь соединить их через функцию создания конвейера. Мой код выглядит следующим образом:
dactivity = [{
"channel": {
"channelName": channel["channelName"],
"name": IoTAConfig["channelName"],
"next" : IoTAConfig["datastoreName"]
},
"datastore": {
"datastoreName": ds["datastoreName"],
"name": IoTAConfig["datastoreName"]
}
}]
pipeline = iota.create_pipeline(
pipelineActivities = dactivity,
pipelineName = IoTAConfig["pipelineName"]
)
Код ошибки следующий:
Traceback (most recent call last):
File "createFullGG.py", line 478, in <module>
createIoTA()
File "createFullGG.py", line 268, in createIoTA
pipelineName = IoTAConfig["pipelineName"]
File "/usr/lib/python2.7/site-packages/botocore/client.py", line 320, in _api_call
return self._make_api_call(operation_name, kwargs)
File "/usr/lib/python2.7/site-packages/botocore/client.py", line 623, in _make_api_call
raise error_class(parsed_response, operation_name)
botocore.errorfactory.InvalidRequestException: An error occurred (InvalidRequestException) when calling the UpdatePipeline operation: PipelineActivity must have one and only one member
Согласно документации конвейерная деятельность может содержать от 1 до 25 записей, если они находятся в массиве из 1 объекта. Я понятия не имею, почему это продолжает терпеть неудачу. Любая помощь приветствуется.
1 ответ
Публичная документация выглядит немного запутанно из-за способа представления необязательных элементов, и хорошая новость в том, что это легко исправить.
Исправленная версия того, что вы пытаетесь, будет написана как;
dactivity=[
{
"channel": {
"channelName": channel["channelName"],
"name": IoTAConfig["channelName"],
"next" : IoTAConfig["datastoreName"]
}
},
{
"datastore": {
"datastoreName": ds["datastoreName"],
"name": IoTAConfig["datastoreName"]
}
}
]
response = client.create_pipeline(
pipelineActivities = dactivity,
pipelineName = IoTAConfig["pipelineName"]
)
Итак, вы предлагаете множество действий, например [ {A1},{A2} ], если это имеет смысл?
Это помогает?