Este tópico descreve como instalar e usar o kit de desenvolvimento de software (SDK) V2.0 para Node.js e fornece um exemplo de uso da operação de API DescribeInstances para consultar os detalhes de uma ou mais instâncias do Elastic Compute Service (ECS).
Pré-requisitos
O AccessKey de uma conta Alibaba Cloud concede acesso total aos seus recursos, o que representa alto risco de segurança em caso de vazamento. Recomendamos criar um usuário do Resource Access Management (RAM) e conceder a ele apenas as permissões necessárias. Em seguida, use o AccessKey desse usuário RAM para chamar operações de API. Para mais informações, consulte Criar um AccessKey.
-
Conceda ao usuário RAM permissões para gerenciar recursos do ECS. O código de exemplo neste tópico demonstra uma operação de consulta e utiliza a política de sistema AliyunECSReadonlyAccess. Se necessário, conceda permissões personalizadas.
-
Use políticas personalizadas.
Para saber mais sobre como criar políticas personalizadas, consulte Criar uma política personalizada e Informações de autorização.
O ECS oferece exemplos de políticas personalizadas baseados em melhores práticas. Utilize esses modelos para criar rapidamente políticas adequadas às necessidades do seu negócio. Para mais detalhes, consulte Políticas personalizadas.
-
Utilize políticas de sistema.
Para obter informações sobre todas as políticas de sistema compatíveis com o ECS e suas descrições de permissão, consulte Políticas de sistema para ECS.
-
Configure o AccessKey por meio de variáveis de ambiente. Para mais informações, consulte Configurar variáveis de ambiente em sistemas Linux, macOS e Windows.
Instalar o SDK
Instale o SDK V2.0 para Node.js no SDK Center. Como alternativa, copie o comando abaixo e execute-o no terminal para instalar o SDK do ECS:
npm install --save @alicloud/ecs20140526@4.3.0
Usar o SDK
1. Inicializar o cliente
O SDK da Alibaba Cloud aceita diversos tipos de credenciais de acesso para inicializar o cliente, como AccessKey e token do Security Token Service (STS). Para conhecer outros métodos, consulte Gerenciar credenciais de acesso. Este exemplo demonstra a inicialização do cliente com um AccessKey.
Exemplo em 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);
}
}
Exemplo em 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. Criar um objeto de solicitação para a operação de API
Antes de criar o objeto de solicitação, consulte a documentação da API da operação para obter informações sobre seus parâmetros.
A convenção de nomenclatura para um objeto de solicitação é {APIName}Request. Por exemplo, o objeto de solicitação para a operação DescribeInstances é DescribeInstancesRequest.
Exemplo em TypeScript
// Create a request object.
const describeInstancesRequest = new Ecs20140526.DescribeInstancesRequest({
regionId: "cn-hangzhou",
});
Exemplo em JavaScript
// Create a request object.
const describeInstancesRequest = new Ecs20140526.DescribeInstancesRequest({
regionId: "cn-hangzhou",
});
3. Iniciar a chamada
Ao chamar uma operação OpenAPI pelo cliente, defina parâmetros de tempo de execução, como configurações de timeout e proxy. Para mais detalhes, consulte Configurações avançadas.
A convenção de nomenclatura para um objeto de resposta é {APIName}Response. Por exemplo, o objeto de resposta para a operação DescribeInstances é DescribeInstancesResponse.
Exemplo em TypeScript
// Create a runtime configuration object.
const runtime = new $Util.RuntimeOptions();
// Initiate the request.
const describeInstancesResponse = await client.describeInstancesWithOptions(describeInstancesRequest, runtime);
Exemplo em JavaScript
// Create a runtime configuration object.
const runtime = new Util.RuntimeOptions();
// Initiate the request.
const describeInstancesResponse = await client.describeInstancesWithOptions(describeInstancesRequest, runtime);
4. Tratar exceções
O SDK para Node.js usa Promise e async/await para lidar com operações assíncronas. Ele também oferece um mecanismo de tratamento de erros que ajuda os desenvolvedores a capturar e gerenciar possíveis falhas nas chamadas de API. Quando uma chamada falha, o SDK da Alibaba Cloud lança um objeto Error. O SDK classifica as exceções em UnretryableError e ResponseError.
UnretryableError: geralmente causado por problemas de rede. Essa exceção é lançada quando o número máximo de tentativas de reconexão é atingido.
ResponseError: exceção relacionada à lógica de negócio.
Adote medidas apropriadas para tratar exceções, como propagá-las, registrar logs e tentar recuperação. Essa prática garante a robustez e a estabilidade do sistema.
5. Exemplo completo
Exemplo em 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();
Exemplo em 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();
Exemplos baseados em cenários
Consultar recursos disponíveis para alteração de tipo de instância
Modificar o tipo de instância e a largura de banda pública de uma instância
Obter um ou mais tipos alternativos de instância para um tipo especificado
Melhores práticas para criar uma instância ECS usando um tipo alternativo de instância
Mais informações
Além dos métodos anteriores, utilize chamadas generalizadas para invocar operações da OpenAPI do ECS. Para mais detalhes, consulte Chamadas generalizadas.
Para saber mais sobre o SDK V1.0, consulte SDK V1.0 para Node.js.