前提条件
1.已注册 华为云,并完成实名认证 。
2.获取华为云开发工具包(SDK),您也可以查看安装Python SDK。
3.已获取华为云账号对应的Access Key(AK)和Secret Access Key(SK)。请在华为云控制台“我的凭证 > 访问密钥”页面上创建和查看您的AK/SK。具体请参见访问密钥 。
4.已获取华为云账号对应的Endpoint和Project Id。Endpoint是华为云各服务应用区域和各服务的终端节点,详情请查看地区和终端节点 ;Project ID是云服务所在项目ID,根据你想操作的项目所属区域选择对应的项目ID。
5.已具备开发环境,支持Python3及其以上版本。
代码示例
Copied!
from huaweicloudsdkcore.auth.credentials import BasicCredentials
from huaweicloudsdkcore.exceptions.exceptions import ConnectionException
from huaweicloudsdkcore.exceptions.exceptions import RequestTimeoutException
from huaweicloudsdkcore.exceptions.exceptions import ServiceResponseException
from huaweicloudsdkcore.http.http_config import HttpConfig
from huaweicloudsdkcph.v1.cph_client import CphClient
from huaweicloudsdkcph.v1.model.batch_export_cloud_phone_data_request import BatchExportCloudPhoneDataRequest
from huaweicloudsdkcph.v1.model.batch_export_cloud_phone_data_request_body import BatchExportCloudPhoneDataRequestBody
from huaweicloudsdkcph.v1.model.batch_export_cloud_phone_data_request_body_storage_infos import BatchExportCloudPhoneDataRequestBodyStorageInfos
from huaweicloudsdkcph.v1.model.batch_import_cloud_phone_data_request import BatchImportCloudPhoneDataRequest
from huaweicloudsdkcph.v1.model.batch_import_cloud_phone_data_request_body import BatchImportCloudPhoneDataRequestBody
from huaweicloudsdkcph.v1.model.batch_import_cloud_phone_data_request_body_restore_infos import BatchImportCloudPhoneDataRequestBodyRestoreInfos
from huaweicloudsdkcph.v1.model.reset_cloud_phone_request import ResetCloudPhoneRequest
from huaweicloudsdkcph.v1.model.reset_restart_request_body import ResetRestartRequestBody
from huaweicloudsdkcph.v1.model.reset_restart_request_body_phones import ResetRestartRequestBodyPhones
from huaweicloudsdkcph.v1.model.restart_cloud_phone_request import RestartCloudPhoneRequest
from huaweicloudsdkcph.v1.model.update_phone_name_request import UpdatePhoneNameRequest
from huaweicloudsdkcph.v1.model.update_phone_name_request_body import UpdatePhoneNameRequestBody
import os
class CloudPhoneManagement:
def __init__(self):
pass
@staticmethod
def main(args):
ak = os.environ["HUAWEICLOUD_SDK_AK"]
sk = os.environ["HUAWEICLOUD_SDK_SK"]
endpoint = "{endpoint}"
project_id = "{project id}"
auth = BasicCredentials(
ak=ak,
sk=sk,
project_id=project_id
)
config = HttpConfig.get_default_config()
config.ignore_ssl_verification = True
config.proxy_protocol = "http"
client = CphClient.new_builder() \
.with_credentials(credentials=auth) \
.with_endpoint(endpoint=endpoint) \
.with_http_config(config=config) \
.build()
CloudPhoneManagement.__update_phone_name(client)
CloudPhoneManagement.__reset_cloud_phone(client)
CloudPhoneManagement.__restart_cloud_phone(client)
CloudPhoneManagement.__batch_export_cloud_phone_data(client)
CloudPhoneManagement.__batch_import_cloud_phone_data(client)
@staticmethod
def __update_phone_name(client):
request = UpdatePhoneNameRequest()
request.phone_id = "{phone_id}"
body = UpdatePhoneNameRequestBody()
body.phone_name = "{phone_name}"
request.body = body
try:
response = client.update_phone_name(request)
print(response)
except ConnectionException as e:
print(e.err_message)
except RequestTimeoutException as e:
print(e.err_message)
except ServiceResponseException as e:
print(e.status_code)
print(e.error_code)
print(e.error_msg)
@staticmethod
def __reset_cloud_phone(client):
request = ResetCloudPhoneRequest()
body = ResetRestartRequestBody()
phones = []
phones.append(
ResetRestartRequestBodyPhones(
phone_id="{phone_id}",
property="{property}"
)
)
body.phones = phones
body.image_id = "{image_id}"
request.body = body
try:
response = client.re_cloud_phone = request
print(response)
except ConnectionException as e:
print(e.err_message)
except RequestTimeoutException as e:
print(e.err_message)
except ServiceResponseException as e:
print(e.status_code)
print(e.error_code)
print(e.error_msg)
@staticmethod
def __restart_cloud_phone(client):
request = RestartCloudPhoneRequest()
body = ResetRestartRequestBody()
phones = []
phones.append(
ResetRestartRequestBodyPhones(
phone_id="{phone_id}",
property="{property}"
)
)
body.phones = phones
body.image_id = "{image_id}"
request.body = body
try:
response = client.restart_cloud_phone(request)
print(response)
except ConnectionException as e:
print(e.err_message)
except RequestTimeoutException as e:
print(e.err_message)
except ServiceResponseException as e:
print(e.status_code)
print(e.error_code)
print(e.error_msg)
@staticmethod
def __batch_export_cloud_phone_data(client):
request = BatchExportCloudPhoneDataRequest()
body = BatchExportCloudPhoneDataRequestBody()
list_storage_infos_exclude_files = []
list_storage_infos_exclude_files.append("{exclude_files}")
list_storage_infos_include_files = []
list_storage_infos_include_files.append("{include_files}")
storage_infos = []
storage_infos.append(
BatchExportCloudPhoneDataRequestBodyStorageInfos(
phone_id="{phone_id}",
include_files=list_storage_infos_include_files,
exclude_files=list_storage_infos_exclude_files,
bucket_name="{bucket_name}",
object_path="{object_path}"
)
)
body.storage_infos = storage_infos
request.body = body
try:
response = client.batch_export_cloud_phone_data(request)
print(response)
except ConnectionException as e:
print(e.err_message)
except RequestTimeoutException as e:
print(e.err_message)
except ServiceResponseException as e:
print(e.status_code)
print(e.error_code)
print(e.error_msg)
@staticmethod
def __batch_import_cloud_phone_data(client):
request = BatchImportCloudPhoneDataRequest()
body = BatchImportCloudPhoneDataRequestBody()
restore_infos = []
restore_infos.append(
BatchImportCloudPhoneDataRequestBodyRestoreInfos(
phone_id="{phone_id}",
bucket_name="{bucket_name}",
object_path="{object_path}"
)
)
body.restore_infos = restore_infos
request.body = body
try:
response = client.batch_import_cloud_phone_data(request)
print(response)
except ConnectionException as e:
print(e.err_message)
except RequestTimeoutException as e:
print(e.err_message)
except ServiceResponseException as e:
print(e.status_code)
print(e.error_code)
print(e.error_msg)
if __name__ == "__main__":
CloudPhoneManagement().main(any)
您可以在API Explorer中直接运行调试该接口。
场景介绍
基于华为云Python SDK,管理云手机实例。
具体操作包含:更新云手机名称;重置云手机;重启云手机;导出云手机数据;恢复云手机数据等
前提条件
1.已注册 华为云,并完成实名认证 。
2.获取华为云开发工具包(SDK),您也可以查看安装Python SDK。
3.已获取华为云账号对应的Access Key(AK)和Secret Access Key(SK)。请在华为云控制台“我的凭证 > 访问密钥”页面上创建和查看您的AK/SK。具体请参见访问密钥 。
4.已获取华为云账号对应的Endpoint和Project Id。Endpoint是华为云各服务应用区域和各服务的终端节点,详情请查看地区和终端节点 ;Project ID是云服务所在项目ID,根据你想操作的项目所属区域选择对应的项目ID。
5.已具备开发环境,支持Python3及其以上版本。
版本说明
您可以通过加入相应的依赖项获取和安装SDK。
代码示例
from huaweicloudsdkcore.auth.credentials import BasicCredentials from huaweicloudsdkcore.exceptions.exceptions import ConnectionException from huaweicloudsdkcore.exceptions.exceptions import RequestTimeoutException from huaweicloudsdkcore.exceptions.exceptions import ServiceResponseException from huaweicloudsdkcore.http.http_config import HttpConfig from huaweicloudsdkcph.v1.cph_client import CphClient from huaweicloudsdkcph.v1.model.batch_export_cloud_phone_data_request import BatchExportCloudPhoneDataRequest from huaweicloudsdkcph.v1.model.batch_export_cloud_phone_data_request_body import BatchExportCloudPhoneDataRequestBody from huaweicloudsdkcph.v1.model.batch_export_cloud_phone_data_request_body_storage_infos import BatchExportCloudPhoneDataRequestBodyStorageInfos from huaweicloudsdkcph.v1.model.batch_import_cloud_phone_data_request import BatchImportCloudPhoneDataRequest from huaweicloudsdkcph.v1.model.batch_import_cloud_phone_data_request_body import BatchImportCloudPhoneDataRequestBody from huaweicloudsdkcph.v1.model.batch_import_cloud_phone_data_request_body_restore_infos import BatchImportCloudPhoneDataRequestBodyRestoreInfos from huaweicloudsdkcph.v1.model.reset_cloud_phone_request import ResetCloudPhoneRequest from huaweicloudsdkcph.v1.model.reset_restart_request_body import ResetRestartRequestBody from huaweicloudsdkcph.v1.model.reset_restart_request_body_phones import ResetRestartRequestBodyPhones from huaweicloudsdkcph.v1.model.restart_cloud_phone_request import RestartCloudPhoneRequest from huaweicloudsdkcph.v1.model.update_phone_name_request import UpdatePhoneNameRequest from huaweicloudsdkcph.v1.model.update_phone_name_request_body import UpdatePhoneNameRequestBody import os class CloudPhoneManagement: def __init__(self): pass @staticmethod def main(args): # 认证用的ak和sk直接写到代码中有很大的安全风险,建议在配置文件或者环境变量中密文存放,使用时解密,确保安全; # 本示例以ak和sk保存在环境变量中来实现身份验证为例,运行本示例前请先在本地环境中设置环境变量HUAWEICLOUD_SDK_AK和HUAWEICLOUD_SDK_SK。 ak = os.environ["HUAWEICLOUD_SDK_AK"] sk = os.environ["HUAWEICLOUD_SDK_SK"] endpoint = "{endpoint}" project_id = "{project id}" auth = BasicCredentials( ak=ak, sk=sk, project_id=project_id ) config = HttpConfig.get_default_config() config.ignore_ssl_verification = True config.proxy_protocol = "http" client = CphClient.new_builder() \ .with_credentials(credentials=auth) \ .with_endpoint(endpoint=endpoint) \ .with_http_config(config=config) \ .build() # 修改云手机名称 CloudPhoneManagement.__update_phone_name(client) # 重置云手机 CloudPhoneManagement.__reset_cloud_phone(client) # 重启云手机 CloudPhoneManagement.__restart_cloud_phone(client) # 批量导出云手机数据 CloudPhoneManagement.__batch_export_cloud_phone_data(client) # 批量恢复数据到云手机 CloudPhoneManagement.__batch_import_cloud_phone_data(client) @staticmethod def __update_phone_name(client): request = UpdatePhoneNameRequest() request.phone_id = "{phone_id}" body = UpdatePhoneNameRequestBody() body.phone_name = "{phone_name}" request.body = body try: response = client.update_phone_name(request) print(response) except ConnectionException as e: print(e.err_message) except RequestTimeoutException as e: print(e.err_message) except ServiceResponseException as e: print(e.status_code) print(e.error_code) print(e.error_msg) @staticmethod def __reset_cloud_phone(client): request = ResetCloudPhoneRequest() body = ResetRestartRequestBody() phones = [] phones.append( ResetRestartRequestBodyPhones( phone_id="{phone_id}", property="{property}" ) ) body.phones = phones body.image_id = "{image_id}" request.body = body try: response = client.re_cloud_phone = request print(response) except ConnectionException as e: print(e.err_message) except RequestTimeoutException as e: print(e.err_message) except ServiceResponseException as e: print(e.status_code) print(e.error_code) print(e.error_msg) @staticmethod def __restart_cloud_phone(client): request = RestartCloudPhoneRequest() body = ResetRestartRequestBody() phones = [] phones.append( ResetRestartRequestBodyPhones( phone_id="{phone_id}", property="{property}" ) ) body.phones = phones body.image_id = "{image_id}" request.body = body try: response = client.restart_cloud_phone(request) print(response) except ConnectionException as e: print(e.err_message) except RequestTimeoutException as e: print(e.err_message) except ServiceResponseException as e: print(e.status_code) print(e.error_code) print(e.error_msg) @staticmethod def __batch_export_cloud_phone_data(client): request = BatchExportCloudPhoneDataRequest() body = BatchExportCloudPhoneDataRequestBody() list_storage_infos_exclude_files = [] list_storage_infos_exclude_files.append("{exclude_files}") list_storage_infos_include_files = [] list_storage_infos_include_files.append("{include_files}") storage_infos = [] storage_infos.append( BatchExportCloudPhoneDataRequestBodyStorageInfos( phone_id="{phone_id}", include_files=list_storage_infos_include_files, exclude_files=list_storage_infos_exclude_files, bucket_name="{bucket_name}", object_path="{object_path}" ) ) body.storage_infos = storage_infos request.body = body try: response = client.batch_export_cloud_phone_data(request) print(response) except ConnectionException as e: print(e.err_message) except RequestTimeoutException as e: print(e.err_message) except ServiceResponseException as e: print(e.status_code) print(e.error_code) print(e.error_msg) @staticmethod def __batch_import_cloud_phone_data(client): request = BatchImportCloudPhoneDataRequest() body = BatchImportCloudPhoneDataRequestBody() restore_infos = [] restore_infos.append( BatchImportCloudPhoneDataRequestBodyRestoreInfos( phone_id="{phone_id}", bucket_name="{bucket_name}", object_path="{object_path}" ) ) body.restore_infos = restore_infos request.body = body try: response = client.batch_import_cloud_phone_data(request) print(response) except ConnectionException as e: print(e.err_message) except RequestTimeoutException as e: print(e.err_message) except ServiceResponseException as e: print(e.status_code) print(e.error_code) print(e.error_msg) if __name__ == "__main__": CloudPhoneManagement().main(any)
您可以在API Explorer中直接运行调试该接口。
修订记录