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é :
- Téléchargez le fichier source
pandas-1.2.4.tar.gz
. - 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
Dans votre compte Automation, sélectionnez Packages Python sous Ressources partagées. Puis sélectionnez + Add a Python package (Ajouter un package Python).
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).
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. .
Cliquez sur Importer.
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.
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.
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.