全部产品
Search
文档中心

Alibaba Cloud SDK:Integrasikan SDK

更新时间:Nov 10, 2025

Untuk mempermudah pemanggilan API, kami menyarankan Anda mengintegrasikan Alibaba Cloud SDK ke dalam proyek Anda. SDK menyederhanakan proses pengembangan, mempercepat integrasi fitur, dan secara signifikan mengurangi biaya operasional dan pemeliharaan (O&M). Untuk mengintegrasikan Alibaba Cloud SDK, lakukan langkah-langkah berikut: instal Alibaba Cloud SDK, konfigurasikan kredensial akses, dan gunakan SDK. Topik ini menjelaskan cara mengintegrasikan Alibaba Cloud SDK.

Prasyarat

  • Go 1.10.x atau versi 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 Install, dan untuk All Languages, pilih Go. Kemudian, pada tab Quick Start, Anda dapat menemukan metode instalasi SDK untuk Short Message Service (SMS).image

Konfigurasikan kredensial akses

Untuk memanggil operasi API layanan Alibaba Cloud, Anda harus mengonfigurasi kredensial akses, seperti Pasangan Kunci Akses atau Token Layanan Keamanan (STS). Untuk mencegah kebocoran Pasangan Kunci Akses, Anda dapat menyimpannya 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 menyimpan Pasangan Kunci Akses.

Konfigurasikan variabel lingkungan di 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 tersebut tidak lagi berlaku. Untuk mengonfigurasi variabel lingkungan permanen, tambahkan 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, berarti variabel lingkungan telah dikonfigurasi.

Konfigurasikan variabel lingkungan di Windows

Gunakan GUI

  • Prosedur

    Jika Anda ingin menggunakan antarmuka grafis (GUI) untuk mengonfigurasi variabel lingkungan di Windows 10, lakukan langkah-langkah berikut:

    Di desktop Windows, klik kanan This PC dan pilih Properties. Pada halaman yang muncul, klik Advanced system settings. Di kotak dialog System Properties, klik Environment Variables pada tab Advanced. Di kotak dialog Environment Variables, klik New di bagian User variables atau System variables. Lalu, konfigurasikan variabel sesuai dengan tabel berikut.

    Variabel

    Contoh

    AccessKey ID

    • Nama variabel: ALIBABA_CLOUD_ACCESS_KEY_ID

    • Nilai variabel: LTAI****************

    AccessKey Secret

    • Nama variabel: ALIBABA_CLOUD_ACCESS_KEY_SECRET

    • Nilai variabel: yourAccessKeySecret

  • Periksa apakah konfigurasi berhasil.

    Di desktop Windows, klik Start atau tekan Win + R. Di kotak dialog Run, masukkan cmd. Lalu, klik OK atau tekan Enter. Pada jendela Command Prompt yang muncul, jalankan perintah echo %ALIBABA_CLOUD_ACCESS_KEY_ID% dan echo %ALIBABA_CLOUD_ACCESS_KEY_SECRET%. Jika Pasangan Kunci Akses yang valid dikembalikan, konfigurasi berhasil.

Gunakan CMD

  • Prosedur

    Buka jendela Command Prompt sebagai administrator dan jalankan perintah berikut untuk menambahkan variabel lingkungan ke sistem:

    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 menghilangkan parameter ini jika ingin mengonfigurasi variabel lingkungan tingkat pengguna.

  • Periksa apakah konfigurasi berhasil.

    Di desktop Windows, klik Start atau tekan Win + R. Di kotak dialog Run, masukkan cmd. Lalu, klik OK atau tekan Enter. Pada jendela Command Prompt yang muncul, jalankan perintah echo %ALIBABA_CLOUD_ACCESS_KEY_ID% dan echo %ALIBABA_CLOUD_ACCESS_KEY_SECRET%. Jika Pasangan Kunci Akses yang valid dikembalikan, konfigurasi berhasil.

Gunakan Windows PowerShell

Di PowerShell, konfigurasikan variabel lingkungan baru. Variabel ini 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. Perintah berikut harus dijalankan 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 ini 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 Kunci Akses 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

