日本熟妇hd丰满老熟妇,中文字幕一区二区三区在线不卡 ,亚洲成片在线观看,免费女同在线一区二区

ECS PHP V2.0 SDK調(diào)用示例

本文以調(diào)用查詢一臺或多臺ECS實例的詳細信息(DescribeInstances)接口為例,為您介紹PHP V2.0 SDK的安裝和使用。

前提條件

  1. 由于阿里云賬號(主賬號)擁有資源的所有權(quán)限,其AccessKey一旦泄露風(fēng)險巨大,所以建議您使用滿足最小化權(quán)限需求的RAM用戶的AccessKey。具體操作方式請參見創(chuàng)建AccessKey

  2. 給RAM用戶授予操作云服務(wù)器ECS相關(guān)資源的權(quán)限。本文提供的示例代碼為查詢示例,所以選擇AliyunECSReadonlyAccess系統(tǒng)權(quán)限策略,您在使用的時候可以根據(jù)業(yè)務(wù)需求進行自定義授權(quán)。

    1. 使用自定義權(quán)限策略。

      關(guān)于如何創(chuàng)建自定義權(quán)限策略,請參見創(chuàng)建自定義權(quán)限策略授權(quán)信息

      云服務(wù)器ECS依據(jù)最佳實踐提供了一些自定義權(quán)限策略示例,您可以參考這些示例以快速創(chuàng)建符合自身業(yè)務(wù)需求的自定義權(quán)限策略,具體詳情請參見云服務(wù)器ECS自定義權(quán)限策略參考

    2. 使用系統(tǒng)權(quán)限策略。

      云服務(wù)器ECS支持的所有系統(tǒng)權(quán)限策略及其對應(yīng)的權(quán)限描述,請參見云服務(wù)器 ECS系統(tǒng)權(quán)限策略參考

  3. 在環(huán)境變量中配置AccessKey,具體操作步驟請參見在Linux、macOS和Windows系統(tǒng)配置環(huán)境變量

安裝SDK

PHP V2.0 SDK安裝方式請參見SDK 中心。您可以直接復(fù)制下方提供的安裝命令在Terminal中執(zhí)行,以完成ECS SDK的安裝:

composer require alibabacloud/ecs-20140526 4.3.0

使用SDK

1. 初始化客戶端

阿里云SDK支持多種訪問憑據(jù)用于初始化客戶端,例如AccessKey和STS Token等,更多方式請參見管理訪問憑據(jù)。本示例以通過AccessKey初始化客戶端為例。

<?php

require_once 'vendor/autoload.php';
use AlibabaCloud\SDK\Ecs\V20140526\Ecs;
use Darabonba\OpenApi\Models\Config;

class Sample
{
    public static function createClient()
    {
        $config = new Config([
            // 必填,請確保代碼運行環(huán)境設(shè)置了環(huán)境變量 ALIBABA_CLOUD_ACCESS_KEY_ID
            "accessKeyId" => getenv("ALIBABA_CLOUD_ACCESS_KEY_ID"),
            // 必填,請確保代碼運行環(huán)境設(shè)置了環(huán)境變量 ALIBABA_CLOUD_ACCESS_KEY_SECRET
            "accessKeySecret" => getenv("ALIBABA_CLOUD_ACCESS_KEY_SECRET"),
            "endpoint" => "ecs.cn-hangzhou.aliyuncs.com",
        ]);
        return new Ecs($config);
    }
}

2. 構(gòu)建接口的請求對象

在構(gòu)建請求對象之前,請查看該接口的API文檔獲取參數(shù)信息。

說明

請求對象命名規(guī)則:{API名稱}Request,例如DescribeInstances該接口的請求對象為DescribeInstancesRequest。

// 構(gòu)造請求對象
$describeInstancesRequest = new DescribeInstancesRequest([
     "regionId" => "cn-beijing"
]);

3. 發(fā)起調(diào)用

通過客戶端調(diào)用OpenAPI時,支持設(shè)置運行時參數(shù),例如超時配置、代理配置等,更多信息請查看進階配置

說明

接口返回對象命名規(guī)則:{API名稱}Response,例如DescribeInstances該接口的返回對象為DescribeInstancesResponse。

// 創(chuàng)建運行時配置對象
$runtime = new RuntimeOptions();
// 發(fā)起請求  
$describeInstancesResponse = $client->describeInstancesWithOptions($describeInstancesRequest, $runtime);

4. 異常處理

PHP SDK將異常進行了細致的分類,主要劃分為以下幾個:

  • TeaUnableRetryError:該異常主要是因為網(wǎng)絡(luò)問題造成,一般是網(wǎng)絡(luò)問題造成達到最大重試次數(shù)后拋出,可以通過getLastException來查詢錯誤發(fā)生時的請求信息。

  • TeaError:在SDK的請求中主要以業(yè)務(wù)報錯為主的異常。

建議采取合理的措施來處理異常,比如合理地傳播異常、記錄日志、嘗試恢復(fù)等,以確保系統(tǒng)的健壯性和穩(wěn)定性。

5. 完整示例

<?php

require_once 'vendor/autoload.php';
use AlibabaCloud\SDK\Ecs\V20140526\Ecs;
use AlibabaCloud\Tea\Utils\Utils\RuntimeOptions;
use Darabonba\OpenApi\Models\Config;
use AlibabaCloud\SDK\Ecs\V20140526\Models\DescribeInstancesRequest;
use AlibabaCloud\Tea\Exception\TeaError;
use AlibabaCloud\Tea\Exception\TeaUnableRetryError;

class Sample
{

    public static function main()
    {
        try {
            $config = new Config([
                "accessKeyId" => getenv("ALIBABA_CLOUD_ACCESS_KEY_ID"),
                "accessKeySecret" => getenv("ALIBABA_CLOUD_ACCESS_KEY_SECRET"),
                "endpoint" => "ecs.cn-beijing.aliyuncs.com", // <endpoint>
            ]);
            $client = new Ecs($config);

            // 構(gòu)造請求對象
            $describeInstancesRequest = new DescribeInstancesRequest([
                "regionId" => "cn-beijing"
            ]);
            // 創(chuàng)建運行時配置對象
            $runtime = new RuntimeOptions();
            // 發(fā)起請求  
            $describeInstancesResponse = $client->describeInstancesWithOptions($describeInstancesRequest, $runtime);
            var_dump($describeInstancesResponse);
        } catch (\Exception $error) {
            if ($error instanceof TeaError) {
                // 此處僅做打印展示,請謹(jǐn)慎對待異常處理,在工程項目中切勿直接忽略異常。
                print_r("message:" . $error->getMessage() . "\n");
                print_r("code:" . $error->getCode() . "\n");
                print_r($error->data);
            } elseif ($error instanceof TeaUnableRetryError) {
                // 此處僅做打印展示,請謹(jǐn)慎對待異常處理,在工程項目中切勿直接忽略異常。
                print_r($error->getLastException());
            } else {
                // 此處僅做打印展示,請謹(jǐn)慎對待異常處理,在工程項目中切勿直接忽略異常。
                print_r("message:" . $error->getMessage());
            }
        }
    }
}
Sample::main();

場景化示例

更多內(nèi)容

除了使用上述調(diào)用方式外,您還可以使用泛化調(diào)用方式調(diào)用ECS的OpenAPI,詳細介紹請參見泛化調(diào)用

若您當(dāng)前使用的是V1.0 SDK,并希望進一步了解V1.0 SDK的相關(guān)內(nèi)容,請參見V1.0 PHP SDK