Функция Azure BlobTrigger: Microsoft.WindowsAzure.Storage: Невозможно установить соединение, поскольку целевая машина активно от него отказалась - PullRequest
0 голосов
/ 08 октября 2019

Я не могу запустить свою функцию Azure, локально написанную на Java, которая должна работать на основе BlobTrigger.

Я сталкиваюсь со следующей ошибкой:

 A host error has occurred
 Microsoft.WindowsAzure.Storage: No connection could be made because the target machine actively refused it. System.Net.Http: No connection could be made because the target machine actively refused it. System.Private.CoreLib: No connection could be made because the target machine actively refused it.

Вот мой код:

public class Function {

    @FunctionName("BlobTrigger")
    @StorageAccount("reseaudiag")
    public void blobTrigger(
            @BlobTrigger(name = "content", path = "filer/{fileName}", dataType = "binary",
            connection = "AzureWebJobsDashboard"
                    ) byte[] content,
            @BindingName("fileName") String fileName,
            final ExecutionContext context
            ) {
        context.getLogger().info("Java Blob trigger function processed a blob.\n Name: " + fileName + "\n Size: " + content.length + " Bytes");

    }
}

На основании только начального запуска я могу начать реализацию логики, но я заблокирован для выполнения самого базового шага.

Вот мой local.settings.json

{
  "IsEncrypted": false,
  "Values": {
    "AzureWebJobsStorage": "DefaultEndpointsProtocol=https;AccountName=XXX;AccountKey=confidential;EndpointSuffix=core.windows.net",
    "AzureWebJobsDashboard": "UseDevelopmentStorage=true",
    "DataConnectionString": "UseDevelopmentStorage=true",
    "ContainerName": "filer"
  },
  "ConnectionStrings": {
    "PlantaoEntities": {
      "ConnectionString": "DefaultEndpointsProtocol=https;AccountName=xxx;AccountKey=confidential;EndpointSuffix=core.windows.net",
      "ProviderName": "System.Data.EntityClient"
    }
  }
}

Спасибо.

1 Ответ

1 голос
/ 09 октября 2019

Ваш код почти правильный. Вам необходимо указать правильное соединение в вашем триггере BLOB-объектов.

Вот мой успешный пример:

package com.function;

import com.microsoft.azure.functions.annotation.*;
import com.microsoft.azure.functions.*;

public class Function {

    @FunctionName("BlobTrigger")
    public void run(
            @BlobTrigger(name = "trigger", path = "test/{fileName}", dataType = "binary", connection = "AzureWebJobsStorage") byte[] content,
            @BindingName("fileName") String fileName,
            final ExecutionContext context) {
                context.getLogger().info("Blob: " + fileName + " -> Length: " + content.length);
    }
}

Я использую соединение «AzureWebJobsStorage» в своем коде, поэтому мне нужно установить строку соединения в local.settings.json:

{
  "IsEncrypted": false,
  "Values": {
    "AzureWebJobsStorage": "DefaultEndpointsProtocol=https;AccountName=storagetest789;AccountKey=*******w==;EndpointSuffix=core.windows.net",
    "FUNCTIONS_WORKER_RUNTIME": "java"
  }
}

Затем, запустите функцию локально и загрузите файл в хранилище, я получу следующие выходные данные:

enter image description here


Примечание:

  1. При публикации приложения в приложении-функции Azure настройки в локальном файле настроек не будут обновляться в облаке. Вам необходимо вручную обновить их.

  2. Убедитесь, что вы сделали доступной свою учетную запись хранения. Если вы включили брандмауэр для своей учетной записи хранения, вам необходимо добавить IP-адрес клиента для локального тестирования и разрешить доверенным службам Microsoft доступ к вашему хранилищу.

enter image description here


Обновление

  1. Если вы разрабатываете с VS Code, вы можете загрузить локальные настройки из палитры команд: F1 -> «Загрузить локальные настройки»

enter image description here

Вы также можете установить настройки приложения из портала Azure enter image description here

И затем вы можете изменить настройки здесь:

enter image description here

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...