All Products
Search
Document Center

Alibaba Cloud SDK:Integrasikan SDK

Last Updated:Jun 03, 2026

Integrasikan SDK untuk memanggil operasi OpenAPI melalui tiga langkah: impor SDK, atur kredensial akses, dan panggil API.

Persyaratan lingkungan

Node.js >= 8.x

Impor SDK

  1. Masuk ke SDK Center, lalu pilih produk untuk API yang ingin Anda panggil, seperti Short Message Service (SMS).

  2. Pada halaman Installation dan All Languages ke TypeScript. Kemudian, pada tab Quick Start, Anda dapat menemukan petunjuk instalasi SDK untuk Short Message Service (SMS).image

Atur kredensial akses

Pemanggilan operasi OpenAPI memerlukan kredensial akses seperti AccessKey atau Security Token Service (STS) token. Simpan kredensial dalam variabel lingkungan untuk mencegah kebocoran. Untuk praktik terbaik, lihat Gunakan kredensial akses secara aman. Contoh berikut menggunakan variabel lingkungan ALIBABA_CLOUD_ACCESS_KEY_ID dan ALIBABA_CLOUD_ACCESS_KEY_SECRET.

Metode konfigurasi di Linux dan macOS

Konfigurasikan variabel lingkungan menggunakan perintah export

Penting

Variabel lingkungan sementara yang diatur menggunakan perintah export hanya berlaku untuk sesi saat ini dan akan dihapus ketika sesi berakhir. Untuk penyimpanan jangka panjang, tambahkan perintah export ke file konfigurasi startup sistem operasi Anda.

  • Konfigurasikan ID AccessKey dan tekan Enter.

    # Ganti yourAccessKeyID dengan ID AccessKey Anda.
    export ALIBABA_CLOUD_ACCESS_KEY_ID=yourAccessKeyID
  • Konfigurasikan Rahasia AccessKey dan tekan Enter.

    # Ganti yourAccessKeySecret dengan Rahasia AccessKey Anda.
    export ALIBABA_CLOUD_ACCESS_KEY_SECRET=yourAccessKeySecret
  • Verifikasi konfigurasi.

    Jalankan perintah echo $ALIBABA_CLOUD_ACCESS_KEY_ID. Jika perintah mengembalikan ID AccessKey yang benar, konfigurasi berhasil.

Metode 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 konfigurasi.

    Variabel

    Nilai contoh

    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% dan echo %ALIBABA_CLOUD_ACCESS_KEY_SECRET%. Jika perintah 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 /M

    Parameter /M menunjukkan 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% dan echo %ALIBABA_CLOUD_ACCESS_KEY_SECRET%. Jika perintah 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 mengembalikan AccessKey yang benar, konfigurasi berhasil.

Gunakan SDK

Topik ini memberikan contoh cara memanggil operasi API atau SendMessageToGlobe dari Short Message Service (SMS). Untuk referensi API operasi atau SendMessageToGlobe, lihat atau SendMessageToGlobe.

1. Inisialisasi klien permintaan

Semua pemanggilan OpenAPI melewati klien permintaan. Contoh ini menginisialisasi klien dengan pasangan AccessKey. Untuk metode inisialisasi lainnya, lihat Kelola kredensial akses.

Penting
  • Objek klien, seperti instans Dysmsapi20180501 dan , bersifat thread-safe dan dapat digunakan di lingkungan multi-threaded tanpa perlu membuat instans terpisah untuk setiap thread.

  • Hindari pembuatan objek klien berulang dengan `new`. Gunakan pola singleton sehingga hanya ada satu instans klien per kredensial dan titik akhir selama siklus hidup aplikasi.

Contoh TypeScript

import Dysmsapi20180501, * as $Dysmsapi20180501 from '@alicloud/dysmsapi20180501';
import OpenApi, * as $OpenApi from '@alicloud/openapi-client';
import Util, * as $Util from '@alicloud/tea-util';

