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:
- Unduh file sumber
pandas-1.2.4.tar.gz
. - Jalankan pip untuk mendapatkan file roda dengan perintah berikut:
pip wheel --no-deps pandas-1.2.4.tar.gz
Mengimpor paket
Di akun Automation Anda, pilih Paket Python di bawah Sumber Daya Bersama. Kemudian, pilih + Tambahkan paket Python.
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).
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.
Pilih impor.
Setelah sebuah paket diimpor, paket tersebut terdaftar di halaman paket Python di akun Automation Anda. Untuk menghapus paket, pilih paket dan pilih Hapus.
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.
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.