跳到主要内容

使用 API 管理您的资源

您可以使用潞晨云平台的 API 来管理您的资源。这些 API 提供了一整套端点,允许您以编程方式对资源执行各种操作。

主要功能

  • 资源管理: 通过 RESTful API 端点创建、读取、更新和删除资源
  • 身份验证: 使用身份验证令牌实现安全访问
  • 实时操作: 实时执行操作,立即获得响应
  • 可扩展性: 高效处理大规模资源管理

您可以参考以下文档,以通过潞晨云的 API 管理您的资源。

入门指南

要开始使用 API,您需要:

  1. 从平台获取访问令牌(Access Token)
  2. 查看可用的端点及其文档
  3. 开始调用 API 来管理资源

可用端点

平台为不同类型的资源和操作提供了多个 API 端点。

有关具体端点的详细信息,请参阅下文各章节。

快速示例

下面是一个完整示例,展示如何使用 HPC-AI 平台 API 进行认证并管理实例。

第 1 步:登录获取访问令牌

首先,通过平台认证以获取访问令牌:

curl 'https://cloud.luchentech.com/api/user/login' \
-H 'content-type: application/json' \
--data-raw '{"username":"username","password":"password"}'

响应示例:

{
"accessToken": "eyJhbGciOiJSUzI1NiIsInR5cCI6IkpXVCJ9.eyJhdWQiOlsicGxhdGZvcm0uY29sb3NzYWxhaS5jb20iXSwiZXhwIjoxNzUxNjEyMzUyLCJncm91cCI6WyJhZG1pbiJdLCJpYXQiOjE3NTE1MjU5NTIsImlzcyI6ImhwY2FpdGVjaC5jb20iLCJzdWIiOiIwOGY2ZjI2MS1hNzY2LTQ2M2UtOGJhNC04NWU2YWUzMmY0OTIifQ.i3ZZz2_pUt9dvp6eVK8E6U-F3-C1sq8ZG4NnIpWbXmn09dJZqwDWtAUuQ6itFOMRW_KhIVKMgW5DxcWaNGczdhUsulsMECPhAevdo4dCUuAQuisfVKX0ojwwyX0W5_uAOAJTTTCcdyG6ZzbrC-jUeIfBg8jbVvlRlZj3R2GRRYBEncLAnOFdKA-igl2T7QyRxIUBToXC1PNGFfXq4PXoawJYQFHOOVA2B67ix5JeMspRbJxs1FHkLfYNmfwVj1clp3axIS4jOq9eLqdRVRYJAz0dz4WeUlLy48hz_5jPdmL7h2xmANm3HGFsHPitlaXNjtcsDLrOxBvraxxxxxx",
"accessExpire": 86400
}

详细 API 描述请参见:登录 API

第 2 步:创建实例

使用获取的访问令牌创建新实例,令牌需作为 Cookie 传递:

curl 'https://cloud.luchentech.com/api/instance/create' \
-H 'content-type: application/json' \
-b 'AccessToken=eyJhbGciOiJSUzI1NiIsInR5cCI6IkpXVCJ9.eyJhdWQiOlsicGxhdGZvcm0uY29sb3NzYWxhaS5jb20iXSwiZXhwIjoxNzUxNTI5Njg2LCJncm91cCI6WyJhZG1pbiJdLCJpYXQiOjE3NTE0NDMyODYsImlzcyI6ImhwY2FpdGVjaC5jb20iLCJzdWIiOiIwOGY2ZjI2MS1hNzY2LTQ2M2UtOGJhNC04NWU2YWUzMmY0OTIifQ.pnTtcw2Spns2Xi_knR_LclTt4eJGUK-lDzIJxHEDi13p7gACVKpJz548QZGq891lg7jpiKpn4QJRgNYxrZQmSThmZVSbJnwmttz01ijy1cGKuq61UI3zaHLPIyVDhqVVjuch0KedFFC9ahr4jSPf6-7ibgaTN7ozHWsMkLKjDyDUPjYfAdfmIz2dtSxJ0WBC6-c4BkwcKOCjHj3eye9BI9c74JUOTVNinwIoKdOzdF5mqI83rVuVpS_7lSAfrsdscqFXRiGtHcHLrb9nLs2Jcv5IkIdnKo5zzRNdpKWYhQWPYKowSlSWDa5eZv-hw3EsyhiQAByZ5x6yYYn_R5Hxxxx' \
--data-raw '{"name":"example-instance","imageId":"7a81788c-xxxx-xxxx-xxxx-2409e3c8150c","instanceTypeId":"c531be90-xxxx-xxxx-xxxx-59d3d911e29e","region":"fce31a0c-xxxx-xxxx-xxxx-41caa1bdd251","billing":{"chargeMode":"perHour","duration":1},"remoteStorages":[],"instanceConfiguration":{"enableCommonData":false,"enableDocker":false, "initScript": ""},"nodePorts":[]}'