export default class Client {

  static createClient(): Dysmsapi20180501 {
    let config = new $OpenApi.Config({
      // Wajib. Pastikan variabel lingkungan ALIBABA_CLOUD_ACCESS_KEY_ID telah diatur.
      accessKeyId: process.env['ALIBABA_CLOUD_ACCESS_KEY_ID'],
      // Wajib. Pastikan variabel lingkungan ALIBABA_CLOUD_ACCESS_KEY_SECRET telah diatur.
      accessKeySecret: process.env['ALIBABA_CLOUD_ACCESS_KEY_SECRET'],
    });
    // Untuk informasi lebih lanjut tentang endpoint, lihat https://api.alibabacloud.com/product/Dysmsapi.
    config.endpoint = `dysmsapi.aliyuncs.com`;
    return new Dysmsapi20180501(config);
  }
}

Contoh Node.js

const Dysmsapi20180501 = require('@alicloud/dysmsapi20180501');
const OpenApi = require('@alicloud/openapi-client');
const Util = require('@alicloud/tea-util');
const Tea = require('@alicloud/tea-typescript');

class Client {

  static createClient() {
    let config = new OpenApi.Config({
      // Wajib. Pastikan variabel lingkungan ALIBABA_CLOUD_ACCESS_KEY_ID telah diatur.
      accessKeyId: process.env['ALIBABA_CLOUD_ACCESS_KEY_ID'],
      // Wajib. Pastikan variabel lingkungan ALIBABA_CLOUD_ACCESS_KEY_SECRET telah diatur.
      accessKeySecret: process.env['ALIBABA_CLOUD_ACCESS_KEY_SECRET'],
    });
    // Untuk informasi lebih lanjut tentang endpoint, lihat https://api.alibabacloud.com/product/Dysmsapi.
    config.endpoint = `dysmsapi.aliyuncs.com`;
    return new Dysmsapi20180501.default(config);
  }
}

2. Buat objek permintaan

Teruskan parameter melalui objek permintaan SDK, bernama <Nama OpenAPI>Request (misalnya, SendSmsRequest). Untuk detail parameter, lihat referensi API: SendMessageToGlobe.

Catatan

Jika API tidak memiliki parameter permintaan, lewati langkah ini. Misalnya, DescribeCdnSubList tidak memerlukan objek permintaan.

Contoh TypeScript

 // Buat objek permintaan dan atur parameter input yang diperlukan
 let sendMessageToGlobeRequest = new $Dysmsapi20180501.SendMessageToGlobeRequest({
      // Harap ganti dengan nomor penerima sebenarnya.
      to: "<YOUR_VALUE>",
      // Harap ganti dengan konten SMS sebenarnya.
      message: "<YOUR_VALUE>",
    });

Contoh Node.js

// Buat objek permintaan dan atur parameter input yang diperlukan
let sendMessageToGlobeRequest = new Dysmsapi20180501.SendMessageToGlobeRequest({
    // Harap ganti dengan nomor penerima sebenarnya.
    to: '<YOUR_VALUE>',
    // Harap ganti dengan konten SMS sebenarnya.
    message: '<YOUR_VALUE>',
});

3. Kirim permintaan

Panggil fungsi <operationName>WithOptions milik klien, di mana <operationName> adalah nama API dalam format camel case. Fungsi ini menerima objek permintaan dan parameter runtime (timeout, proxy, dll.). Lihat Konfigurasi lanjutan.

Catatan

Jika API tidak memiliki parameter permintaan, cukup teruskan opsi runtime. Misalnya, DescribeCdnSubList hanya memerlukan parameter runtime.

Contoh TypeScript

// Buat parameter runtime.
let runtime = new $Util.RuntimeOptions({ });
let client = Client.createClient();
// Kirim permintaan.
await client.sendMessageToGlobeWithOptions(sendMessageToGlobeRequest, runtime);

