Запуск Azure Runbook всякий раз, когда новый объект помещается в корзину Azure - PullRequest
0 голосов
/ 23 января 2020

Я хочу автоматизировать azure ресурсы (ex-start / stop VM). В настоящее время я использую Runbook Automation Account, и он работает нормально, но мне нужно реализовать что-то вроде фреймворка l ie this:

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

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

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

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

def get_automation_runas_credential (runas_connection): из OpenSSL импорт крипто-импорт binascii из msrest azure import azure_active_directory импорт 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 субъекта службы автоматизации Automation

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

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

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

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

) 1029 * *1028* '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 ()' '' * '1030 *

1 Ответ

0 голосов
/ 29 января 2020

Я полагаю, что одним из способов достижения sh вашего требования к запуску Runbook при добавлении нового BLOB-объекта (или, по вашим словам, 'объекта') в Azure Контейнер для хранения (включен в ваших словах 'Bucket') является Использование подписки на события (Event Grid). Для получения дополнительной информации см. этот документ.

Чтобы проиллюстрировать его лучше, вам потребуется go до Azure Портал -> ваша учетная запись Storage (то есть StorageV2 kind) -> плитка событий -> More options -> Logi c Apps -> 2 шага, как показано на скриншоте ниже, который проверяет, добавлен ли новый BLOB-объект хранилища, а затем запускает требуемый runbook

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

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

enter image description here

...