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.

Paket Python default

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.

Versi default dapat diganti dengan mengadopsi paket Python ke 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 (pratinjau).

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 (pratinjau) 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 nama file Deskripsi
cp38 Automation mendukung Python 3.8 untuk pekerjaan Cloud.
amd64 Proses kotak pasir Azure adalah arsitektur Windows 64-bit.

Contohnya:

  • Untuk mengimpor panda - pilih file roda dengan nama yang mirip dengan pandas-1.2.3-cp38-win_amd64.whl.

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

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

  1. Unduh 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

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

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

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

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

    Catatan

    Saat ini, versi runtime Python 3.10 (pratinjau) didukung untuk pekerjaan Cloud dan Hybrid di semua wilayah Publik kecuali awan Australia Tengah2, Korea Selatan, Swedia Selatan, Jio India Tengah, Brasil Tenggara, India Tengah, India Barat, UEA Tengah, dan Gov.

  4. Pilih Impor.

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

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

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

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 ruunbook

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.

Catatan

Saat ini, mengimpor runbook dari Portal Microsoft Azure tidak didukung untuk Python 3.10 (pratinjau).

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.

Screenshot shows the Python 3 runbook import page.

Mengeksekusi 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
subscription_id ID langganan akun Automation
resource_group Nama grup sumber daya tempat akun Automation didefinisikan dalam
automation_account Nama akun Automation
module_name Nama modul yang akan diimpor pypi.org
module_version 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 menggunakan parameter dengan runbook, lihat Bekerja dengan parameter runbook.

Menggunakan paket dalam runbook

Dengan paket yang diimpor, Anda dapat menggunakannya dalam runbook. 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, sehingga tidak tersedia untuk 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.