Správa balíčků Pythonu 3 (Preview) v Azure Automation
Tento článek popisuje, jak importovat, spravovat a používat balíčky Pythonu 3 (Preview) v Azure Automation spuštěné v prostředí sandboxu Azure a hybridní runbook Workers.To zjednodušit runbooky. K importu potřebných modulů můžete použít balíčky Pythonu.
Pro podporu runbooků Pythonu 3 ve službě Automation se ve výchozím nastavení nainstaluje balíček Azure 4.0.0 v účtu Automation. Výchozí verzi je možné přepsat importem balíčků Pythonu do účtu Automation. Předvolba se udělí importované verzi ve vašem účtu Automation. Pokud chcete importovat jeden balíček, přečtěte si téma Import balíčku. Pokud chcete importovat balíček s více balíčky, přečtěte si téma Import balíčku se závislostmi.
Informace o správě balíčků Pythonu 2 najdete v tématu Správa balíčků Python 2.
Balíčky jako zdrojové soubory
Azure Automation podporuje pouze balíček Pythonu, který obsahuje pouze kód Pythonu a neobsahuje další jazyková rozšíření ani kód v jiných jazycích. Prostředí Azure Sandbox však nemusí mít požadované kompilátory pro binární soubory C/C++, proto se doporučuje místo toho používat soubory kolečka . Index balíčků Pythonu (PyPI) je úložiště softwaru pro programovací jazyk Python. Při výběru balíčku Python 3 pro import do vašeho účtu Automation z PyPI si poznamenejte následující části názvu souboru:
Část Název souboru | Description |
---|---|
cp38 | Automatizace podporuje Python 3.8.x pro cloudové úlohy. |
amd64 | Procesy sandboxu Azure jsou Windows 64bitovou architekturu. |
Pokud například chcete importovat pandas, můžete vybrat soubor kolečka s podobným názvem jako pandas-1.2.3-cp38-win_amd64.whl
.
Některé balíčky Pythonu dostupné na PyPI neposkytují soubor s kolečkem. V tomto případě stáhněte zdroj (.zip nebo soubor .tar.gz) a vygenerujte soubor kolečka pomocí pip
. Pomocí 64bitového počítače s nainstalovaným balíčkem Python 3.8.x a kolečkem proveďte například následující kroky:
- Stáhněte si zdrojový soubor
pandas-1.2.4.tar.gz
. - Spusťte pip a získejte soubor kolečka pomocí následujícího příkazu:
pip wheel --no-deps pandas-1.2.4.tar.gz
.
Import balíčku
V účtu Automation vyberte balíčky Pythonu v části Sdílené prostředky. Pak vyberte + Přidat balíček Pythonu.
Na stránce Přidat balíček Pythonu vyberte místní balíček, který chcete nahrát. Balíček může být soubor .whl nebo .tar.gz .
Zadejte název a vyberte verzi modulu runtime jako Python 3.8.x (Preview).
Výběr možnosti Importovat
Po importu balíčku je uvedený na stránce balíčků Pythonu ve vašem účtu Automation. Pokud chcete balíček odebrat, vyberte balíček a klikněte na Odstranit.
Import balíčku se závislostmi
Balíček Pythonu 3 a jeho závislosti můžete importovat tak, že do runbooku Pythonu 3 naimportujete následující skript Pythonu a pak ho spustíte.
https://github.com/azureautomation/runbooks/blob/master/Utility/Python/import_py3package_from_pypi.py
Import skriptu do runbooku
Informace o importu runbooku najdete v tématu Import runbooku z Azure Portal. Před spuštěním importu zkopírujte soubor z GitHub do úložiště, ke kterému má portál přístup.
Na stránce Import runbooku se výchozí název runbooku shoduje s názvem skriptu. Pokud máte přístup k poli, můžete název změnit. Typ runbooku může být výchozí pro Python 2. Pokud ano, nezapomeňte ho změnit na Python 3.
Spuštění runbooku pro import balíčku a závislostí
Po vytvoření a publikování runbooku ho spusťte a naimportujte balíček. Podrobnosti o spuštění runbooku najdete v tématu Spuštění runbooku v Azure Automation.
Skript (import_py3package_from_pypi.py
) vyžaduje následující parametry.
Parametr | Popis |
---|---|
subscription_id | ID předplatného účtu Automation |
resource_group | Název skupiny prostředků, ve které je účet Automation definovaný |
automation_account | Název účtu Automation |
module_name | Název modulu pro import z pypi.org |
Další informace o používání parametrů s runbooky najdete v tématu Práce s parametry runbooku.
Použití balíčku v runbooku
S importovaným balíčkem ho můžete použít v runbooku. Přidejte následující kód, který zobrazí seznam všech skupin prostředků v předplatném Azure.
import os
import azure.mgmt.resource
import automationassets
def get_automation_runas_credential(runas_connection):
from OpenSSL import crypto
import binascii
from 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)
)
# Authenticate to Azure using the Azure Automation RunAs service principal
runas_connection = automationassets.get_automation_connection("AzureRunAsConnection")
azure_credential = get_automation_runas_credential(runas_connection)
# Intialize the resource management client with the RunAs credential and subscription
resource_client = azure.mgmt.resource.ResourceManagementClient(
azure_credential,
str(runas_connection["SubscriptionId"]))
# Get list of resource groups and print them out
groups = resource_client.resource_groups.list()
for group in groups:
print(group.name)
Poznámka
Balíček Pythonu automationassets
není k dispozici na pypi.org, takže není k dispozici pro import do Windows počítače.
Identifikace dostupných balíčků v sandboxu
Pomocí následujícího kódu zobrazte seznam výchozích nainstalovaných modulů:
#!/usr/bin/env python3
import pkg_resources
installed_packages = pkg_resources.working_set
installed_packages_list = sorted(["%s==%s" % (i.key, i.version)
for i in installed_packages])
for package in installed_packages_list:
print(package)
Další kroky
Pokud chcete připravit runbook Pythonu, přečtěte si téma Vytvoření runbooku Pythonu.