All Products
Search
Document Center

Compute Nest:Periksa periode validitas instance layanan

Last Updated:Jun 28, 2025

Topik ini menjelaskan cara memeriksa periode validitas instance layanan dengan memanggil operasi CheckOutLicense.

Batasan

Salah satu persyaratan berikut harus dipenuhi:

  • Layanan Compute Nest dikonfigurasi untuk penjualan kustom.

  • Layanan Compute Nest terdaftar di Alibaba Cloud Marketplace.

Prinsip verifikasi

Untuk sumber daya yang dibuat di Compute Nest, Compute Nest menambahkan tag seperti ID instance layanan (ServiceInstanceId) dan ID layanan (ServiceId) ke sumber daya. Operasi CheckOutLicense digunakan untuk menentukan instance layanan tempat suatu sumber daya termasuk berdasarkan tag tersebut.

  1. Penyedia layanan perlu mendapatkan nilai ServiceId dari instance layanan yang sesuai melalui konsol Compute Nest.

  2. Saat Anda memanggil operasi CheckOutLicense, parameter ServiceId diteruskan ke Compute Nest. Compute Nest kemudian memverifikasi apakah konten yang diteruskan sesuai dengan konten dalam sumber daya.

Contoh pemanggilan

Buat instance Elastic Compute Service (ECS) dan panggil operasi CheckOutLicense berdasarkan batasan.

  1. Peroleh informasi wilayah ECS.

    Sebelum memanggil operasi CheckOutLicense, peroleh ID wilayah tempat instance ECS dan aplikasinya ditempatkan. ID wilayah yang diperoleh digunakan dalam langkah-langkah selanjutnya dan disimpan oleh penyedia layanan.

    1. Akses URL berikut untuk memperoleh ID wilayah:

      curl http://100.100.100.200/latest/meta-data/region-id
    2. Contoh respons yang berisi ID wilayah:

      cn-hangzhou
  2. Peroleh ServiceId dari konsol.

    image

  3. Contoh permintaan.

    Dalam contoh ini, panggilan dilakukan di wilayah Tiongkok (Hangzhou). Ganti ID wilayah dengan ID wilayah sebenarnya.

    # Ganti nilai ServiceId sesuai dengan situasi sebenarnya.
    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.

    Parameter

    Deskripsi

    Contoh

    ServiceInstanceId

    ID instance layanan.

    si-0f14037f30c14292****

    ServiceId

    ID layanan.

    service-8fff945fe6844906****

    ExpireTime

    Waktu kedaluwarsa instance layanan.

    2024-08-28T06:27:08Z

    LicenseMetadata

    Metadata.

    Data ini perlu didefinisikan dalam konfigurasi penjualan kustom.

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

    Components

    Informasi item penagihan tambahan dari Alibaba Cloud Marketplace.

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

Contoh kode

Python

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

def get_region_id():
    """Dapatkan ID wilayah (seperti cn-hangzhou) menggunakan 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={
              # Parameter opsional
              # "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__":
    import sys
    # Panggil fungsi
    checkout_license()

Contoh.

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("Detected Region ID: " + regionId);

            String checkoutLicenseString = "{}";
            // Parameter opsional
            // 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 === #
            BufferedReader br = new BufferedReader(new InputStreamReader(conn.getInputStream()));
            StringBuilder response = new StringBuilder();
            String responseLine;
            while ((responseLine = br.readLine()) != null) {
                response.append(responseLine);
            }
            conn.disconnect();
            System.out.println("Respons: " + response.toString());
            System.out.println("URL Permintaan: " + urlStr);

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

    // === Dapatkan ID wilayah secara dinamis (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); // batas waktu 2 detik
        conn.setReadTimeout(2000);

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

Contoh.

image