全部產品
Search
文件中心

Resource Orchestration Service:ROS CDK命令簡介

更新時間:Apr 01, 2025

本文為您介紹ROS CDK相關命令列以及命令列的使用樣本。

瞭解ROS CDK命令

命令

說明

ros-cdk init

初始化ROS CDK⼯程。

ros-cdk config

互動式配置阿里雲帳號資訊。

ros-cdk load-config

從阿里雲CLI擷取阿里雲憑證資訊。

ros-cdk list(ls)

列出⼯程中的所有資源棧。

ros-cdk synthesize(synth)

由代碼⽣成資源棧模板。

ros-cdk deploy

通過ROS建立資源棧。

ros-cdk list-stacks

通過ROS查詢資源棧列表。

ros-cdk event

通過ROS查詢資源棧事件。

ros-cdk output

通過ROS查詢資源棧的輸出資訊。

ros-cdk resource

通過ROS查詢資源棧資源清單。

ros-cdk diff

對⽐模板的差異。

ros-cdk destroy

通過ROS刪除資源棧。

ros-cdk generate-stack-file

同步在工程內產生stack.info.json檔案。

ros-cdk config-set

非互動式配置阿里雲帳號資訊。

使用ROS CDK命令

ros-cdk init

初始化CDK工程時,您可以設定--language指定初始化工程使用的程式設計語言(csharp、java、javascript、python或typescript),並指定--generate-only(true或false)來限制是否只建立工程檔案,而不執行其他動作(例如:配置Git倉庫、安裝依賴、編譯專案等)。

ros-cdk init --language=typescript --generate-only=true

ros-cdk config

