Устойчивые функции Azure не вызываются при использовании с триггером Q с использованием управляемого удостоверения

Работа с управляемым удостоверением с устойчивыми функциями работает нормально. Как только мы добавим триггерную функцию Q с той же учетной записью хранения, используя управляемое удостоверение, все перестанет работать.

Проблема в том, что устойчивые функции не вызываются, а статус выполнения находится в ожидании.

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

Если мы будем использовать только долговечный триггер или только Q-триггер с управляемой идентификацией — он будет работать нормально. Проблема в том, что мы используем оба.

    [FunctionName("qtrigger")]
    public void Run([QueueTrigger("b2b2devpoc", Connection = "QueueConnection")]string myQueueItem, ILogger log)
    {
        log.LogInformation($"C# Queue trigger function processed: {myQueueItem}");
    }

Прочный функциональный код:

   **[FunctionName("Function1")]
   public static async Task<List<string>> RunOrchestrator(
       [OrchestrationTrigger] IDurableOrchestrationContext context)
   {
       var outputs = new List<string>();
       // Replace "hello" with the name of your Durable Activity Function.
       outputs.Add(await context.CallActivityAsync<string>(nameof(SayHello), "Tokyo"));
       outputs.Add(await context.CallActivityAsync<string>(nameof(SayHello), "Seattle"));
       outputs.Add(await context.CallActivityAsync<string>(nameof(SayHello), "London"));
       // returns ["Hello Tokyo!", "Hello Seattle!", "Hello London!"]
       return outputs;
   }
   [FunctionName(nameof(SayHello))]
   public static string SayHello([ActivityTrigger] string name, ILogger log)
   {
       log.LogInformation("Saying hello to {name}.", name);
       Thread.Sleep(3000);
       return $"Hello {name}!";
   }
   [FunctionName("testfunction")]
   public static async Task<HttpResponseMessage> HttpStart(
       [HttpTrigger(AuthorizationLevel.Anonymous, "get", "post")] HttpRequestMessage req,
       [DurableClient] IDurableOrchestrationClient starter,
       ILogger log)
   {
       
       // Function input comes from the request content.
       string instanceId = await starter.StartNewAsync("Function1", null);
       log.LogInformation("Started orchestration with ID = '{instanceId}'.", instanceId);
       return starter.CreateCheckStatusResponse(req, instanceId);
   }

}**

Прочный функциональный ответ:

{ "имя": "Функция1", "instanceId": "10f1f4cb1a5245499aa2aacafcf488cc", "runtimeStatus": "В ожидании", «вход»: ноль, «customStatus»: ноль, «выход»: ноль, "createTime": "2024-07-31T07:16:19Z", "lastUpdatedTime": "2024-07-31T07:16:19Z" }

Переменная окружения:

вы используете удостоверение, назначенное системой или удостоверение, назначенное пользователем?

Ikhtesam Afrin 31.07.2024 09:56

личность пользователя и выполнил шаги, упомянутые здесь — Learn.microsoft.com/en-us/azure/azure-functions/durable/…

Anuraj Rajagopal 31.07.2024 10:01

вы пробуете это локально или на портале?

Ikhtesam Afrin 31.07.2024 10:05

@IkhtesamAfrin — на лазурном портале.

Anuraj Rajagopal 31.07.2024 10:09

Можете ли вы поделиться снимком экрана переменных среды, добавленных в приложение-функцию?

Ikhtesam Afrin 31.07.2024 10:41

@IkhtesamAfrin - в вопрос добавлены скриншоты переменной env. Пожалуйста, помогите проверить.

Anuraj Rajagopal 31.07.2024 10:45
Стоит ли изучать PHP в 2023-2024 годах?
Стоит ли изучать PHP в 2023-2024 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
1
6
50
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Я внес следующие изменения, чтобы запустить функцию триггера очереди и функцию Durable в одном приложении-функции с использованием управляемого удостоверения, назначенного пользователем.

  • Я создал приложение-функцию в плане службы приложений. На протяжении всего процесса я также использую одну учетную запись хранения (V2).
  • Убедитесь, что в приложении-функции есть указанные ниже переменные среды. AZURE_CLIENT_ID содержит значение clientId управляемого удостоверения, назначенного пользователем.

  • Я предоставил данные разрешения пользователю, назначенному управляемому удостоверению в учетной записи хранения.

  • Я могу получить ожидаемый ответ от функции, запускаемой очередью, а также от устойчивой функции.

Вы можете проверить информацию о связанном приложении на наличие исключений, вызванных приложением-функцией.

Это сработало. Большое спасибо

Anuraj Rajagopal 01.08.2024 07:28

Другие вопросы по теме

Похожие вопросы

Как я могу преобразовать этот SQL-запрос в linq, когда у меня есть подзапрос, группировка и предложение?
Проблема развертывания Blazor WASM Core в Azure
Преобразование оператора foreach в оператор выбора
Что происходит, когда несколько задач C# запускаются после завершения другой задачи?
ASP .NET Core — расширение @Html.EditorFor для добавления <span>
Netwonsoft JsonConvert.Deserialization выдает исключение JsonSerializationException: «Ошибка преобразования значения «Имя моего пользовательского объекта» в тип «System.Type»
Как обеспечить автоматическое масштабирование для CollectionView в объекте Popup из CommunityToolkit.Maui после его заполнения с помощью события нажатия кнопки на платформе Windows?
Перенаправление вызова .NET Core OIDC не работает с интерфейсом Angular
Как добавить несколько веб-приложений Blazor в существующий веб-API
Веб-приложение .Net 8 Blazor (сервер) -> Начните с языка браузера и разрешите пользователю менять язык через раскрывающийся список