Gérer des packages Python 3 dans Azure Automation

Cet article décrit comment importer, gérer et utiliser des packages Python 3 dans Azure Automation exécuté sur l’environnement sandbox Azure et Hybrid Runbook Workers. Les packages Python doivent être téléchargés sur des Runbook Workers hybrides pour une exécution réussie des travaux. Vous pouvez simplifier les runbooks en utilisant des packages Python pour importer les modules dont vous avez besoin.

Pour plus d’informations sur la gestion des packages Python 2, consultez Gérer les packages Python 2.

Packages Python par défaut

Pour prendre en charge les runbooks Python 3.8 dans le service Automation, certains packages Python sont installés par défaut et une liste de ces packages se trouve ici. La version par défaut peut être remplacée en important des packages Python dans votre compte Automation.

La préférence est donnée à la version importée dans le compte Automation. Pour importer un package unique, consultez Importer un package. Pour importer un package avec plusieurs packages, consultez Importer un package avec des dépendances.

Remarque

Aucun package par défaut n’est installé pour Python 3.10 (préversion).

Packages en tant que fichiers sources

Azure Automation prend en charge uniquement un package Python qui contient uniquement du code Python et qui n’inclut pas des extensions dans d’autres langages ou du code dans d’autres langages. Toutefois, il est possible que l’environnement de bac à sable Azure ne soit pas doté des compilateurs requis pour les fichiers binaires C/C++. Nous vous recommandons donc d’utiliser à la place des fichiers wheel.

Remarque

Actuellement, Python 3.10 (préversion) prend uniquement en charge les fichiers wheel.

Python Package Index (PyPI) est un référentiel de logiciels pour le langage de programmation Python. Lorsque vous sélectionnez un package Python 3 à importer dans votre compte Automation à partir de PyPI, notez les parties suivantes du nom de fichier :

Sélectionnez une version de Python :

Partie du nom de fichier Description
cp38 L'Azure Automation prend en charge Python 3.8 pour les tâches Cloud.
amd64 Les processus du bac à sable Azure correspondent à l’architecture Windows 64 bits.

Par exemple :

  • Pour importer pandas - sélectionnez un fichier wheel avec un nom similaire à pandas-1.2.3-cp38-win_amd64.whl.

Certains packages Python disponibles sur PyPI ne fournissent pas de fichier wheel. Dans ce cas, téléchargez le fichier source (.zip ou .tar.gz), puis générez le fichier wheel en utilisant pip.

Suivez cette procédure en utilisant un ordinateur Windows 64 bits avec Python 3.8. x et le package wheel installé :

  1. Téléchargez le fichier source pandas-1.2.4.tar.gz.
  2. Exécutez pip pour récupérer le fichier wheel avec la commande suivante : pip wheel --no-deps pandas-1.2.4.tar.gz

Importer un package

  1. Dans votre compte Automation, sélectionnez Packages Python sous Ressources partagées. Puis sélectionnez + Add a Python package (Ajouter un package Python).

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

  2. Dans la page Ajouter un package Python, sélectionnez un package local à charger. Le package peut être un fichier .whl ou .tar.gz pour Python 3.8 et un fichier .whl pour Python 3.10 (préversion).

  3. Entrez un nom, puis sélectionnez la version du runtime Python 3.8 ou Python 3.10 (préversion).

    Remarque

    Actuellement, la version d'exécution Python 3.10 (préversion) est prise en charge pour les tâches cloud et hybrides dans toutes les régions publiques, à l'exception de l'Australie Central2, de la Corée du Sud, de la Suède Sud, de Jio India Central, du Brésil Sud-Est, de l'Inde centrale, de l'Inde occidentale, des Émirats arabes unis Centre et des nuages ​​gouvernementaux. .

  4. Cliquez sur Importer.

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

Dès qu’un package est importé, il est listé dans la page des packages Python de votre compte Automation. Pour supprimer un package, sélectionnez-le, puis cliquez sur Supprimer.

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

Importer un package avec des dépendances

Vous pouvez importer un package Python 3.8 et ses dépendances en important le script Python suivant dans un runbook Python 3.8. Vérifiez que l’identité managée est activée pour votre compte Automation et dispose d’un accès contributeur Automation pour une importation réussie du package.

https://github.com/azureautomation/runbooks/blob/master/Utility/Python/import_py3package_from_pypi.py

Importation du script dans un runbook

Pour plus d’informations sur l’importation des runbooks, consultez Importer un runbook à partir du Portail Azure. Copiez le fichier à partir de GitHub vers le stockage auquel le portail peut accéder avant d’exécuter l’importation.

Remarque

Actuellement, l’importation d’un runbook à partir du portail Azure n’est pas prise en charge pour Python 3.10 (préversion).

La page Importer un runbook donne par défaut un nom au runbook pour qu’il corresponde à celui du script. Si vous avez accès au champ, vous pouvez modifier le nom. Le type de runbook peut par défaut être Python 2.7. Si c’est le cas, veillez à le remplacer par Python 3.8.

Screenshot shows the Python 3 runbook import page.

Exécution du runbook pour importer le package et les dépendances

Après avoir créé et publié le runbook, exécutez-le pour importer le package. Pour plus d’informations sur l’exécution du runbook, consultez Démarrer un runbook dans Azure Automation.

Le script (import_py3package_from_pypi.py) requiert les paramètres suivants.

