本文以创建一个阿里云专有网络(VPC)实例为例,为您介绍如何在Python语言环境使用ROS CDK。
前提条件
步骤一:初始化工程
步骤二:配置阿里云凭证信息
步骤三:预览工程结构
执行以下命令,预览工程结构。
tree .
执行命令后,输出以下内容:
.
├── app.py
├── cdk.json
├── demo
│ ├── demo_stack.py
│ └── __init__.py
├── README.md
├── requirements.txt
├── setup.py
├── source.bat
└── test
├── __init__.py
└── test_demo.py
2 directories, 10 files
工程结构说明如下:
app.py
:入口文件。说明 一个工程有且仅有一个应用。示例中创建了一个应用(类型为core.App)和一个资源栈(类型为DemoStack,名称为demo),并将资源栈添加到应用中。
app.py
文件内容如下:#!/usr/bin/env python3 import ros_cdk_core as core from demo.demo_stack import DemoStack app = core.App() DemoStack(app, "demo") app.synth()
demo/demo_stack.py
:资源栈的定义文件。您可以将资源添加到资源栈中,动态构建资源栈。初始化生成的代码中,只为资源栈添加了描述信息。
demo_stack.py
文件内容如下:import ros_cdk_core as core class DemoStack(core.Stack): def __init__(self, scope: core.Construct, construct_id: str, **kwargs) -> None: super().__init__(scope, construct_id, **kwargs) # The code that defines your stack goes here
test/test_demo.py
:单元测试文件。用于验证构建资源栈的逻辑是否符合预期。
test_demo.py
文件内容如下:#!/usr/bin/env python3 import unittest import ros_cdk_core as core from demo.demo_stack import DemoStack class TestStack(unittest.TestCase): def setUp(self): pass def test_stack(self): app = core.App() stack = DemoStack(app, "testdemo") artifact = app.synth().get_stack_artifact(stack.artifact_id).template expect = { "ROSTemplateFormatVersion": "2015-09-01" } self.assertDictEqual(artifact, expect) def tearDown(self): pass if __name__ == '__main__': unittest.main()
步骤四:安装依赖
步骤五:创建资源
步骤六:单元测试
步骤七:管理资源栈
您可以使用ROS CDK命令,创建、查询或删除资源栈。
- 创建资源栈
执行以下命令,创建资源栈。
ros-cdk deploy
执行命令后,输出以下内容:
? The deployment(create stack) has completed! RequestedId: BC963C80-054D-41A0-87E7-001E0AB7B1BA StackId: 218f0db0-7992-4e70-a586-12****
- 查询资源栈
执行以下命令,查询资源栈。
ros-cdk list-stacks
执行命令后,输出以下内容:
? The Stacks list is: [ { "Status": "CREATE_COMPLETE", "StackType": "ROS", "StatusReason": "Stack CREATE completed successfully", "CreateTime": "2021-01-26T12:58:05", "RegionId": "cn-beijing", "DisableRollback": false, "StackName": "demo", "Tags": [], "StackId": "218f0db0-7992-4e70-a586-152es****", "TimeoutInMinutes": 20 } ]
- 删除资源栈
- 执行以下命令,删除资源栈。
ros-cdk destroy
- 根据界面提示,确认删除。
The following stack(s) will be destroyed(Only deployed stacks will be displayed). DemoStack Please confirm.(Y/N) Y
执行命令后,输出以下内容:
? Deleted RequestedId: 1BF864E1-7965-4148-A302-E6ABFF806641
- 执行以下命令,删除资源栈。