阿里雲SDK針對ROS簡化了使用程式設計語言定義和部署雲資源的過程(如Java、TypeScript、Go、Python、PHP、C++、C#、Node.js和Swift)。本文為您介紹如何使用阿里雲SDK調用ROS API。
關於阿里雲SDK的詳細資料,請參見什麼是阿里雲SDK?
查看OpenAPI文檔
在調用OpenAPI前,建議您先閱讀對應介面文檔,瞭解、學習調用該介面所需要的參數及許可權等。更多資訊,請參見API概覽。
準備工作
擷取AccessKey資訊。
擷取當前帳號AccessKey資訊用於配置憑證,如果尚未建立,請參見建立AccessKey。
重要為避免主帳號泄露AccessKey帶來的安全風險,建議您建立RAM使用者,授予RAM使用者Resource Orchestration Service相關的存取權限,再使用RAM使用者的AccessKey調用SDK。更多資訊,請參見為RAM角色授權。
配置憑證。
為避免將AccessKey寫入程式碼到業務代碼中帶來的安全風險,建議您採用配置環境變數的方法管理AccessKey。本文以設定環境變數為例配置憑證。
Linux和macOS系統
通過export命令配置環境變數
重要使用export命令配置的臨時環境變數僅對當前會話有效,當會話退出之後所設定的環境變數將會丟失。若需長期保留環境變數,可將export命令配置到對應作業系統的啟動設定檔中。
配置AccessKey ID、AccessKey Secret。
# 將<ACCESS_KEY_ID>替換為您自己的AccessKey ID。 export ALIBABA_CLOUD_ACCESS_KEY_ID=<ACCESS_KEY_ID> # 將<ACCESS_KEY_SECRET>替換為您自己的AccessKey Secret。 export ALIBABA_CLOUD_ACCESS_KEY_SECRET=<ACCESS_KEY_SECRET>驗證是否配置成功。
執行
echo $ALIBABA_CLOUD_ACCESS_KEY_ID命令,如果返回正確的AccessKey ID,則說明配置成功。
Windows系統
通過圖形化使用者介面GUI
操作步驟
以下為Windows 10中通過圖形化使用者介面設定環境變數的步驟。
在案頭按右鍵此電腦,選擇屬性>進階系統設定>環境變數>系統變數/使用者變數>建立,完成以下配置:
變數
樣本值
AccessKey ID
變數名:ALIBABA_CLOUD_ACCESS_KEY_ID
變數值:LTAI****************
AccessKey Secret
變數名:ALIBABA_CLOUD_ACCESS_KEY_SECRET
變數值:yourAccessKeySecret
測試設定是否成功
單擊開始(或快速鍵:Win+R)> 運行(輸入 cmd)> 確定(或按 Enter 鍵),開啟命令提示字元,執行
echo %ALIBABA_CLOUD_ACCESS_KEY_ID%、echo %ALIBABA_CLOUD_ACCESS_KEY_SECRET%命令。若返回正確的AccessKey,則說明配置成功。
安裝運行環境以及SDK依賴
您需要安裝程式設計語言的對應版本,以及配置ROS SDK依賴,以滿足運行環境。
可參考下圖在OpenAPI門戶中,根據您使用的程式設計語言配置環境、SDK依賴。

使用阿里雲SDK
本節以ListStacks - 查詢資源棧列表介面為例,為您展示如何使用阿里雲SDK調用ROS API。
產生或編寫代碼
產生代碼
您可以通過OpenAPI產生代碼並下載,調用API。
選擇您需要使用的API,並填寫參數,單擊發起調用。本文以ListStacks介面為例。
在SDK樣本頁簽下的Python頁簽,單擊下載完整工程,下載Python SDK範例程式碼包。
在本地解壓範例程式碼包,並進入alibabacloud_sample目錄。

編寫代碼
您可以根據API文檔自行編寫代碼並調用API。
# -*- coding: utf-8 -*-
# This file is auto-generated, don't edit it. Thanks.
import os
import sys
from typing import List
from alibabacloud_ros20190910.client import Client as ROS20190910Client
from alibabacloud_tea_openapi import models as open_api_models
from alibabacloud_ros20190910 import models as ros20190910_models
from alibabacloud_tea_util import models as util_models
from alibabacloud_tea_util.client import Client as UtilClient
class Sample:
def __init__(self):
pass
@staticmethod
def create_client() -> ROS20190910Client:
"""
使用AK&SK初始化帳號Client
@return: Client
@throws Exception
"""
# 工程代碼泄露可能會導致 AccessKey 泄露,並威脅帳號下所有資源的安全性。以下程式碼範例僅供參考。
config = open_api_models.Config(
# 必填,請確保代碼運行環境設定了環境變數 ALIBABA_CLOUD_ACCESS_KEY_ID。,
access_key_id=os.environ['ALIBABA_CLOUD_ACCESS_KEY_ID'],
# 必填,請確保代碼運行環境設定了環境變數 ALIBABA_CLOUD_ACCESS_KEY_SECRET。,
access_key_secret=os.environ['ALIBABA_CLOUD_ACCESS_KEY_SECRET']
)
# Endpoint 請參考 https://api.aliyun.com/product/ROS
config.endpoint = f'ros.aliyuncs.com'
return ROS20190910Client(config)
@staticmethod
def main(
args: List[str],
) -> None:
client = Sample.create_client()
list_stacks_request = ros20190910_models.ListStacksRequest(
region_id='cn-hangzhou'
)
runtime = util_models.RuntimeOptions()
try:
# 複製代碼運行請自行列印 API 的傳回值
client.list_stacks_with_options(list_stacks_request, runtime)
except Exception as error:
# 此處僅做列印展示,請謹慎對待異常處理,在工程專案中切勿直接忽略異常。
# 錯誤 message
print(error.message)
# 診斷地址
print(error.data.get("Recommend"))
UtilClient.assert_as_string(error.message)
@staticmethod
async def main_async(
args: List[str],
) -> None:
client = Sample.create_client()
list_stacks_request = ros20190910_models.ListStacksRequest(
region_id='cn-hangzhou'
)
runtime = util_models.RuntimeOptions()
try:
# 複製代碼運行請自行列印 API 的傳回值
await client.list_stacks_with_options_async(list_stacks_request, runtime)
except Exception as error:
# 此處僅做列印展示,請謹慎對待異常處理,在工程專案中切勿直接忽略異常。
# 錯誤 message
print(error.message)
# 診斷地址
print(error.data.get("Recommend"))
UtilClient.assert_as_string(error.message)
if __name__ == '__main__':
Sample.main(sys.argv[1:])
運行代碼
運行代碼得到如下輸出結果。
{
"TotalCount": 1,
"PageSize": 10,
"RequestId": "692E6895-AEFC-550C-B968-AE929BB68891",
"PageNumber": 1,
"Stacks": [
{
"Status": "IMPORT_CREATE_COMPLETE",
"OperationInfo": {},
"ResourceGroupId": "rg-acfmz7hmshz****",
"ServiceManaged": false,
"StatusReason": "Stack IMPORT_CREATE completed successfully",
"CreateTime": "2023-06-26T09:40:26",
"StackType": "ROS",
"RegionId": "cn-hangzhou",
"DisableRollback": false,
"StackName": "TemplateScratch-ResourceImport-wffTp****",
"Tags": [
{
"Value": "rg-acfmz7hmshzcriy",
"Key": "acs:rm:rgId"
}
],
"TimeoutInMinutes": 60,
"StackId": "814d2113-348c-41f1-adb2-85d3aadf****"
}
]
}