响应示例:

{
"instanceId": "notebook-78d36d6a-xxxx-xxxx-xxxx-eea5891c2019"
}

详细 API 描述请参见:创建实例 API

第 3 步:列出所有实例

获取您所有实例的列表:

curl 'https://cloud.luchentech.com/api/instance/list' \
-H 'content-type: application/json' \
-b 'AccessToken=eyJhbGciOiJSUzI1NiIsInR5cCI6IkpXVCJ9.eyJhdWQiOlsicGxhdGZvcm0uY29sb3NzYWxhaS5jb20iXSwiZXhwIjoxNzUxNjExOTE2LCJncm91cCI6WyJhZG1pbiJdLCJpYXQiOjE3NTE1MjU1MTYsImlzcyI6ImhwY2FpdGVjaC5jb20iLCJzdWIiOiIwOGY2ZjI2MS1hNzY2LTQ2M2UtOGJhNC04NWU2YWUzMmY0OTIifQ.hDEYrfq5zksB7ywx7scoNM-IJmyW88mYTtz435kamqoO8etsSPHy1yLe2L7WKAkUx_eJOISUauwTUX6Of8ys5gj8MP4BK6Ixh_saAWylRdF7IrFMDb16Yaxc2a91yAhK26IsiDCOoygSBYZ8tMHMUJkudkY2CqzSJvb3Z-kCqJfK8wlgY45Dgx6dTkVeYvA9bohnRQ6R4hI57HJo8fnav3VxkzEbYcs9UmLSNgfPYdC-mCURsSsPUaCTVEUxk9oJaHXmyH61uo7ZQKOHXNqsCHVgwFJPAm3YjPCx3n1jNYPGH-amnrLt0PQVpFa-PGWwjySrOVyjmjtlsxxxxxx' \
--data-raw '{"pager":{"currentPage":1,"pageSize":20}}'

响应示例:

{
"instances": [
{
"instanceMetadata": {
"instanceAuth": {
"ownerUserName": "08f6f261-xxxx-xxxx-xxxx-85e6ae32f492"
},
"instanceId": "notebook-5ac72ea0-xxxx-xxxx-xxxx-eea5891c2019",
"instanceUsername": "username"
},
"instanceSpecInfo": {
"name": "example-instance",
"instanceBillingInfo": {
"chargeMode": "perHour",
"duration": 1,
"price": 0.23999999463558197,
"unit": "$",
"type": "On-Demand"
},
"instanceTypeInfo": {
"cpu": {
"amount": 8,
"type": "INTEL(R) XEON(R) PLATINUM 8558",
"unit": ""
},
"memory": {
"amount": 16,
"type": "",
"unit": "GB"
},
"gpu": {
"amount": 0,
"type": "",
"unit": ""
}
},
"regionInfo": {
"domain": "asia-sg-1.hpc-ai.com",
"location": "Asia,Singapore",
"name": "asia-sg-1",
"sshAddress": "122.xx.xx.202"
}
},
"instanceRuntimeInfo": {
"createAtUnixMs": 1751527726179,
"status": "Running",
"healthy": true,
"subUrl": "/notebook/notebook-5ac72ea0-xxxx-xxxx-xxxx-eea5891c2019/notebook-5ac72ea0-xxxx-xxxx-xxxx-eea5891c2019-0"
}
}
],
"pager": {
"currentPage": 1,
"pageSize": 20,
"totalEntries": 92
}
}

