本文以調用查詢一台或多台ECS執行個體的詳細資料(DescribeInstances)介面為例,為您介紹.NET V2.0 SDK的安裝和使用。
前提條件
由於阿里雲帳號(主帳號)擁有資源的所有許可權,其AccessKey一旦泄露風險巨大,所以建議您使用滿足最小化許可權需求的RAM使用者的AccessKey。具體操作方式請參見建立AccessKey。
給RAM使用者授予操作Elastic Compute Service相關資源的許可權。本文提供的範例程式碼為查詢樣本,所以選擇AliyunECSReadonlyAccess系統權限原則,您在使用的時候可以根據業務需求進行自訂授權。
使用自訂權限原則。
關於如何建立自訂權限原則,請參見建立自訂權限原則和授權資訊。
Elastic Compute Service依據最佳實務提供了一些自訂權限原則樣本,您可以參考這些樣本以快速建立符合自身業務需求的自訂權限原則,具體詳情請參見Elastic Compute Service自訂權限原則參考。
使用系統權限原則。
Elastic Compute Service支援的所有系統權限原則及其對應的許可權描述,請參見Elastic Compute Service系統權限原則參考。
在環境變數中配置AccessKey,具體操作步驟請參見在Linux、macOS和Windows系統配置環境變數。
安裝SDK
.NET V2.0 SDK安裝方式請參見SDK中心,您可以直接從下方提供的安裝方式中選擇適合您的方法,以完成ECS SDK的安裝:
.NET CLI
dotnet add package AlibabaCloud.SDK.Ecs20140526 --version 4.3.1
Package Manager
Install-Package AlibabaCloud.SDK.Ecs20140526 -Version 4.3.1
PackageReference
<PackageReference Include="AlibabaCloud.SDK.Ecs20140526" Version="4.3.1" />
Paket CLI
paket add AlibabaCloud.SDK.Ecs20140526 --version 4.3.1
F# Interactive
#r "nuget: AlibabaCloud.SDK.Ecs20140526, 4.3.1"
使用SDK
1. 初始化用戶端
阿里雲SDK支援多種訪問憑據用於初始化用戶端,例如AccessKey和STS Token等,更多方式請參見管理訪問憑證。本樣本以通過AccessKey初始化用戶端為例。
namespace ecs
{
public class Sample
{
static void Main(string[] args)
{
var ecsConfig = new AlibabaCloud.OpenApiClient.Models.Config
{
// 從環境變數中擷取AccessKey ID值。
AccessKeyId = Environment.GetEnvironmentVariable("ALIBABA_CLOUD_ACCESS_KEY_ID"),
// 從環境變數中擷取AccessKey Secret值。
AccessKeySecret = Environment.GetEnvironmentVariable("ALIBABA_CLOUD_ACCESS_KEY_SECRET"),
Endpoint = "ecs.cn-hangzhou.aliyuncs.com"
};
var escClient = new AlibabaCloud.SDK.Ecs20140526.Client(ecsConfig);
}
}
}
2. 構建介面的請求對象
在構建請求對象之前,請查看該介面的API文檔擷取參數資訊。
請求對象命名規則:{API名稱}Request,例如DescribeInstances該介面的請求對象為DescribeInstancesRequest。
// 構造請求對象
var describeInstancesRequest = new AlibabaCloud.SDK.Ecs20140526.Models.DescribeInstancesRequest
{
RegionId = "cn-hangzhou"
};
3. 發起調用
通過用戶端調用OpenAPI時,支援設定運行時參數,例如逾時配置、代理配置等,更多資訊請查看進階配置。
介面返回對象命名規則:{API名稱}Response,例如DescribeInstances該介面的返回對象為DescribeInstancesResponse。
// 建立運行時設定物件
var runtimeOptions = new RuntimeOptions();
// 發起請求
var describeInstancesResponse = escClient.DescribeInstancesWithOptions(describeInstancesRequest, runtimeOptions);
4. 異常處理
.NET SDK將異常進行了細緻的分類,主要劃分為以下幾個Exception:
TeaUnretryableException:該異常主要是因為網路問題造成,一般是網路問題造成達到最大重試次數後拋出,可以通過
exception.getLastRequest
來查詢錯誤發生時的請求資訊。TeaException: 在SDK的請求中主要以業務報錯為主的異常。
建議採取合理的措施來處理異常,比如合理地傳播異常、記錄日誌、嘗試恢複等,以確保系統的健壯性和穩定性。
5. 完整樣本
using AlibabaCloud.TeaUtil.Models;
using Tea;
namespace ecs
{
public class Sample
{
static void Main(string[] args)
{
var ecsConfig = new AlibabaCloud.OpenApiClient.Models.Config
{
// 從環境變數中擷取AccessKey ID值。
AccessKeyId = Environment.GetEnvironmentVariable("ALIBABA_CLOUD_ACCESS_KEY_ID"),
// 從環境變數中擷取AccessKey Secret值。
AccessKeySecret = Environment.GetEnvironmentVariable("ALIBABA_CLOUD_ACCESS_KEY_SECRET"),
Endpoint = "ecs.cn-hangzhou.aliyuncs.com"
};
var escClient = new AlibabaCloud.SDK.Ecs20140526.Client(ecsConfig);
// 構造請求對象
var describeInstancesRequest = new AlibabaCloud.SDK.Ecs20140526.Models.DescribeInstancesRequest
{
RegionId = "cn-hangzhou"
};
// 建立運行時設定物件
var runtimeOptions = new RuntimeOptions();
try
{
// 發起請求
var describeInstancesResponse =
escClient.DescribeInstancesWithOptions(describeInstancesRequest, runtimeOptions);
Console.WriteLine(describeInstancesResponse.ToMap());
}
catch (TeaUnretryableException error)
{
// 此處僅做列印展示,請謹慎對待異常處理,在工程專案中切勿直接忽略異常。
Console.WriteLine(error);
}
catch (TeaException error)
{
// 此處僅做列印展示,請謹慎對待異常處理,在工程專案中切勿直接忽略異常。
// 錯誤 message
Console.WriteLine(error.Message);
}
catch (Exception error)
{
// 此處僅做列印展示,請謹慎對待異常處理,在工程專案中切勿直接忽略異常。
Console.WriteLine(error);
}
}
}
}
情境化樣本
更多內容
除了使用上述調用方式外,您還可以使用泛化調用方式調用ECS的OpenAPI,詳細介紹請參見泛化調用。
若您當前使用的是V1.0 SDK,並希望進一步瞭解V1.0 SDK的相關內容,請參見V1.0 .NET SDK。