Dalam SDK V2.0, semua pemanggilan OpenAPI dimulai melalui klien. Sebelum memanggil operasi OpenAPI, Anda harus menginisialisasi klien tersebut. Anda dapat menginisialisasi klien dengan beberapa cara. Contoh ini menunjukkan cara menginisialisasi klien menggunakan AccessKey. Untuk informasi lebih lanjut tentang metode inisialisasi lainnya, lihat Kelola kredensial akses.

Penting
  • Instans klien bersifat thread-safe dan dapat digunakan di lingkungan multi-threaded. Anda tidak perlu membuat instans terpisah untuk setiap thread.

  • Dalam proyek pengembangan, kami menyarankan agar Anda tidak sering membuat objek klien. Jika tidak, pemborosan sumber daya dapat meningkat dan performa layanan dapat menurun. Kami menyarankan agar Anda menggunakan satu instans untuk mengenkapsulasi klien. Hal ini memastikan bahwa hanya satu instans Klien yang diinisialisasi untuk kredensial akses dan titik akhir yang sama sepanjang siklus hidup aplikasi.

import (
  openapi "github.com/alibabacloud-go/darabonba-openapi/v2/client"
  dysmsapi20180501 "github.com/alibabacloud-go/dysmsapi-20180501/v2/client"
  util "github.com/alibabacloud-go/tea-utils/v2/service"
  "os"
)

func CreateClient () (_result *dysmsapi20180501.Client, _err error) {
  config := &openapi.Config{
    // Wajib, pastikan variabel lingkungan ALIBABA_CLOUD_ACCESS_KEY_ID telah disetel.
    AccessKeyId: tea.String(os.Getenv("ALIBABA_CLOUD_ACCESS_KEY_ID")),
    // Wajib, pastikan variabel lingkungan ALIBABA_CLOUD_ACCESS_KEY_SECRET telah disetel.
    AccessKeySecret: tea.String(os.Getenv("ALIBABA_CLOUD_ACCESS_KEY_SECRET")),
  }
  config.Endpoint = tea.String("dysmsapi.aliyuncs.com")
  _result = &dysmsapi20180501.Client{}
  _result, _err = dysmsapi20180501.NewClient(config)
  return _result, _err
}

2. Buat instans struct Request

Saat meneruskan parameter untuk pemanggilan OpenAPI, Anda harus menggunakan struct Request yang disediakan oleh SDK. Format penamaan untuk struct Request OpenAPI adalah <Nama operasi OpenAPI>Request. Misalnya, struct request untuk operasi `SendSms` adalah `SendSmsRequest`. Untuk informasi lebih lanjut tentang parameter permintaan, lihat dokumentasi API yang sesuai. Untuk dokumentasi API dalam contoh ini, lihat SendMessageToGlobe.

Catatan

Jika operasi API tidak mendukung parameter permintaan, Anda tidak perlu membuat objek request. Misalnya, operasi DescribeCdnSubList tidak mendukung parameter permintaan.

// Buat objek request dan atur parameter input yang diperlukan
sendMessageToGlobeRequest := &dysmsapi20180501.SendMessageToGlobeRequest{
  // Harap ganti dengan nomor penerima yang sebenarnya.
  To: tea.String("<YOUR_VALUE>"),
  // Harap ganti dengan konten SMS yang sebenarnya.
  Message: tea.String("<YOUR_VALUE>"),
}

3. Klien memulai permintaan.

Saat menggunakan klien untuk memanggil operasi OpenAPI, kami menyarankan agar Anda menggunakan fungsi <Nama Operasi>WithOptions. Fungsi ini memiliki dua parameter: yang pertama adalah pointer ke struct Request API, dan yang kedua adalah pointer ke struct opsi runtime. Opsi runtime digunakan untuk mengonfigurasi perilaku permintaan, seperti pengaturan timeout dan konfigurasi proxy. Untuk informasi lebih lanjut, lihat Konfigurasi lanjutan.

Catatan

