全部产品
Search
文档中心

Alibaba Cloud SDK:Integrasi dengan Alibaba Cloud SDK V2.0 untuk Python

更新时间:Jul 06, 2025

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.

  1. Masuk ke SDK Center dan pilih layanan yang SDK-nya ingin Anda gunakan. Dalam contoh ini, Short Message Service (SMS) dipilih.

  2. Pada halaman Short Message Service, pilih Python di bagian All languages. Pada tab Quick Start, dapatkan metode instalasi Short Message Service (SMS) SDK.image

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

Penting

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=yourAccessKeyID
  • Konfigurasikan Rahasia AccessKey dan tekan Enter.

    # Ganti <ACCESS_KEY_SECRET> dengan Rahasia AccessKey Anda.
    export ALIBABA_CLOUD_ACCESS_KEY_SECRET=yourAccessKeySecret
  • Periksa 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% dan echo %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

    /M menunjukkan 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% dan echo %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.

Penting
  • 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.

Catatan

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.

Catatan

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.

Penting

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.

Contoh: Panggil operasi SendMessageToGlobe

import os
import sys
from typing import List
from alibabacloud_dysmsapi20180501.client import Client as Dysmsapi20180501Client
from alibabacloud_tea_openapi import models as open_api_models
from alibabacloud_dysmsapi20180501 import models as dysmsapi_20180501_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() -> 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)

    @staticmethod
    def main(
        args: List[str],
    ) -> None:
        client = Sample.create_client()
        # 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>'
        )
        # Buat parameter runtime.
        runtime = util_models.RuntimeOptions()
        try:
            # Kirim permintaan
            client.send_message_to_globe_with_options(send_message_to_globe_request, runtime)
        except Exception as error:
            # cetak pesan kesalahan
            print(error.message)
            # Harap klik tautan di bawah ini untuk diagnosis.
            print(error.data.get("Recommend"))
            UtilClient.assert_as_string(error.message)


if __name__ == '__main__':
    Sample.main(sys.argv[1:])

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:

Catatan

File sementara di OSS secara berkala dibersihkan.

  1. Inisialisasi Klien Permintaan

    Pastikan bahwa parameter region_id dan endpoint layanan cloud telah ditentukan. region_id menunjukkan wilayah OSS tempat file sementara disimpan. Jika Anda tidak mengonfigurasi parameter region_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)
  2. Buat Objek Permintaan

    Buat objek permintaan <Operasi API>AdvanceRequest untuk melewati aliran file. Dalam objek permintaan, atur nama parameter menjadi ImageURLObject.

    # 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,
         )
  3. Ajukan Permintaan

    Panggil fungsi <Nama Operasi API>Advance untuk 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)

Untuk informasi lebih lanjut, lihat Kode Contoh.

import os

from alibabacloud_facebody20191230 import models as facebody_20191230_models
from alibabacloud_facebody20191230.client import Client as facebody20191230Client
from alibabacloud_tea_openapi import models as open_api_models
from alibabacloud_tea_util import models as util_models


class Sample:
    def __init__(self):
        pass

    @staticmethod
    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']
        )
        config.region_id = 'cn-shanghai'
        return facebody20191230Client(config)

    @staticmethod
    def main() -> None:
        client = Sample.create_client()
        # Buka file biner.
        with open('<FILE_PATH>', "rb") as f:  # Ganti jalur file di <FILE_PATH>.
            # Tentukan parameter permintaan.
            detect_body_count_advance_request = facebody_20191230_models.DetectBodyCountAdvanceRequest(
                image_urlobject=f,
            )
            runtime = util_models.RuntimeOptions()
            try:
                # Ajukan permintaan.
                res = client.detect_body_count_advance(detect_body_count_advance_request, runtime)
                print(res)
            except Exception as error:
                # Tangani pengecualian dengan hati-hati berdasarkan skenario bisnis aktual Anda dan jangan abaikan pengecualian dalam proyek Anda. Pesan kesalahan yang ditampilkan dalam contoh ini hanya untuk referensi.
                print(error)


if __name__ == '__main__':
    Sample.main()

FAQ

  1. Bagaimana cara menangani kesalahan "Anda tidak memiliki izin untuk melakukan operasi ini" yang dilempar oleh operasi API?

    Penyebab dan Solusi yang Mungkin

    Penyebab yang Mungkin: Pasangan AccessKey dari pengguna Resource Access Management (RAM) tidak memiliki izin untuk memanggil operasi API.

    Solusi: Berikan izin yang diperlukan kepada pengguna RAM. Untuk informasi lebih lanjut, lihat Berikan Izin kepada Pengguna RAM.

    Sebagai contoh, jika kesalahan "Anda tidak memiliki izin untuk melakukan operasi ini" dilempar oleh operasi API SendMessageToGlobe, buat kebijakan kustom berikut untuk memberikan izin yang diperlukan kepada pengguna RAM:

    {
      "Version": "1",
      "Statement": [
        {
          "Effect": "Allow",
          "Action": "dysms:SendMessageToGlobe",
          "Resource": "*"
        }
      ]
    }
  2. Bagaimana cara menangani kesalahan titik akhir "SDK.EndpointResolvingError" yang dilempar oleh operasi API?

    Penyebab dan Solusi yang Mungkin

    Penyebab yang Mungkin: Operasi API tidak mendukung titik akhir yang Anda tentukan saat menginisialisasi klien permintaan.

    Solusi: Tentukan titik akhir yang didukung dan coba lagi. Untuk informasi lebih lanjut, lihat Konfigurasikan Titik Akhir.

  3. Bagaimana cara menangani AttributeError: "Objek 'AttributeError' tidak memiliki atribut 'message'" atau "KeyError: 'ALIBABA_CLOUD_ACCESS_KEY_ID'" kesalahan AccessKey?

    Penyebab dan Solusi yang Mungkin

    Penyebab yang Mungkin: Pasangan AccessKey tidak diteruskan dengan benar ke permintaan.

    Solusi: Pastikan pasangan AccessKey diteruskan dengan benar saat Anda menginisialisasi klien permintaan. Nilai XXX dari os.environ("XXX") diperoleh dari variabel lingkungan.

Untuk informasi lebih lanjut tentang cara menangani kesalahan SDK, lihat FAQ.