本文为您介绍ROS CDK命令的含义及使用方法。
了解ROS CDK命令
命令 | 说明 |
---|---|
ros-cdk init | 初始化ROS CDK?程。 |
ros-cdk list(ls) | 列出?程中的所有资源栈。 |
ros-cdk synthesize(synth) | 由代码?成资源栈模板。 |
ros-cdk deploy | 通过ROS创建资源栈。 |
ros-cdk diff | 对?模板的差异。 |
ros-cdk destroy | 通过ROS服务删除资源栈。 |
ros-cdk config | 配置阿?云账号信息。 |
ros-cdk list-stacks | 通过ROS服务查询资源栈列表。 |
ros-cdk event | 通过ROS服务查询资源栈事件。 |
ros-cdk resource | 通过ROS服务查询资源栈资源列表。 |
ros-cdk load-config | 从阿里云CLI获取阿里云凭证信息。 |
使用ROS CDK命令
初始化CDK工程时,您可以设置--language指定初始化工程使用的编程语言(JavaScript、TypeScript、Java或Python),并指定--generate-only(true或false)来限制是否只创建工程文件,而不执行其他操作(例如:配置Git仓库、安装依赖、编译项目等)。
ros-cdk init --language=typescript --generate-only=true
初始化工程后,您可以使用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支持从阿里云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 CdkDemoStack synth CdkTestStack deploy
您可以使用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" } } } }
创建资源栈时,如果工程中存在多个资源栈,需要指定对应资源栈名称。您可以指定--timeoutMinutes配置资源栈超时时间(默认为20min),指定--parameters配置资源栈参数信息。如果指定--region则使用指定地域创建资源栈,否则会使用ros-cdk config配置的默认地域进行创建。
ros-cdk deploy # 当工程内仅存在一个资源栈时。 ros-cdk deploy CdkTestStack --timeoutMinutes 60 --region cn-beijing ros-cdk deploy CdkTestStack CdkDemoStack ros-cdk deploy CdkDemoStack --parameters uploadBucketName=UploadBucket ros-cdk deploy CdkDemoStack CdkTestStack --parameters CdkDemoStack:uploadBucketName=UploadBucket --parameters CdkTestStack:uploadBucketName=UpBucket
创建资源栈后,您可以通过list-stacks查询工程内所有资源栈的状态及详细信息。同时可以指定--all参数查询阿里云账号在指定地域下所有资源栈的详情信息,在资源栈信息较多时也可以指定--page-number和--page-size限制获取的资源栈数量。
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 } ]
创建资源栈后,您可以使用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****" } ]
创建资源栈后,您可以使用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****" } ]
如果您修改了工程中已创建的资源栈代码,可以使用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
您可以使用destroy命令删除已创建的资源栈。当工程内存在多个资源栈时,可以指定--all参数删除全部资源栈。当指定--quiet为true时,删除操作则无需再次确认。
ros-cdk destroy CdkDemoStack ros-cdk destroy --all ros-cdk destroy --quiet true