Jika operasi API tidak mendukung parameter permintaan, Anda tidak perlu menentukan objek request dalam permintaan tersebut. Misalnya, Anda hanya perlu menentukan parameter runtime saat memanggil operasi DescribeCdnSubList.

// Anda perlu menambahkan 'util "github.com/alibabacloud-go/tea-utils/v2/service"' ke pernyataan import. 

func _main() (_result *dysmsapi20180501.SendMessageToGlobeResponse, _err error) {
  client, _err := CreateClient()
  if _err != nil {
    return nil, _err
  }
  // Buat objek request dan atur parameter input yang diperlukan
  sendMessageToGlobeRequest := &dysmsapi20180501.SendMessageToGlobeRequest{
    // Harap ganti dengan nomor penerima yang sebenarnya.
    To: tea.String("<YOUR_VALUE>"),
    // Harap ganti dengan konten SMS yang sebenarnya.
    Message: tea.String("<YOUR_VALUE>"),
  }
  runtime := &util.RuntimeOptions{}
  // Salin kode untuk dijalankan, harap cetak nilai kembali API sendiri.
  response, _err := client.SendMessageToGlobeWithOptions(sendMessageToGlobeRequest, runtime)
  if _err != nil {
    return nil, _err
  }
  return response, _err
}

4. Tangani error

Alibaba Cloud SDK V2.0 untuk Go mengklasifikasikan pengecualian ke dalam jenis-jenis berikut:

  • error: Jenis pengecualian ini disebabkan oleh kesalahan non-bisnis. Misalnya, error dilemparkan jika verifikasi gagal karena file sumber SDK dimodifikasi atau jika penguraian gagal.

  • SDKError: Dalam kebanyakan kasus, jenis pengecualian ini disebabkan oleh kesalahan bisnis.

Untuk informasi lebih lanjut tentang cara menangani pengecualian SDK, lihat Penanganan pengecualian.

Penting

Kami menyarankan agar Anda menerapkan langkah-langkah penanganan pengecualian yang tepat, seperti melaporkan pengecualian, mencatat log pengecualian, dan melakukan pengulangan, untuk memastikan ketangguhan dan stabilitas sistem Anda.

Untuk informasi lebih lanjut, lihat Kode contoh.

Contoh : Panggil operasi SendMessageToGlobe

package main

import (
  "fmt"
  openapi "github.com/alibabacloud-go/darabonba-openapi/v2/client"
  dysmsapi20180501 "github.com/alibabacloud-go/dysmsapi-20180501/v2/client"
  util "github.com/alibabacloud-go/tea-utils/v2/service"
  "github.com/alibabacloud-go/tea/tea"
  "os"
)

func CreateClient() (_result *dysmsapi20180501.Client, _err error) {
  config := &openapi.Config{
    // Wajib, pastikan variabel lingkungan ALIBABA_CLOUD_ACCESS_KEY_ID telah disetel.
    AccessKeyId: tea.String(os.Getenv("ALIBABA_CLOUD_ACCESS_KEY_ID")),
    // Wajib, pastikan variabel lingkungan ALIBABA_CLOUD_ACCESS_KEY_SECRET telah disetel.
    AccessKeySecret: tea.String(os.Getenv("ALIBABA_CLOUD_ACCESS_KEY_SECRET")),
  }
  config.Endpoint = tea.String("dysmsapi.aliyuncs.com")
  _result = &dysmsapi20180501.Client{}
  _result, _err = dysmsapi20180501.NewClient(config)
  return _result, _err
}

func _main() (_result *dysmsapi20180501.SendMessageToGlobeResponse, _err error) {
  client, _err := CreateClient()
  if _err != nil {
    return nil, _err
  }
  // Buat objek request dan atur parameter input yang diperlukan
  sendMessageToGlobeRequest := &dysmsapi20180501.SendMessageToGlobeRequest{
    // Harap ganti dengan nomor penerima yang sebenarnya.
    To: tea.String("<YOUR_VALUE>"),
    // Harap ganti dengan konten SMS yang sebenarnya.
    Message: tea.String("<YOUR_VALUE>"),
  }
  runtime := &util.RuntimeOptions{}
  // Salin kode untuk dijalankan, harap cetak nilai kembali API sendiri.
  response, _err := client.SendMessageToGlobeWithOptions(sendMessageToGlobeRequest, runtime)
  if _err != nil {
    return nil, _err
  }
  return response, _err
}

