All Products
Search
Document Center

Compute Nest:Validasi periode validitas instans layanan

Last Updated:Jun 21, 2026

Pelajari cara memeriksa validitas instans layanan menggunakan API CheckOutLicense.

Batasan

Layanan Anda harus memenuhi salah satu persyaratan berikut:

  • Layanan dikonfigurasi untuk penjualan kustom.

  • Layanan terdaftar di Alibaba Cloud Marketplace.

Cara kerja

Saat Compute Nest menyediakan instans layanan, sistem secara otomatis memberi tag pada resource yang mendasarinya, termasuk ID instans layanan (ServiceInstanceId) dan ID layanan (ServiceId). API CheckOutLicense menggunakan tag ini untuk mengidentifikasi instans layanan yang terkait dengan resource yang melakukan panggilan.

  1. Dapatkan ServiceId layanan tersebut dari Konsol Compute Nest.

  2. Saat memanggil CheckOutLicense, teruskan ServiceId sebagai parameter. Compute Nest akan membandingkan parameter ini dengan ID layanan dari tag resource. Jika cocok, API akan mengembalikan detail lisensi.

Contoh pemanggilan API

Contoh ini menunjukkan cara memanggil API CheckOutLicense dari instans ECS yang termasuk dalam layanan yang memenuhi persyaratan pada bagian Batasan.

  1. Dapatkan ID wilayah instans ECS

    Sebelum memanggil API CheckOutLicense, peroleh ID wilayah instans ECS tempat aplikasi Anda dideploy. Simpan ID ini untuk langkah berikutnya.

    1. Jalankan perintah berikut untuk mendapatkan ID wilayah.

      curl http://100.100.100.200/latest/meta-data/region-id
    2. Contoh output:

      cn-hangzhou
  2. Dapatkan ServiceId dari Konsol Compute Nest.

    image

  3. Contoh permintaan

    Contoh ini menunjukkan panggilan yang dilakukan dari wilayah Tiongkok (Hangzhou). Ganti wilayah pada URL dan ServiceId dengan nilai aktual Anda.

    # Ganti nilai ServiceId dengan ID layanan aktual Anda.
    curl -H "Content-Type: application/json" -XPOST https://cn-hangzhou.axt.aliyun.com/computeNest/license/check_out_license -d '{"ServiceId":"service-8fff945fe6844906****"}'
  4. Contoh respons

    {
        "code":200,
        "requestId":"6af1efb7-c59c-4cee-9094-e1e3bbefb639",
        "instanceId":"i-0jl957dfri612gxxxxxx",
        "result":{
            "RequestId":"B22723B7-FC31-18F5-A33E-1AF4C82736AA",
            "ServiceInstanceId":"si-0f14037f30c14292****",
            "LicenseMetadata":"{\"TemplateName\":\"Custom_Image_Ecs\",\"SpecificationName\":\"\",\"CustomData\":\"xxxx\"}",
            "TrialType":"NotTrial",
            "Token":"58d4574bd0d967bb431cd8936b5e80c4",
            "ExpireTime":"2024-08-28T06:27:08Z",
            "ServiceId":"service-8fff945fe6844906****",
            "Components":"{\"package_version\":\"yuncode55xxxxxxxx\",\"SystemDiskSize\":\"40\",\"DataDiskSize\":\"100\"}"
        }
     }

    Tabel berikut menjelaskan parameter utama dalam respons.

    Parameter

    Deskripsi

    Contoh

    ServiceInstanceId

    ID instans layanan.

    si-0f14037f30c14292****

    ServiceId

    ID layanan.

    service-8fff945fe6844906****

    ExpireTime

    Waktu kedaluwarsa instans layanan.

    2024-08-28T06:27:08Z

    LicenseMetadata

    Metadata kustom.

    Data ini ditentukan dalam konfigurasi penjualan kustom.

    {\"TemplateName\":\"Custom_Image_Ecs\",\"SpecificationName\":\"\",\"CustomData\":\"xxxx\"}

    Components

    Detail komponen penagihan add-on dari Alibaba Cloud Marketplace.

    {\"package_version\":\"yuncode55xxxxxxxx\",\"SystemDiskSize\":\"40\",\"DataDiskSize\":\"100\"}

Contoh kode

Python

import requests
import json
import hashlib
import time
import sys
from urllib.request import urlopen

def get_region_id():
    """Dapatkan ID wilayah (misalnya, cn-hangzhou) dari layanan metadata Alibaba Cloud."""
    try:
        with urlopen(
            "http://100.100.100.200/latest/meta-data/region-id",
            timeout=2
        ) as response:
            return response.read().decode().strip()
    except Exception as e:
        print(f"Gagal mendapatkan ID wilayah: {str(e)}", file=sys.stderr)
        sys.exit(1)

def checkout_license():
    # Dapatkan ID wilayah secara dinamis dan bangun URL.
    region_id = get_region_id()
    url = f"https://{region_id}.axt.aliyun.com/computeNest/license/check_out_license"

    # Kirim permintaan POST.
    try:
        response = requests.post(
            url,
            json={
              # Opsional: Sertakan ServiceId untuk membatasi pemeriksaan pada layanan tertentu.
              # Jika dihilangkan, Compute Nest mengidentifikasi layanan dari tag resource.
              # "ServiceId": "service-ec9cbf77f9be443db938"
            },
            headers={"Content-Type": "application/json"}
        )
        print(f"URL Permintaan: {url}")
        print(f"Kode Status: {response.status_code}")
        print(f"Respons: {response.text}")
    except Exception as e:
        print(f"Permintaan Gagal: {str(e)}", file=sys.stderr)

if __name__ == "__main__":
    # Panggil fungsi.
    checkout_license()

Contoh output:

image

Java

import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.io.OutputStream;
import java.net.HttpURLConnection;
import java.net.URL;
import java.security.MessageDigest;     

public class CheckoutLicense {
    public static void main(String[] args) {
        try {
            // === Dapatkan ID wilayah secara dinamis ===
            String regionId = getRegionId();
            System.out.println("ID Wilayah Terdeteksi: " + regionId);

            String checkoutLicenseString = "{}";
            // Opsional: Sertakan ServiceId untuk membatasi pemeriksaan pada layanan tertentu.
            // Jika dihilangkan, Compute Nest mengidentifikasi layanan dari tag resource.
            // String checkoutLicenseString = "{\"ServiceId\": \"service-ec9cbf77f9be443db938\"}";

            // === Kirim permintaan POST ===
            String urlStr = "https://" + regionId + ".axt.aliyun.com/computeNest/license/check_out_license";
            URL url = new URL(urlStr);
            HttpURLConnection conn = (HttpURLConnection) url.openConnection();
            conn.setRequestMethod("POST");
            conn.setRequestProperty("Content-Type", "application/json");
            conn.setDoOutput(true);

            try (OutputStream os = conn.getOutputStream()) {
                byte[] input = checkoutLicenseString.getBytes("UTF-8");
                os.write(input, 0, input.length);
            }

            // === Baca respons ===
            try (BufferedReader br = new BufferedReader(new InputStreamReader(conn.getInputStream()))) {
                StringBuilder response = new StringBuilder();
                String responseLine;
                while ((responseLine = br.readLine()) != null) {
                    response.append(responseLine);
                }
                System.out.println("Respons: " + response.toString());
            }
            conn.disconnect();
            System.out.println("URL Permintaan: " + urlStr);

        } catch (Exception e) {
            e.printStackTrace();
        }
    }

    // === Dapatkan ID wilayah dari layanan metadata Alibaba Cloud ===
    private static String getRegionId() throws Exception {
        String regionIdUrl = "http://100.100.100.200/latest/meta-data/region-id";
        HttpURLConnection conn = (HttpURLConnection) new URL(regionIdUrl).openConnection();
        conn.setRequestMethod("GET");
        conn.setConnectTimeout(2000); // timeout 2 detik
        conn.setReadTimeout(2000);

        try (BufferedReader in = new BufferedReader(
            new InputStreamReader(conn.getInputStream()))) {
            return in.readLine().trim();
        }
    }
}

Contoh output:

image