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:

  1. Stáhněte si zdrojový soubor pandas-1.2.4.tar.gz.
  2. 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

  1. V účtu Automation vyberte balíčky Pythonu v části Sdílené prostředky. Pak vyberte + Přidat balíček Pythonu.

    Screenshot of the Python packages page shows Python packages in the left menu and Add a Python package highlighted.

  2. 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 .

  3. Zadejte název a vyberte verzi modulu runtime jako Python 3.8.x (Preview).

  4. Výběr možnosti Importovat

    Screenshot shows the Add Python 3.8.x Package page with an uploaded tar.gz file selected.

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.

Screenshot shows the Python 3.8.x packages page after a package has been imported.

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.

Screenshot shows the Python 3 runbook import page.

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.