本文為您介紹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 | 同步在工程內產生 |
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=trueros-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 deployros-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=UpBuckettros-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-modifyros-cdk destroy
您可以使用destroy命令刪除已建立的資源棧。您也可以根據需求指定以下命令:
--all:刪除全部資源棧。
--quiet:靜默刪除資源棧(刪除操作則無需再次確認)。
--sync: 使用同步方式刪除資源棧。
ros-cdk destroy CdkDemoStack
ros-cdk destroy --all
ros-cdk destroy --quiet=true
ros-cdk destroy --sync=trueros-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查看更多命令參數。