Выражение привязки функции Azure для доступа к значению словаря - PullRequest
0 голосов
/ 17 февраля 2019

Я пытаюсь создать привязки в файле function.json, который разрешит ввод документа Cosmos DB в зависимости от сообщения служебной шины, которое вызывает функцию.

Я хочу использовать значение всловарь UserProperties сообщения служебной шины.Документация говорит мне, что это доступно для использования в привязках: https://docs.microsoft.com/en-us/azure/azure-functions/functions-bindings-service-bus#trigger---message-metadata

Однако я не могу использовать значение в словаре, так как я получаю следующую ошибку: Microsoft.Azure.WebJobs.Host: Invalid template '{UserProperties['MyId']}'. Invalid template expression 'UserProperties['MyId'].

Содержимое моего function.json:

{
  "scriptFile": "__init__.py",
  "disabled": false,
  "bindings": [
    {
      "name": "msg",
      "type": "serviceBusTrigger",
      "direction": "in",
      "topicName": "mytopic",
      "subscriptionName": "mysubscription",
      "connection": "myservicebus_SERVICEBUS"
    },
    {
      "name": "documents",
      "type": "cosmosDB",
      "databaseName": "Cache",
      "collectionName": "ProductVersion",
      "id" : "{UserProperties['MyId']}",
      "partitionKey": "{UserProperties['MyId']}",
      "connectionStringSetting": "mycosmos_COSMOSDB",     
      "direction": "in"
    }
  ]
}

В документации по https://docs.microsoft.com/en-us/azure/azure-functions/functions-triggers-bindings#binding-expressions-and-patterns сказано, что я могу использовать точечную нотацию для доступа к свойствам объектов, но нетупоминание о доступе к значениям словаря.

Я также пробовал двойные кавычки "partitionKey": "{UserProperties[\"MyId\"]}" и точечную нотацию "partitionKey": "{UserProperties.MyId}", но они также не работают.

Функция написана на Python,но, надеюсь, это не актуально.

Я что-то не так делаю, или это просто не поддерживается?

Обновление 1 Ошибка, полученная при использовании {UserProperties.MyId}is:

Exception: TypeError: unable to decode incoming TypedData: unsupported combination of TypedData field None and expected binding type serviceBusTrigger
Stack:   File "d:\Workspace\MyFunction\.env\lib\site-packages\azure\functions_worker\dispatcher.py", line 250, in _handle__invocation_request
    pytype=pb_type_info.pytype)
  File "d:\Workspace\MyFunction\.env\lib\site-packages\azure\functions_worker\bindings\meta.py", line 291, in from_incoming_proto
    f'unable to decode incoming TypedData: '

Так, возможно, это проблема, специфичная для Python?

Update2 Эта ошибка возникает независимо от того, является ли свойство словарем или нет.Определение main выглядит следующим образом:

def main(msg: func.ServiceBusMessage, documents: func.DocumentList):

Обновление 3 Ошибка возникает, когда полезная нагрузка сообщения служебной шины пуста.О проблеме сообщалось: https://github.com/Azure/azure-functions-python-worker/issues/330

...