详细 API 描述请参见:列出实例 API

访问 JupyterLab

实例创建并运行后,可通过以下步骤访问 JupyterLab:

  1. 检查实例状态: 通过 instanceRuntimeInfo.status 监控实例状态。当状态为 Running 时,实例可使用。

  2. 构建 JupyterLab URL: 将域名 instanceSpecInfo.regionInfo.domain 与子 URL instanceRuntimeInfo.subUrl 拼接即可:

    https://{instanceSpecInfo.regionInfo.domain}{instanceRuntimeInfo.subUrl}

    For example, using the response data above:

    https://asia-sg-1.hpc-ai.com/notebook/notebook-5ac72ea0-xxxx-xxxx-xxxx-eea5891c2019/notebook-5ac72ea0-xxxx-xxxx-xxxx-eea5891c2019-0
  3. Access with Authentication: Make sure to include your access token as a cookie when accessing the JupyterLab URL. If you want to access JupyterLab on the website, you should login to hpc-ai.com first.

使用 SSH

您也可以通过 SSH 访问实例:

  1. 获取 SSH 信息: 在 instanceSpecInfo.nodePorts 数组中查找端口为 22 的节点端口(nodePort)。

  2. 通过 SSH 连接:

    ssh -p {sshinfo.nodePort} username@{sshinfo.address}

    示例:

    ssh -p {sshinfo.nodePort} username@{sshinfo.address}

注意: 请提前配置 SSH 公钥以确保可以通过 SSH 访问实例。

使用端口转发

如果在启动实例时配置了额外的端口转发,可在 instanceSpecInfo.nodePorts 中找到相应信息,并通过这些端口访问实例内应用。

示例: 如果实例内部有 Web 应用运行在 8080 端口,可以通过转发端口访问:

http://{sshinfo.address}:{forwarded_port}

第 4 步:停止实例

使用实例 ID 停止指定实例:

curl 'https://cloud.luchentech.com/api/instance/stop' \
-H 'content-type: application/json' \
-b 'AccessToken=eyJhbGciOiJSUzI1NiIsInR5cCI6IkpXVCJ9.eyJhdWQiOlsicGxhdGZvcm0uY29sb3NzYWxhaS5jb20iXSwiZXhwIjoxNzUxNjExOTE2LCJncm91cCI6WyJhZG1pbiJdLCJpYXQiOjE3NTE1MjU1MTYsImlzcyI6ImhwY2FpdGVjaC5jb20iLCJzdWIiOiIwOGY2ZjI2MS1hNzY2LTQ2M2UtOGJhNC04NWU2YWUzMmY0OTIifQ.hDEYrfq5zksB7ywx7scoNM-IJmyW88mYTtz435kamqoO8etsSPHy1yLe2L7WKAkUx_eJOISUauwTUX6Of8ys5gj8MP4BK6Ixh_saAWylRdF7IrFMDb16Yaxc2a91yAhK26IsiDCOoygSBYZ8tMHMUJkudkY2CqzSJvb3Z-kCqJfK8wlgY45Dgx6dTkVeYvA9bohnRQ6R4hI57HJo8fnav3VxkzEbYcs9UmLSNgfPYdC-mCURsSsPUaCTVEUxk9oJaHXmyH61uo7ZQKOHXNqsCHVgwFJPAm3YjPCx3n1jNYPGH-amnrLt0PQVpFa-PGWwjySrOVyjmjtlsxxxxxx' \
--data-raw '{"instanceId":"notebook-43f8fcd9-xxxx-xxxx-xxxx-96891d9dfb5e"}'

响应示例:

{
"instanceId":"notebook-43f8fcd9-xxxx-xxxx-xxxx-96891d9dfb5e"
}

详细 API 描述请参见:停止实例 API