Alibaba Cloud SDK untuk Python memungkinkan Anda mengakses layanan Alibaba Cloud tanpa perlu melakukan pengkodean yang kompleks. Topik ini menjelaskan cara menggunakan Alibaba Cloud SDK untuk Python guna memanggil operasi API yang disediakan oleh CloudOps Orchestration Service (OOS) untuk menjalankan tugas pembaruan bergulir.
Informasi latar belakang
Tugas pembaruan bergulir dapat digunakan untuk memperbarui konfigurasi beberapa instance Elastic Compute Service (ECS) secara bersamaan. Anda dapat menggunakan tugas pembaruan bergulir untuk memperbarui gambar secara batch, mengeksekusi skrip, dan menginstal paket OOS pada beberapa instance ECS dalam status In Service. Instance ECS harus termasuk dalam grup penskalaan yang sama.
Prasyarat
Pengguna Resource Access Management (RAM) telah dibuat dan pasangan AccessKey diperoleh. Untuk informasi lebih lanjut, lihat Buat Pasangan AccessKey untuk Pengguna RAM. Saat memanggil operasi API, Anda harus menggunakan pasangan AccessKey untuk menyelesaikan autentikasi identitas.
PentingUntuk melindungi pasangan AccessKey akun Alibaba Cloud Anda, kami sarankan Anda membuat pengguna RAM, memberikan izin kepada pengguna RAM untuk mengakses Auto Scaling, dan kemudian menggunakan pasangan AccessKey dari pengguna RAM untuk memanggil Auto Scaling SDK untuk Python. Untuk informasi lebih lanjut, lihat Kebijakan Sistem untuk Auto Scaling.
Rahasia AccessKey pengguna RAM hanya ditampilkan saat Anda membuat pasangan AccessKey. Anda tidak dapat melihat rahasia AccessKey setelah pasangan AccessKey dibuat. Setelah membuat pasangan AccessKey, simpan rahasia AccessKey di lokasi yang aman.
Variabel lingkungan telah dikonfigurasi. Untuk informasi lebih lanjut, lihat Konfigurasikan Variabel Lingkungan di Linux, macOS, dan Windows. Dalam topik ini, variabel lingkungan
ALIBABA_CLOUD_ACCESS_KEY_IDdanALIBABA_CLOUD_ACCESS_KEY_SECRETdigunakan untuk mengonfigurasi alat Kredensial Alibaba Cloud untuk verifikasi identitas. Ini memungkinkan Anda mengakses Alibaba Cloud OpenAPI Explorer tanpa perlu pasangan AccessKey plaintext yang di-hardcode.Grup penskalaan telah dibuat dan instance ECS telah ditambahkan ke grup penskalaan. Untuk informasi lebih lanjut, lihat Buat Grup Penskalaan Berdasarkan Instance ECS yang Ada.
Python 3.6 atau yang lebih baru telah diinstal di komputer lokal Anda.
Langkah 1: Instal Alibaba Cloud SDK untuk Python
Jalankan perintah berikut untuk memeriksa apakah Alibaba Cloud SDK untuk Python telah diinstal.
python --versionJika Alibaba Cloud SDK untuk Python telah diinstal, keluaran berikut akan ditampilkan.

