阅读本文,您可以获取 Go SDK 实例管理的接口调用示例,实现快速开发。
说明
本文的调用示例包含接口的部分参数。由于参数间可能存在互斥关系,在调用时,请您参考注释,进行调整。
调用接口前,请先完成 Go SDK 的安装及初始化操作。
本节为您介绍实例管理相关接口的功能和调用示例。
您可以调用 CreatePod 接口创建实例 CreatePod。详细的参数说明可参见 CreatePod 接口文档。
接口调用示例如下所示。
package main import ( "context" "fmt" "os" "github.com/volcengine/volc-sdk-golang/base" ACEP "github.com/volcengine/volc-sdk-golang/service/acep" ) func StringPtr(v string) *string { return &v } func BoolPtr(v bool) *bool { return &v } func Int32Ptr(v int32) *int32 { return &v } func StringPtrs(vals []string) []*string { ptrs := make([]*string, len(vals)) for i := 0; i < len(vals); i++ { ptrs[i] = &vals[i] } return ptrs } func main() { // 强烈建议不要把 VOLC_ACCESSKEY 和 VOLC_SECRETKEY 保存到工程代码里,否则可能导致 AccessKey 泄露,威胁您账号下所有资源的安全。 // 本示例通过从环境变量中读取 VOLC_ACCESSKEY 和 VOLC_SECRETKEY,来实现 API 访问的身份验证。运行代码示例前,请配置环境变量 VOLC_ACCESSKEY 和 VOLC_SECRETKEY service := ACEP.NewInstance() service.SetCredential(base.Credentials{ AccessKeyID: os.Getenv("VOLC_ACCESSKEY"), SecretAccessKey: os.Getenv("VOLC_SECRETKEY"), }) body := &ACEP.CreatePodBody{ // 实例所归属的业务 ID。 ProductID: `1591495366954xxxxxx`, // 自定义实例名称,如不指定,则默认为实例 ID。 // note: // 批量创建实例时为实例名称前缀。 PodName: StringPtr(`新建实例`), // 自定义镜像 ID,如不指定,则默认使用平台提供的官方标准镜像。 ImageID: StringPtr(`img-76xxxxxx`), // 运行资源的套餐规格 ID,取值如下: // <li> ultimate:旗舰型 </li> // <li> enhanced:加强型 </li> // <li> common:通用型 </li> // <li> sample:入门型 </li> // <li> basic:基础型 </li> // <li> elementary:低配型 </li> // <li> ultimatePlus:旗舰型Plus </li> // <li> enhancedPlus:加强型Plus </li> // <li> commonPlus:通用型Plus </li> // <li> samplePlus:入门型Plus </li> // <li> basicPlus:基础型Plus </li> // <li> elementaryPlus:低配型Plus </li> // 本地存储方案除上述 12 种规格外,还包含以下 6 个取值: // <li> ultimatePro:旗舰型Pro </li> // <li> enhancedPro:加强型Pro </li> // <li> commonPro:通用型Pro </li> // <li> samplePro:入门型Pro </li> // <li> basicPro:基础型Pro </li> // <li> elementaryPro:低配型Pro </li> // note: // 批量创建实例时,如 PodSpecList 中未指定套餐 ID,则该参数为必选。 ConfigurationCode: StringPtr(`enhanced`), // 创建实例的用户存储分区大小,即 data 分区容量大小。可选的容量如下: // <li> 4Gi </li> // <li> 8Gi </li> // <li> 16Gi </li> // <li> 32Gi </li> // <li> 64Gi </li> // <li> 128Gi </li> // <li> 256Gi </li> // note: // <li> 当 ResourceType 参数取值为 100 时,该 DataSize 参数用户可根据支持的可选容量设置。 </li> // <li> 当 ResourceType 参数取值为 200 时,DataSize 为默认固定值,无需指定。与套餐的对应关系为: </li> // <li> ultimate: 74Gi </li> // <li> enhanced:37Gi </li> // <li> common:24Gi </li> // <li> sample:18Gi </li> // <li> basic:14Gi </li> // <li> elementary:12Gi </li> // <li> 容量大小和单位不可自定义。 </li> // <li> 建议您在调用时,结合实际业务情况,按需填写存储大小。 </li> DataSize: StringPtr(`4Gi`), // 机房 ID。 // note: // <li> 创建单个实例时,此参数必填,用于指定创建实例的机房。 </li> // <li> 批量创建实例时: </li> // <li> 如 PodSpecList 中**未指定**机房 ID,则该参数**必填**。 </li> // <li> 如 PodSpecList 中**已指定**机房 ID,则该参数**选填**。 </li> Dc: StringPtr(`gdsz-ctcucm-01-xxxxxxxx`), // 屏幕布局,全局屏幕配置;可通过调用 [ListDisplayLayoutMini](https://www.volcengine.com/docs/6394/1221495) 接口获取;可选的系统屏幕布局 ID 包括: // <li> single-display-landscape </li> // <li> single-display-portrait </li> // <li> single-display-portrait-720p </li> // // note: // 如未指定屏幕布局 ID,当运行资源套餐 ConfigurationCode 为 // 入门型 sample ,云手机实例将会使用 720P 和 30fps 的默认配置。 DisplayLayoutID: StringPtr(`single-display-portrait`), // 创建完成后是否立即开机。取值如下: // <li> true:开机 </li> // <li> false:(默认)关机 </li> Start: BoolPtr(false), // 自定义标签。支持中英文、数字、点号、下划线或中划线,以大小写字母或者中文开头。 TagID: StringPtr(`01`), // 实例上行带宽上限,单位:Mbps;如设置为 0,则不限速。 UpBandwidthLimit: Int32Ptr(0), // 实例下行带宽上限,单位:Mbps;如设置为 0,则不限速。 DownBandwidthLimit: Int32Ptr(0), // 云机 ID。可通过 [ListHost](https://www.volcengine.com/docs/6394/1221480) 接口获取。 // note: // 当 ResourceType 参数取值为 200 本地存储时,该参数才生效。 HostID: StringPtr(`h-7340161778808xxxxxx`), // 实例资源类型。取值如下: // <li> 100:云盘存储 </li> // <li> 200:本地存储 </li> ResourceType: Int32Ptr(100), // 选择想要使用的机型参数名称,选填。当 UserPropertyRule 设置为 1 时,若该参数置空,则从机型库中随机选择一条规则。 // warning // 对于同一属性,通过 OverlaySettings、OverlayProperty、OverlayPersistProperty 设置的值优先级高于本参数中预设的值。 PropertyRuleName: StringPtr(`HW`), // 是否使用预设的机型参数。 // <li> 1:使用; </li> // <li> 2:不使用,默认设置。 </li> // warning // 前提:已通过 AddPropertyRule 创建机型参数规则。 UsePropertyRule: Int32Ptr(1), } // 实例初始化 Settings 属性列表。 OverlaySettings1 := ACEP.CreatePodBodyOverlaySettingsItem{ // 属性名称,已可修改的 Settings 属性及属性值,参考 [Settings 属性列表](https://www.volcengine.com/docs/6394/671880#settings-%E5%B1%9E%E6%80%A7%E5%88%97%E8%A1%A8) SettingsName: `locale_language`, // 设置类型,取值如下: // <li> global </li> // <li> secure </li> // <li> system </li> SettingsType: `global`, // 属性值。各类型属性取值示例如下: // <li> bool: "true"、"false" </li> // <li> intlong: "21312" </li> // <li> float: "2131.09" </li> // <li> string: "safehg" </li> SettingsValue: `on`, // 属性值数据类型,取值如下: // <li> int </li> // <li> long </li> // <li> string </li> // <li> float </li> // <li> bool </li> SettingsValueType: `string`, } body.OverlaySettings = append(body.OverlaySettings, &OverlaySettings1) // 实例初始化系统属性,非持久化,立即生效,重启实例后失效。 OverlayProperty1 := ACEP.CreatePodBodyOverlayPropertyItem{ // 属性名称,已可修改的系统属性及属性值,参考 [System Properties 属性列表](https://www.volcengine.com/docs/6394/671880#system-properties-%E5%B1%9E%E6%80%A7%E5%88%97%E8%A1%A8)。 SystemPropertyName: `ro.product.name`, // 属性值。取值如下: // <li> bool: "true"、"false" </li> // <li> intlong: "21312" </li> // <li> float: "2131.09" </li> // <li> string: "safehg" </li> // note: // 当 SystemPropertyValueType 参数取值不同,该 SystemPropertyValue 参数对应的取值不同。 SystemPropertyValue: `samsung`, // 属性值数据类型。取值如下: // <li> int </li> // <li> long </li> // <li> string </li> // <li> float </li> // <li> bool </li> SystemPropertyValueType: `string`, } body.OverlayProperty = append(body.OverlayProperty, &OverlayProperty1) // 实例初始化系统属性,持久化,重启实例后生效。 // note: // 适用于只读系统属性,或 AOSP 原生非持久化的系统属性的修改,如 ro.product.model OverlayPersistProperty1 := ACEP.CreatePodBodyOverlayPersistPropertyItem{ // 属性名称,已可修改的系统属性及属性值,参考 [System Properties 属性列表](https://www.volcengine.com/docs/6394/671880#system-properties-%E5%B1%9E%E6%80%A7%E5%88%97%E8%A1%A8)。 SystemPropertyName: `ro.product.name`, // 属性值。取值如下: // <li> bool: "true"、"false" </li> // <li> intlong: "21312" </li> // <li> float: "2131.09" </li> // <li> string: "safehg" </li> // note: // 当 SystemPropertyValueType 参数取值不同,该 SystemPropertyValue 参数对应的取值不同。 SystemPropertyValue: `samsung`, // 属性值数据类型。取值如下: // <li> int </li> // <li> long </li> // <li> string </li> // <li> float </li> // <li> bool </li> SystemPropertyValueType: `string`, } body.OverlayPersistProperty = append(body.OverlayPersistProperty, &OverlayPersistProperty1) // 批量创建实例时,指定实例配置定义。 PodSpecList1 := ACEP.CreatePodBodyPodSpecListItem{ // 机房 ID。 Dc: StringPtr(`gdsz-ctcucm-01-9axxxxxx`), // 创建完成后是否立即启动。取值如下: // <li> true:是 </li> // <li> false:(默认)否 </li> Start: BoolPtr(true), // 自定义标签。 TagID: StringPtr(`tag_01`), // 云机 ID。 HostID: StringPtr(`h-734016177880xxxxxx`), // 镜像 ID。 ImageID: StringPtr(`img-xxxxxx`), // 实例名称。 PodName: StringPtr(`新建实例`), // 创建实例数量。 ApplyNum: 1, // 创建实例的用户存储分区大小。 DataSize: StringPtr(`4Gi`), IPWhiteList: StringPtr(`10.101.89.02,10.101.89.03`), // 屏幕布局。 DisplayLayoutID: StringPtr(`single-display-portrait`), // 实例上行带宽上限,单位为 Mbps;如设置为0,则不限速。 UpBandwidthLimit: Int32Ptr(0), // 运行资源的套餐规格 ID,取值如下: // <li> ultimate:旗舰型 </li> // <li> enhanced:加强型 </li> // <li> common:通用型 </li> // <li> sample:入门型 </li> // <li> basic:基础型 </li> // <li> elementary:低配型 </li> // <li> ultimatePlus:旗舰型Plus </li> // <li> enhancedPlus:加强型Plus </li> // <li> commonPlus:通用型Plus </li> // <li> samplePlus:入门型Plus </li> // <li> basicPlus:基础型Plus </li> // <li> elementaryPlus:低配型Plus </li> // 本地存储方案除上述 12 种规格外,还包含以下 6 个取值: // <li> ultimatePro:旗舰型Pro </li> // <li> enhancedPro:加强型Pro </li> // <li> commonPro:通用型Pro </li> // <li> samplePro:入门型Pro </li> // <li> basicPro:基础型Pro </li> // <li> elementaryPro:低配型Pro </li> ConfigurationCode: StringPtr(`ultimate`), // 实例下行带宽上限,单位为 Mbps;如设置为 0,则不限速。 DownBandwidthLimit: Int32Ptr(0), } // 实例初始化系统属性。 OverlayProperty2 := ACEP.CreatePodBodyPodSpecListOverlayPropertyItem{ // 属性名称,已可修改的系统属性及属性值,参考 [System Properties 属性列表](https://www.volcengine.com/docs/6394/671880#system-properties-%E5%B1%9E%E6%80%A7%E5%88%97%E8%A1%A8)。 SystemPropertyName: `ro.product.name`, // 属性值。取值如下: // <li> bool: "true"、"false" </li> // <li> intlong: "21312" </li> // <li> float: "2131.09" </li> // <li> string: "safehg" </li> // note: // 当 SystemPropertyValueType 参数取值不同,该 SystemPropertyValue 参数对应的取值不同。 SystemPropertyValue: `samsung`, // 属性值数据类型。取值如下: // <li> int </li> // <li> long </li> // <li> string </li> // <li> float </li> // <li> bool </li> SystemPropertyValueType: `string`, } PodSpecList1.OverlayProperty1 = append(PodSpecList1.OverlayProperty, &OverlayProperty2) // 实例初始化 Settings 属性。 OverlaySettings2 := ACEP.CreatePodBodyPodSpecListOverlaySettingsItem{ // 属性名称,已可修改的 Settings 属性及属性值,参考 [Settings 属性列表](https://www.volcengine.com/docs/6394/671880#settings-%E5%B1%9E%E6%80%A7%E5%88%97%E8%A1%A8) SettingsName: `locale_language`, // 设置类型,取值如下: // <li> global </li> // <li> secure </li> // <li> system </li> SettingsType: `global`, // 属性值。各类型属性取值示例如下: // <li> bool: "true"、"false" </li> // <li> intlong: "21312" </li> // <li> float: "2131.09" </li> // <li> string: "safehg" </li> SettingsValue: `on`, // 属性值数据类型,取值如下: // <li> int </li> // <li> long </li> // <li> string </li> // <li> float </li> // <li> bool </li> SettingsValueType: `string`, } PodSpecList1.OverlaySettings1 = append(PodSpecList1.OverlaySettings, &OverlaySettings2) // 端口映射规则 ID 列表。 PortMappingRuleIDList := []string{"7332794723853xxxxxx", "7332794723851xxxxxx"} PodSpecList1.PortMappingRuleIDList = StringPtrs(PortMappingRuleIDList) // 实例初始化系统属性,持久化。 OverlayPersistProperty2 := ACEP.CreatePodBodyPodSpecListOverlayPersistPropertyItem{ // 属性名称,已可修改的系统属性及属性值,参考 [System Properties 属性列表](https://www.volcengine.com/docs/6394/671880#system-properties-%E5%B1%9E%E6%80%A7%E5%88%97%E8%A1%A8)。 SystemPropertyName: `ro.product.name`, // 属性值。取值如下: // <li> bool: "true"、"false" </li> // <li> intlong: "21312" </li> // <li> float: "2131.09" </li> // <li> string: "safehg" </li> // note: // 当 SystemPropertyValueType 参数取值不同,该 SystemPropertyValue 参数对应的取值不同。 SystemPropertyValue: `samsung`, // 属性值数据类型。取值如下: // <li> int </li> // <li> long </li> // <li> string </li> // <li> float </li> // <li> bool </li> SystemPropertyValueType: `string`, } PodSpecList1.OverlayPersistProperty1 = append(PodSpecList1.OverlayPersistProperty, &OverlayPersistProperty2) body.PodSpecList = append(body.PodSpecList, &PodSpecList1) // 端口映射 ID 列表。 PortMappingRuleIDList1 := []string{"7338891742281xxxxxx"} body.PortMappingRuleIDList = StringPtrs(PortMappingRuleIDList1) resp, err := service.CreatePod(context.Background(), body) if err != nil { fmt.Printf("error %v", err) } else { fmt.Printf("success %+v", resp) } }
您可以调用 CreatePodOneStep 接口创建实例并部署应用 CreatePodOneStep。详细的参数说明可参见 CreatePodOneStep 接口文档。
接口调用示例如下所示。
package main import ( "context" "fmt" "os" "github.com/volcengine/volc-sdk-golang/base" ACEP "github.com/volcengine/volc-sdk-golang/service/acep" ) func StringPtr(v string) *string { return &v } func Int32Ptr(v int32) *int32 { return &v } func BoolPtr(v bool) *bool { return &v } func main() { // 强烈建议不要把 VOLC_ACCESSKEY 和 VOLC_SECRETKEY 保存到工程代码里,否则可能导致 AccessKey 泄露,威胁您账号下所有资源的安全。 // 本示例通过从环境变量中读取 VOLC_ACCESSKEY 和 VOLC_SECRETKEY,来实现 API 访问的身份验证。运行代码示例前,请配置环境变量 VOLC_ACCESSKEY 和 VOLC_SECRETKEY service := ACEP.NewInstance() service.SetCredential(base.Credentials{ AccessKeyID: os.Getenv("VOLC_ACCESSKEY"), SecretAccessKey: os.Getenv("VOLC_SECRETKEY"), }) body := &ACEP.CreatePodOneStepBody{ // 实例所归属的业务 ID。 ProductID: `1591495366954xxxxxx`, // 自定义实例名称,如不指定,则默认为实例 ID。 PodName: StringPtr(`测试实例`), // 自定义镜像 ID,如不指定,则默认使用平台提供的官方标准镜像。 ImageID: StringPtr(`img-7616xxxx`), // 云手机实例规格 ID,可选项为: // <li> ultimate:旗舰型 </li> // <li> enhanced:加强型 </li> // <li> common:通用型 </li> // <li> sample:入门型 </li> // <li> basic:基础型 </li> // <li> elementary:低配型 </li> // <li> ultimatePlus:旗舰型Plus </li> // <li> enhancedPlus:加强型Plus </li> // <li> commonPlus:通用型Plus </li> // <li> samplePlus:入门型Plus </li> // <li> basicPlus:基础型Plus </li> // <li> elementaryPlus:低配型Plus </li> // 对于本地存储方案,除上述 12 种规格外,还包含以下 6 种规格: // <li> ultimatePro:旗舰型Pro </li> // <li> enhancedPro:加强型Pro </li> // <li> commonPro:通用型Pro </li> // <li> samplePro:入门型Pro </li> // <li> basicPro:基础型Pro </li> // <li> elementaryPro:低配型Pro </li> ConfigurationCode: `enhanced`, // 创建实例的用户存储分区大小,即 data 分区容量大小,可选的容量如下: // <li> 4Gi </li> // <li> 8Gi </li> // <li> 16Gi </li> // <li> 32Gi </li> // <li> 64Gi </li> // <li> 128Gi </li> // <li> 256Gi </li> // // note: // <li> 当 ResourceType 参数取值为 100 时,该 DataSize 参数用户可根据支持的可选容量设置。 </li> // <li> 当 ResourceType 参数取值为 200 时,DataSize 为默认固定值,无需指定。与套餐的对应关系为: </li> // <li> ultimate: 74Gi </li> // <li> enhanced:37Gi </li> // <li> common:24Gi </li> // <li> sample:18Gi </li> // <li> basic:14Gi </li> // <li> elementary:12Gi </li> // <li> 容量大小和单位不可自定义。 </li> // <li> 建议您在调用时,结合实际业务情况,按需填写存储大小。 </li> DataSize: StringPtr(`4Gi`), // 机房 ID。 Dc: `gdsz-ctcucm-01-5fxxxxxx`, // 屏幕布局,全局屏幕配置;可通过调用 [ListDisplayLayoutMini](https://www.volcengine.com/docs/6394/1221495) 接口获取;可选的系统屏幕布局 ID 包括: // <li> single-display-landscape </li> // <li> single-display-portrait </li> // <li> single-display-portrait-720p </li> // // note: // 如未指定屏幕布局 ID,当运行资源套餐 ConfigurationCode 为 // 入门型 sample ,云手机实例将会使用 720P 和 30fps 的默认配置。 DisplayLayoutID: StringPtr(`single-display-landscape`), // 自定义标签。支持中英文、数字、点号、下划线或中划线,以大小写字母或者中文开头。 TagID: StringPtr(`tag_01`), // 实例上行带宽上限,单位为 Mbps;如设置为 0,则不限速。 UpBandwidthLimit: Int32Ptr(0), // 实例下行带宽上限,单位为 Mbps;如设置为 0,则不限速。 DownBandwidthLimit: Int32Ptr(0), // 云机 ID。可通过 [ListHost](https://www.volcengine.com/docs/6394/1221480) 接口获取。 // note: // 当 ResourceType 参数取值为 200 本地存储时,该参数才有效。 HostID: StringPtr(`7337159054625xxxxxx`), // 实例资源类型,取值如下: // <li> 100:云盘存储 </li> // <li> 200:本地存储 </li> ResourceType: Int32Ptr(200), IsPreinstall: BoolPtr(false), PropertyRuleName: StringPtr(`HW`), UsePropertyRule: Int32Ptr(1), } // 实例初始化 Settings 属性。 OverlaySettings1 := ACEP.CreatePodOneStepBodyOverlaySettingsItem{ // 属性名称,已可修改的 Settings 属性及属性值,参考 [Settings 属性列表](https://www.volcengine.com/docs/6394/671880#settings-%E5%B1%9E%E6%80%A7%E5%88%97%E8%A1%A8) SettingsName: `locale_language`, // 设置类型,取值如下: // <li> global </li> // <li> secure </li> // <li> system </li> SettingsType: `global`, // 属性值。各类型属性取值示例如下: // <li> bool: "true"、"false" </li> // <li> intlong: "21312" </li> // <li> float: "2131.09" </li> // <li> string: "safehg" </li> SettingsValue: `on`, // 属性值数据类型,取值如下: // <li> int </li> // <li> long </li> // <li> string </li> // <li> float </li> // <li> bool </li> SettingsValueType: `string`, } body.OverlaySettings = append(body.OverlaySettings, &OverlaySettings1) // 实例初始化系统属性,非持久化,立即生效,重启实例后失效。 OverlayProperty1 := ACEP.CreatePodOneStepBodyOverlayPropertyItem{ // 属性名称,已可修改的系统属性及属性值,参考 [System Properties 属性列表](https://www.volcengine.com/docs/6394/671880#system-properties-%E5%B1%9E%E6%80%A7%E5%88%97%E8%A1%A8)。 SystemPropertyName: `ro.product.name`, // 属性值。取值如下: // <li> bool: "true"、"false" </li> // <li> intlong: "21312" </li> // <li> float: "2131.09" </li> // <li> string: "safehg" </li> // note: // 当 SystemPropertyValueType 参数取值不同,该 SystemPropertyValue 参数对应的取值不同。 SystemPropertyValue: `samsung`, // 属性值数据类型。取值如下: // <li> int </li> // <li> long </li> // <li> string </li> // <li> float </li> // <li> bool </li> SystemPropertyValueType: `string`, } body.OverlayProperty = append(body.OverlayProperty, &OverlayProperty1) // 实例初始化系统属性,持久化,重启实例后生效。 // note: // 适用于只读系统属性,或 AOSP 原生非持久化的系统属性的修改,如 ro.product.model OverlayPersistProperty1 := ACEP.CreatePodOneStepBodyOverlayPersistPropertyItem{ // 属性名称,已可修改的系统属性及属性值,参考 [System Properties 属性列表](https://www.volcengine.com/docs/6394/671880#system-properties-%E5%B1%9E%E6%80%A7%E5%88%97%E8%A1%A8)。 SystemPropertyName: `ro.product.name`, // 属性值。取值如下: // <li> bool: "true"、"false" </li> // <li> intlong: "21312" </li> // <li> float: "2131.09" </li> // <li> string: "safehg" </li> // note: // 当 SystemPropertyValueType 参数取值不同,该 SystemPropertyValue 参数对应的取值不同。 SystemPropertyValue: `samsung`, // 属性值数据类型。取值如下: // <li> int </li> // <li> long </li> // <li> string </li> // <li> float </li> // <li> bool </li> SystemPropertyValueType: `string`, } body.OverlayPersistProperty = append(body.OverlayPersistProperty, &OverlayPersistProperty1) // 创建实例后,需要安装的应用列表。 AppList1 := ACEP.CreatePodOneStepBodyAppListItem{ // 应用 ID,可通过调用 [ListApp](https://www.volcengine.com/docs/6394/1226894) 接口获取。 AppID: `7278660795155xxxxxx`, // 应用版本 ID,可通过调用 [ListApp](https://www.volcengine.com/docs/6394/1226894) 接口获取。 VersionID: `7278660795155xxxxxx`, } body.AppList = append(body.AppList, AppList1) resp, err := service.CreatePodOneStep(context.Background(), body) if err != nil { fmt.Printf("error %v", err) } else { fmt.Printf("success %+v", resp) } }
您可以调用 UpdatePod 接口更新实例 UpdatePod。详细的参数说明可参见 UpdatePod 接口文档。
接口调用示例如下所示。
package main import ( "context" "fmt" "os" "github.com/volcengine/volc-sdk-golang/base" ACEP "github.com/volcengine/volc-sdk-golang/service/acep" ) func StringPtr(v string) *string { return &v } func StringPtrs(vals []string) []*string { ptrs := make([]*string, len(vals)) for i := 0; i < len(vals); i++ { ptrs[i] = &vals[i] } return ptrs } func BoolPtr(v bool) *bool { return &v } func Int32Ptr(v int32) *int32 { return &v } func main() { // 强烈建议不要把 VOLC_ACCESSKEY 和 VOLC_SECRETKEY 保存到工程代码里,否则可能导致 AccessKey 泄露,威胁您账号下所有资源的安全。 // 本示例通过从环境变量中读取 VOLC_ACCESSKEY 和 VOLC_SECRETKEY,来实现 API 访问的身份验证。运行代码示例前,请配置环境变量 VOLC_ACCESSKEY 和 VOLC_SECRETKEY service := ACEP.NewInstance() service.SetCredential(base.Credentials{ AccessKeyID: os.Getenv("VOLC_ACCESSKEY"), SecretAccessKey: os.Getenv("VOLC_SECRETKEY"), }) body := &ACEP.UpdatePodBody{ // 实例所归属的业务 ID。 ProductID: `1591495366954xxxxxx`, // 实例 ID,指定该参数时,仅更新单个实例的属性信息。 // note: // 与 PodIdList、TagId 、Dc 参数,必须填一个。 PodID: StringPtr(`7294107154305xxxxxx`), // 自定义实例名称,如不指定,则默认为实例 ID。 PodName: StringPtr(`测试更新实例`), // 自定义镜像 ID。 // warning // <li> 更新会引起实例重启。 </li> // <li> 仅支持从低版本镜像升级为高版本镜像。 </li> ImageID: StringPtr(`img-7616xxxx`), // 创建实例的用户存储分区大小,即 data 分区容量大小。可选的容量如下: // <li> 4Gi </li> // <li> 8Gi </li> // <li> 16Gi </li> // <li> 32Gi </li> // <li> 64Gi </li> // <li> 128Gi </li> // <li> 256Gi </li> // note: // <li> 当 ResourceType 参数取值为 100 时,该 DataSize 参数用户可根据支持的可选容量设置。 </li> // <li> 当 ResourceType 参数取值为 200 时,DataSize 为默认固定值,无需指定。与套餐的对应关系为: </li> // <li> ultimate: 74Gi </li> // <li> enhanced:37Gi </li> // <li> common:24Gi </li> // <li> sample:18Gi </li> // <li> basic:14Gi </li> // <li> elementary:12Gi </li> // <li> 容量大小和单位不可自定义。 </li> // <li> 建议您在调用时,结合实际业务情况,按需填写存储大小。 </li> DataSize: StringPtr(`8Gi`), // 云手机实例规格 ID,取值如下: // <li> ultimate:旗舰型 </li> // <li> enhanced:加强型 </li> // <li> common:通用型 </li> // <li> sample:入门型 </li> // <li> basic:基础型 </li> // <li> elementary:低配型 </li> // <li> ultimatePlus:旗舰型Plus </li> // <li> enhancedPlus:加强型Plus </li> // <li> commonPlus:通用型Plus </li> // <li> samplePlus:入门型Plus </li> // <li> basicPlus:基础型Plus </li> // <li> elementaryPlus:低配型Plus </li> // 本地存储方案除上述 12 种规格外,还包含以下 6 个取值: // <li> ultimatePro:旗舰型Pro </li> // <li> enhancedPro:加强型Pro </li> // <li> commonPro:通用型Pro </li> // <li> samplePro:入门型Pro </li> // <li> basicPro:基础型Pro </li> // <li> elementaryPro:低配型Pro </li> // warning // 需要在关机状态下执行,实例重启后更新生效。 ConfigurationCode: StringPtr(`enhanced`), // 屏幕布局,全局屏幕配置;可通过调用 [ListDisplayLayoutMini](https://www.volcengine.com/docs/6394/1221495) 接口获取;可选的系统屏幕布局 ID 包括: // <li> single-display-landscape </li> // <li> single-display-portrait </li> // <li> single-display-portrait-720p </li> // warning // <li> 需要在关机状态下执行,实例重启后更新生效。 </li> // <li> 如未指定屏幕布局 ID,当运行资源套餐 ConfigurationCode 为 </li> // 入门型 sample ,云手机实例将会使用 720P 和 30fps 的默认配置。 DisplayLayoutID: StringPtr(`single-display-landscape`), // 实例标签 ID,指定该参数时,批量更新已添加该分组标签的所有实例的属性信息,批量操作的最大实例数量为 100。 TagID: StringPtr(`tag_01`), // 实例机房,指定该参数时,批量更新属于该机房的所有实例的属性信息,批量操作的最大实例数量为 100。 Dc: StringPtr(`gdsz-ctcucm-01-5fxxxxxx`), // 是否可在开机状态下强制更新实例镜像,取值如下: // <li> true:可强制执行更新(会触发实例重启) </li> // <li> false:(默认)不可强制执行更新 </li> Force: BoolPtr(true), // 实例上行带宽上限,单位为 Mbps;如设置为 0,则不限速。 UpBandwidthLimit: Int32Ptr(2), // 实例下行带宽上限,单位为 Mbps;如设置为 0,则不限速。 DownBandwidthLimit: Int32Ptr(8), } // 实例 ID 列表,若需对**多个**实例批量执行更新操作,请使用该参数。支持批量操作的实例数上限为 200。 // > 对单个实例执行更新操作,请使用PodId 参数。 PodIDList := []string{"[7294107154305xxxxxx]"} body.PodIDList = StringPtrs(PodIDList) resp, err := service.UpdatePod(context.Background(), body) if err != nil { fmt.Printf("error %v", err) } else { fmt.Printf("success %+v", resp) } }
您可以调用 ResetPod 接口实例重置 ResetPod。详细的参数说明可参见 ResetPod 接口文档。
接口调用示例如下所示。
package main import ( "context" "fmt" "os" "github.com/volcengine/volc-sdk-golang/base" ACEP "github.com/volcengine/volc-sdk-golang/service/acep" ) func Int32Ptr(v int32) *int32 { return &v } func StringPtr(v string) *string { return &v } func main() { // 强烈建议不要把 VOLC_ACCESSKEY 和 VOLC_SECRETKEY 保存到工程代码里,否则可能导致 AccessKey 泄露,威胁您账号下所有资源的安全。 // 本示例通过从环境变量中读取 VOLC_ACCESSKEY 和 VOLC_SECRETKEY,来实现 API 访问的身份验证。运行代码示例前,请配置环境变量 VOLC_ACCESSKEY 和 VOLC_SECRETKEY service := ACEP.NewInstance() service.SetCredential(base.Credentials{ AccessKeyID: os.Getenv("VOLC_ACCESSKEY"), SecretAccessKey: os.Getenv("VOLC_SECRETKEY"), }) body := &ACEP.ResetPodBody{ ProductID: `1591495366954xxxxxx`, // 实例重置操作方式。取值如下: // <li> 0:全部重置,清除实例属性; </li> // <li> 1:保留实例属性。 </li> ResetType: Int32Ptr(1), // 重置后 data 分区容量大小,可选的容量如下: // <li> 4Gi </li> // <li> 8Gi </li> // <li> 12Gi </li> // <li> 16Gi </li> // <li> 22Gi </li> // <li> 32Gi </li> // <li> 45Gi </li> // <li> 64Gi </li> // <li> 128Gi </li> // <li> 256Gi </li> // // note: // <li> 如不指定,则默认保持和重置前大小一致。 </li> // <li> 当 ResourceType 参数取值为 100 云盘存储时,该参数才有效。 </li> DataSize: StringPtr(`12Gi`), // 系统目录分区保留策略。 // 执行 remount 操作将应用或文件存储至 /system、/vendor 或 /odm 系统目录后,可使用该参数指定重置实例时对系统目录的处理: // <li> 0:(默认值)实例重置时,清除该实例中全部应用和数据; </li> // <li> 1:实例重置时,保留系统目录内的应用和数据,清除系统目录外的全部应用和数据; </li> // <li> 2:实例重置时,保留系统目录外的应用和数据,清除系统目录内的全部应用和数据。 </li> // > 注意: // > 1. remount 功能默认关闭,请联系技术支持开启。 // > 2. 该参数需配合 2024 年 5 月 16 日及之后发布的公共镜像版本使用。 SystemDirPersistedType: Int32Ptr(1), // 预安装应用保留策略: // <li> 0:默认设置,清除预安装应用及相关数据; </li> // <li> 1:保留预安装应用,仅清理相关数据。 </li> PreInstallAppPersistedType: Int32Ptr(1), } // 实例 ID 列表。对多个实例批量执行重置操作,支持的最大实例数量为 100。 PodIDList := []string{"7294157141458xxxxxx"} body.PodIDList = PodIDList resp, err := service.ResetPod(context.Background(), body) if err != nil { fmt.Printf("error %v", err) } else { fmt.Printf("success %+v", resp) } }
您可以调用 ListPod 接口查询实例列表 ListPod。详细的参数说明可参见 ListPod 接口文档。
接口调用示例如下所示。
package main import ( "context" "fmt" "os" "github.com/volcengine/volc-sdk-golang/base" ACEP "github.com/volcengine/volc-sdk-golang/service/acep" ) func StringPtr(v string) *string { return &v } func Int32Ptr(v int32) *int32 { return &v } func Int64Ptr(v int64) *int64 { return &v } func main() { // 强烈建议不要把 VOLC_ACCESSKEY 和 VOLC_SECRETKEY 保存到工程代码里,否则可能导致 AccessKey 泄露,威胁您账号下所有资源的安全。 // 本示例通过从环境变量中读取 VOLC_ACCESSKEY 和 VOLC_SECRETKEY,来实现 API 访问的身份验证。运行代码示例前,请配置环境变量 VOLC_ACCESSKEY 和 VOLC_SECRETKEY service := ACEP.NewInstance() service.SetCredential(base.Credentials{ AccessKeyID: os.Getenv("VOLC_ACCESSKEY"), SecretAccessKey: os.Getenv("VOLC_SECRETKEY"), }) query := &ACEP.ListPodQuery{ // 实例所属业务 ID。可在**云手机控制台 > 业务管理 > 业务详情**中获取。 ProductID: `163571455047xxxx`, // 筛选条件,实例 ID。 PodID: StringPtr(`163571455047xxxx`), // 云手机实例规格 ID 列表。可选项为: // <li> ultimate:旗舰型 </li> // <li> enhanced:加强型 </li> // <li> common:通用型 </li> // <li> sample:入门型 </li> // <li> basic:基础型 </li> // <li> elementary:低配型 </li> // <li> ultimatePlus:旗舰型Plus </li> // <li> enhancedPlus:加强型Plus </li> // <li> commonPlus:通用型Plus </li> // <li> samplePlus:入门型Plus </li> // <li> basicPlus:基础型Plus </li> // <li> elementaryPlus:低配型Plus </li> // 本地存储方案除上述 12 种规格外,还包含以下 6 个取值: // <li> ultimatePro:旗舰型Pro </li> // <li> enhancedPro:加强型Pro </li> // <li> commonPro:通用型Pro </li> // <li> samplePro:入门型Pro </li> // <li> basicPro:基础型Pro </li> // <li> elementaryPro:低配型Pro </li> ConfigurationCodeList: StringPtr(`ultimate`), // 筛选条件,区域 ID 列表。多个 ID 以英文逗号分隔。可选项为: // <li> cn-north:华北 </li> // <li> cn-south:华南 </li> // <li> cn-east:华东 </li> // <li> cn-middle:华中 </li> // <li> cn-southwest:西南 </li> RegionList: StringPtr(`cn-north`), // 筛选条件,集群 ID 列表,多个机房 ID 列表以英文逗号 , 分隔。可通过调用 [ListDc](https://www.volcengine.com/docs/6394/1221465) 接口获取。 DcList: StringPtr(`gdsz-xxxxx,gdsz-xxxxxx`), // 筛选条件,标签 ID 列表,多个 ID 以英文逗号分隔。可通过调用 [ListTag](https://www.volcengine.com/docs/6394/1221497) 接口获取。 TagIDList: StringPtr(`01,02`), // 筛选条件,实例运行状态列表。多个状态值以英文逗号 , 分隔。可选项为: // <li> 0:开机中 </li> // <li> 1:开机完成 </li> // <li> 2:关机完成 </li> // <li> 3:关机中 </li> // <li> 4:重启中 </li> OnlineList: StringPtr(`1`), // 筛选条件,实例推流状态列表。多个状态值以英文逗号 , 分隔。可选项为: // <li> 0:空闲 </li> // <li> 1:推流中 </li> // <li> 2:就绪 </li> StreamStatusList: StringPtr(`1`), // 筛选条件,实例 ID 列表。多个 ID 以英文逗号 , 分隔。 PodIDList: StringPtr(`7330243741xxx,733024374xxxx`), // 筛选条件,运维授权状态: // <li> 1:未授权 </li> // <li> 2:已授权 </li> AuthorityStatus: Int32Ptr(1), // 云机规格。包含以下取值: // <li> g2.8c12g:8vCPU|12G内存|128G存储 </li> // <li> g2.8c16g.basic:8vCPU|16G内存|128G存储 </li> // <li> g2.8c16g.plus:8vCPU|16G内存|256G存储 </li> ServerTypeCode: StringPtr(`g2.8c12g`), // 分页偏移量。默认值为 0。 Offset: Int64Ptr(0), // 分页大小,默认值为 10,最大值为 100。 Count: Int64Ptr(10), } resp, err := service.ListPod(context.Background(), query) if err != nil { fmt.Printf("error %v", err) } else { fmt.Printf("success %+v", resp) } }
您可以调用 DetailPod 接口查询实例详情 DetailPod。详细的参数说明可参见 DetailPod 接口文档。
接口调用示例如下所示。
package main import ( "context" "fmt" "os" "github.com/volcengine/volc-sdk-golang/base" ACEP "github.com/volcengine/volc-sdk-golang/service/acep" ) func main() { // 强烈建议不要把 VOLC_ACCESSKEY 和 VOLC_SECRETKEY 保存到工程代码里,否则可能导致 AccessKey 泄露,威胁您账号下所有资源的安全。 // 本示例通过从环境变量中读取 VOLC_ACCESSKEY 和 VOLC_SECRETKEY,来实现 API 访问的身份验证。运行代码示例前,请配置环境变量 VOLC_ACCESSKEY 和 VOLC_SECRETKEY service := ACEP.NewInstance() service.SetCredential(base.Credentials{ AccessKeyID: os.Getenv("VOLC_ACCESSKEY"), SecretAccessKey: os.Getenv("VOLC_SECRETKEY"), }) query := &ACEP.DetailPodQuery{ // 实例所归属的业务 ID,可在**云手机控制台 > 业务管理 > 业务详情**中获取。 ProductID: `163571455047xxxx`, // 实例 ID,可通过调用 [ListPod](https://www.volcengine.com/docs/6394/1221468) 接口获取。 PodID: `163571455047xxxx`, } resp, err := service.DetailPod(context.Background(), query) if err != nil { fmt.Printf("error %v", err) } else { fmt.Printf("success %+v", resp) } }
您可以调用 GetPodAppList 接口获取实例应用列表 GetPodAppList。详细的参数说明可参见 GetPodAppList 接口文档。
接口调用示例如下所示。
package main import ( "context" "fmt" "os" "github.com/volcengine/volc-sdk-golang/base" ACEP "github.com/volcengine/volc-sdk-golang/service/acep" ) func Int32Ptr(v int32) *int32 { return &v } func main() { // 强烈建议不要把 VOLC_ACCESSKEY 和 VOLC_SECRETKEY 保存到工程代码里,否则可能导致 AccessKey 泄露,威胁您账号下所有资源的安全。 // 本示例通过从环境变量中读取 VOLC_ACCESSKEY 和 VOLC_SECRETKEY,来实现 API 访问的身份验证。运行代码示例前,请配置环境变量 VOLC_ACCESSKEY 和 VOLC_SECRETKEY service := ACEP.NewInstance() service.SetCredential(base.Credentials{ AccessKeyID: os.Getenv("VOLC_ACCESSKEY"), SecretAccessKey: os.Getenv("VOLC_SECRETKEY"), }) query := &ACEP.GetPodAppListQuery{ // 实例所属业务 ID,可在**云手机控制台 > 业务管理 > 业务详情**中获取。 ProductID: `1591495366954xxxxxx`, // 实例 ID,可通过调用 [ListPod](https://www.volcengine.com/docs/6394/1221468) 接口获取。 PodID: `7235890322201xxxxxx`, // 筛选条件,应用安装状态,可选项: // <li> 513:正在安装 </li> // <li> 516:正在下载 </li> // <li> 528:安装完成 </li> // <li> 1024:安装失败 </li> // <li> 1280:卸载中 </li> // <li> 1281:已卸载 </li> InstallStatus: Int32Ptr(528), } resp, err := service.GetPodAppList(context.Background(), query) if err != nil { fmt.Printf("error %v", err) } else { fmt.Printf("success %+v", resp) } }
您可以调用 GetPodMetric 接口查询实例资源状态 GetPodMetric。详细的参数说明可参见 GetPodMetric 接口文档。
接口调用示例如下所示。
package main import ( "context" "fmt" "os" "github.com/volcengine/volc-sdk-golang/base" ACEP "github.com/volcengine/volc-sdk-golang/service/acep" ) func main() { // 强烈建议不要把 VOLC_ACCESSKEY 和 VOLC_SECRETKEY 保存到工程代码里,否则可能导致 AccessKey 泄露,威胁您账号下所有资源的安全。 // 本示例通过从环境变量中读取 VOLC_ACCESSKEY 和 VOLC_SECRETKEY,来实现 API 访问的身份验证。运行代码示例前,请配置环境变量 VOLC_ACCESSKEY 和 VOLC_SECRETKEY service := ACEP.NewInstance() service.SetCredential(base.Credentials{ AccessKeyID: os.Getenv("VOLC_ACCESSKEY"), SecretAccessKey: os.Getenv("VOLC_SECRETKEY"), }) query := &ACEP.GetPodMetricQuery{ // 实例所属业务 ID。可在「云手机控制台-业务管理-业务详情」中获取。 ProductID: `1591495366954xxxxxx`, // 实例 ID。可通过调用 [ListPod](https://www.volcengine.com/docs/6394/75749) 接口获取。 PodID: `7235890322201xxxxxx`, } resp, err := service.GetPodMetric(context.Background(), query) if err != nil { fmt.Printf("error %v", err) } else { fmt.Printf("success %+v", resp) } }
您可以调用 PowerOffPod 接口实例关机 PowerOffPod。详细的参数说明可参见 PowerOffPod 接口文档。
接口调用示例如下所示。
package main import ( "context" "fmt" "os" "github.com/volcengine/volc-sdk-golang/base" ACEP "github.com/volcengine/volc-sdk-golang/service/acep" ) func StringPtr(v string) *string { return &v } func StringPtrs(vals []string) []*string { ptrs := make([]*string, len(vals)) for i := 0; i < len(vals); i++ { ptrs[i] = &vals[i] } return ptrs } func main() { // 强烈建议不要把 VOLC_ACCESSKEY 和 VOLC_SECRETKEY 保存到工程代码里,否则可能导致 AccessKey 泄露,威胁您账号下所有资源的安全。 // 本示例通过从环境变量中读取 VOLC_ACCESSKEY 和 VOLC_SECRETKEY,来实现 API 访问的身份验证。运行代码示例前,请配置环境变量 VOLC_ACCESSKEY 和 VOLC_SECRETKEY service := ACEP.NewInstance() service.SetCredential(base.Credentials{ AccessKeyID: os.Getenv("VOLC_ACCESSKEY"), SecretAccessKey: os.Getenv("VOLC_SECRETKEY"), }) body := &ACEP.PowerOffPodBody{ // 实例所归属的业务 ID。 ProductID: `1591495366954xxxxxx`, // 实例 ID,若仅需对**单个**实例执行关机操作,请使用该参数。 // > 批量操作实例关机,请使用 PodIdList 参数。 PodID: StringPtr(`7294107154305xxxxxx`), } // 实例 ID 列表,若需对**多个**实例批量执行关机操作,请使用该参数。支持批量操作的实例数上限为 200。 // > 对单个实例执行关机操作,请使用PodId 参数。 PodIDList := []string{"7294157141458xxxxxx", "7294107154305xxxxxxx"} body.PodIDList = StringPtrs(PodIDList) resp, err := service.PowerOffPod(context.Background(), body) if err != nil { fmt.Printf("error %v", err) } else { fmt.Printf("success %+v", resp) } }
您可以调用 PowerOnPod 接口实例开机 PowerOnPod。详细的参数说明可参见 PowerOnPod 接口文档。
接口调用示例如下所示。
package main import ( "context" "fmt" "os" "github.com/volcengine/volc-sdk-golang/base" ACEP "github.com/volcengine/volc-sdk-golang/service/acep" ) func StringPtr(v string) *string { return &v } func StringPtrs(vals []string) []*string { ptrs := make([]*string, len(vals)) for i := 0; i < len(vals); i++ { ptrs[i] = &vals[i] } return ptrs } func main() { // 强烈建议不要把 VOLC_ACCESSKEY 和 VOLC_SECRETKEY 保存到工程代码里,否则可能导致 AccessKey 泄露,威胁您账号下所有资源的安全。 // 本示例通过从环境变量中读取 VOLC_ACCESSKEY 和 VOLC_SECRETKEY,来实现 API 访问的身份验证。运行代码示例前,请配置环境变量 VOLC_ACCESSKEY 和 VOLC_SECRETKEY service := ACEP.NewInstance() service.SetCredential(base.Credentials{ AccessKeyID: os.Getenv("VOLC_ACCESSKEY"), SecretAccessKey: os.Getenv("VOLC_SECRETKEY"), }) body := &ACEP.PowerOnPodBody{ // 实例所归属的业务 ID。 ProductID: `1591495366954xxxxxx`, // 实例 ID,若仅需对**单个**实例执行开机操作,请使用该参数。 // > 批量操作实例开机,请使用 PodIdList 参数。 PodID: StringPtr(`7294107154305xxxxxx`), } // 实例 ID 列表,若需对**多个**实例批量执行开机操作,请使用该参数。支持批量操作的实例数上限为 200。 // > 对单个实例执行开机操作,请使用PodId 参数。 PodIDList := []string{"7294157141458xxxxxx", "7294107154305xxxxxxx"} body.PodIDList = StringPtrs(PodIDList) resp, err := service.PowerOnPod(context.Background(), body) if err != nil { fmt.Printf("error %v", err) } else { fmt.Printf("success %+v", resp) } }
您可以调用 PodMute 接口暂停/恢复实例推流 PodMute。详细的参数说明可参见 PodMute 接口文档。
接口调用示例如下所示。
package main import ( "context" "fmt" "os" "github.com/volcengine/volc-sdk-golang/base" ACEP "github.com/volcengine/volc-sdk-golang/service/acep" ) func StringPtrs(vals []string) []*string { ptrs := make([]*string, len(vals)) for i := 0; i < len(vals); i++ { ptrs[i] = &vals[i] } return ptrs } func main() { // 强烈建议不要把 VOLC_ACCESSKEY 和 VOLC_SECRETKEY 保存到工程代码里,否则可能导致 AccessKey 泄露,威胁您账号下所有资源的安全。 // 本示例通过从环境变量中读取 VOLC_ACCESSKEY 和 VOLC_SECRETKEY,来实现 API 访问的身份验证。运行代码示例前,请配置环境变量 VOLC_ACCESSKEY 和 VOLC_SECRETKEY service := ACEP.NewInstance() service.SetCredential(base.Credentials{ AccessKeyID: os.Getenv("VOLC_ACCESSKEY"), SecretAccessKey: os.Getenv("VOLC_SECRETKEY"), }) body := &ACEP.PodMuteBody{ // 实例所归属的业务 ID,可在「云手机控制台-业务管理-业务详情」中获取。 ProductID: `1591495366954xxxxxx`, // 实例 ID,可通过调用 ListPod 接口获取。 PodID: `7294107154305xxxxxx`, // 暂停/恢复推流。 // <li> true:暂停推流。 </li> // <li> false:恢复推流。 </li> Mute: true, } // 屏幕 ID 列表。若将该参数置空则对表示所有屏幕进行暂停或恢复推流。 DisplayList := []string{"single-display-landscape", "single-display-portrait"} body.DisplayList = StringPtrs(DisplayList) resp, err := service.PodMute(context.Background(), body) if err != nil { fmt.Printf("error %v", err) } else { fmt.Printf("success %+v", resp) } }
您可以调用 RebootPod 接口重启实例 RebootPod。详细的参数说明可参见 RebootPod 接口文档。
接口调用示例如下所示。
package main import ( "context" "fmt" "os" "github.com/volcengine/volc-sdk-golang/base" ACEP "github.com/volcengine/volc-sdk-golang/service/acep" ) func StringPtr(v string) *string { return &v } func StringPtrs(vals []string) []*string { ptrs := make([]*string, len(vals)) for i := 0; i < len(vals); i++ { ptrs[i] = &vals[i] } return ptrs } func main() { // 强烈建议不要把 VOLC_ACCESSKEY 和 VOLC_SECRETKEY 保存到工程代码里,否则可能导致 AccessKey 泄露,威胁您账号下所有资源的安全。 // 本示例通过从环境变量中读取 VOLC_ACCESSKEY 和 VOLC_SECRETKEY,来实现 API 访问的身份验证。运行代码示例前,请配置环境变量 VOLC_ACCESSKEY 和 VOLC_SECRETKEY service := ACEP.NewInstance() service.SetCredential(base.Credentials{ AccessKeyID: os.Getenv("VOLC_ACCESSKEY"), SecretAccessKey: os.Getenv("VOLC_SECRETKEY"), }) body := &ACEP.RebootPodBody{ // 实例所归属的业务 ID,可在「云手机控制台-业务管理-业务详情」中获取。 ProductID: `1591495366954xxxxxx`, // 实例 ID,可通过调用 ListPod 接口获取。指定该参数时,仅对单个实例执行重启操作。 // > 与 PodIdList 二选一。 PodID: StringPtr(`7294107154305xxxxxx`), // 重启实例时设置的 IP 资源策略: // <li> Persist:保持亲和性调度策略。 </li> // <li> NonPersist:进行非亲和性调度策略。 </li> ResourcePolicy: StringPtr(`Persist`), } // 实例 ID 列表,指定该参数时,对多个实例批量执行重启操作。支持批量操作的实例数上限为100。 // > 与 PodId 二选一。 PodIDList := []string{"7294107154305xxxxxx", "7328242892885xxxxxx"} body.PodIDList = StringPtrs(PodIDList) resp, err := service.RebootPod(context.Background(), body) if err != nil { fmt.Printf("error %v", err) } else { fmt.Printf("success %+v", resp) } }
您可以调用 PodAdb 接口打开/关闭实例 ADB PodAdb。详细的参数说明可参见 PodAdb 接口文档。
接口调用示例如下所示。
package main import ( "context" "fmt" "os" "github.com/volcengine/volc-sdk-golang/base" ACEP "github.com/volcengine/volc-sdk-golang/service/acep" ) func main() { // 强烈建议不要把 VOLC_ACCESSKEY 和 VOLC_SECRETKEY 保存到工程代码里,否则可能导致 AccessKey 泄露,威胁您账号下所有资源的安全。 // 本示例通过从环境变量中读取 VOLC_ACCESSKEY 和 VOLC_SECRETKEY,来实现 API 访问的身份验证。运行代码示例前,请配置环境变量 VOLC_ACCESSKEY 和 VOLC_SECRETKEY service := ACEP.NewInstance() service.SetCredential(base.Credentials{ AccessKeyID: os.Getenv("VOLC_ACCESSKEY"), SecretAccessKey: os.Getenv("VOLC_SECRETKEY"), }) body := &ACEP.PodAdbBody{ // 实例所归属的业务 ID,可在「云手机控制台-业务管理-业务详情」中获取。 ProductID: `1591495366954xxxxxx`, // 实例 ID,可通过调用 ListPod 接口获取。 PodID: `7294107154305xxxxxx`, // 开启或关闭实例的 ADB 连接功能: // <li> true: 打开 ADB。 </li> // <li> false: 关闭 ADB。 </li> Enable: true, } resp, err := service.PodAdb(context.Background(), body) if err != nil { fmt.Printf("error %v", err) } else { fmt.Printf("success %+v", resp) } }
您可以调用 PodStop 接口停止实例推流 PodStop。详细的参数说明可参见 PodStop 接口文档。
接口调用示例如下所示。
package main import ( "context" "fmt" "os" "github.com/volcengine/volc-sdk-golang/base" ACEP "github.com/volcengine/volc-sdk-golang/service/acep" ) func main() { // 强烈建议不要把 VOLC_ACCESSKEY 和 VOLC_SECRETKEY 保存到工程代码里,否则可能导致 AccessKey 泄露,威胁您账号下所有资源的安全。 // 本示例通过从环境变量中读取 VOLC_ACCESSKEY 和 VOLC_SECRETKEY,来实现 API 访问的身份验证。运行代码示例前,请配置环境变量 VOLC_ACCESSKEY 和 VOLC_SECRETKEY service := ACEP.NewInstance() service.SetCredential(base.Credentials{ AccessKeyID: os.Getenv("VOLC_ACCESSKEY"), SecretAccessKey: os.Getenv("VOLC_SECRETKEY"), }) body := &ACEP.PodStopBody{ // 实例所归属的业务 ID,可在「云手机控制台-业务管理-业务详情」中获取。 ProductID: `1591495366954xxxxxx`, // 实例 ID,可通过调用 ListPod 接口获取。 PodID: `7294107154305xxxxxx`, } resp, err := service.PodStop(context.Background(), body) if err != nil { fmt.Printf("error %v", err) } else { fmt.Printf("success %+v", resp) } }
您可以调用 PodDataDelete 接口清理用户数据 PodDataDelete。详细的参数说明可参见 PodDataDelete 接口文档。
接口调用示例如下所示。
package main import ( "context" "fmt" "os" "github.com/volcengine/volc-sdk-golang/base" ACEP "github.com/volcengine/volc-sdk-golang/service/acep" ) func StringPtrs(vals []string) []*string { ptrs := make([]*string, len(vals)) for i := 0; i < len(vals); i++ { ptrs[i] = &vals[i] } return ptrs } func main() { // 强烈建议不要把 VOLC_ACCESSKEY 和 VOLC_SECRETKEY 保存到工程代码里,否则可能导致 AccessKey 泄露,威胁您账号下所有资源的安全。 // 本示例通过从环境变量中读取 VOLC_ACCESSKEY 和 VOLC_SECRETKEY,来实现 API 访问的身份验证。运行代码示例前,请配置环境变量 VOLC_ACCESSKEY 和 VOLC_SECRETKEY service := ACEP.NewInstance() service.SetCredential(base.Credentials{ AccessKeyID: os.Getenv("VOLC_ACCESSKEY"), SecretAccessKey: os.Getenv("VOLC_SECRETKEY"), }) body := &ACEP.PodDataDeleteBody{ // 实例所归属的业务 ID,可在「云手机控制台-业务管理-业务详情」中获取。 ProductID: `1591495366954xxxxxx`, // 实例 ID,可通过调用 ListPod 接口获取。 PodID: `7294157141458xxxxxx`, } // 待清理数据的路径列表;仅支持清理 /sdcard 和 /data 目录下的数据,避免误删除。 FilePathList := []string{"/sdcard"} body.FilePathList = FilePathList // 按应用包名,清理已安装第三方应用的数据(系统应用不支持)。 PackageList := []string{"Package1", "Package2"} body.PackageList = StringPtrs(PackageList) resp, err := service.PodDataDelete(context.Background(), body) if err != nil { fmt.Printf("error %v", err) } else { fmt.Printf("success %+v", resp) } }
您可以调用 DeletePod 接口删除实例 DeletePod。详细的参数说明可参见 DeletePod 接口文档。
接口调用示例如下所示。
package main import ( "context" "fmt" "os" "github.com/volcengine/volc-sdk-golang/base" ACEP "github.com/volcengine/volc-sdk-golang/service/acep" ) func StringPtr(v string) *string { return &v } func StringPtrs(vals []string) []*string { ptrs := make([]*string, len(vals)) for i := 0; i < len(vals); i++ { ptrs[i] = &vals[i] } return ptrs } func BoolPtr(v bool) *bool { return &v } func main() { // 强烈建议不要把 VOLC_ACCESSKEY 和 VOLC_SECRETKEY 保存到工程代码里,否则可能导致 AccessKey 泄露,威胁您账号下所有资源的安全。 // 本示例通过从环境变量中读取 VOLC_ACCESSKEY 和 VOLC_SECRETKEY,来实现 API 访问的身份验证。运行代码示例前,请配置环境变量 VOLC_ACCESSKEY 和 VOLC_SECRETKEY service := ACEP.NewInstance() service.SetCredential(base.Credentials{ AccessKeyID: os.Getenv("VOLC_ACCESSKEY"), SecretAccessKey: os.Getenv("VOLC_SECRETKEY"), }) body := &ACEP.DeletePodBody{ // 实例所归属的业务 ID,可在「云手机控制台-业务管理-业务详情」中获取。 ProductID: `1591495366954xxxxxx`, // 实例 ID,可通过调用 ListPod 接口获取。指定该参数时,仅销毁单个实例。 // > 与 PodIdList 二选一。 PodID: StringPtr(`7294107154305xxxxxx`), // 是否强制销毁实例: // <li> true:支持开机状态下销毁实例。 </li> // <li> false:默认,不强制销毁实例,如不填写,在开机状态调用本接口销毁实例时会失败。 </li> ForceDestroyFlag: BoolPtr(true), } // 实例 ID 列表,指定该参数时,批量销毁多个实例。支持批量操作的实例数上限为100。 // > 与 pod_id 二选一。 PodIDList := []string{"PodId1", "PodId2"} body.PodIDList = StringPtrs(PodIDList) resp, err := service.DeletePod(context.Background(), body) if err != nil { fmt.Printf("error %v", err) } else { fmt.Printf("success %+v", resp) } }
您可以调用 DistributeFile 接口分发文件至实例 DistributeFile。详细的参数说明可参见 DistributeFile 接口文档。
接口调用示例如下所示。
package main import ( "context" "fmt" "os" "github.com/volcengine/volc-sdk-golang/base" ACEP "github.com/volcengine/volc-sdk-golang/service/acep" ) func Int32Ptr(v int32) *int32 { return &v } func main() { // 强烈建议不要把 VOLC_ACCESSKEY 和 VOLC_SECRETKEY 保存到工程代码里,否则可能导致 AccessKey 泄露,威胁您账号下所有资源的安全。 // 本示例通过从环境变量中读取 VOLC_ACCESSKEY 和 VOLC_SECRETKEY,来实现 API 访问的身份验证。运行代码示例前,请配置环境变量 VOLC_ACCESSKEY 和 VOLC_SECRETKEY service := ACEP.NewInstance() service.SetCredential(base.Credentials{ AccessKeyID: os.Getenv("VOLC_ACCESSKEY"), SecretAccessKey: os.Getenv("VOLC_SECRETKEY"), }) body := &ACEP.DistributeFileBody{ // 实例所归属的业务 ID,可在「云手机控制台-业务管理-业务详情」中获取。 ProductID: `1696164119863xxxxxx`, // 需要保存在实例内的文件名称。 FileName: `test.apk`, // 文件 md5 值。 FileMD5: `854ef5c91ea6dc5c4705133330xxxxxx`, // 文件下载链接。 DownloadURL: `https://xxx.tos-cn-beijing.volces.com/test.apk`, // 目标存储路径。 TargetDirectory: `/sdcard/data/files`, // 分发 .zip/.tar 文件后,是否自动解压缩文件: // <li> 0:(默认设置)不自动解压文件; </li> // <li> 1:自动解压文件。 </li> AutoUnzip: Int32Ptr(0), } // 实例 ID 列表,指定该参数时,对多个实例批量执行文件分发操作。支持批量操作的实例数上限为 100。 PodIDList := []string{"7366133767813xxxxxx", "7366133767813xxxxxx", "7359192141879xxxxxx"} body.PodIDList = PodIDList resp, err := service.DistributeFile(context.Background(), body) if err != nil { fmt.Printf("error %v", err) } else { fmt.Printf("success %+v", resp) } }
您可以调用 SetProxy 接口设置代理服务 SetProxy。详细的参数说明可参见 SetProxy 接口文档。
接口调用示例如下所示。
package main import ( "context" "fmt" "os" "github.com/volcengine/volc-sdk-golang/base" ACEP "github.com/volcengine/volc-sdk-golang/service/acep" ) func StringPtr(v string) *string { return &v } func main() { // 强烈建议不要把 VOLC_ACCESSKEY 和 VOLC_SECRETKEY 保存到工程代码里,否则可能导致 AccessKey 泄露,威胁您账号下所有资源的安全。 // 本示例通过从环境变量中读取 VOLC_ACCESSKEY 和 VOLC_SECRETKEY,来实现 API 访问的身份验证。运行代码示例前,请配置环境变量 VOLC_ACCESSKEY 和 VOLC_SECRETKEY service := ACEP.NewInstance() service.SetCredential(base.Credentials{ AccessKeyID: os.Getenv("VOLC_ACCESSKEY"), SecretAccessKey: os.Getenv("VOLC_SECRETKEY"), }) body := &ACEP.SetProxyBody{ ProductID: `1749281594201xxxxxx`, // 是否开启代理: // <li> 1:开启; </li> // <li> 0:关闭。 </li> ProxyStatus: 1, } // 需要设置代理的实例 ID 列表,可通过调用 ListPod 接口获取。列表长度上限为 100。 PodIDList := []string{"7337159054625xxxxxx", "7337159054626xxxxxx"} body.PodIDList = PodIDList // 代理配置键值对。具体参看 [ProxyConfig 字段说明](#proxyconfig-字段说明)。 ProxyConfig := map[string]*string{ `key`: StringPtr(`value`), } body.ProxyConfig = ProxyConfig resp, err := service.SetProxy(context.Background(), body) if err != nil { fmt.Printf("error %v", err) } else { fmt.Printf("success %+v", resp) } }