Функция Azure PowerShell извлекает и анализирует тело триггера HTTP POST

Я запускаю функцию Azure из Azure Synapse и отправляю сконструированную строку в качестве тела запроса HTTP POST.

Я пытаюсь преобразовать его в объект PS, а затем что-то сделать со значениями - однако по какой-то причине мне это не удается, и переменные region и environment пусты:

2023-05-12T11:17:13Z   [Information]   INFORMATION: region: 
2023-05-12T11:17:13Z   [Information]   INFORMATION: environment: 

Я проверил ввод компонента Synapse «Azure Function» в конвейере, и ввод выглядит следующим образом:

{
    "functionName": "MyFunc",
    "method": "POST",
    "headers": {},
    "body": "{environment: 'q', region: 'de', delta: 'true'}"
}

Я также использовал содержимое «тела» и выполнил тест / запуск с пользовательским телом (скопировал его), но это не удалось.

Вот код PS из моего Powershell:

using namespace System.Net
param($Request)
$request_body = $Request.Body | ConvertFrom-Json

$region = $request_body.region
$environment = $request_body.environment
Write-Host "Loaded runtime config from request body."
Write-Host "region: $region"
Write-Host "environment: $environment"

Если я сделаю следующее локально, он проанализирует его правильно:

PS > $a = "{environment: 'q', region: 'de', delta: 'true'}"
PS > $b = $a | ConvertFrom-Json
PS > $b
environment region delta
----------- ------ -----
q           de     true
PS > Write-Host $b.environment
q

Любая помощь приветствуется.

А вы пробовали $Request.Body.region?

Abdul Niyas P M 12.05.2023 13:31

Да, не работает - похоже, что он входит в виде строки и, следовательно, на него нельзя ссылаться

Cribber 12.05.2023 13:31

Да, это правда

Cribber 12.05.2023 13:33

Это потому, что это не так. Это строка.

Cribber 12.05.2023 13:36

Можете попробовать $Request.RawBody | ConvertFrom-Json?

Abdul Niyas P M 12.05.2023 13:47

Не тот же, но похожий результат, вывод: {environment: 'q', region: 'de', delta: 'true'} - но он все еще не преобразован в объект, на который я могу сослаться environment

Cribber 12.05.2023 13:51

Обратите внимание, что JSON официально не поддерживает одинарные кавычки для строк — допустимы только двойные кавычки. Некоторые синтаксические анализаторы более гибкие, поэтому YMMV, если вы используете одинарные кавычки... json.org/json-en.html «Строка — это последовательность из нуля или более символов Юникода, заключенная в двойные кавычки с использованием обратной косой черты. "

mclayton 12.05.2023 14:16
Как установить LAMP Stack - Security 5/5 на виртуальную машину Azure Linux VM
Как установить LAMP Stack - Security 5/5 на виртуальную машину Azure Linux VM
В предыдущей статье мы завершили установку базы данных, для тех, кто не знает.
Как установить LAMP Stack 1/2 на Azure Linux VM
Как установить LAMP Stack 1/2 на Azure Linux VM
В дополнение к нашему предыдущему сообщению о намерении Azure прекратить поддержку Azure Database для MySQL в качестве единого сервера после 16...
0
7
68
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

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

У меня уже было правильное решение... проблема заключалась в устаревшей версии PS ('6.*'). После обновления requirements.psd1 до 'az' = '9.*' теперь работает.

Однако, в конце концов, я решил эту проблему, фактически передав JSON из Synapse в тело HTTP. Сначала меня смутило то, что объект JSON отображается в журналах как строка, но на самом деле это неправильно. Он остается объектом.

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

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

Отсутствует определение параметра при развертывании adf с bicep
Ошибка импорта: не удается импортировать имя «DocumentAnalysisClient» из «azure.ai.formrecognizer»
Com.azure.messaging.servicebus.ServiceBusClientBuilder SecurityException: информация о подписывающей стороне не совпадает
?$filter=identities/any(c:c/issuerAssignedId eq '[email protected]') возвращает ошибку
Есть ли способ загрузить файлы в учетную запись хранения Azure через URL-адрес?
Невозможно установить область разрешений OAuth2 при создании приложения Azure AD с помощью модуля Microsoft.Graph PowerShell
API MS Form Recognizer — Анализ документа — Идентификатор результата
Требуется ли изменение конфигурации приложения vue 3 с проверкой подлинности Azure AD при развертывании в качестве статического веб-приложения в службе хранилища Azure?
Разрешение Azure Datalake Gen1 отклонено при переборе папок
Ошибка SMTP приложения Azure Logic Проверьте информацию и/или разрешения своей учетной записи и повторите попытку