Jalankan perintah berikut untuk menginstal dependensi OOS:
pip install alibabacloud_oos20190601==3.2.1
Langkah 2: Jalankan tugas pembaruan bergulir
Buat skrip Python dan masukkan kode contoh berikut untuk menjalankan tugas pembaruan bergulir.
Untuk informasi tentang parameter template OOS dalam kode, lihat Parameter Template. Contoh kode:
# -*- coding: utf-8 -*- import os import sys from typing import List from alibabacloud_oos20190601.client import Client as oos20190601Client from alibabacloud_tea_openapi import models as open_api_models from alibabacloud_oos20190601 import models as oos_20190601_models from alibabacloud_tea_util import models as util_models from alibabacloud_tea_util.client import Client as UtilClient class Sample: def __init__(self): pass @staticmethod def create_client() -> oos20190601Client: """ Gunakan ID AccessKey dan Rahasia AccessKey Anda untuk menginisialisasi klien. @return: Client @throws Exception """ # Jika kode proyek bocor, pasangan AccessKey mungkin bocor dan keamanan semua sumber daya di akun Alibaba Cloud Anda mungkin terganggu. Baris berikut disediakan hanya untuk referensi. config = open_api_models.Config( # Diperlukan. Pastikan bahwa variabel lingkungan ALIBABA_CLOUD_ACCESS_KEY_ID dikonfigurasi., access_key_id=os.environ['ALIBABA_CLOUD_ACCESS_KEY_ID'], # Diperlukan. Pastikan bahwa variabel lingkungan ALIBABA_CLOUD_ACCESS_KEY_SECRET dikonfigurasi., access_key_secret=os.environ['ALIBABA_CLOUD_ACCESS_KEY_SECRET'] ) config.endpoint = f'oos.cn-hangzhou.aliyuncs.com' return oos20190601Client(config) @staticmethod def main( args: List[str], ) -> None: client = Sample.create_client() tags = { 'scaling_group': 'asg-bp1******' } start_execution_request = oos_20190601_models.StartExecutionRequest( region_id='cn-hangzhou', template_name='ACS-ESS-RollingUpdateByRunCommandInScalingGroup', parameters='''{"invokeType": "invoke", "scalingGroupId": "asg-bp1******", "commandType": "RunShellScript", "invokeScript": "df -h;ifconfig", "rollbackScript": "df -h;ifconfig", "OOSAssumeRole": "", "exitProcess": [ "ScaleIn", "ScaleOut", "HealthCheck", "AlarmNotification", "ScheduledAction" ], "enterProcess": [ "ScaleIn", "ScaleOut", "HealthCheck", "AlarmNotification", "ScheduledAction" ], "batchNumber": 2, "batchPauseOption": "Automatic"}''', tags=tags ) runtime = util_models.RuntimeOptions() try: # Tulis kode untuk mencetak respons dari operasi API berdasarkan kebutuhan bisnis Anda. resp = client.start_execution_with_options(start_execution_request, runtime) print(resp.body) except Exception as error: # Berhati-hatilah saat Anda menangani pengecualian dalam skenario bisnis aktual, dan jangan abaikan pengecualian dalam proyek Anda. Dalam contoh ini, pesan kesalahan dicetak hanya untuk referensi. # Tampilkan pesan kesalahan. print(error.message) # Tampilkan informasi tentang pemecahan masalah. print(error.data.get("Recommend")) UtilClient.assert_as_string(error.message) if __name__ == '__main__': Sample.main(sys.argv[1:])Jalankan skrip Python dan lihat responsnya.
CatatanSaat mengeksekusi tugas pembatalan, masukkan ID eksekusi dari tugas pembaruan bergulir sumber. Anda dapat memperoleh informasi seperti ID eksekusi dari tugas pembaruan bergulir sumber dalam keluaran perintah, seperti yang ditunjukkan pada gambar berikut.

