Запускать Azure Runbook при каждом помещении нового объекта в корзину Azure

Я хочу автоматизировать ресурсы Azure (запуск / остановка виртуальной машины). В настоящее время я использую модуль Runbook для учетной записи автоматизации, и он работает нормально, но мне нужно реализовать структуру, в которой что-то лежит:

1) Запускать модуль Runbook при помещении нового объекта (листа Excel) в корзину Azure. 2) Прочтите лист Excel для входных переменных

Ниже приведен код Runbook

Кто-нибудь, пожалуйста, скажите мне, как лучше всего запустить Runbook, который подходит для вышеуказанной структуры

"" "Документация по автоматизации Azure: https://aka.ms/azure-automation-python-documentation Документация по SDK для Azure Python: https://aka.ms/azure-python-sdk "" "import os import sys from azure.mgmt.compute import ComputeManagementClient import azure.mgmt.resource import automationassets

def get_automation_runas_credential (runas_connection): из OpenSSL импортировать крипто-импорт binascii из msrestazure import azure_active_directory import adal

# Get the Azure Automation RunAs service principal certificate
cert = automationassets.get_automation_certificate("AzureRunAsCertificate")
pks12_cert = crypto.load_pkcs12(cert)
pem_pkey = crypto.dump_privatekey(crypto.FILETYPE_PEM,pks12_cert.get_privatekey())

# Get run as connection information for the Azure Automation service principal
application_id = runas_connection["ApplicationId"]
thumbprint = runas_connection["CertificateThumbprint"]
tenant_id = runas_connection["TenantId"]

# Authenticate with service principal certificate
resource ="https://management.core.windows.net/"
authority_url = ("https://login.microsoftonline.com/"+tenant_id)
context = adal.AuthenticationContext(authority_url)
return azure_active_directory.AdalAuthentication(
lambda: context.acquire_token_with_client_certificate(
        resource,
        application_id,
        pem_pkey,
        thumbprint)
)

Аутентификация в Azure с помощью субъекта-службы Azure Automation RunAs

runas_connection = automationassets.get_automation_connection ("AzureRunAsConnection") azure_credential = get_automation_runas_credential (runas_connection)

Инициализируйте клиент управления вычислениями с учетными данными RunAs и укажите подписку, с которой будет работать.

compute_client = ComputeManagementClient (azure_credential, str (runas_connection ["SubscriptionId"]))

print ('\ nStart VM') async_vm_start = compute_client.virtual_machines.start (

'resource1', 'vm1') async_vm_start.wait () '' 'print (' \ nStop VM ') async_vm_stop = compute_client.virtual_machines.power_off (resource_group_name, vm_name) async_vm_stop.wait ()' '


person suman    schedule 23.01.2020    source источник


Ответы (1)


Я считаю, что один из способов выполнить ваше требование запуска модуля Runbook всякий раз, когда новый большой двоичный объект (или, по вашим словам, «объект») добавляется в контейнер хранилища Azure (по вашим словам, «ведро»), - это использовать подписку на события (сетку событий). Для получения дополнительной информации см. это документ.

Чтобы лучше проиллюстрировать это, вам нужно будет перейти на портал Azure -> ваша учетная запись хранилища (типа StorageV2) -> Плитка событий -> Дополнительные параметры -> Приложения логики -> Выполнить 2 шага, как показано на снимке экрана ниже. который проверяет, добавлен ли новый большой двоичный объект хранилища, а затем запускает требуемый модуль Runbook

Вы также можете добавить следующие шаги, такие как отправка почты после завершения выполнения Runbook и т. Д.

Надеюсь это поможет!

введите здесь описание изображения

person KrishnaG-MSFT    schedule 29.01.2020
comment
Привет, KrishnaG Runbook поддерживает версию Python до 2.x, поэтому я реализую его с помощью функции azure, я развернул функцию с помощью Visual Studio, но не знаю, как действовать дальше, можете ли вы дать мне свой почтовый идентификатор и поблагодарить вас за вашу помощь ???? - person suman; 04.02.2020