Paramètre Description
subscription_id ID d’abonnement du compte Automation
resource_group Nom du groupe de ressources dans lequel est défini le compte Automation
automation_account Nom du compte Automation
module_name Nom du module à importer de pypi.org
version_module Version du module

La valeur du paramètre doit être fournie sous forme d’une chaîne unique au format ci-dessous :

-s <subscription_id> -g <resource_group> -a<automation_account> -m <module_name> -v <module_version>

Pour plus d’informations sur l’utilisation des paramètres avec runbooks, consultez Utiliser les paramètres runbook.

Utiliser un package dans un runbook

Une fois le package importé, vous pouvez l’utiliser dans un runbook. Ajoutez le code suivant pour lister tous les groupes de ressources dans un abonnement Azure.

#!/usr/bin/env python3 
import os 
import requests  
# printing environment variables 
endPoint = os.getenv('IDENTITY_ENDPOINT')+"?resource=https://management.azure.com/" 
identityHeader = os.getenv('IDENTITY_HEADER') 
payload={} 
headers = { 
  'X-IDENTITY-HEADER': identityHeader,
  'Metadata': 'True' 
} 
response = requests.request("GET", endPoint, headers=headers, data=payload) 
print(response.text)

Remarque

Le package automationassets Python n’étant pas disponible sur pypi.org, il n’est pas disponible pour importation sur une worker hybride runbook Windows.

Identifier les packages disponibles dans le bac à sable

Utilisez le code suivant pour répertorier les modules installés par défaut :

#!/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)

Applets de commande PowerShell Python 3.8

Ajouter un nouveau package Python 3.8

New-AzAutomationPython3Package -AutomationAccountName tarademo  -ResourceGroupName mahja -Name requires.io -ContentLinkUri https://files.pythonhosted.org/packages/7f/e2/85dfb9f7364cbd7a9213caea0e91fc948da3c912a2b222a3e43bc9cc6432/requires.io-0.2.6-py2.py3-none-any.whl 

Response  
ResourceGroupName     : mahja 
AutomationAccountName : tarademo 
Name                  : requires.io 
IsGlobal              : False 
Version               : 
SizeInBytes           : 0 
ActivityCount         : 0 
CreationTime          : 9/26/2022 1:37:13 PM +05:30 
LastModifiedTime      : 9/26/2022 1:37:13 PM +05:30 
ProvisioningState     : Creating 

Répertorier tous les packages Python 3.8

Get-AzAutomationPython3Package -AutomationAccountName tarademo  -ResourceGroupName mahja 

Response : 
ResourceGroupName     : mahja 
AutomationAccountName : tarademo 
Name                  : cryptography 
IsGlobal              : False 
Version               : 
SizeInBytes           : 0 
ActivityCount         : 0 
CreationTime          : 9/26/2022 11:52:28 AM +05:30 
LastModifiedTime      : 9/26/2022 12:11:00 PM +05:30 
ProvisioningState     : Failed 
ResourceGroupName     : mahja 
AutomationAccountName : tarademo 
Name                  : requires.io 
IsGlobal              : False 
Version               : 
SizeInBytes           : 0 
ActivityCount         : 0 
CreationTime          : 9/26/2022 1:37:13 PM +05:30 
LastModifiedTime      : 9/26/2022 1:39:04 PM +05:30 
ProvisioningState     : ContentValidated 
ResourceGroupName     : mahja 
AutomationAccountName : tarademo 
Name                  : sockets 
IsGlobal              : False 
Version               : 1.0.0 
SizeInBytes           : 4495 
ActivityCount         : 0 
CreationTime          : 9/20/2022 12:46:28 PM +05:30 
LastModifiedTime      : 9/22/2022 5:03:42 PM +05:30 
ProvisioningState     : Succeeded 

Obtenir des détails sur un package spécifique

Get-AzAutomationPython3Package -AutomationAccountName tarademo  -ResourceGroupName mahja -Name sockets 


Response  
ResourceGroupName     : mahja 
AutomationAccountName : tarademo 
Name                  : sockets 
IsGlobal              : False 
Version               : 1.0.0 
SizeInBytes           : 4495 
ActivityCount         : 0 
CreationTime          : 9/20/2022 12:46:28 PM +05:30 
LastModifiedTime      : 9/22/2022 5:03:42 PM +05:30 
ProvisioningState     : Succeeded 

Supprimer le package Python 3.8

Remove-AzAutomationPython3Package -AutomationAccountName tarademo  -ResourceGroupName mahja -Name sockets 

Mettre à jour le package Python 3.8

Set-AzAutomationPython3Package -AutomationAccountName tarademo  -ResourceGroupName mahja -Name requires.io -ContentLinkUri https://files.pythonhosted.org/packages/7f/e2/85dfb9f7364cbd7a9213caea0e91fc948da3c912a2b222a3e43bc9cc6432/requires.io-0.2.6-py2.py3-none-any.whl 


ResourceGroupName     : mahja 
AutomationAccountName : tarademo 
Name                  : requires.io 
IsGlobal              : False 
Version               : 0.2.6 
SizeInBytes           : 10109 
ActivityCount         : 0 
CreationTime          : 9/26/2022 1:37:13 PM +05:30 
LastModifiedTime      : 9/26/2022 1:43:12 PM +05:30 
ProvisioningState     : Creating 

Étapes suivantes

Pour préparer un runbook Python, consultez Créer un runbook Python.