|
| 1 | +# 快速开始 |
| 2 | + |
| 3 | +## 安装 |
| 4 | + |
| 5 | +使用 `npm` 安装(推荐): |
| 6 | + |
| 7 | +```bash |
| 8 | +$ npm install @ucloud/ucloud-sdk-js |
| 9 | +``` |
| 10 | + |
| 11 | +> 注意:内测阶段,未注册到官方仓库,只能采用源码安装,npm registry 方式暂时不可用。 |
| 12 | +
|
| 13 | +```bash |
| 14 | +git clone https://git.ucloudadmin.com/ucloud-sdk/ucloud-sdk-nodejs.git |
| 15 | +cd ucloud-sdk-nodejs && npm install |
| 16 | +cd examples/uhost && node index.js |
| 17 | +``` |
| 18 | + |
| 19 | +## 初次使用 |
| 20 | + |
| 21 | +目前,SDK 使用 PublicKey/PrivateKey 作为唯一的鉴权方式,该公私钥可以从以下途径获取: |
| 22 | + |
| 23 | +- [UAPI 密钥管理](https://console.ucloud.cn/uapi/apikey) |
| 24 | + |
| 25 | +下面提供一个简单的示例: |
| 26 | + |
| 27 | +```javascript |
| 28 | +const {Client} = require("ucloud-sdk-js/lib/services"); |
| 29 | + |
| 30 | +function sleep(ms) { |
| 31 | + return new Promise(resolve => setTimeout(resolve, ms)) |
| 32 | +} |
| 33 | + |
| 34 | +async function main() { |
| 35 | + // Build client |
| 36 | + const client = new Client({ |
| 37 | + config: { |
| 38 | + region: 'cn-bj2', |
| 39 | + projectId: process.env.UCLOUD_PROJECT_ID || '', |
| 40 | + }, |
| 41 | + credential: { |
| 42 | + publicKey: process.env.UCLOUD_PUBLIC_KEY || '', |
| 43 | + privateKey: process.env.UCLOUD_PRIVATE_KEY || '', |
| 44 | + } |
| 45 | + }); |
| 46 | + const zone = "cn-bj2-05"; |
| 47 | + |
| 48 | + let resp = null; |
| 49 | + |
| 50 | + // Describe Image |
| 51 | + try { |
| 52 | + resp = await client.uhost().describeImage(); |
| 53 | + } catch (e) { |
| 54 | + throw e; |
| 55 | + } |
| 56 | + const image = resp["ImageSet"][0]; |
| 57 | + |
| 58 | + // Create Instance |
| 59 | + try { |
| 60 | + resp = await client.uhost().createUHostInstance({ |
| 61 | + Name: "sdk-js-example", |
| 62 | + Zone: zone, |
| 63 | + ImageId: image["ImageId"], |
| 64 | + LoginMode: "Password", |
| 65 | + Password: new Buffer("UCloud1234!").toString('base64'), |
| 66 | + CPU: 1, |
| 67 | + Memory: 1024, |
| 68 | + Disks: [{ |
| 69 | + Size: image["ImageSize"], |
| 70 | + Type: "CLOUD_SSD", |
| 71 | + IsBoot: "true", |
| 72 | + }], |
| 73 | + }); |
| 74 | + } catch (e) { |
| 75 | + throw e; |
| 76 | + } |
| 77 | +} |
| 78 | + |
| 79 | +main().catch(e => { console.error(e) }) |
| 80 | +``` |
| 81 | + |
| 82 | +将上述代码中 client 相关配置,以及主机的 image id 等,替换成自己的配置,即可创建一台云主机。 |
| 83 | + |
| 84 | +在该示例中,使用 SDK 完成了一个创建云主机的请求。至此,已经涵盖了 SDK 的基本核心用法,可以构建自己的脚本啦! |
| 85 | + |
| 86 | +SDK 中的每一个 api 调用都有详细的注释文档, |
| 87 | +可以通过 Editor/IDE 跳转到具体的方法中查看(也可以 [查看接口文档](https://docs.ucloud.cn/api/summary/README) ), |
| 88 | +并根据 IDE 自动补全和报错信息继续探索 SDK 的用法。 |
| 89 | + |
| 90 | +如果需要了解这段代码提及但未完全覆盖的使用技巧,请参考: |
| 91 | + |
| 92 | +- [通用配置](configure.md),了解如何配置 SDK,如日志、重试、服务访问端点(公有云、专有云)等 |
| 93 | +- [错误处理](error.md),了解如何处理不同类型的 SDK 异常,包括参数错误,RetCode 不为 0 的业务异常等 |
| 94 | +- [类型系统](typesystem.md),了解 SDK 如何校验参数,并规范化 API 的返回值。 |
| 95 | +- [请求中间件](middleware.md),了解如何拦截 SDK 发起的请求,并统一添加额外的逻辑。 |
| 96 | +- [泛化调用](generic.md),如何调用 SDK 尚未支持的 API(不建议使用此类 API,因为没有兼容性保证) |
| 97 | + |
| 98 | +## 获取更多示例 |
| 99 | + |
| 100 | +### 基于场景的示例 |
| 101 | + |
| 102 | +SDK 提供了部分基于场景的示例,并提供了对应的资源销毁逻辑,可以点击以下链接查看源码: |
| 103 | + |
| 104 | +- [批量创建云主机](../examples/uhost) |
| 105 | +- [创建基于负载均衡器的两层架构](../examples/two-tier) |
0 commit comments