Я начал экспериментировать с Функциями Azure и столкнулся с проблемой, что моя функция не запускается событиями, входящими в мой концентратор событий.
Это код моей функции:
host.json:
"version": "2.0",
"logging": {
"applicationInsights": {
"samplingSettings": {
"isEnabled": true,
"excludedTypes": "Request"
}
}
},
"extensionBundle": {
"id": "Microsoft.Azure.Functions.ExtensionBundle",
"version": "[2.*, 3.0.0)"
}
}
function.json:
"scriptFile": "__init__.py",
"bindings": [
{
"type": "eventHubTrigger",
"name": "events",
"direction": "in",
"eventHubName": "eventhub",
"connection": "eventhub_connection",
"cardinality": "many",
"consumerGroup": "$Default",
"dataType": "stream"
}
]
}
init.py:
import logging
import azure.functions as func
def main(events: List[func.EventHubEvent]):
for event in events:
logging.info('Python EventHub trigger processed an event: %s',
event.get_body().decode('utf-8'))
logging.info(f'Function triggered to process a message: {event.get_body().decode()}')
logging.info(f' EnqueuedTimeUtc = {event.enqueued_time}')
logging.info(f' SequenceNumber = {event.sequence_number}')
logging.info(f' Offset = {event.offset}')
# def main(event: func.EventHubEvent):
# logging.info(f'Function triggered to process a message: {event.get_body().decode()}')
# logging.info(f' EnqueuedTimeUtc = {event.enqueued_time}')
# logging.info(f' SequenceNumber = {event.sequence_number}')
# logging.info(f' Offset = {event.offset}')
# # Metadata
# for key in event.metadata:
# logging.info(f'Metadata: {key} = {event.metadata[key]}')
"IsEncrypted": false,
"Values": {
"FUNCTIONS_WORKER_RUNTIME": "python",
"AzureWebJobsStorage": "DefaultEndpointsProtocol=https;AccountName=storageaccount;AccountKey=storageacciuntaccesskey=;EndpointSuffix=core.windows.net",
"eventhub_connection": "Endpoint=sb://eventhub01.servicebus.windows.net/;SharedAccessKeyName=function;SharedAccessKey=0omitted;EntityPath=eventhub"
}
}
Я начал с базового кода Python для концентраторов событий, предоставляемого инструментами Azure Function Core. И тестировали различные фрагменты кода, найденные в онлайн-примерах из блогов людей и документации Microsoft.
При переключении на мощность: один - ›Я переключаюсь на код, который в данный момент закомментирован. Я не знаю, должно ли это происходить так, мне просто кажется, что это правильно.
В любом случае, независимо от настройки количества элементов или типа данных, изменяемого между двоичным, потоковым или строковым. Моя функция просто не срабатывает.
Я могу запросить свой хаб событий и просмотреть / прочитать события. Итак, я знаю свою политику, и общий ключ и тому подобное, работают нормально. Я также использую только группу потребителей $ Default.
Я также попытался настроить функцию запуска HTTP, и эта функция запускается из Azure Monitor. Я вижу в журналах каждый запрос, входящий в функцию.
Я что-то не так делаю в коде моей функции eventhub? Возможно, мне не хватает какой-то другой настройки конфигурации? Я уже проверил правила доступа для этой функции, но это действительно не имеет значения, не так ли? Функция извлекает событие из концентратора событий. Это не отправляет данные инициатором.
Изменить: добавлена конфигурация файла local.settings.json и обновлен function.json Edit 2: решение моей конкретной проблемы находится в комментариях к ответу.
UseDevelopmentStorage=true
(это моделируется с помощью базы данных sql. ). 26.04.2021