func main() {
  response, err := _main()
  if err != nil {
    panic(err)
  }
  fmt.Println(response.Body)
}

Skenario khusus: Unggah file melalui operasi Advance

Saat menggunakan Image Search atau Visual Intelligence API (VIAPI) untuk memproses citra di mesin lokal atau mengunggah citra, API Image Search atau VIAPI yang dijelaskan dalam dokumentasi tidak mendukung unggahan langsung. Untuk mengunggah citra, 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 tersebut dari OSS bila diperlukan. Wilayah default OSS adalah cn-shanghai. Contoh berikut menunjukkan cara memanggil operasi DetectBodyCount VIAPI:

Catatan

File sementara di OSS dibersihkan secara berkala.

  1. Inisialisasi klien permintaan

    Pastikan bahwa parameter RegionId dan endpoint layanan cloud keduanya ditentukan. RegionId menunjukkan wilayah OSS tempat file sementara disimpan. Jika Anda tidak mengonfigurasi parameter RegionId, layanan cloud mungkin menggunakan wilayah yang berbeda dari OSS, sehingga menyebabkan timeout API.

    import (
      "os"
    
      openapi "github.com/alibabacloud-go/darabonba-openapi/v2/client"
      facebody20191230 "github.com/alibabacloud-go/facebody-20191230/v5/client"
      "github.com/alibabacloud-go/tea/tea"
    )
    
    func CreateClient() (_result *facebody20191230.Client, _err error) {
      config := &openapi.Config{
        // Wajib. Pastikan variabel lingkungan ALIBABA_CLOUD_ACCESS_KEY_ID telah disetel di lingkungan runtime Anda.
        AccessKeyId: tea.String(os.Getenv("ALIBABA_CLOUD_ACCESS_KEY_ID")),
        // Wajib. Pastikan variabel lingkungan ALIBABA_CLOUD_ACCESS_KEY_SECRET telah disetel di lingkungan runtime Anda.
        AccessKeySecret: tea.String(os.Getenv("ALIBABA_CLOUD_ACCESS_KEY_SECRET")),
      }
      // Titik akhir dan regionId harus disetel ke wilayah yang sama.
      config.RegionId = tea.String("cn-shanghai")
      config.Endpoint = tea.String("facebody.cn-shanghai.aliyuncs.com")
      _result, _err = facebody20191230.NewClient(config)
      return _result, _err
    }
  2. Buat instans struct AdvanceRequest

    Saat mengunggah file lokal, Anda harus menggunakan struct AdvanceRequest yang disediakan oleh SDK untuk meneruskan aliran file. Format penamaan untuk struct AdvanceRequest adalah <Nama operasi OpenAPI>AdvanceRequest. Untuk menemukan nama parameter untuk meneruskan aliran file, carilah parameter bertipe io.Reader dalam struct AdvanceRequest yang sesuai.

    // Ganti dengan path file.
    filePath := `<FILE_PATH>`
    // Buka file dan buat aliran.
    file, err := os.Open(filePath)
    if err != nil {
      return fmt.Errorf("Gagal membuka file: %v", err)
    }
    defer file.Close() // Tutup file.
    // Buat instans struct AdvanceRequest.
    detectBodyCountAdvanceRequest := &facebody20191230.DetectBodyCountAdvanceRequest{
      ImageURLObject: file,
    }
  3. Memulai permintaan

    Panggil fungsi <Nama Operasi>Advance untuk memulai permintaan. Parameter inputnya adalah pointer ke struct AdvanceRequest.

    // Anda perlu menambahkan 'util "github.com/alibabacloud-go/tea-utils/v2/service"' ke pernyataan import.
    
    func _main() (response *facebody20191230.DetectBodyCountResponse, _err error) {
      client, _err := CreateClient()
      if _err != nil {
        return nil, _err
      }
    
      // Ganti dengan path file.
      filePath := `<FILE_PATH>`
      // Buka file dan buat aliran.
      file, err := os.Open(filePath)
      if err != nil {
        return nil, fmt.Errorf("Gagal membuka file: %v", err)
      }
      defer file.Close() // Tutup file.
      // Buat objek request.
      detectBodyCountAdvanceRequest := &facebody20191230.DetectBodyCountAdvanceRequest{
        ImageURLObject: file,
      }
      runtime := &util.RuntimeOptions{}
      // Memulai permintaan.
      response, _err = client.DetectBodyCountAdvance(detectBodyCountAdvanceRequest, runtime)
    
      if _err != nil {
        return nil, _err
      }
      return response, nil
    }