Contoh Node.js

// Buat parameter runtime.
let runtime = new Util.RuntimeOptions({ });
let client = Client.createClient();
// Kirim permintaan.
await client.sendMessageToGlobeWithOptions(sendMessageToGlobeRequest, runtime);

4. Tangani exception

SDK Node.js V2.0 melemparkan dua jenis exception:

  • UnretryableError: Dilemparkan setelah jumlah maksimum percobaan ulang habis, biasanya karena masalah jaringan. Ambil permintaan terakhir melalui err.data.lastRequest.

  • ResponseError: Menunjukkan error sisi server yang dikembalikan oleh API.

Lihat Penanganan exception.

Penting

Selalu tangani exception — sebarkan, catat log, atau pulihkan. Jangan pernah mengabaikannya secara diam-diam.

Klik untuk melihat contoh kode lengkap

Contoh pemanggilan API SendMessageToGlobe

Contoh TypeScript

import Dysmsapi20180501, * as $Dysmsapi20180501 from '@alicloud/dysmsapi20180501';
import OpenApi, * as $OpenApi from '@alicloud/openapi-client';
import Util, * as $Util from '@alicloud/tea-util';

export default class Client {

  static createClient(): Dysmsapi20180501 {
    let config = new $OpenApi.Config({
      // Wajib. Pastikan variabel lingkungan ALIBABA_CLOUD_ACCESS_KEY_ID telah diatur.
      accessKeyId: process.env['ALIBABA_CLOUD_ACCESS_KEY_ID'],
      // Wajib. Pastikan variabel lingkungan ALIBABA_CLOUD_ACCESS_KEY_SECRET telah diatur.
      accessKeySecret: process.env['ALIBABA_CLOUD_ACCESS_KEY_SECRET'],
    });
    // Untuk informasi lebih lanjut tentang endpoint, lihat https://api.alibabacloud.com/product/Dysmsapi.
    config.endpoint = `dysmsapi.aliyuncs.com`;
    return new Dysmsapi20180501(config);
  }

  static async main(): Promise<void> {
    let client = Client.createClient();
    // Buat objek permintaan dan atur parameter input.
    let sendMessageToGlobeRequest = new $Dysmsapi20180501.SendMessageToGlobeRequest({
      to: "<YOUR_VALUE>",
      from: "<YOUR_VALUE>",
      message: "<YOUR_VALUE>",
    });
    let runtime = new $Util.RuntimeOptions({ });
    try {
      // Kirim permintaan.
      await client.sendMessageToGlobeWithOptions(sendMessageToGlobeRequest, runtime);
    } catch (error) {
      // Ini hanya untuk tujuan demonstrasi. Tangani exception dengan hati-hati. Jangan abaikan exception dalam proyek Anda.
      // Pesan error
      console.log(error.message);
      // Alamat diagnosa
      console.log(error.data["Recommend"]);
    }    
  }
}

Client.main();

Contoh Node.js

const Dysmsapi20180501 = require('@alicloud/dysmsapi20180501');
const OpenApi = require('@alicloud/openapi-client');
const Util = require('@alicloud/tea-util');

class Client {

  static createClient() {
    let config = new OpenApi.Config({
      // Wajib. Pastikan variabel lingkungan ALIBABA_CLOUD_ACCESS_KEY_ID telah diatur.
      accessKeyId: process.env['ALIBABA_CLOUD_ACCESS_KEY_ID'],
      // Wajib. Pastikan variabel lingkungan ALIBABA_CLOUD_ACCESS_KEY_SECRET telah diatur.
      accessKeySecret: process.env['ALIBABA_CLOUD_ACCESS_KEY_SECRET'],
    });
    // Untuk informasi lebih lanjut tentang endpoint, lihat https://api.alibabacloud.com/product/Dysmsapi.
    config.endpoint = `dysmsapi.aliyuncs.com`;
    return new Dysmsapi20180501.default(config);
  }