初始化工程後,您可以使用config命令互動式配置阿里雲帳號資訊。目前主要支援AK、StsToken、RamRoleArn和EcsRamRole四種認證方式,您也可以指定--global參數將認證資訊設定為全域配置。

 ros-cdk config
 endpoint(optional, default:https://ros.aliyuncs.com):
 defaultRegionId(optional, default:cn-hangzhou):cn-beijing
 
 [1] AK
 [2] StsToken
 [3] RamRoleArn
 [4] EcsRamRole
 [0] CANCEL
 
 Authenticate mode [1...4 / 0]: 1
 accessKeyId:************************
 accessKeySecret:******************************
 
  ✅ Your cdk configuration has been saved successfully!

ros-cdk load-config

ROS CDK支援從阿里雲CLI擷取阿里雲憑證資訊。您可以將阿里雲CLI的認證配置資訊匯入CDK,匯入時只需選擇對應的認證配置模式(mode)和認證設定檔名(profileName)即可(挑選清單只會列舉已經存在的配置資訊)。您也可以指定--file-path參數擷取指定路徑下認證設定檔的配置資訊,指定--global參數將認證資訊設定為全域配置。

 ros-cdk load-config
 [1] AK
 [2] StsToken
 [3] RamRoleArn
 [4] EcsRamRole
 [0] CANCEL
 
 Select authenticate mode [1...4 / 0]: 1
 
 [1] default
 [2] akProfile
 [0] CANCEL
 
 Select Authenticate profile name [1, 2, 0]: 2
 
  ✅ Your cdk configuration has been load from Aliyun Cli configuration saved successfully AK akProfile!

ros-cdk list (ls)

初始化工程後,您可以列舉當前工程內的資源棧及資源棧在工程內的狀態。

 ros-cdk list 
 CdkDemoStack synth
 CdkTestStack deploy

ros-cdk synthesize(synth)

您可以使用synth命令預覽工程內的ROS模板,同時可以配置--json參數指定預覽JSON格式模板。當工程中存在多個資源棧時,必須指定資源棧名稱。

 ros-cdk synth CdkTestStack --json
 {
   "ROSTemplateFormatVersion": "2015-09-01",
   "Resources": {
     "VPC": {
       "Type": "ALIYUN::ECS::VPC",
       "Properties": {
         "CidrBlock": "10.0.0.0/8",
         "Description": "This is ros cdk test",
         "EnableIpv6": false,
         "VpcName": "test-ros-cdk-javascript"
       }
     }
   }
 }

當工程目錄中存在多個自訂App工程檔案或需要傳遞自訂參數資訊給App所啟動並執行代碼時,可以使用--App配置項運行指定的App工程。

 ros-cdk synth NewStack --json --app "npx ts-node bin/new.app.ts"
 {
   "ROSTemplateFormatVersion": "2015-09-01",
   "Resources": {
    "vpc-from-ros-cdk": {
      "Type": "ALIYUN::ECS::VPC",
      "Properties": {
        "CidrBlock": "10.0.0.0/8",
        "Description": "This is ros cdk new app test",
        "EnableIpv6": false,
        "VpcName": "new-app-test"
       }
     }
   }
 }

ros-cdk deploy

建立資源棧時,如果工程中存在多個資源棧,需要指定對應資源棧名稱。您也可以根據需求指定以下命令:

  • --timeoutMinutes:建立資源棧的逾時時間。

  • --parameters:模板中已定義的參數資訊。

  • --region:資源棧建立的地區。

  • --app:運行指定的App建立資源棧。

  • --sync:使用同步方式建立資源棧。

  • --outputs-file:輸出模板的Outputs資訊到stack.outputs.json檔案中。

  • --skip-if-no-changes:在資源棧模板內容未變更時,再次執行deploy命令不做資源建立變更檢查。

  • --resource-group-id:建立資源棧指定資源群組ID,如果不指定該參數,資源棧將加入預設資源群組。

  • --json, -j:當模板列印到STDOUT時,使用JSON輸出而不是YAML 。

  • --ignore-errors:忽略合成錯誤,這可能會產生無效的輸出 。

  • --detail-log:當資源棧部署錯誤時,設定此參數以顯示更多錯誤資訊。

  • --disable-rollback:建立資源棧失敗時禁用復原。

 ros-cdk deploy        # 當工程內只存在一個資源棧時直接部署資源棧。
 ros-cdk deploy NewStack  --app "npx ts-node bin/new.app.ts"  # 特殊指定工程啟動並執行App。
 ros-cdk deploy --sync=true NewStack # 使用同步方式部署資源棧並輸出資源詳情。
 ros-cdk deploy --sync=true --outputs-file=true NewStack # 使用同步方式部署資源棧並輸出模板的Outputs資訊到stack.outputs.json檔案。
 ros-cdk deploy CdkTestStack --timeoutMinutes 60 --region cn-beijing  
 ros-cdk deploy CdkTestStack CdkDemoStack 
 ros-cdk deploy CdkTestStack CdkDemoStack --disable-rollback=true # 當資源棧建立失敗後,禁用復原。
 ros-cdk deploy CdkDemoStack --parameters uploadBucketName=UploadBucket
 ros-cdk deploy CdkDemoStack CdkTestStack --parameters CdkDemoStack:uploadBucketName=UploadBucket --parameters CdkTestStack:uploadBucketName=UpBuckett

ros-cdk list-stacks

建立資源棧後,您可以通過list-stacks查詢工程內所有資源棧的狀態及詳細資料。

  • --all:查詢當前地區下全部資源棧詳情。

  • --resource-group-id:查詢指定資源群組內的資源棧詳情。

  • --page-number:資源棧列表的頁碼,起始值:1,預設值:1。

  • --page-size:分頁查詢時設定的每頁行數,最大值:50,預設值:10。

  • --app:查詢指定的App內的資源棧詳情。

  • --ignore-errors:忽略合成錯誤,這可能會產生無效的輸出。

  • --json, -j:當模板列印到STDOUT時,使用JSON輸出而不是YAML 。

 ros-cdk list-stacks --all
  ✅ The Stacks list is:
  [
         {
                 "Status": "CREATE_COMPLETE",
                 "StackType": "ROS",
                 "StatusReason": "Stack CREATE completed successfully",
                 "CreateTime": "2021-01-14T09:28:09",
                 "RegionId": "cn-beijing",
                 "DisableRollback": false,
                 "StackName": "CdkTestStack",
                 "StackId": "ceb59a66-b2e8-4b30-9da6-59a66****",
                 "TimeoutInMinutes": 20
         },
         {
                 "Status": "CREATE_COMPLETE",
                 "StackType": "ROS",
                 "StatusReason": "Stack CREATE completed successfully",
                 "CreateTime": "2021-01-13T03:10:42",
                 "RegionId": "cn-beijing",
                 "DisableRollback": false,
                 "StackName": "stack_2021-01-13",
                 "StackId": "37e697cc-3ea6-4a79-9dcd-59a66****",
                 "TimeoutInMinutes": 60
         }
 ]

ros-cdk event

建立資源棧後,您可以使用event命令擷取建立資源棧的事件詳情。在擷取時必須指定資源棧名稱。您可以指定--logical-resource-id參數擷取對應資源的事件,在資源棧事件較多時可以指定--page-number和--page-size限制擷取的資源棧事件數目量。

 ros-cdk event CdkTestStack -l ros-cdk-test-sg 
  ✅ The Stack CdkTestStack 
  Events is: 
  [
         {
                 "Status": "CREATE_COMPLETE",
                 "LogicalResourceId": "ros-cdk-test-sg",
                 "PhysicalResourceId": "sg-2ze7i61on1gb48zi****",
                 "StatusReason": "state changed",
                 "CreateTime": "2021-01-14T09:28:10",
                 "EventId": "fc10f59e-7dcc-492d-af5e-0f59e****",
                 "ResourceType": "ALIYUN::ECS::SecurityGroup",
                 "StackName": "CdkTestStack",
                 "StackId": "ceb59a66-b2e8-4b30-9da6-0f59e****"
         },
         {
                 "Status": "CREATE_IN_PROGRESS",
                 "LogicalResourceId": "ros-cdk-test-sg",
                 "StatusReason": "state changed",
                 "CreateTime": "2021-01-14T09:28:09",
                 "EventId": "4d7a4b33-9d5e-49e8-a2b4-0f59e****",
                 "ResourceType": "ALIYUN::ECS::SecurityGroup",
                 "StackName": "CdkTestStack",
                 "StackId": "ceb59a66-b2e8-4b30-9da6-0f59e****"
         }
 ]

ros-cdk output

建立資源棧後,您可以使用output命令擷取建立資源棧的輸出資訊。

 ros-cdk output cdk-demo
   ✅ The Stack cdk-demo 
  Output is: 
  [
         {
                 "Description": "No description given",
                 "OutputKey": "BucketDomainName",
                 "OutputValue": "bestros.oss-cn-beijing.aliyuncs.com"
         }
 ]

ros-cdk resource

建立資源棧後,您可以使用resource命令擷取資源棧中資源的詳細資料。您可以同時指定擷取多個資源棧。

 ros-cdk resource CdkTestStack
 
 ✅ The Stack CdkTestStack 
  Resource is: 
  [
         {
                 "Status": "CREATE_COMPLETE",
                 "LogicalResourceId": "ros-cdk-test-sg-ingres****",
                 "PhysicalResourceId": "sg-2ze7i61on1gb48zi****",
                 "StatusReason": "state changed",
                 "CreateTime": "2021-01-14T09:28:09",
                 "UpdateTime": "2021-01-14T09:28:14",
                 "ResourceType": "ALIYUN::ECS::SecurityGroupIngress",
                 "StackName": "CdkTestStack",
                 "StackId": "ceb59a66-b2e8-4b30-9da6-59a66****"
         },
         {
                 "Status": "CREATE_COMPLETE",
                 "LogicalResourceId": "ros-cdk-tes****",
                 "PhysicalResourceId": "sg-2ze7i61on1gb48zi****",
                 "StatusReason": "state changed",
                 "CreateTime": "2021-01-14T09:28:09",
                 "UpdateTime": "2021-01-14T09:28:10",
                 "ResourceType": "ALIYUN::ECS::SecurityGroup",
                 "StackName": "CdkTestStack",
                 "StackId": "ceb59a66-b2e8-4b30-9da6-59a66****"
         },
         {
                 "Status": "CREATE_COMPLETE",
                 "LogicalResourceId": "ros-cdk-test-sg-ingres****",
                 "PhysicalResourceId": "sg-2ze7i61on1gb48zi****",
                 "StatusReason": "state changed",
                 "CreateTime": "2021-01-14T09:28:09",
                 "UpdateTime": "2021-01-14T09:28:14",
                 "ResourceType": "ALIYUN::ECS::SecurityGroupIngress",
                 "StackName": "CdkTestStack",
                 "StackId": "ceb59a66-b2e8-4b30-9da6-59a66****"
         }
 ]

ros-cdk diff

如果您修改了工程中已建立的資源棧代碼,可以使用diff命令對比已建立資源棧和修改後資源棧的差異資訊,確認修改資訊無誤之後再進行建立。

 ros-cdk diff CdkDemoStack
 Stack CdkDemoStack
 Resources
 [~] ALIYUN::ECS::VPC vpc-from-ros-cdk/vpc-from-ros-cdk vpc-from-ros-cdk 
  └─ [~] VpcName
      ├─ [-] test-ros-cdk-vpc
      └─ [+] test-ros-cdk-vpc-modify
 [~] ALIYUN::ECS::VSwitch vsw-from-ros-cdk/vsw-from-ros-cdk vsw-from-ros-cdk 
  └─ [~] VSwitchName
      ├─ [-] test-ros-cdk-vsw
      └─ [+] test-ros-cdk-vsw-modify

ros-cdk destroy

您可以使用destroy命令刪除已建立的資源棧。您也可以根據需求指定以下命令:

  • --all:刪除全部資源棧。

  • --quiet:靜默刪除資源棧(刪除操作則無需再次確認)。

  • --sync:  使用同步方式刪除資源棧。

ros-cdk destroy CdkDemoStack
ros-cdk destroy --all
ros-cdk destroy --quiet=true
ros-cdk destroy --sync=true

ros-cdk generate-stack-file

當工程的stack.info.json檔案被刪除或丟失時,您可以使用此方式在工程內同步產生stack.info.json檔案。

--resource-group-id:查詢指定資源群組內的資源棧資訊並同步產生stack.info.json檔案。

 ros-cdk generate-stack-file   ✅ The generate stack info has completed!

ros-cdk config-set

在初始化工程之後,您可以使用config-set命令,非互動式地配置阿里雲帳號資訊。常見的配置選項如下:

 [1] region(必選):指定資源棧所屬的地區ID。
 [2] mode(必選):指定配置的憑證類型。目前主要支援AK、StsToken、RamRoleArn和EcsRamRole四種認證方式。
 [3] ak:指定您的AccessKey ID。
 [4] sk:指定您的AccessKey Secret。
 [5] sts-token:指定StsToken鑒權所需要的資訊。
 [6] ram-role-arn:指定RamRoleArn鑒權所需要的資訊。
 [7] role-session-name:指定您的RoleSessionName。
 [8] ram-role-name:指定綁定到您ECS執行個體上的角色。
 
 ros-cdk config-set --region cn-beijing --mode AK --ak LTAI**************** --sk yourAccessKeySecret
 
  ✅ Your cdk configuration has been saved successfully!
說明

您可以使用ros-cdk CAMMAND --help查看更多命令參數。