Integrasikan Alibaba Cloud SDK ke dalam proyek Anda untuk menyederhanakan pemanggilan OpenAPI dan mengurangi biaya pemeliharaan. Integrasi SDK mencakup tiga langkah: impor SDK, atur kredensial akses, dan panggil API.
Persyaratan lingkungan
Python 3.7 atau versi yang lebih baru.
Impor SDK
-
Masuk ke SDK Center dan pilih produk yang API-nya ingin Anda panggil, seperti Short Message Service (SMS).
-
Pada halaman Installation, dan untuk All Languages, pilih Python. Lalu, pada tab Quick Start, Anda dapat menemukan metode instalasi SDK untuk Short Message Service (SMS).

Atur kredensial akses
Pemanggilan Alibaba Cloud OpenAPI memerlukan kredensial akses, biasanya berupa AccessKey (AK) atau Security Token Service (STS) token. Simpan kredensial dalam variabel lingkungan untuk mencegah kebocoran. Penggunaan aman kredensial akses. Contoh berikut menggunakan variabel lingkungan ALIBABA_CLOUD_ACCESS_KEY_ID dan ALIBABA_CLOUD_ACCESS_KEY_SECRET:
Konfigurasi di Linux dan macOS
Konfigurasi variabel lingkungan menggunakan perintah export
Variabel lingkungan sementara yang diatur menggunakan perintah export hanya berlaku untuk sesi saat ini. Variabel tersebut akan dihapus ketika sesi berakhir. Untuk penyimpanan jangka panjang (LTR), tambahkan perintah export ke file konfigurasi startup sistem operasi Anda.
Konfigurasi ID AccessKey dan tekan Enter.
# Ganti yourAccessKeyID dengan ID AccessKey Anda. export ALIBABA_CLOUD_ACCESS_KEY_ID=yourAccessKeyIDKonfigurasi rahasia AccessKey dan tekan Enter.
# Ganti yourAccessKeySecret dengan rahasia AccessKey Anda. export ALIBABA_CLOUD_ACCESS_KEY_SECRET=yourAccessKeySecretVerifikasi konfigurasi.
Jalankan perintah
echo $ALIBABA_CLOUD_ACCESS_KEY_ID. Jika perintah tersebut mengembalikan ID AccessKey yang benar, konfigurasi berhasil.
Konfigurasi di Windows
Gunakan antarmuka pengguna grafis (GUI)
Prosedur
Langkah-langkah berikut menjelaskan cara mengatur variabel lingkungan menggunakan GUI di Windows 10.
Di desktop Anda, klik kanan This PC dan pilih Properties > Advanced system settings > Environment Variables > New di bawah System variables atau User variables. Lalu, lengkapi konfigurasinya.
Variabel
Contoh nilai
AccessKey ID
Nama variabel: ALIBABA_CLOUD_ACCESS_KEY_ID
Nilai variabel: yourAccessKeyID
AccessKey Secret
Nama variabel: ALIBABA_CLOUD_ACCESS_KEY_SECRET
Nilai variabel: yourAccessKeySecret
Uji konfigurasi
Klik Start (atau gunakan pintasan keyboard Win+R), klik Run, masukkan `cmd`, lalu klik OK (atau tekan Enter) untuk membuka command prompt. Jalankan perintah
echo %ALIBABA_CLOUD_ACCESS_KEY_ID%danecho %ALIBABA_CLOUD_ACCESS_KEY_SECRET%. Jika perintah tersebut mengembalikan AccessKey yang benar, konfigurasi berhasil.
Gunakan command prompt (CMD)
Prosedur
Buka command prompt sebagai administrator dan jalankan perintah berikut untuk menambahkan variabel lingkungan baru ke sistem.
setx ALIBABA_CLOUD_ACCESS_KEY_ID yourAccessKeyID /M setx ALIBABA_CLOUD_ACCESS_KEY_SECRET yourAccessKeySecret /MParameter
/Mmenunjukkan variabel lingkungan sistem. Anda dapat menghilangkan parameter ini saat mengatur variabel lingkungan pengguna.Uji konfigurasi
Klik Start (atau gunakan pintasan keyboard Win+R), klik Run, masukkan `cmd`, lalu klik OK (atau tekan Enter) untuk membuka command prompt. Jalankan perintah
echo %ALIBABA_CLOUD_ACCESS_KEY_ID%danecho %ALIBABA_CLOUD_ACCESS_KEY_SECRET%. Jika perintah tersebut mengembalikan AccessKey yang benar, konfigurasi berhasil.
Menggunakan Windows PowerShell
Di PowerShell, Anda dapat mengatur variabel lingkungan baru yang berlaku untuk semua sesi baru:
[System.Environment]::SetEnvironmentVariable('ALIBABA_CLOUD_ACCESS_KEY_ID', 'yourAccessKeyID', [System.EnvironmentVariableTarget]::User)
[System.Environment]::SetEnvironmentVariable('ALIBABA_CLOUD_ACCESS_KEY_SECRET', 'yourAccessKeySecret', [System.EnvironmentVariableTarget]::User)Untuk mengatur variabel lingkungan bagi semua pengguna, Anda harus memiliki izin administratif:
[System.Environment]::SetEnvironmentVariable('ALIBABA_CLOUD_ACCESS_KEY_ID', 'yourAccessKeyID', [System.EnvironmentVariableTarget]::Machine)
[System.Environment]::SetEnvironmentVariable('ALIBABA_CLOUD_ACCESS_KEY_SECRET', 'yourAccessKeySecret', [System.EnvironmentVariableTarget]::Machine)Anda juga dapat mengatur variabel lingkungan sementara yang hanya berlaku untuk sesi saat ini:
$env:ALIBABA_CLOUD_ACCESS_KEY_ID = "yourAccessKeyID"
$env:ALIBABA_CLOUD_ACCESS_KEY_SECRET = "yourAccessKeySecret"Di PowerShell, jalankan perintah Get-ChildItem env:ALIBABA_CLOUD_ACCESS_KEY_ID dan Get-ChildItem env:ALIBABA_CLOUD_ACCESS_KEY_SECRET. Jika perintah tersebut mengembalikan AccessKey yang benar, konfigurasi berhasil.
Gunakan SDK
Contoh berikut memanggil API dan SendMessageToGlobe dari Short Message Service (SMS). Referensi API: SendMessageToGlobe — , SendMessageToGlobe.
1. Inisialisasi klien permintaan
Semua permintaan API dikirim melalui klien. Inisialisasi klien sebelum memanggil API apa pun. Contoh ini menggunakan AccessKey. Metode inisialisasi lainnya dijelaskan dalam Kelola kredensial akses.
-
Objek klien seperti instans atau Dysmsapi20180501Client bersifat thread-safe dan dapat digunakan bersama di berbagai thread.
-
Hindari pembuatan objek klien secara berulang. Gunakan pola singleton untuk mempertahankan satu instans klien per set kredensial dan titik akhir selama siklus hidup aplikasi.
@staticmethod
def create_client() -> Dysmsapi20180501Client:
config = open_api_models.Config(
# Wajib, pastikan variabel lingkungan ALIBABA_CLOUD_ACCESS_KEY_ID telah diatur.,
access_key_id=os.environ['ALIBABA_CLOUD_ACCESS_KEY_ID'],
# Wajib, pastikan variabel lingkungan ALIBABA_CLOUD_ACCESS_KEY_SECRET telah diatur.,
access_key_secret=os.environ['ALIBABA_CLOUD_ACCESS_KEY_SECRET']
)
# Lihat https://api.alibabacloud.com/product/Dysmsapi.
config.endpoint = f'dysmsapi.aliyuncs.com'
return Dysmsapi20180501Client(config)
2. Buat objek permintaan
Teruskan parameter melalui objek permintaan SDK, bernama <Nama operasi API>Request (misalnya, SendSmsRequest). Detail parameter: , SendMessageToGlobe.
API tanpa parameter permintaan, seperti DescribeCdnSubList, tidak memerlukan objek permintaan.
# Buat objek permintaan dan atur parameter input yang diperlukan
send_message_to_globe_request = dysmsapi_20180501_models.SendMessageToGlobeRequest(
# Ganti dengan nomor penerima yang sebenarnya.
to='<YOUR_NUMBER>',
# Ganti dengan konten SMS yang sebenarnya.
message='<YOUR_MESSAGE>'
)
3. Kirim permintaan
Panggil API menggunakan <nama_api>_with_options, di mana <nama_api> adalah nama OpenAPI dalam format snake_case. Fungsi ini menerima objek permintaan dan objek opsi runtime untuk pengaturan timeout dan proxy. Konfigurasi Lanjutan.
Untuk API tanpa parameter permintaan, seperti DescribeCdnSubList, cukup teruskan opsi runtime saja.
# Buat parameter runtime.
runtime = util_models.RuntimeOptions()
client = create_client()
# Kirim permintaan.
client.send_message_to_globe_with_options(send_message_to_globe_request, runtime)
4. Tangani pengecualian
SDK Python V2.0 mengklasifikasikan pengecualian menjadi dua jenis utama: TeaUnretryableException dan TeaException.
-
TeaUnretryableException: Dilemparkan setelah semua upaya ulang untuk masalah jaringan habis.
-
TeaException: Dilemparkan untuk kesalahan di sisi layanan.
Selalu tangani pengecualian dengan benar — sebarkan, catat log, atau pulihkan — untuk memastikan stabilitas sistem.
Klik untuk melihat contoh kode lengkap
Skenario khusus: Konfigurasi API Advance untuk unggah file
Beberapa produk cloud (seperti Image Search dan Visual Intelligence API) tidak mendukung unggah file langsung melalui OpenAPI standar. Gunakan API Advance untuk meneruskan aliran file. File tersebut disimpan sementara di OSS (wilayah default: cn-shanghai), lalu dibaca oleh produk tersebut. Contoh berikut menggunakan API DetectBodyCount dari Alibaba Cloud Visual Intelligence API (Face and Body):
File sementara yang disimpan di Alibaba Cloud OSS akan dibersihkan secara berkala.
-
1. Inisialisasi klien permintaan
Atur baik
region_idmaupunendpointproduk.region_idmenentukan wilayah OSS untuk penyimpanan file sementara. Jikaregion_idtidak sesuai dengan wilayah produk, timeout dapat terjadi.def create_client() -> facebody20191230Client: config = open_api_models.Config( # Wajib. Pastikan variabel lingkungan ALIBABA_CLOUD_ACCESS_KEY_ID telah diatur di lingkungan eksekusi kode Anda. access_key_id=os.environ['ALIBABA_CLOUD_ACCESS_KEY_ID'], # Wajib. Pastikan variabel lingkungan ALIBABA_CLOUD_ACCESS_KEY_SECRET telah diatur di lingkungan eksekusi kode Anda. access_key_secret=os.environ['ALIBABA_CLOUD_ACCESS_KEY_SECRET'] ) # Titik akhir dan regionId harus diatur ke wilayah yang sama. config.region_id = 'cn-shanghai' config.endpoint = 'facebody.cn-shanghai.aliyuncs.com' return facebody20191230Client(config) -
Buat objek permintaan
Buat objek
<NamaOpenAPI>AdvanceRequestdan teruskan aliran file sebagaiImageURLObject.# Buka file sebagai aliran biner. with open('<FILE_PATH>', "rb") as f: # Ganti dengan path file Anda. # Atur parameter permintaan. detect_body_count_advance_request = facebody_20191230_models.DetectBodyCountAdvanceRequest( image_urlobject = f, ) -
Kirim permintaan
Panggil
<namaApi>Advanceuntuk mengirim permintaan, di mana<namaApi>adalah nama OpenAPI dalam format lower camelCase.# Konfigurasi runtime. runtime = util_models.RuntimeOptions() client = create_client() # Kirim permintaan. res = client.detect_body_count_advance(detect_body_count_advance_request, runtime)
FAQ
-
Pemanggilan OpenAPI menghasilkan kesalahan "You are not authorized to perform this operation".
-
Pemanggilan OpenAPI menghasilkan kesalahan "SDK.EndpointResolvingError" terkait Titik Akhir.
-
Pemanggilan OpenAPI menghasilkan kesalahan `AttributeError: 'AttributeError' object has no attribute 'message'` atau `KeyError: 'ALIBABA_CLOUD_ACCESS_KEY_ID'` terkait AccessKey.
Solusi kesalahan SDK tambahan: FAQ.