Автоматизация Azure: синтаксический анализ WEBHOOKDATA с помощью модуля Runbook python

В автоматизации Azure, когда вы определяете веб-перехватчик для модуля Runbook, заголовки запроса передаются в модуль Runbook через входной параметр WEBHOOKDATA. Для книг python параметр передается скрипту в качестве первого аргумента.

Например, вот Runbook:

import json
import sys

print(sys.argv)

if len(sys.argv) > 1 :
    test = json.loads(sys.argv[1])
    print(test)

Вот входной параметр WEBHOOKDATA

{"WebhookName":"python-Test-Arguments","RequestBody":"","RequestHeader":{"Cache-Control":"no-cache","Connection":"keep-alive","Accept":"*/*","Accept-Encoding":"gzip","Host":"s2events.azure-automation.net","User-Agent":"PostmanRuntime/7.1.1","action":"myaction","Postman-Token":"312ce179-d2d1-4b5d-935c-d801fc0ba114","x-ms-request-id":"e6b3a5e3-17b3-4d2a-a00c-a1be928acca2"}}

Вывод (в основном print(sys.argv))

['C:\\Temp\\yjzgss3j.git\\caf4e30b-0cb1-4c60-9e93-e2315b376634', '{WebhookName:python-Test-Arguments,RequestBody:",RequestHeader:{Cache-Control:no-cache,Connection:keep-alive,Accept:*/*,Accept-Encoding:gzip,Host:s2events.azure-automation.net,User-Agent:PostmanRuntime/7.1.1,action:myaction,Postman-Token:312ce179-d2d1-4b5d-935c-d801fc0ba114,x-ms-request-id:e6b3a5e3-17b3-4d2a-a00c-a1be928acca2}}']

json.loads терпит неудачу

Traceback (most recent call last): File "C:\Temp\yjzgss3j.git\caf4e30b-0cb1-4c60-9e93-e2315b376634",
line 7, in <module> test = json.loads(sys.argv[1].strip()) File "C:\Python27\lib\json\__init__.py",
line 339, in loads return _default_decoder.decode(s) File "C:\Python27\lib\json\decoder.py",
line 364, in decode obj, end = self.raw_decode(s, idx=_w(s, 0).end()) File "C:\Python27\lib\json\decoder.py",
line 380, in raw_decode obj, end = self.scan_once(s, idx)ValueError: Expecting property name: line 1 column 2 (char 1)

Синтаксис JSON мне кажется правильным. Это может быть что-то, связанное с кодированием или тем, как автоматизация Azure передает параметры в модуль Runbook.


person Ameb    schedule 21.03.2018    source источник


Ответы (1)


на самом деле я думаю, что ваша проблема - искаженная строка JSON. Обратите внимание, что в вашей строке нет кавычек:

{WebhookName:python-Test-Arguments}

Должно получиться примерно так:

{"WebhookName":"python-Test-Arguments"}

Чтобы решить эту проблему, вам нужно исправить строку ответа. Это ветка, в которой рассказывается об операциях такого рода.

person Deivid Standard    schedule 23.03.2018