前提条件
1.已注册 华为云,并完成实名认证 。
2.获取华为云开发工具包(SDK),您也可以查看安装Go SDK。
3.已获取华为云账号对应的Access Key(AK)和Secret Access Key(SK)。请在华为云控制台“我的凭证 > 访问密钥”页面上创建和查看您的AK/SK。具体请参见访问密钥 。
4.已获取华为云账号对应的Endpoint和Project Id。Endpoint是华为云各服务应用区域和各服务的终端节点,详情请查看地区和终端节点 ;Project ID是云服务所在项目ID,根据你想操作的项目所属区域选择对应的项目ID。
5.已具备开发环境,支持Go 1.16及其以上版本。
代码示例
Copied!
package main
import (
coreConfig "github.com/huaweicloud/huaweicloud-sdk-go-v3/core/config"
"fmt"
"os"
coreBasic "github.com/huaweicloud/huaweicloud-sdk-go-v3/core/auth/basic"
cph "github.com/huaweicloud/huaweicloud-sdk-go-v3/services/cph/v1"
cphModel "github.com/huaweicloud/huaweicloud-sdk-go-v3/services/cph/v1/model"
)
type CloudPhoneManagement struct{}
func NewCloudPhoneManagementDefault() CloudPhoneManagement {
c := CloudPhoneManagement{}
return c
}
func main() {
ak := os.Getenv("HUAWEICLOUD_SDK_AK")
sk := os.Getenv("HUAWEICLOUD_SDK_SK")
endpoint := "{endpoint}"
projectId := "{project id}"
auth := coreBasic.NewCredentialsBuilder().WithAk(ak).WithSk(sk).WithProjectId(projectId).Build()
config := coreConfig.DefaultHttpConfig()
config.WithIgnoreSSLVerification(true)
client := *cph.NewCphClient(cph.CphClientBuilder().
WithCredential(auth).
WithEndpoint(endpoint).
WithHttpConfig(config).
Build())
cloudPhoneManagementUpdatePhoneName(client)
cloudPhoneManagementResetCloudPhone(client)
cloudPhoneManagementRestartCloudPhone(client)
cloudPhoneManagementBatchExportCloudPhoneData(client)
cloudPhoneManagementBatchImportCloudPhoneData(client)
}
func cloudPhoneManagementUpdatePhoneName(client cph.CphClient) {
request := cphModel.UpdatePhoneNameRequest{}
request.PhoneId = "{phone_id}"
body := cphModel.UpdatePhoneNameRequestBody{}
body.PhoneName = "{phone_name}"
request.Body = &body
response, err := client.UpdatePhoneName(&request)
if err != nil {
fmt.Println(err)
return
}
fmt.Println(response.String())
}
func cloudPhoneManagementResetCloudPhone(client cph.CphClient) {
request := cphModel.ResetCloudPhoneRequest{}
body := cphModel.ResetRestartRequestBody{}
phones := make([]cphModel.ResetRestartRequestBodyPhones, 0)
resetRestartRequestBodyPhonesPropertyParam := "{property}"
phones = append(phones,
cphModel.ResetRestartRequestBodyPhones{
PhoneId: "{phone_id}",
Property: &resetRestartRequestBodyPhonesPropertyParam,
},
)
body.Phones = phones
resetRestartRequestBodyImageIdParam := "{image_id}"
body.ImageId = &resetRestartRequestBodyImageIdParam
request.Body = &body
response, err := client.ResetCloudPhone(&request)
if err != nil {
fmt.Println(err)
return
}
fmt.Println(response.String())
}
func cloudPhoneManagementRestartCloudPhone(client cph.CphClient) {
request := cphModel.RestartCloudPhoneRequest{}
body := cphModel.ResetRestartRequestBody{}
phones := make([]cphModel.ResetRestartRequestBodyPhones, 0)
resetRestartRequestBodyPhonesPropertyParam1 := "{property}"
phones = append(phones,
cphModel.ResetRestartRequestBodyPhones{
PhoneId: "{phone_id}",
Property: &resetRestartRequestBodyPhonesPropertyParam1,
},
)
body.Phones = phones
resetRestartRequestBodyImageIdParam1 := "{image_id}"
body.ImageId = &resetRestartRequestBodyImageIdParam1
request.Body = &body
response, err := client.RestartCloudPhone(&request)
if err != nil {
fmt.Println(err)
return
}
fmt.Println(response.String())
}
func cloudPhoneManagementBatchExportCloudPhoneData(client cph.CphClient) {
request := cphModel.BatchExportCloudPhoneDataRequest{}
body := cphModel.BatchExportCloudPhoneDataRequestBody{}
listStorageInfosExcludeFiles := make([]string, 0)
listStorageInfosExcludeFiles = append(listStorageInfosExcludeFiles, "{exclude_files}")
listStorageInfosIncludeFiles := make([]string, 0)
listStorageInfosIncludeFiles = append(listStorageInfosIncludeFiles, "{include_files}")
storageInfos := make([]cphModel.BatchExportCloudPhoneDataRequestBodyStorageInfos, 0)
storageInfos = append(storageInfos,
cphModel.BatchExportCloudPhoneDataRequestBodyStorageInfos{
PhoneId: "{phone_id}",
IncludeFiles: listStorageInfosIncludeFiles,
ExcludeFiles: &listStorageInfosExcludeFiles,
BucketName: "{bucket_name}",
ObjectPath: "{object_path}",
},
)
body.StorageInfos = storageInfos
request.Body = &body
response, err := client.BatchExportCloudPhoneData(&request)
if err != nil {
fmt.Println(err)
return
}
fmt.Println(response.String())
}
func cloudPhoneManagementBatchImportCloudPhoneData(client cph.CphClient) {
request := cphModel.BatchImportCloudPhoneDataRequest{}
body := cphModel.BatchImportCloudPhoneDataRequestBody{}
restoreInfos := make([]cphModel.BatchImportCloudPhoneDataRequestBodyRestoreInfos, 0)
restoreInfos = append(restoreInfos,
cphModel.BatchImportCloudPhoneDataRequestBodyRestoreInfos{
PhoneId: "{phone_id}",
BucketName: "{bucket_name}",
ObjectPath: "{object_path}",
},
)
body.RestoreInfos = restoreInfos
request.Body = &body
response, err := client.BatchImportCloudPhoneData(&request)
if err != nil {
fmt.Println(err)
return
}
fmt.Println(response.String())
}
您可以在API Explorer中直接运行调试该接口。
场景介绍
基于华为云Go SDK,管理云手机实例。
具体操作包含:更新云手机名称;重置云手机;重启云手机;导出云手机数据;恢复云手机数据等
前提条件
1.已注册 华为云,并完成实名认证 。
2.获取华为云开发工具包(SDK),您也可以查看安装Go SDK。
3.已获取华为云账号对应的Access Key(AK)和Secret Access Key(SK)。请在华为云控制台“我的凭证 > 访问密钥”页面上创建和查看您的AK/SK。具体请参见访问密钥 。
4.已获取华为云账号对应的Endpoint和Project Id。Endpoint是华为云各服务应用区域和各服务的终端节点,详情请查看地区和终端节点 ;Project ID是云服务所在项目ID,根据你想操作的项目所属区域选择对应的项目ID。
5.已具备开发环境,支持Go 1.16及其以上版本。
版本说明
您可以通过加入相应的依赖项获取和安装SDK。
代码示例
package main import ( coreConfig "github.com/huaweicloud/huaweicloud-sdk-go-v3/core/config" "fmt" "os" coreBasic "github.com/huaweicloud/huaweicloud-sdk-go-v3/core/auth/basic" cph "github.com/huaweicloud/huaweicloud-sdk-go-v3/services/cph/v1" cphModel "github.com/huaweicloud/huaweicloud-sdk-go-v3/services/cph/v1/model" ) type CloudPhoneManagement struct{} func NewCloudPhoneManagementDefault() CloudPhoneManagement { c := CloudPhoneManagement{} return c } func main() { // 认证用的ak和sk硬编码到代码中或者明文存储都有很大的安全风险,建议在配置文件或者环境变量中密文存放,使用时解密,确保安全; // 本示例以ak和sk保存在环境变量中来实现身份验证为例,运行本示例前请先在本地环境中设置环境变量HUAWEICLOUD_SDK_AK和HUAWEICLOUD_SDK_SK。 ak := os.Getenv("HUAWEICLOUD_SDK_AK") sk := os.Getenv("HUAWEICLOUD_SDK_SK") endpoint := "{endpoint}" projectId := "{project id}" auth := coreBasic.NewCredentialsBuilder().WithAk(ak).WithSk(sk).WithProjectId(projectId).Build() config := coreConfig.DefaultHttpConfig() config.WithIgnoreSSLVerification(true) client := *cph.NewCphClient(cph.CphClientBuilder(). WithCredential(auth). WithEndpoint(endpoint). WithHttpConfig(config). Build()) // 修改云手机名称 cloudPhoneManagementUpdatePhoneName(client) // 重置云手机 cloudPhoneManagementResetCloudPhone(client) // 重启云手机 cloudPhoneManagementRestartCloudPhone(client) // 批量导出云手机数据 cloudPhoneManagementBatchExportCloudPhoneData(client) // 批量恢复数据到云手机 cloudPhoneManagementBatchImportCloudPhoneData(client) } func cloudPhoneManagementUpdatePhoneName(client cph.CphClient) { request := cphModel.UpdatePhoneNameRequest{} request.PhoneId = "{phone_id}" body := cphModel.UpdatePhoneNameRequestBody{} body.PhoneName = "{phone_name}" request.Body = &body response, err := client.UpdatePhoneName(&request) if err != nil { fmt.Println(err) return } fmt.Println(response.String()) } func cloudPhoneManagementResetCloudPhone(client cph.CphClient) { request := cphModel.ResetCloudPhoneRequest{} body := cphModel.ResetRestartRequestBody{} phones := make([]cphModel.ResetRestartRequestBodyPhones, 0) resetRestartRequestBodyPhonesPropertyParam := "{property}" phones = append(phones, cphModel.ResetRestartRequestBodyPhones{ PhoneId: "{phone_id}", Property: &resetRestartRequestBodyPhonesPropertyParam, }, ) body.Phones = phones resetRestartRequestBodyImageIdParam := "{image_id}" body.ImageId = &resetRestartRequestBodyImageIdParam request.Body = &body response, err := client.ResetCloudPhone(&request) if err != nil { fmt.Println(err) return } fmt.Println(response.String()) } func cloudPhoneManagementRestartCloudPhone(client cph.CphClient) { request := cphModel.RestartCloudPhoneRequest{} body := cphModel.ResetRestartRequestBody{} phones := make([]cphModel.ResetRestartRequestBodyPhones, 0) resetRestartRequestBodyPhonesPropertyParam1 := "{property}" phones = append(phones, cphModel.ResetRestartRequestBodyPhones{ PhoneId: "{phone_id}", Property: &resetRestartRequestBodyPhonesPropertyParam1, }, ) body.Phones = phones resetRestartRequestBodyImageIdParam1 := "{image_id}" body.ImageId = &resetRestartRequestBodyImageIdParam1 request.Body = &body response, err := client.RestartCloudPhone(&request) if err != nil { fmt.Println(err) return } fmt.Println(response.String()) } func cloudPhoneManagementBatchExportCloudPhoneData(client cph.CphClient) { request := cphModel.BatchExportCloudPhoneDataRequest{} body := cphModel.BatchExportCloudPhoneDataRequestBody{} listStorageInfosExcludeFiles := make([]string, 0) listStorageInfosExcludeFiles = append(listStorageInfosExcludeFiles, "{exclude_files}") listStorageInfosIncludeFiles := make([]string, 0) listStorageInfosIncludeFiles = append(listStorageInfosIncludeFiles, "{include_files}") storageInfos := make([]cphModel.BatchExportCloudPhoneDataRequestBodyStorageInfos, 0) storageInfos = append(storageInfos, cphModel.BatchExportCloudPhoneDataRequestBodyStorageInfos{ PhoneId: "{phone_id}", IncludeFiles: listStorageInfosIncludeFiles, ExcludeFiles: &listStorageInfosExcludeFiles, BucketName: "{bucket_name}", ObjectPath: "{object_path}", }, ) body.StorageInfos = storageInfos request.Body = &body response, err := client.BatchExportCloudPhoneData(&request) if err != nil { fmt.Println(err) return } fmt.Println(response.String()) } func cloudPhoneManagementBatchImportCloudPhoneData(client cph.CphClient) { request := cphModel.BatchImportCloudPhoneDataRequest{} body := cphModel.BatchImportCloudPhoneDataRequestBody{} restoreInfos := make([]cphModel.BatchImportCloudPhoneDataRequestBodyRestoreInfos, 0) restoreInfos = append(restoreInfos, cphModel.BatchImportCloudPhoneDataRequestBodyRestoreInfos{ PhoneId: "{phone_id}", BucketName: "{bucket_name}", ObjectPath: "{object_path}", }, ) body.RestoreInfos = restoreInfos request.Body = &body response, err := client.BatchImportCloudPhoneData(&request) if err != nil { fmt.Println(err) return } fmt.Println(response.String()) }
您可以在API Explorer中直接运行调试该接口。
修订记录