  static async main() {
    // Buat objek permintaan dan atur parameter input.
    let client = Client.createClient();
    let sendMessageToGlobeRequest = new Dysmsapi20180501.SendMessageToGlobeRequest({
      to: '<YOUR_VALUE>',
      from: '<YOUR_VALUE>',
      message: '<YOUR_VALUE>',
    });
    let runtime = new Util.RuntimeOptions({ });
    try {
      // Kirim permintaan.
      await client.sendMessageToGlobeWithOptions(sendMessageToGlobeRequest, runtime);
    } catch (error) {
      // Ini hanya untuk tujuan demonstrasi. Tangani exception dengan hati-hati. Jangan abaikan exception dalam proyek Anda.
      // Pesan error
      console.log(error.message);
      // Alamat diagnosa
      console.log(error.data["Recommend"]);
      Util.default.assertAsString(error.message);
    }    
  }
}

exports.Client = Client;
Client.main();

Pengunggahan File dengan Operasi Lanjutan

Beberapa API (seperti image search dan Visual Intelligence) tidak menerima path file lokal secara langsung. Gunakan operasi Advance untuk mengunggah file melalui aliran. SDK menyimpan file tersebut sementara di bucket OSS di wilayah cn-shanghai, dan layanan membacanya dari sana. Contoh ini menggunakan operasi DetectBodyCount dari Visual Intelligence API.

Penting

File sementara yang disimpan di Alibaba Cloud OSS akan dihapus secara berkala.

  1. Inisialisasi klien permintaan

    Atur baik regionId maupun endpoint ke wilayah yang sama. regionId menentukan lokasi penyimpanan file OSS sementara. Jika Anda menghilangkan regionId, ketidaksesuaian wilayah antara produk dan bucket OSS akan menyebabkan timeout.

    Contoh TypeScript

    function createClient(): facebody20191230 {
        let config = new $OpenApi.Config({
            // Wajib. Pastikan variabel lingkungan ALIBABA_CLOUD_ACCESS_KEY_ID telah diatur.
            accessKeyId: process.env['ALIBABA_CLOUD_ACCESS_KEY_ID'],
            // Wajib. Pastikan variabel lingkungan ALIBABA_CLOUD_ACCESS_KEY_SECRET telah diatur.
            accessKeySecret: process.env['ALIBABA_CLOUD_ACCESS_KEY_SECRET'],
        });
        // Endpoint dan regionId harus untuk wilayah yang sama.
        config.regionId = 'cn-shanghai';
        config.endpoint = 'facebody.cn-shanghai.aliyuncs.com';
        return new facebody20191230(config);
    }

    Contoh Node.js

    function createClient() {
      let config = new OpenApi.Config({
        // Wajib. Pastikan variabel lingkungan ALIBABA_CLOUD_ACCESS_KEY_ID telah diatur.
        accessKeyId: process.env['ALIBABA_CLOUD_ACCESS_KEY_ID'],
        // Wajib. Pastikan variabel lingkungan ALIBABA_CLOUD_ACCESS_KEY_SECRET telah diatur.
        accessKeySecret: process.env['ALIBABA_CLOUD_ACCESS_KEY_SECRET'],
      });
      // Endpoint dan regionId harus untuk wilayah yang sama.
      config.regionId = 'cn-shanghai';
      config.endpoint = 'facebody.cn-shanghai.aliyuncs.com';
      return new facebody20191230.default(config);
    }
  2. Buat objek permintaan

    Buat objek <Nama OpenAPI>AdvanceRequest untuk meneruskan aliran file. Nama parameter untuk aliran file adalah ImageURLObject.

    Contoh TypeScript

        // Baca file sebagai aliran file.
        const filePath = '<FILE_PATH>';  // Ganti ini dengan path file sebenarnya.
        // Periksa apakah file ada.
        if (!fs.existsSync(filePath)) {
            console.error('File tidak ada:', filePath);
            return;
        }
        // Buat aliran dan dengarkan error aliran.
        const fileStream = fs.createReadStream(filePath).on('error', (err) => {
            console.error('Error aliran:', err);
            process.exit(1);
        });
    
        let detectBodyCountAdvanceRequest = new $facebody20191230.DetectBodyCountAdvanceRequest({
          imageURLObject: fileStream,
        });

    Contoh Node.js

        // Baca file sebagai aliran file.
        const filePath = '<FILE_PATH>';  // Ganti ini dengan path file sebenarnya.
        // Periksa apakah file ada.
        if (!fs.existsSync(filePath)) {
            console.error('File tidak ada:', filePath);
            return;
        }
        // Buat aliran dan dengarkan error aliran.
        const fileStream = fs.createReadStream(filePath).on('error', (err) => {
            console.error('Error aliran:', err);
            process.exit(1);
        });
    
        let detectBodyCountAdvanceRequest = new facebody20191230.DetectBodyCountAdvanceRequest({
            imageURLObject: fileStream,
        });
  3. Kirim permintaan

    Panggil fungsi <operationName>Advance untuk mengirim permintaan.

    Contoh TypeScript

    // Konfigurasikan parameter runtime.
    let runtime = new $Util.RuntimeOptions({ });
    let client = Client.createClient();
    // Kirim permintaan.
    await client.detectBodyCountAdvance(detectBodyCountAdvanceRequest, runtime);

    Contoh Node.js

     // Konfigurasikan parameter runtime.
     let runtime = new Util.RuntimeOptions({ });
     let client = Client.createClient();
     // Kirim permintaan.
     await client.detectBodyCountAdvance(detectBodyCountAdvanceRequest, runtime);  

