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.
Penyedia layanan perlu mendapatkan nilai
ServiceIddari instance layanan yang sesuai melalui konsol Compute Nest.Saat Anda memanggil operasi
CheckOutLicense, parameterServiceIdditeruskan 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.
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.
Akses URL berikut untuk memperoleh ID wilayah:
curl http://100.100.100.200/latest/meta-data/region-idContoh respons yang berisi ID wilayah:
cn-hangzhou
Peroleh
ServiceIddari konsol.
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****"}'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.

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.
