ECS SDK V2.0 untuk Python memungkinkan Anda memanggil operasi API ECS langsung dari Python. Panduan ini menjelaskan cara menginstal SDK dan memanggil operasi DescribeInstances untuk menampilkan daftar instance ECS.
Prasyarat
Sebelum memulai, pastikan Anda telah memiliki:
Pengguna Resource Access Management (RAM) dengan kebijakan sistem
AliyunECSReadonlyAccess(atau kebijakan kustom yang mencakup izin yang diperlukan — lihat Informasi otorisasi)Pasangan Kunci Akses (AccessKey pair) untuk pengguna RAM tersebut. Untuk membuatnya, lihat Buat AccessKey.
ID AccessKey dan AccessKey Secret yang telah dikonfigurasi sebagai variabel lingkungan (
ALIBABA_CLOUD_ACCESS_KEY_IDdanALIBABA_CLOUD_ACCESS_KEY_SECRET).
Menggunakan AccessKey akun root Alibaba Cloud memberikan akses penuh ke semua resource dan menimbulkan risiko keamanan yang signifikan. Selalu gunakan pengguna RAM dengan izin minimal yang diperlukan saja.
Instal SDK
Jalankan perintah berikut untuk menginstal ECS SDK V2.0 untuk Python:
pip install alibabacloud_ecs20140526Perintah ini menginstal paket khusus ECS. Untuk opsi instalasi lainnya, lihat SDK Center.
Panggil operasi DescribeInstances
Langkah-langkah berikut menggunakan DescribeInstances sebagai contoh. Pola yang sama berlaku untuk operasi API ECS lainnya.
Langkah 1: Inisialisasi client
Buat client dengan meneruskan kredensial dan titik akhir (endpoint) Anda ke objek Config. SDK membaca kredensial dari variabel lingkungan untuk menghindari hardcoding nilai sensitif dalam kode Anda.
import os
from alibabacloud_tea_openapi.models import Config
from alibabacloud_ecs20140526.client import Client as Ecs20140526Client
def create_client() -> Ecs20140526Client:
config = Config(
# Baca kredensial dari variabel lingkungan — jangan pernah hardcode.
access_key_id=os.environ['ALIBABA_CLOUD_ACCESS_KEY_ID'],
access_key_secret=os.environ['ALIBABA_CLOUD_ACCESS_KEY_SECRET'],
endpoint='ecs.cn-hangzhou.aliyuncs.com'
)
return Ecs20140526Client(config)SDK juga mendukung jenis kredensial lain, seperti token Security Token Service (STS). Untuk detailnya, lihat Kelola kredensial akses.
Langkah 2: Buat objek request
Objek request mengikuti pola penamaan {OperationName}Request. Untuk DescribeInstances, gunakan DescribeInstancesRequest. Untuk semua parameter yang tersedia, lihat DescribeInstances.
from alibabacloud_ecs20140526 import models as ecs_20140526_models
describe_instances_request = ecs_20140526_models.DescribeInstancesRequest(
region_id='cn-hangzhou'
)Langkah 3: Panggil operasi
Teruskan objek request dan objek RuntimeOptions ke metode client. Objek respons mengikuti pola penamaan {OperationName}Response.
from alibabacloud_tea_util import models as util_models
runtime = util_models.RuntimeOptions()
describe_instances_response = client.describe_instances_with_options(
describe_instances_request, runtime
)
print(describe_instances_response.body)Untuk mengonfigurasi timeout, retry, dan pengaturan proxy, lihat Pengaturan lanjutan.
Langkah 4: Tangani exception
SDK melemparkan dua jenis exception:
| Exception | Penyebab | Field yang tersedia |
|---|---|---|
UnretryableException | Error jaringan (dilemparkan setelah mencapai batas maksimum retry) | message |
TeaException | Error API atau bisnis | code, message, data |
Tangkap exception untuk mencatat error dan menangani kegagalan secara elegan:
from Tea.exceptions import UnretryableException, TeaException
try:
describe_instances_response = client.describe_instances_with_options(
describe_instances_request, runtime
)
print(describe_instances_response.body)
except UnretryableException as e:
# Error jaringan. Catat dan tangani — jangan diabaikan diam-diam.
print(e)
except TeaException as e:
# Error API. Periksa e.code, e.message, dan e.data untuk detail lebih lanjut.
print(e)
except Exception as e:
# Error tak terduga. Catat dan tangani — jangan diabaikan diam-diam.
print(e)Contoh lengkap
Berikut ini contoh lengkap yang dapat dijalankan, menggabungkan semua langkah di atas:
import os
from Tea.exceptions import UnretryableException, TeaException
from alibabacloud_tea_openapi.models import Config
from alibabacloud_ecs20140526.client import Client as Ecs20140526Client
from alibabacloud_tea_util import models as util_models
from alibabacloud_ecs20140526 import models as ecs_20140526_models
class Sample:
def __init__(self):
pass
@staticmethod
def create_client() -> Ecs20140526Client:
config = Config(
# Baca kredensial dari variabel lingkungan — jangan pernah hardcode.
access_key_id=os.environ['ALIBABA_CLOUD_ACCESS_KEY_ID'],
access_key_secret=os.environ['ALIBABA_CLOUD_ACCESS_KEY_SECRET'],
endpoint='ecs.cn-hangzhou.aliyuncs.com'
)
return Ecs20140526Client(config)
@staticmethod
def main():
client = Sample.create_client()
describe_instances_request = ecs_20140526_models.DescribeInstancesRequest(
region_id='cn-hangzhou'
)
runtime = util_models.RuntimeOptions()
try:
describe_instances_response = client.describe_instances_with_options(
describe_instances_request, runtime
)
print(describe_instances_response.body)
except UnretryableException as e:
# Error jaringan. Tangani dengan hati-hati di lingkungan produksi — jangan diabaikan.
print(e)
except TeaException as e:
# Error API. Tangani dengan hati-hati di lingkungan produksi — jangan diabaikan.
print(e)
except Exception as e:
# Error tak terduga. Tangani dengan hati-hati di lingkungan produksi — jangan diabaikan.
print(e)
if __name__ == '__main__':
Sample.main()Langkah selanjutnya
Gunakan ECS SDK V2.0 untuk Python guna melakukan pemanggilan generik ke operasi API ECS tanpa objek request bertipe kuat.
Jika Anda menggunakan ECS SDK V1.0 untuk Python, lihat SDK Python V1.0.