Klik untuk melihat contoh kode lengkap

Contoh TypeScript

import { default as facebody20191230 } from '@alicloud/facebody20191230';
import * as $facebody20191230 from '@alicloud/facebody20191230';
import * as $OpenApi from '@alicloud/openapi-client';
import * as $Util from '@alicloud/tea-util';
import * as fs from "fs";

export default class Client {
    static createClient(): facebody20191230 {
        let config = new $OpenApi.Config({
            // Wajib. Pastikan variabel lingkungan ALIBABA_CLOUD_ACCESS_KEY_ID telah diatur.
            accessKeyId: process.env['ALIBABA_CLOUD_ACCESS_KEY_ID'],
            // Wajib. Pastikan variabel lingkungan ALIBABA_CLOUD_ACCESS_KEY_SECRET telah diatur.
            accessKeySecret: process.env['ALIBABA_CLOUD_ACCESS_KEY_SECRET'],
        });
        config.regionId = 'cn-shanghai';
        config.endpoint = 'facebody.cn-shanghai.aliyuncs.com';
        return new facebody20191230(config);
    }

    static async main(): Promise<void> {
        let client = Client.createClient();

        // Baca file sebagai aliran file.
        const filePath = '<FILE_PATH>';  // Ganti ini dengan path file sebenarnya.
        // Periksa apakah file ada.
        if (!fs.existsSync(filePath)) {
            console.error('File tidak ada:', filePath);
            return;
        }
        // Buat aliran dan dengarkan error aliran.
        const fileStream = fs.createReadStream(filePath).on('error', (err) => {
            console.error('Error aliran:', err);
            process.exit(1);
        });

        let detectBodyCountAdvanceRequest = new $facebody20191230.DetectBodyCountAdvanceRequest({
            imageURLObject: fileStream,
        });
        let runtime = new $Util.RuntimeOptions({});
        try {
            // Kirim permintaan.
            const res = await client.detectBodyCountAdvance(detectBodyCountAdvanceRequest, runtime);
            console.log(res);
        } catch (error) {
            if (error instanceof Error) {
                console.error('Pesan error:', error.message);
                const data = (error as any)?.data?.Recommend;
                if (typeof data === 'string') {
                    console.log('Saran diagnosa:', data);
                }
            }
        }
    }
}