Langkah 3: (Opsional) Jalankan tugas pembatalan
Jika pengecualian terjadi saat tugas pembaruan bergulir dijalankan atau Anda ingin menggunakan konfigurasi sebelumnya setelah tugas pembaruan bergulir dijalankan, Anda dapat menjalankan tugas pembatalan untuk memulihkan konfigurasi instance ECS.
Buat skrip Python dan masukkan kode contoh berikut untuk menjalankan tugas pembatalan.
Untuk informasi tentang parameter template OOS dalam kode, lihat Parameter Template. Contoh kode:
# -*- coding: utf-8 -*- import os import sys from typing import List from alibabacloud_oos20190601.client import Client as oos20190601Client from alibabacloud_tea_openapi import models as open_api_models from alibabacloud_oos20190601 import models as oos_20190601_models from alibabacloud_tea_util import models as util_models from alibabacloud_tea_util.client import Client as UtilClient class Sample: def __init__(self): pass @staticmethod def create_client() -> oos20190601Client: """ Gunakan ID AccessKey dan Rahasia AccessKey Anda untuk menginisialisasi klien. @return: Client @throws Exception """ # Jika kode proyek bocor, pasangan AccessKey mungkin bocor dan keamanan semua sumber daya di akun Alibaba Cloud Anda mungkin terganggu. Baris berikut disediakan hanya untuk referensi. config = open_api_models.Config( # Diperlukan. Pastikan bahwa variabel lingkungan ALIBABA_CLOUD_ACCESS_KEY_ID dikonfigurasi., access_key_id=os.environ['ALIBABA_CLOUD_ACCESS_KEY_ID'], # Diperlukan. Pastikan bahwa variabel lingkungan ALIBABA_CLOUD_ACCESS_KEY_SECRET dikonfigurasi., access_key_secret=os.environ['ALIBABA_CLOUD_ACCESS_KEY_SECRET'] ) config.endpoint = f'oos.cn-hangzhou.aliyuncs.com' return oos20190601Client(config) @staticmethod def main( args: List[str], ) -> None: client = Sample.create_client() tags = { 'scaling_group': 'asg-bp1******' } start_execution_request = oos_20190601_models.StartExecutionRequest( region_id='cn-hangzhou', template_name='ACS-ESS-RollingUpdateByRunCommandInScalingGroup', parameters='''{"invokeType": "rollback", "scalingGroupId": "asg-bp1******", "commandType": "RunShellScript", "rollbackScript": "df -h;ifconfig", "OOSAssumeRole": "", "sourceExecutionId": "exec-c1******", "batchNumber": 2, "batchPauseOption": "Automatic"}''', tags=tags ) runtime = util_models.RuntimeOptions() try: # Tulis kode untuk mencetak respons dari operasi API berdasarkan kebutuhan bisnis Anda. resp = client.start_execution_with_options(start_execution_request, runtime) print(resp.body) except Exception as error: # Berhati-hatilah saat Anda menangani pengecualian dalam skenario bisnis aktual, dan jangan abaikan pengecualian dalam proyek Anda. Dalam contoh ini, pesan kesalahan dicetak hanya untuk referensi. # Tampilkan pesan kesalahan. print(error.message) # Tampilkan informasi tentang pemecahan masalah. print(error.data.get("Recommend")) UtilClient.assert_as_string(error.message) if __name__ == '__main__': Sample.main(sys.argv[1:])Jalankan skrip Python dan lihat responsnya.
Gambar berikut menunjukkan sebuah contoh.
Parameter template
Tabel berikut menjelaskan parameter template publik ACS-ESS-RollingUpdateByRunCommandInScalingGroup yang digunakan dalam topik ini.
Parameter | Deskripsi |
invokeType | Jenis tugas. Nilai yang valid:
|
scalingGroupId | Grup penskalaan tempat Anda ingin mengeksekusi tugas. |
commandType | Jenis skrip yang ingin Anda eksekusi. Nilai RunShellScript menentukan skrip shell. |
invokeScript | Skrip yang ingin Anda eksekusi pada instance ECS selama tugas pembaruan bergulir. |
rollbackScript | Skrip yang ingin Anda eksekusi pada instance ECS selama tugas pembatalan. |
OOSAssumeRole | Peran RAM yang ingin Anda gunakan untuk mengeksekusi tugas. Nilai default: OOSServiceRole. |
enterProcess | Proses penskalaan yang ingin Anda jeda sebelum tugas dieksekusi. |
exitProcess | Proses penskalaan yang ingin Anda lanjutkan setelah tugas dieksekusi. |
batchNumber | Jumlah batch ke dalam mana instance ECS dalam grup penskalaan dibagi untuk eksekusi tugas. Setiap batch berisi setidaknya satu instance ECS. |
batchPauseOption | Menentukan apakah dan bagaimana menangguhkan tugas. Nilai yang valid:
|
sourceExecutionId | ID eksekusi dari tugas pembaruan bergulir sumber saat tugas pembatalan dieksekusi. |