Bagikan melalui


Mengelola paket Python 3 di Azure Automation

Artikel ini menjelaskan cara mengimpor, mengelola, dan menggunakan paket Python 3 di Azure Automation yang berjalan di lingkungan kotak pasir Azure dan Hybrid Runbook Workers. Paket Python harus diunduh pada pekerja Runbook Hibrid untuk keberhasilan eksekusi pekerjaan. Untuk membantu menyederhanakan runbook, Anda dapat menggunakan paket Python untuk mengimpor modul yang Anda butuhkan.

Untuk informasi tentang mengelola paket Python 2, lihat Mengelola paket Python 2.

Catatan

Python 2.7 dan Python 3.8 tidak lagi didukung oleh platform induk Python. Kami menyarankan agar Anda membuat runbook di Python 3.10 saja.

Paket Python bawaan

Untuk mendukung runbook Python 3.8 di layanan Automation, beberapa paket Python diinstal secara default dan daftar paket ini tersedia di sini. Versi default dapat diganti dengan mengimpor paket Python ke akun Automation Anda.

Preferensi diberikan kepada versi impor dalam akun Automation Anda. Untuk mengimpor satu paket, lihat Mengimpor paket. Untuk mengimpor paket dengan beberapa paket, lihat Mengimpor paket dengan dependensi.

Catatan

Tidak ada paket default yang diinstal untuk Python 3.10.

Paket sebagai file sumber

Azure Automation hanya mendukung paket Python yang hanya berisi kode Python dan tidak menyertakan ekstensi atau kode bahasa lain dalam bahasa lain. Namun, lingkungan Azure Sandbox mungkin tidak memiliki kompiler yang diperlukan untuk binari C/C ++, jadi disarankan untuk menggunakan file roda sebagai gantinya.

Catatan

Saat ini, Python 3.10 hanya mendukung file roda.

Indeks Paket Python (PyPI) adalah repositori perangkat lunak untuk bahasa pemrograman Python. Saat memilih paket Python 3 untuk diimpor ke akun Automation Anda dari PyPI, perhatikan bagian nama file berikut:

Pilih versi Python:

Bagian dari nama file Deskripsi
cp310 Automation mendukung Python 3.10 untuk pekerjaan Cloud.
manylinux_x86_64 Proses kotak pasir Azure adalah arsitektur 64-bit berbasis Linux untuk runbook Python 3.10.

Contohnya:

  • Untuk mengimpor panda - pilih file roda dengan nama yang mirip dengan pandas-1.5.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl

Beberapa paket Python yang tersedia di PyPI tidak menyediakan file roda. Dalam hal ini, unduh sumber (file .zip atau .tar.gz) dan buat file roda menggunakan pip.

Lakukan langkah-langkah berikut menggunakan komputer Linux 64-bit dengan Python 3.10.x dan paket roda yang diinstal:

  1. Mengunduh file sumber pandas-1.2.4.tar.gz.
  2. Jalankan pip untuk mendapatkan file roda dengan perintah berikut: pip wheel --no-deps pandas-1.2.4.tar.gz

Mengimpor paket

Untuk mengimpor paket, ikuti langkah-langkah berikut:

  1. Di akun Automation Anda, pilih Paket Python di bawah Sumber Daya Bersama. Kemudian, pilih + Tambahkan paket Python.

    Cuplikan layar halaman paket Python menampilkan paket Python di menu kiri dan Tambahkan paket Python disorot.

  2. Pada halaman Tambahkan Paket Python, pilih paket lokal untuk diunggah. Paket dapat berupa file .whl atau .tar.gz untuk file Python 3.8 dan .whl untuk Python 3.10.

  3. Masukkan nama dan pilih Versi Runtime sebagai Python 3.8 atau Python 3.10.

  4. Pilih impor.

    Cuplikan layar memperlihatkan halaman Tambahkan Paket Python 3.8 dengan file tar.gz yang diunggah dipilih.

Setelah sebuah paket diimpor, paket tersebut terdaftar di halaman paket Python di akun Automation Anda. Untuk menghapus paket, pilih paket dan pilih Hapus.

Cuplikan layar memperlihatkan halaman paket Python 3.8 setelah paket diimpor.

Mengimpor paket dengan dependensi

Anda dapat mengimpor paket Python 3.8 dan dependensinya dengan mengimpor skrip Python berikut ke dalam runbook Python 3.8. Pastikan Identitas terkelola telah diaktifkan untuk akun Automation Anda dan memiliki akses Kontributor Automation untuk keberhasilan pengimporan paket.

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

Mengimpor skrip ke dalam runbook

Untuk informasi tentang mengimpor runbook, lihat Mengimpor runbook dari portal Microsoft Azure. Salin file dari GitHub ke penyimpanan yang dapat diakses portal sebelum Anda menjalankan impor.

Halaman Impor runbook default nama runbook agar sesuai dengan nama skrip. Jika Anda memiliki akses ke bidang, Anda bisa mengubah nama. Tipe Runbook mungkin default ke Python 2.7. Jika ya, pastikan untuk mengubahnya menjadi Python 3.8.

Cuplikan layar memperlihatkan halaman impor runbook Python 3.

Jalankan runbook untuk mengimpor paket dan dependensi

Setelah membuat dan menerbitkan runbook, jalankan untuk mengimpor paket. Lihat Memulai runbook di Azure Automation untuk detail tentang mengeksekusi runbook.

Skrip (import_py3package_from_pypi.py) memerlukan parameter berikut.

Parameter Deskripsi
id_langganan ID langganan akun Automation
grup sumber daya Nama grup sumber daya di mana akun Automation didefinisikan
akun otomatisasi Nama akun Automation
module_name Nama modul yang akan diimpor pypi.org
versi_modul Versi modul

Nilai parameter harus disediakan sebagai string tunggal dalam format di bawah ini:

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

Untuk informasi selengkapnya tentang penggunaan parameter pada runbook, lihat Bekerja dengan parameter pada runbook.

Menggunakan paket dalam runbook

Dengan paket perangkat lunak yang diimpor, Anda dapat menggunakannya dalam buku panduan. Tambahkan kode berikut untuk mencantumkan semua grup sumber daya dalam langganan 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)

Catatan

Paket Python automationassets tidak tersedia di pypi.org, oleh karena itu tidak dapat diimpor ke pekerja runbook hibrid Windows.

Mengidentifikasi paket yang tersedia di kotak pasir

Gunakan kode berikut untuk mencantumkan modul yang diinstal secara default:

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

Cmdlet PowerShell Python 3.8

Tambahkan paket Python 3.8 baru

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 

Mencantumkan semua paket 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 

Mendapatkan detail tentang paket tertentu

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 

Hapus paket Python 3.8

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

Memperbarui paket 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 

Langkah berikutnya

Untuk menyiapkan runbook Python, lihat Membuat runbook Python.