Client.main();

Contoh Node.js

'use strict';
const facebody20191230 = require('@alicloud/facebody20191230');
const OpenApi = require('@alicloud/openapi-client');
const Util = require('@alicloud/tea-util');
const fs = require('fs');

class Client {
  static createClient() {
    let config = new OpenApi.Config({
      // Wajib. Pastikan variabel lingkungan ALIBABA_CLOUD_ACCESS_KEY_ID telah diatur.
      accessKeyId: process.env['ALIBABA_CLOUD_ACCESS_KEY_ID'],
      // Wajib. Pastikan variabel lingkungan ALIBABA_CLOUD_ACCESS_KEY_SECRET telah diatur.
      accessKeySecret: process.env['ALIBABA_CLOUD_ACCESS_KEY_SECRET'],
    });
    config.regionId = 'cn-shanghai';
    config.endpoint = 'facebody.cn-shanghai.aliyuncs.com';
    return new facebody20191230.default(config);
  }

  static async main() {
    let client = Client.createClient();
    // Baca file sebagai aliran file.
    const filePath = '<FILE_PATH>';  // Ganti ini dengan path file sebenarnya.
    // Periksa apakah file ada.
    if (!fs.existsSync(filePath)) {
      console.error('File tidak ada:', filePath);
      return;
    }
    // Buat aliran dan dengarkan error aliran.
    const fileStream = fs.createReadStream(filePath).on('error', (err) => {
      console.error('Error aliran:', err);
      process.exit(1);
    });
    // Konfigurasikan parameter permintaan.
    let detectBodyCountAdvanceRequest = new facebody20191230.DetectBodyCountAdvanceRequest({
      imageURLObject: fileStream,
    });
    let runtime = new Util.RuntimeOptions({});
    try {
      // Kirim permintaan.
      const res = await client.detectBodyCountAdvance(detectBodyCountAdvanceRequest, runtime);
      console.log(res);
    } catch (error) {
      // Ini hanya untuk tujuan demonstrasi. Tangani exception dengan hati-hati. Jangan abaikan exception dalam proyek Anda.
      console.log(error);
    }
  }
}

exports.Client = Client;
Client.main();

FAQ

  1. Error "You are not authorized to perform this operation" saat memanggil API

    Penyebab dan solusi

    Penyebab: Pengguna RAM yang terkait dengan AccessKey Anda tidak memiliki izin yang diperlukan untuk memanggil API tersebut.

    Solusi: Berikan izin API yang diperlukan kepada pengguna RAM. Lihat Kelola izin pengguna RAM.

    Sebagai contoh, jika Anda menerima error ini saat memanggil atau SendMessageToGlobe, Anda dapat membuat kebijakan izin kustom berikut dan menyambungkannya ke pengguna RAM.

    {
      "Version": "1",
      "Statement": [
        {
          "Effect": "Allow",
          "Action": "dysms:SendMessageToGlobe",
          "Resource": "*"
        }
      ]
    }
  2. Error "triggerUncaughtException Error: getaddrinfo ENOTFOUND" (masalah endpoint)

    Penyebab dan solusi

    Penyebab: Endpoint yang ditentukan tidak didukung oleh operasi OpenAPI yang Anda panggil.

    Solusi: Perbaiki endpoint menggunakan Konfigurasi endpoint dan coba lagi.

  3. Error "Cannot read properties of undefined (reading 'getCredential')" atau "InvalidAccessKeyId.NotFound: code: 404"

    Penyebab dan solusi

    Penyebab: AccessKey tidak diteruskan dengan benar.

    Solusi: Verifikasi bahwa AccessKey diteruskan dengan benar selama inisialisasi klien. process.env("XXX") membaca nilai XXX dari variabel lingkungan.

Untuk error umum lainnya, lihat FAQ.