Потребитель функций Azure получает 401 при использовании строки подключения

0

Вопрос

Я очень новичок в механизмах Azure и застрял на этой проблеме.

У меня есть функция azure, которая должна запускаться событиями, опубликованными в центре событий. Я установил строку подключения sas, полученную на странице портала azure концентратора событий (с опцией "управление"), и использовал тот же ключ в аннотации EventHubTrigger (это функция Java 11).

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

Затем я получил 401 несанкционированный доступ.

Сняв все ограничения IP-адресов с концентратора событий (сделав его общедоступным), он начинает прослушивать и обрабатывать события, переданные в концентратор событий.

Очевидно, я хотел бы вернуть эти ограничения, но исключение 401 не прекратится.

Что я упускаю?

Редактировать (Добавление кода функции):

public class Function {
    @FunctionName("feed-collector")
    public void run(
            @EventHubTrigger(name = "collect", consumerGroup = "$Default", connection = "AzureEventHubConnectionString", eventHubName = "feed-ordini", cardinality = Cardinality.MANY)
            String message,
            final ExecutionContext context
    ) {
        context.getLogger().info(message);
    }
}

Строка AzureEventHubConnectionString определена в настройках приложения, и ее значение имеет формат

Конечная точка=sb://[узел-концентратор].служебная шина.windows.net/;SharedAccessKeyName=[Имя пользователя];SharedAccessKey=[основной ключ]

azure azure-eventhub azure-functions
2021-11-23 21:26:35
2
0

В соответствии с документацией,

Права, предоставляемые правилом политики, могут представлять собой комбинацию:

  • Отправить – Дает право отправлять сообщения субъекту
  • Слушать – Дает право слушать или получать субъекту
  • Управление – Дает право управлять топологией пространства имен, включая создание и удаление сущностей

В вашем случае, поскольку ваша функция прослушивает события из eventhub, вам следует использовать политику прослушивания SAS.

2021-11-24 01:15:05
0

Политика SAS предоставляет детализированную область действия только на уровне сущности, а не на уровне потребителя.

Это означает, что привилегии, определенные на уровне пространства имен, экземпляра концентратора событий или уровня темы, будут применены к группе потребителей этой сущности.

Я установил строку подключения sas, полученную на странице портала azure концентратора событий (с опцией "управление").

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

Для получения кода Java при создании подписи (токена SAS) из политики см. Здесь.

Чтобы прочитать подробную информацию о правилах политики, таких как Отправка, прослушивание и управление, ограничение правил, применяемых к пространству имен или политике сущностей, а также рекомендации по использованию SAS, пожалуйста, ознакомьтесь с этой документацией Microsoft.

2021-11-24 03:18:35

Я просмотрел документацию, но не нашел ответов. Как я могу сгенерировать токен SAS из кода Java, если функция даже не запускается? И даже если я создам токен SAS вне функции, где я должен его использовать?
Esotopo21

не могли бы вы, пожалуйста, предоставить код функции, который вы написали для запуска события.
HariKrishnaRajoli-MT

Я отредактировал вопрос с помощью кода и строки подключения, которую я использую
Esotopo21

На других языках

Эта страница на других языках

Italiano
..................................................................................................................
Polski
..................................................................................................................
Română
..................................................................................................................
한국어
..................................................................................................................
हिन्दी
..................................................................................................................
Français
..................................................................................................................
Türk
..................................................................................................................
Česk
..................................................................................................................
Português
..................................................................................................................
ไทย
..................................................................................................................
中文
..................................................................................................................
Español
..................................................................................................................
Slovenský
..................................................................................................................