Klik untuk melihat kode contoh lengkap

package main

import (
  "fmt"
  "os"

  openapi "github.com/alibabacloud-go/darabonba-openapi/v2/client"
  facebody20191230 "github.com/alibabacloud-go/facebody-20191230/v5/client"
  util "github.com/alibabacloud-go/tea-utils/v2/service"
  "github.com/alibabacloud-go/tea/tea"
)

func CreateClient() (_result *facebody20191230.Client, _err error) {

  config := &openapi.Config{
    // Wajib. Pastikan variabel lingkungan ALIBABA_CLOUD_ACCESS_KEY_ID telah disetel di lingkungan runtime Anda.
    AccessKeyId: tea.String(os.Getenv("ALIBABA_CLOUD_ACCESS_KEY_ID")),
    // Wajib. Pastikan variabel lingkungan ALIBABA_CLOUD_ACCESS_KEY_SECRET telah disetel di lingkungan runtime Anda.
    AccessKeySecret: tea.String(os.Getenv("ALIBABA_CLOUD_ACCESS_KEY_SECRET")),
  }
  config.RegionId = tea.String("cn-shanghai")
  config.Endpoint = tea.String("facebody.cn-shanghai.aliyuncs.com")
  _result, _err = facebody20191230.NewClient(config)
  return _result, _err
}

func _main() (response *facebody20191230.DetectBodyCountResponse, _err error) {
  client, _err := CreateClient()
  if _err != nil {
    return nil, _err
  }

  // Ganti dengan path file.
  filePath := `<FILE_PATH>`
  // Buka file dan buat aliran.
  file, err := os.Open(filePath)
  if err != nil {
    return nil, fmt.Errorf("Gagal membuka file: %v", err)
  }
  defer file.Close() // Tutup file.
  // Buat objek request.
  detectBodyCountAdvanceRequest := &facebody20191230.DetectBodyCountAdvanceRequest{
    ImageURLObject: file,
  }
  runtime := &util.RuntimeOptions{}
  // Memulai permintaan.
  response, _err = client.DetectBodyCountAdvance(detectBodyCountAdvanceRequest, runtime)

  if _err != nil {
    return nil, _err
  }
  return response, nil
}
func main() {
  response, err := _main()
  if err != nil {
    panic(err)
  }
  fmt.Println(response)
}

FAQ

  1. Bagaimana cara menangani error "You are not authorized to perform this operation" yang dilemparkan oleh operasi API?

    Kemungkinan penyebab dan solusi

    Kemungkinan penyebab: Pasangan AccessKey milik pengguna Resource Access Management (RAM) tidak memiliki izin untuk memanggil operasi API tersebut.

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

    Sebagai contoh, jika error "You are not authorized to perform this operation" dilemparkan 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 error "SDKError: Message: Post "https://ecs-cn-XX.aliyuncs.com": dial tcp: lookup ecs-cn-XX.aliyuncs.com: no such host" yang dilemparkan oleh operasi API?

    Kemungkinan penyebab dan solusi

    Kemungkinan penyebab: 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 error "SDKError: StatusCode: 404 Code: InvalidAccessKeyId.NotFound Message: code: 404, Specified access key is not found" yang dilemparkan oleh operasi API?

    Kemungkinan penyebab dan solusi

    Kemungkinan penyebab: Pasangan AccessKey tidak diteruskan dengan benar ke permintaan.

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

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