Требование
Создайте функцию Azure, которая отслеживает все входящие сообщения в IoT Hub и отправляет ее в базу данных Cosmos после внесения некоторых изменений в сообщения
Архитектура
Проблема : невозможно создать функцию Azure, которая считывает входящие сообщения в IoT Hub и отправляет их в Cosmos DB
Последовательность шагов
Я выполнил следующие шаги для создания и развертывания Azure Function App
с использованием Visual Studio Code
- Открыть код Visual Studio
Перейти к Azure Extension Panel
Выбранный C#
Язык
Созданы следующие файлы
- .vscode
- .gitignore
- FunctionApps.csproj
- host.json
- localsettings.json
Теперь я нажал кнопку «Создать функцию» в Visual Studio Code
, выбрал CosmosDBTrigger
и сопоставил CosmoDB
, который уже создан на портале Azure. который генерируется ниже c # class
namespace Company.Function
{
public static class CosmosDBTriggerCSharp
{
[FunctionName("CosmosDBTriggerCSharp")]
public static void Run([CosmosDBTrigger(
databaseName: "databaseName",
collectionName: "collectionName",
ConnectionStringSetting = "dev-test-cosmo-db_DOCUMENTDB",
LeaseCollectionName = "leases")]IReadOnlyList<Document> input, ILogger log)
{
if (input != null && input.Count > 0)
{
log.LogInformation("Documents modified " + input.Count);
log.LogInformation("First document Id " + input[0].Id);
}
}
}
}
Теперь я развернул функцию, выполнив (Ctrl + Shift + P) , набрав «deploy to function app» и выполнив команду Azure Functions: Deploy to Function App .
И я вижу Success
сообщение в Visual Studio Code Terminal
3:09:06 PM liveConnectMessageEnhancefunapp: Creating zip package...
3:09:07 PM liveConnectMessageEnhancefunapp: Starting deployment...
3:09:18 PM liveConnectMessageEnhancefunapp: Updating submodules.
3:09:19 PM liveConnectMessageEnhancefunapp: Preparing deployment for commit id 'f58cf57151'.
3:09:21 PM liveConnectMessageEnhancefunapp: Skipping build. Project type: Run-From-Zip
3:09:21 PM liveConnectMessageEnhancefunapp: Skipping post build. Project type: Run-From-Zip
3:09:24 PM messageEnhancefunapp: Syncing 0 function triggers with payload size 2 bytes successful.
3:09:25 PM messageEnhancefunapp: Updating D:\home\data\SitePackages\packagename.txt with deployment 20190110093910.zip
3:09:25 PM messageEnhancefunapp: Deployment successful.
Deployment to "messageEnhancefunapp" completed.
Предупреждения
C: \ Users \ deeku.nuget \ packages \ microsoft.net.sdk.functions \ 1.0.24 \ build \ netstandard1.0 \ Microsoft.NET.Sdk.Functions.Build.targets (41,5): предупреждение : Функция [CosmosDBTriggerCSharp]: отсутствует значение для AzureWebJobsStorage в local.settings.json. Это требуется для всех триггеров, кроме HTTP. [C: \ FunctionApps \ FunctionApps.csproj]
C: \ Users \ deeku.nuget \ packages \ microsoft.net.sdk.functions \ 1.0.24 \ build \ netstandard1.0 \ Microsoft.NET.Sdk.Functions.Build.targets (41,5): предупреждение: [C : \ FunctionApps \ FunctionApps.csproj]
Но когда я перехожу на Azure Portal
, я вижу ниже сообщение
Ваше приложение в данный момент находится в режиме только для чтения, потому что вы работаете из файла пакета. При запуске из пакета файловая система доступна только для чтения, и в файлы нельзя вносить изменения. Чтобы внести какие-либо изменения, обновите содержимое в вашем zip-файле и настройке приложения WEBSITE_RUN_FROM_PACKAGE.