Cette rubrique explique comment installer et utiliser le kit de développement logiciel (SDK) Node.js V2.0. Elle fournit également un exemple illustrant l'utilisation de l'opération d'API DescribeInstances pour interroger les détails d'une ou plusieurs instances Elastic Compute Service (ECS).
Prérequis
L'AccessKey d'un compte Alibaba Cloud offre un accès complet à vos ressources, ce qui présente un risque de sécurité élevé en cas de fuite. Nous vous recommandons de créer un utilisateur Resource Access Management (RAM) et de lui accorder uniquement les autorisations requises. Utilisez ensuite l'AccessKey de l'utilisateur RAM pour appeler les opérations d'API. Pour plus d'informations, reportez-vous à la section Créer une clé d'accès.
-
Accordez à l'utilisateur RAM les autorisations nécessaires pour gérer les ressources ECS. L'exemple de code présenté dans cette rubrique illustre une opération de requête. Dans cet exemple, la stratégie système AliyunECSReadonlyAccess est utilisée. Vous pouvez accorder des autorisations personnalisées selon vos besoins.
-
Utilisez des stratégies personnalisées.
Pour savoir comment créer des stratégies personnalisées, reportez-vous aux sections Créer une stratégie personnalisée et Informations sur l'autorisation.
ECS propose des exemples de stratégies personnalisés basés sur les meilleures pratiques. Vous pouvez utiliser ces exemples pour créer rapidement des stratégies personnalisées adaptées à vos besoins métier. Pour plus d'informations, consultez la section Stratégies personnalisées.
-
Utilisez des stratégies système.
Pour obtenir la liste de toutes les stratégies système prises en charge par ECS ainsi que leurs descriptions d'autorisations, consultez la section Stratégies système pour ECS.
-
Configurez l'AccessKey à l'aide de variables d'environnement. Pour plus d'informations, reportez-vous à la section Configurer les variables d'environnement sur les systèmes Linux, macOS et Windows.
Installer le SDK
Vous pouvez installer le SDK Node.js V2.0 depuis le Centre SDK. Vous pouvez également copier la commande suivante et l'exécuter dans votre terminal pour installer le SDK ECS :
npm install --save @alicloud/ecs20140526@4.3.0
Utiliser le SDK
1. Initialiser le client
Le SDK Alibaba Cloud prend en charge plusieurs types d'identifiants d'accès pour initialiser le client, tels qu'une AccessKey et un jeton Security Token Service (STS). Pour plus d'informations sur les autres méthodes, consultez la section Gérer les identifiants d'accès. Cet exemple montre comment initialiser le client à l'aide d'une AccessKey.
Exemple TypeScript
import Ecs20140526, * as $Ecs20140526 from '@alicloud/ecs20140526';
import OpenApi, * as $OpenApi from '@alicloud/openapi-client';
export class Client {
static createClient() {
let config = new $OpenApi.Config({
// Required. Make sure that the ALIBABA_CLOUD_ACCESS_KEY_ID environment variable is set.
accessKeyId: process.env['ALIBABA_CLOUD_ACCESS_KEY_ID'],
// Required. Make sure that the ALIBABA_CLOUD_ACCESS_KEY_SECRET environment variable is set.
accessKeySecret: process.env['ALIBABA_CLOUD_ACCESS_KEY_SECRET'],
endpoint: `ecs.cn-hangzhou.aliyuncs.com`,
});
return new Ecs20140526(config);
}
}
Exemple JavaScript
const Ecs20140526 = require('@alicloud/ecs20140526');
const OpenApi = require('@alicloud/openapi-client');
class Client {
static createClient() {
const config = new OpenApi.Config({
// Required. Make sure that the ALIBABA_CLOUD_ACCESS_KEY_ID environment variable is set.
accessKeyId: process.env['ALIBABA_CLOUD_ACCESS_KEY_ID'],
// Required. Make sure that the ALIBABA_CLOUD_ACCESS_KEY_SECRET environment variable is set.
accessKeySecret: process.env['ALIBABA_CLOUD_ACCESS_KEY_SECRET'],
endpoint: `ecs.cn-hangzhou.aliyuncs.com`,
});
return new Ecs20140526.default(config);
}
}
2. Créer un objet de requête pour l'opération d'API
Avant de créer l'objet de requête, consultez la documentation de l'API relative à l'opération afin d'obtenir des informations sur ses paramètres.
La convention de nommage pour un objet de requête est {APIName}Request. Par exemple, l'objet de requête pour l'opération DescribeInstances est DescribeInstancesRequest.
Exemple TypeScript
// Create a request object.
const describeInstancesRequest = new Ecs20140526.DescribeInstancesRequest({
regionId: "cn-hangzhou",
});
Exemple JavaScript
// Create a request object.
const describeInstancesRequest = new Ecs20140526.DescribeInstancesRequest({
regionId: "cn-hangzhou",
});
3. Effectuer l'appel
Lorsque vous appelez une opération OpenAPI depuis le client, vous pouvez définir des paramètres d'exécution, tels que le délai d'attente et les configurations de proxy. Pour plus d'informations, consultez la section Configurations avancées.
La convention de nommage pour un objet de réponse est {APIName}Response. Par exemple, l'objet de réponse pour l'opération DescribeInstances est DescribeInstancesResponse.
Exemple TypeScript
// Create a runtime configuration object.
const runtime = new $Util.RuntimeOptions();
// Initiate the request.
const describeInstancesResponse = await client.describeInstancesWithOptions(describeInstancesRequest, runtime);
Exemple JavaScript
// Create a runtime configuration object.
const runtime = new Util.RuntimeOptions();
// Initiate the request.
const describeInstancesResponse = await client.describeInstancesWithOptions(describeInstancesRequest, runtime);
4. Gérer les exceptions
Le SDK Node.js utilise Promise et async/await pour gérer les opérations asynchrones. Il fournit également un mécanisme de gestion des erreurs permettant aux développeurs d'intercepter et de traiter les erreurs potentielles lors des appels d'API. Lorsqu'un appel d'API échoue, le SDK Alibaba Cloud lève un objet Error. Le SDK classe les exceptions en UnretryableError et ResponseError.
UnretryableError : cette erreur est généralement causée par des problèmes réseau. Elle est levée après avoir atteint le nombre maximal de tentatives pour un problème réseau.
ResponseError : il s'agit d'une exception liée à la logique métier.
Vous devez prendre les mesures appropriées pour gérer les exceptions, telles que la propagation des exceptions, l'enregistrement des journaux et les tentatives de récupération. Cette pratique garantit la robustesse et la stabilité de votre système.
5. Exemple complet
Exemple TypeScript
import * as $Util from '@alicloud/tea-util';
import Ecs20140526, * as $Ecs20140526 from '@alicloud/ecs20140526';
import * as $OpenApi from '@alicloud/openapi-client';
export class Client {
static createClient() {
let config = new $OpenApi.Config({
// Required. Make sure that the ALIBABA_CLOUD_ACCESS_KEY_ID environment variable is set.
accessKeyId: process.env['ALIBABA_CLOUD_ACCESS_KEY_ID'],
// Required. Make sure that the ALIBABA_CLOUD_ACCESS_KEY_SECRET environment variable is set.
accessKeySecret: process.env['ALIBABA_CLOUD_ACCESS_KEY_SECRET'],
endpoint: `ecs.cn-hangzhou.aliyuncs.com`,
});
return new Ecs20140526(config);
}
static async main(): Promise<void> {
const client = Client.createClient();
// Create a request object.
const describeInstancesRequest = new $Ecs20140526.DescribeInstancesRequest({
regionId: "cn-hangzhou",
});
// Create a runtime configuration object.
const runtime = new $Util.RuntimeOptions();
try {
// Initiate the request and get the response.
const response = await client.describeInstancesWithOptions(describeInstancesRequest, runtime);
console.log('Describe Instances Response:', JSON.stringify(response.body));
} catch (error) {
// The error is only printed for demonstration purposes. Handle exceptions with caution. Do not ignore exceptions in your projects.
console.error('Error occurred:', error);
}
}
}
Client.main();
Exemple JavaScript
const Ecs20140526 = require('@alicloud/ecs20140526');
const OpenApi = require('@alicloud/openapi-client');
const Util = require('@alicloud/tea-util');
class Client {
static createClient() {
const config = new OpenApi.Config({
// Required. Make sure that the ALIBABA_CLOUD_ACCESS_KEY_ID environment variable is set.
accessKeyId: process.env['ALIBABA_CLOUD_ACCESS_KEY_ID'],
// Required. Make sure that the ALIBABA_CLOUD_ACCESS_KEY_SECRET environment variable is set.
accessKeySecret: process.env['ALIBABA_CLOUD_ACCESS_KEY_SECRET'],
endpoint: `ecs.cn-hangzhou.aliyuncs.com`,
});
return new Ecs20140526.default(config);
}
static async main() {
const client = Client.createClient();
// Create a request object.
const describeInstancesRequest = new Ecs20140526.DescribeInstancesRequest({
regionId: "cn-hangzhou",
});
// Create a runtime configuration object.
const runtime = new Util.RuntimeOptions();
try {
// Initiate the request and get the response.
const response = await client.describeInstancesWithOptions(describeInstancesRequest, runtime);
console.log('Describe Instances Response:', JSON.stringify(response.body));
} catch (error) {
// The error is only printed for demonstration purposes. Handle exceptions with caution. Do not ignore exceptions in your projects.
// Error message
console.log('Error occurred:', error.message);
}
}
}
Client.main();
Exemples par scénario
Interroger les ressources disponibles pour les modifications de type d'instance
Modifier le type d'instance et la bande passante publique d'une instance
Obtenir un ou plusieurs types d'instance alternatifs pour un type d'instance spécifié
Meilleures pratiques pour la création d'une instance ECS à l'aide d'un type d'instance alternatif
Plus d'informations
En plus des méthodes précédentes, vous pouvez également utiliser des appels généralisés pour appeler les opérations OpenAPI ECS. Pour plus d'informations, consultez la section Appels généralisés.
Pour plus d'informations sur le SDK V1.0, consultez la section SDK Node.js V1.0.