Untuk mempermudah pemanggilan API, kami sarankan Anda mengintegrasikan Alibaba Cloud SDK ke dalam proyek Anda. SDK ini menyederhanakan proses pengembangan, mempercepat integrasi fitur, dan secara signifikan mengurangi biaya O&M. Untuk mengintegrasikan Alibaba Cloud SDK, ikuti langkah-langkah berikut: instal Alibaba Cloud SDK, konfigurasikan kredensial akses, dan gunakan SDK. Topik ini menjelaskan cara mengintegrasikan Alibaba Cloud SDK.
Prasyarat
Python 3.7 atau yang lebih baru telah diinstal.
Impor SDK.
Masuk ke SDK Center dan pilih layanan yang SDK-nya ingin Anda gunakan. Dalam contoh ini, Short Message Service (SMS) dipilih.
Pada halaman Short Message Service, pilih Python di bagian All languages. Pada tab Quick Start, dapatkan metode instalasi Short Message Service (SMS) SDK.

Konfigurasikan kredensial akses
Untuk memanggil operasi API layanan Alibaba Cloud, Anda harus mengonfigurasi kredensial akses, seperti Pasangan AccessKey atau Token Layanan Keamanan (STS). Untuk mencegah kebocoran pasangan AccessKey, Anda dapat mencatat pasangan AccessKey dalam variabel lingkungan. Untuk informasi lebih lanjut tentang solusi keamanan lainnya, lihat Solusi Keamanan Kredensial. Dalam contoh ini, variabel lingkungan ALIBABA_CLOUD_ACCESS_KEY_ID dan ALIBABA_CLOUD_ACCESS_KEY_SECRET digunakan untuk mencatat pasangan AccessKey.
Linux dan macOS
Konfigurasikan variabel lingkungan menggunakan perintah export
Variabel lingkungan sementara yang dikonfigurasi menggunakan perintah export hanya berlaku untuk sesi saat ini. Setelah Anda keluar dari sesi, variabel lingkungan yang dikonfigurasi menjadi tidak valid. Untuk mengonfigurasi variabel lingkungan permanen, Anda dapat menambahkan perintah export ke file konfigurasi startup sistem operasi yang sesuai.
Konfigurasikan ID AccessKey dan tekan Enter.
# Ganti <ACCESS_KEY_ID> dengan ID AccessKey Anda. export ALIBABA_CLOUD_ACCESS_KEY_ID=yourAccessKeyIDKonfigurasikan Rahasia AccessKey dan tekan Enter.
# Ganti <ACCESS_KEY_SECRET> dengan Rahasia AccessKey Anda. export ALIBABA_CLOUD_ACCESS_KEY_SECRET=yourAccessKeySecretPeriksa apakah konfigurasi berhasil.
Jalankan perintah
echo $ALIBABA_CLOUD_ACCESS_KEY_ID. Jika ID AccessKey yang valid dikembalikan, variabel lingkungan telah dikonfigurasi.
Windows
Gunakan GUI
Prosedur
Jika Anda ingin menggunakan GUI untuk mengonfigurasi variabel lingkungan di Windows 10, lakukan langkah-langkah berikut:
Di desktop Windows, klik kanan PC Ini dan pilih Properti. Di halaman yang muncul, klik Pengaturan Sistem Lanjutan. Di kotak dialog Properti Sistem, klik Variabel Lingkungan pada tab Lanjutan. Di kotak dialog Variabel Lingkungan, klik Baru di bagian Variabel Pengguna atau Variabel Sistem. Kemudian, konfigurasikan variabel yang dijelaskan dalam tabel berikut.
Variabel
Contoh
ID AccessKey
Nama Variabel: ALIBABA_CLOUD_ACCESS_KEY_ID
Nilai Variabel: LTAI****************
Rahasia AccessKey
Nama Variabel: ALIBABA_CLOUD_ACCESS_KEY_SECRET
Nilai Variabel: yourAccessKeySecret
Periksa apakah konfigurasi berhasil.
Di desktop Windows, klik Mulai atau tekan Win + R. Di kotak dialog Jalankan, masukkan cmd. Lalu, klik OK atau tekan Enter. Di halaman yang muncul, jalankan perintah
echo %ALIBABA_CLOUD_ACCESS_KEY_ID%danecho %ALIBABA_CLOUD_ACCESS_KEY_SECRET%. Jika pasangan AccessKey yang valid dikembalikan, konfigurasi berhasil.
Gunakan CMD
Prosedur
Buka jendela Command Prompt sebagai administrator dan jalankan perintah berikut untuk menambahkan variabel lingkungan di sistem operasi:
setx ALIBABA_CLOUD_ACCESS_KEY_ID yourAccessKeyID /M setx ALIBABA_CLOUD_ACCESS_KEY_SECRET yourAccessKeySecret /M/Mmenunjukkan bahwa variabel lingkungan bersifat tingkat sistem. Anda dapat memilih untuk tidak menggunakan parameter ini saat mengonfigurasi variabel lingkungan tingkat pengguna.Periksa apakah konfigurasi berhasil.
Di desktop Windows, klik Mulai atau tekan Win + R. Di kotak dialog Jalankan, masukkan cmd. Lalu, klik OK atau tekan Enter. Di halaman yang muncul, jalankan perintah
echo %ALIBABA_CLOUD_ACCESS_KEY_ID%danecho %ALIBABA_CLOUD_ACCESS_KEY_SECRET%. Jika pasangan AccessKey yang valid dikembalikan, konfigurasi berhasil.
Gunakan Windows PowerShell
Di PowerShell, konfigurasikan variabel lingkungan baru. Variabel lingkungan 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)Konfigurasikan variabel lingkungan untuk semua pengguna. Anda harus menjalankan perintah berikut sebagai administrator.
[System.Environment]::SetEnvironmentVariable('ALIBABA_CLOUD_ACCESS_KEY_ID', 'yourAccessKeyID', [System.EnvironmentVariableTarget]::Machine)
[System.Environment]::SetEnvironmentVariable('ALIBABA_CLOUD_ACCESS_KEY_SECRET', 'yourAccessKeySecret', [System.EnvironmentVariableTarget]::Machine)Konfigurasikan variabel lingkungan sementara. Variabel lingkungan 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 pasangan AccessKey yang valid dikembalikan, konfigurasi berhasil.
Gunakan SDK
Dalam contoh ini, operasi API SendMessageToGlobe dari Short Message Service (SMS) dipanggil. Untuk informasi lebih lanjut tentang SendMessageToGlobe, lihat SendMessageToGlobe.
1. Inisialisasi klien permintaan
Di SDK, semua permintaan ke operasi API dikirim dari klien. Sebelum Anda dapat memanggil operasi API, Anda harus menginisialisasi klien permintaan. Anda dapat menggunakan beberapa metode untuk menginisialisasi klien permintaan. Dalam contoh ini, pasangan AccessKey digunakan untuk menginisialisasi klien permintaan. Untuk informasi lebih lanjut, lihat Kelola Kredensial Akses.
Objek klien, seperti instance Dysmsapi20180501Client, aman terhadap thread, dan dapat digunakan di lingkungan multithread tanpa risiko keamanan. Anda tidak perlu membuat instance untuk setiap thread.
Dalam proyek pengembangan, kami sarankan Anda tidak sering membuat objek klien. Jika tidak, pemborosan sumber daya mungkin meningkat dan performa layanan mungkin menurun. Kami sarankan Anda mengenkapsulasi klien dalam mode singleton. Hal ini memastikan bahwa hanya satu instance Client yang diinisialisasi untuk kredensial akses dan titik akhir yang sama sepanjang siklus hidup aplikasi.
@staticmethod
def create_client() -> Dysmsapi20180501Client:
config = open_api_models.Config(
# Wajib, pastikan variabel lingkungan ALIBABA_CLOUD_ACCESS_KEY_ID telah disetel.,
access_key_id=os.environ['ALIBABA_CLOUD_ACCESS_KEY_ID'],
# Wajib, pastikan variabel lingkungan ALIBABA_CLOUD_ACCESS_KEY_SECRET telah disetel.,
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
Saat Anda memanggil operasi API untuk melewati parameter, Anda harus menggunakan objek permintaan yang disediakan oleh SDK. Beri nama objek permintaan operasi API dalam format berikut: <Nama Operasi API>Request. Misalnya, objek permintaan operasi API SendSms adalah SendSmsRequest. Untuk informasi lebih lanjut tentang parameter, lihat referensi API. Untuk informasi lebih lanjut tentang parameter operasi SendMessageToGlobe, lihat SendMessageToGlobe.
Jika operasi API tidak mendukung parameter permintaan, Anda tidak perlu membuat objek permintaan. Misalnya, operasi DescribeCdnSubList tidak mendukung parameter permintaan.
# Buat objek permintaan dan atur parameter input yang diperlukan
send_message_to_globe_request = dysmsapi_20180501_models.SendMessageToGlobeRequest(
# Harap ganti dengan nomor penerima sebenarnya.
to='<YOUR_NUMBER>',
# Harap ganti dengan konten SMS sebenarnya.
message='<YOUR_MESSAGE>'
)3. Ajukan permintaan API
Saat Anda menggunakan klien permintaan untuk memanggil operasi API, kami sarankan Anda menamai fungsi dalam format berikut: <Nama Operasi API>_with_options. Tentukan <Nama Operasi API> dalam snake case. Fungsi ini berisi dua parameter: objek permintaan dan parameter runtime. Objek permintaan dibuat pada langkah sebelumnya. Parameter runtime digunakan untuk menentukan tindakan permintaan, seperti konfigurasi timeout dan proxy. Untuk informasi lebih lanjut, lihat Konfigurasi Lanjutan.
Jika operasi API tidak mendukung parameter permintaan, Anda tidak perlu menentukan objek permintaan dalam permintaan. Misalnya, Anda hanya perlu menentukan parameter runtime saat memanggil operasi DescribeCdnSubList.
# 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 kesalahan
Alibaba Cloud SDK V2.0 untuk Python mengklasifikasikan pengecualian menjadi jenis-jenis berikut:
TeaUnretryableException: Dalam banyak kasus, pengecualian jenis ini disebabkan oleh kesalahan jaringan dan dilaporkan ketika jumlah maksimum percobaan ulang tercapai.
TeaException: Dalam banyak kasus, jenis pengecualian ini disebabkan oleh kesalahan bisnis.
Untuk informasi lebih lanjut tentang cara menangani pengecualian SDK, lihat Penanganan Pengecualian.
Kami sarankan Anda mengambil langkah-langkah penanganan pengecualian yang tepat, seperti melaporkan pengecualian, mencatat pengecualian, dan melakukan percobaan ulang, untuk memastikan kekokohan dan stabilitas sistem Anda.
Untuk informasi lebih lanjut, lihat Kode contoh.
Skenario khusus: Unggah file melalui operasi Advance
Saat Anda menggunakan Image Search atau Visual Intelligence API (VIAPI) untuk memproses gambar pada mesin lokal atau mengunggah gambar, API dari Image Search atau VIAPI yang dijelaskan dalam dokumentasi tidak mendukung pengunggahan langsung. Untuk mengunggah gambar, Anda perlu menggunakan operasi Advance, yang mendukung transmisi aliran file. Layanan cloud menyimpan sementara file yang diunggah di Object Storage Service (OSS), dan membaca file sementara dari OSS jika diperlukan. Wilayah OSS default adalah cn-shanghai. Contoh berikut menunjukkan cara memanggil operasi DetectBodyCount dari VIAPI:
File sementara di OSS secara berkala dibersihkan.
Inisialisasi Klien Permintaan
Pastikan bahwa parameter
region_iddanendpointlayanan cloud telah ditentukan.region_idmenunjukkan wilayah OSS tempat file sementara disimpan. Jika Anda tidak mengonfigurasi parameterregion_id, layanan cloud mungkin menggunakan wilayah yang berbeda dari OSS, yang mengakibatkan timeout API.def create_client() -> facebody20191230Client: config = open_api_models.Config( # Wajib. Pastikan variabel lingkungan ALIBABA_CLOUD_ACCESS_KEY_ID telah ditentukan dalam kode., access_key_id=os.environ['ALIBABA_CLOUD_ACCESS_KEY_ID'], # Wajib. Pastikan variabel lingkungan ALIBABA_CLOUD_ACCESS_KEY_SECRET telah dikonfigurasi., access_key_secret=os.environ['ALIBABA_CLOUD_ACCESS_KEY_SECRET'] ) # Tentukan wilayah yang sama untuk parameter endpoint dan regionId. config.region_id = 'cn-shanghai' config.endpoint = 'facebody.cn-shanghai.aliyuncs.com' return facebody20191230Client(config)Buat Objek Permintaan
Buat objek permintaan
<Operasi API>AdvanceRequestuntuk melewati aliran file. Dalam objek permintaan, atur nama parameter menjadiImageURLObject.# Buka file biner. with open('<FILE_PATH>', "rb") as f: # Ganti jalur file. # Tentukan parameter permintaan. detect_body_count_advance_request = facebody_20191230_models.DetectBodyCountAdvanceRequest( image_urlobject = f, )Ajukan Permintaan
Panggil fungsi
<Nama Operasi API>Advanceuntuk mengajukan permintaan. Tentukan<Nama Operasi API>dalam camel case./# Konfigurasikan parameter runtime. runtime = util_models.RuntimeOptions() client = create_client() # Ajukan permintaan. res = client.detect_body_count_advance(detect_body_count_advance_request, runtime)
FAQ
Bagaimana cara menangani kesalahan "Anda tidak memiliki izin untuk melakukan operasi ini" yang dilempar oleh operasi API?
Bagaimana cara menangani kesalahan titik akhir "SDK.EndpointResolvingError" yang dilempar oleh operasi API?
Bagaimana cara menangani AttributeError: "Objek 'AttributeError' tidak memiliki atribut 'message'" atau "KeyError: 'ALIBABA_CLOUD_ACCESS_KEY_ID'" kesalahan AccessKey?
Untuk informasi lebih lanjut tentang cara menangani kesalahan SDK, lihat FAQ.