华为云用户手册

  • 命令下发失败如何处理? 问题描述 调用命令下发接口报错或调用接口成功但设备未收到命令。 可能原因 设备协议不支持。 设备订阅的下行topic不正确或者设备上行topic及消息体不正确。 解决方法 确认使用的接口是否支持设备协议(同步命令下发当前仅支持MQTT协议设备)。 同步命令下发操作步骤: 确认设备订阅下行topic是否正确(需订阅成功后才可调用接口,不订阅,设备收不到平台消息),详细请参考平台命令下发接口文档。 若设备有收到平台下发的消息,确认设备上行topic及消息体是否正确,且必须在收到平台消息20s内(消息接口不限定20s),通过上行topic向平台发送,否则接口报错(request_id为下行消息中携带)。 异步命令下发操作步骤: 确认是立即下发还是缓存下发(根据入参的send_strategy判断)。 立即下发:设备在线,调用接口后设备立即收到。 缓存下发:调用接口后,设备上报数据后收到。
  • 物联网平台 的命令状态总共有几种? LWM2M/CoAP设备命令下发状态 物联网平台命令下发包含如下状态: 超期:表示命令在物联网平台缓存时间超期,未向设备下发。 成功:表示物联网平台已经将命令下发给设备,且收到设备上报的命令执行结果。 失败:表示编解码插件解析为空,或执行结果响应里面有“ERROR CODE”等。 超时:表示物联网平台等待ACK响应超时。 取消:表示应用侧已经取消命令下发。 等待:表示命令在物联网平台缓存,还未下发给设备。 已发送:表示物联网平台已经将命令下发给设备。 已送达:表示物联网平台已经将命令下发给设备,且收到设备返回的ACK消息。 各命令状态之间的转换如下图所示: 图6 命令状态转换图 MQTT设备下发消息状态 等待:MQTT设备不在线,物联网平台会将消息进行缓存,此时任务状态为“等待”状态。 超时:物联网平台缓存的PENDING状态的消息,如果1天之内还没有下发下去,物联网平台会将消息状态设置为"超时”。 已送达:物联网平台将消息发送给设备后,状态变为“已送达”。 失败:物联网平台发送消息给设备不成功,消息状态变为“失败”。 各消息状态之间的转换如下图所示: 图7 消息状态转换图
  • 物联网平台下发异步命令有重发机制吗? 物联网平台具备异步命令重发机制。异步命令发送后(可以在设备接入的命令详情中查看命令发送时间):如果物联网平台未收到设备返回的ACK,则在10s~15s后会进行第一次重传。如果物联网平台仍未收到设备返回的ACK,在20s~30s后进行第二次重传。如果物联网平台依旧未收到设备返回的ACK,在40s~60s进行第三次重传。如果物联网平台在80s~180s后还没收到设备返回的ACK,则命令状态变为超时。
  • 连接IoT平台的业务场景有哪些? 连接IoT平台的业务有四个场景: 设备 + IoT平台 + 应用 该场景为最通用的场景,设备将数据上报到IoT平台,IoT平台对设备进行管理,同时针对不同的事件类型,会将数据推送到用户应用,同时应用可以将命令下发到IoT平台,平台可以缓存/实时下发命令给设备。 图1 设备 + IoT平台 + 应用 设备 + IoT平台 + 华为云其他云服务 该场景为数据流转场景,设备将数据上报到IoT平台后,IoT平台对设备进行管理,通过自定义数据转发规则,将设备数据转发到华为云其他云服务,进行跨服务的业务处理。 图2 设备 + IoT平台 + 第三方云服务 设备 + IoT平台 + 第三方云服务 + 应用 该场景为前两个场景的结合,设备将数据上报到IoT平台后,IoT平台对设备进行管理,用户可以通过应用获取数据/下发命令等,同时也可以通过自定义规则将数据流转到第三方云服务进行处理。 图3 设备 + IoT平台 + 第三方云服务 + 应用 设备 + IoT平台 该场景比较简单,设备将数据上报到IoT平台后,通过控制台查看设备数据及监控设备状态,用户无需对设备数据进行二次处理。 图4 设备 + IoT平台 父主题: 方案咨询
  • 订阅后消息推送失败如何处理? 问题描述 订阅后,应用服务器未正确接收到推送消息,或参考“连通性测试”,在设备接入管理控制台中使用连通性测试功能测试“第三方应用服务(HTTP推送)”,结果为推送失败。 图2 转发目标-连通性测试结果 可能原因 如果订阅地址是HTTPS地址,可能是服务端的证书制作有问题或者服务端证书对应的CA证书未上传至物联网平台 订阅地址对应的服务端口未开放。 若订阅地址为 域名 ,并且域名绑定多个IP,可能是DNS解析问题。 解决方法 如果订阅地址是HTTPS地址,商用时,推荐向证书机构申请证书,然后参考设备接入平台上传证书进行证书上传。如果是调测时请先确保证书制作过程无误。上传证书时如果打开了“是否检查CNAME ”开关,需要确保应用服务器的域名地址和证书中的CNAME一致;证书中的CNAME可通过证书校验工具查看。 请确认订阅地址对应的服务端口是否开放。可在其他外网机器上使用telnet命令验证下您的IP和端口是否已开放,若未开放,请将其开放或修改订阅的IP和端口。 若订阅地址为域名,并且域名绑定多个IP,请确认DNS解析后的IP地址是否正确且可达。 使用设备接入管理控制台提供的“消息跟踪”功能,触发推送后,查看消息跟踪的数据,确认平台是否触发订阅推送,以及是否推送成功。 请在应用服务器抓包确认是否接收到设备接入平台推送的消息。
  • 设备数据变化通知和批量设备数据变化通知的区别是什么? 设备数据变化通知和批量设备数据变化通知接口都是订阅设备的数据变化,只是封装的数据格式不一样。 例如:一款水表设备有Battery和Connectivity两种服务类型,每次上报数据都会上报这两个服务的数据。 如果订阅deviceDatachanged(设备数据变化通知),则物联网平台分两次将数据推送到应用服务器,第一次推送Battery服务数据,第二次推送Connectivity服务数据。例如: { "notifyType":"deviceDataChanged", "deviceId":"********", "gatewayId":"********", "requestId":null, "service":{ "serviceId":"battery", "serviceType":"battery", "data":{ "batteryLevel":66 }, "eventTime":"20170211T034003Z" }} { "notifyType":"deviceDataChanged", "deviceId":"********", "gatewayId":"********", "requestId":null, "service":{ "serviceId":"Connectivity", "serviceType":"Connectivity", "data":{ "signalStrength":72, "cellId":4022250974, "tac":61374, "mnc":91, "mcc":235 }, "eventTime":"20170211T092317Z" }} 如果订阅deviceDataschanged(批量设备数据变化通知),则物联网平台将两次服务的数据封装在一起发送到应用服务器。 { "notifyType":"deviceDatasChanged", "requestId":null, "deviceId":"********", "gatewayId":"********", "services":[ { "serviceId":"battery", "serviceType":"battery", "data":{ "batteryLevel":66 }, "eventTime":"20170211T034003Z" }, { "serviceId":"Connectivity", "serviceType":"Connectivity", "data":{ "signalStrength":72, "cellId":4022250974, "tac":61374, "mnc":91, "mcc":235 }, "eventTime":"20170211T034003Z" } ]}
  • 为什么设备上报一条数据后应用服务器会收到多条推送? 可能有以下几种情况: 如果订阅的“notifyType”为“deviceDataChanged”,且多条消息推送的内容不同,可能是因为设备上报的数据包含了多个service(即“data”参数内包括多个JSON对象),物联网平台会将其拆成多条消息推送。 如果是接到两条消息,且一条消息的“notifyType”为“deviceDataChanged”,另一条消息的“notifyType”为“deviceDatasChanged”,说明您同时订阅了设备数据变化和设备数据批量变化,这种情况下设备上报数据物联网平台会推送两条消息。 如果是相同的消息反复推送,可能是因为应用服务器没有及时对推送消息返回响应,物联网平台认为推送失败了,启动了重推机制反复推送相同的消息。
  • 调用订阅接口时,回调地址如何获取? 以业务应用订阅设备数据变化通知为例,订阅和推送的流程如下: 图1 订阅推送流程图 应用服务器通过调用物联网平台的订阅接口订阅设备数据变化通知(携带回调地址和通知类型),物联网平台将业务应用的回调地址和订阅的通知类型存储到订阅列表中以便向业务应用推送设备数据变化消息。 设备上报数据给物联网平台。 物联网平台根据订阅时设置的回调地址,将设备数据主动推送给业务应用。 什么是回调地址? 回调地址(callbackUrl)是指业务应用自定义的,供外部访问的restful接口地址。当物联网平台向业务应用推送消息时,实际是调用业务应用的restful接口把数据发给业务应用。 回调地址的请求方式必须为POST。 怎样获取回调地址? 回调地址由通信方式、业务应用的访问地址和restful接口的URL组成,如https://server:port/URL。 通信方式建议使用https协议,保证业务应用与物联网平台的通信安全。使用https协议通信时,物联网平台需要加载证书,制作证书参考证书制作。 由于业务应用所在的网络不同,业务应用的访问地址也不同。 业务应用部署在公网时,业务应用的访问地址就是业务应用的公网IP:端口(或域名:端口)。 业务应用部署在局域网时,需要在业务应用配置网络穿透,生成业务应用的公网访问地址,具体配置自行从网上获取网络穿透工具的配置步骤。 不同通知类型的订阅,回调地址可以相同也可以不同,根据业务需求自定义。
  • 生产消息 在客户端创建一个文件,用于存放生产消息的代码示例。 touch producer.py producer.py表示文件名,您可以自定义文件名。 执行以下命令,编辑文件。 vim producer.py 将以下生产消息的代码示例写入文件中,并保存。 SASL认证方式 from kafka import KafkaProducerimport ssl##连接信息conf = { 'bootstrap_servers': ["ip1:port1","ip2:port2","ip3:port3"], 'topic_name': 'topic_name', 'sasl_username': 'username', 'sasl_password': 'password'}context = ssl.create_default_context()context = ssl.SSLContext(ssl.PROTOCOL_SSLv23)##如果Kafka安全协议设置为“SASL_PLAINTEXT”,请注释以下参数。context.verify_mode = ssl.CERT_REQUIRED##证书文件,SSL证书参考“收集连接信息”章节获取。如果Kafka安全协议设置为“SASL_PLAINTEXT”,请注释以下参数。context.load_verify_locations("phy_ca.crt")print('start producer')producer = KafkaProducer(bootstrap_servers=conf['bootstrap_servers'], sasl_mechanism="PLAIN", ssl_context=context, security_protocol='SASL_SSL', sasl_plain_username=conf['sasl_username'], sasl_plain_password=conf['sasl_password'])data = bytes("hello kafka!", encoding="utf-8")producer.send(conf['topic_name'], data)producer.close()print('end producer') 示例代码中的参数说明如下,请参考收集连接信息获取参数值。 bootstrap_servers:实例连接地址与端口。 topic_name:Topic名称。 sasl_plain_username/sasl_plain_password:首次开启密文接入时设置的用户名与密码,或者创建用户时设置的用户名和密码。为了确保用户名和密码的安全性,建议对用户名和密码进行加密处理,使用时解密。 context.load_verify_locations:证书文件。如果Kafka安全协议设置为“SASL_SSL”,需要设置此参数。使用Python语言连接实例时,需要用CRT格式的证书。 sasl_mechanism:SASL认证机制。在Kafka实例控制台的基本信息页面中获取。如果SC RAM -SHA-512和PLAIN都开启了,根据实际情况选择其中任意一种配置连接。很久前创建的Kafka实例在详情页如果未显示“开启的SASL认证机制”,默认使用PLAIN机制。 security_protocol:Kafka的安全协议。在Kafka实例控制台的基本信息页面中获取。很久前创建的Kafka实例在详情页如果未显示“启用的安全协议”,默认使用SASL_SSL协议。 安全协议设置为“SASL_SSL”时,采用SASL方式进行认证,数据通过SSL证书进行加密传输,安全性更高。此时需要配置连接实例的用户名和密码,以及证书文件。 安全协议设置为“SASL_PLAINTEXT”时,采用SASL方式进行认证,数据通过明文传输,性能更好。此时需要配置连接实例的用户名和密码,无需配置证书文件。 非SASL认证方式 from kafka import KafkaProducerconf = { 'bootstrap_servers': ["ip1:port1","ip2:port2","ip3:port3"], 'topic_name': 'topic-name',}print('start producer')producer = KafkaProducer(bootstrap_servers=conf['bootstrap_servers'])data = bytes("hello kafka!", encoding="utf-8")producer.send(conf['topic_name'], data)producer.close()print('end producer') 示例代码中的参数说明如下,请参考收集连接信息获取参数值。 bootstrap_servers:实例连接地址与端口。 topic_name:Topic名称。 执行以下命令,运行生产消息的代码示例。 # Python 2.x版本python producer.py# Python 3.x版本python3 producer.py 运行成功后,返回如下回显。 [root@ecs-test ~]# python3 producer.py start producerend producer[root@ecs-test ~]#
  • 消费消息 在客户端创建一个文件,用于存放消费消息的代码示例。 touch consumer.py consumer.py表示文件名,您可以自定义文件名。 执行以下命令,编辑文件。 vim consumer.py 将以下消费消息的代码示例写入文件中,并保存。 SASL认证方式 from kafka import KafkaConsumerimport ssl##连接信息conf = { 'bootstrap_servers': ["ip1:port1","ip2:port2","ip3:port3"], 'topic_name': 'topic_name', 'sasl_username': 'username', 'sasl_password': 'password', 'consumer_id': 'consumer_id'}context = ssl.create_default_context()context = ssl.SSLContext(ssl.PROTOCOL_SSLv23)##如果Kafka安全协议设置为“SASL_PLAINTEXT”,请注释以下参数。context.verify_mode = ssl.CERT_REQUIRED##证书文件,SSL证书参考“收集连接信息”章节获取。如果Kafka安全协议设置为“SASL_PLAINTEXT”,请注释以下参数。context.load_verify_locations("phy_ca.crt")print('start consumer')consumer = KafkaConsumer(conf['topic_name'], bootstrap_servers=conf['bootstrap_servers'], group_id=conf['consumer_id'], sasl_mechanism="PLAIN", ssl_context=context, security_protocol='SASL_SSL', sasl_plain_username=conf['sasl_username'], sasl_plain_password=conf['sasl_password'])for message in consumer: print("%s:%d:%d: key=%s value=%s" % (message.topic, message.partition,message.offset, message.key,message.value))print('end consumer') 示例代码中的参数说明如下,请参考收集连接信息获取参数值。 bootstrap_servers:实例连接地址与端口。 topic_name:Topic名称。 sasl_plain_username/sasl_plain_password:首次开启密文接入时设置的用户名与密码,或者创建用户时设置的用户名和密码。为了确保用户名和密码的安全性,建议对用户名和密码进行加密处理,使用时解密。 consumer_id:消费组名称。根据业务需求,自定义消费组名称,如果设置的消费组不存在,Kafka会自动创建。 context.load_verify_locations:证书文件。如果Kafka安全协议设置为“SASL_SSL”,需要设置此参数。使用Python语言连接实例时,需要用CRT格式的证书。 sasl_mechanism:SASL认证机制。在Kafka实例控制台的基本信息页面中获取。如果SCRAM-SHA-512和PLAIN都开启了,根据实际情况选择其中任意一种配置连接。很久前创建的Kafka实例在详情页如果未显示“开启的SASL认证机制”,默认使用PLAIN机制。 security_protocol:Kafka的安全协议。在Kafka实例控制台的基本信息页面中获取。很久前创建的Kafka实例在详情页如果未显示“启用的安全协议”,默认使用SASL_SSL协议。 安全协议设置为“SASL_SSL”时,采用SASL方式进行认证,数据通过SSL证书进行加密传输,安全性更高。此时需要配置连接实例的用户名和密码,以及证书文件。 安全协议设置为“SASL_PLAINTEXT”时,采用SASL方式进行认证,数据通过明文传输,性能更好。此时需要配置连接实例的用户名和密码,无需配置证书文件。 非SASL认证方式 from kafka import KafkaConsumerconf = { 'bootstrap_servers': ["ip1:port1","ip2:port2","ip3:port3"], 'topic_name': 'topic-name', 'consumer_id': 'consumer-id'}print('start consumer')consumer = KafkaConsumer(conf['topic_name'], bootstrap_servers=conf['bootstrap_servers'], group_id=conf['consumer_id'])for message in consumer: print("%s:%d:%d: key=%s value=%s" % (message.topic, message.partition,message.offset, message.key,message.value))print('end consumer') 示例代码中的参数说明如下,请参考收集连接信息获取参数值。 bootstrap_servers:实例连接地址与端口。 topic_name:Topic名称。 consumer_id:消费组名称。根据业务需求,自定义消费组名称,如果设置的消费组不存在,Kafka会自动创建。 执行以下命令,运行消费消息的代码示例。 # Python 2.x版本python consumer.py# Python 3.x版本python3 consumer.py 运行成功后,返回如下回显。 [root@ecs-test ~]# python3 consumer.pystart consumer 如需停止消费使用Ctrl+C命令退出。
  • DDS实例连接失败怎么办 报错信息: Command failed with error 18 (AuthenticationFailed): 'Authentication failed.' on server xxx.xxx.xx.xx:xxxx. The full response is { 'ok' : 0.0, 'errmsg' : "Authentication failed.", "code" : 18, "codeName" : "AuthenticationFailed" } 报错原因:云服务平台文档数据库用户名或密码不对。 解决方法:请确认用户名和密码是否正确。如果不确认密码是否正确,可以到云服务平台文档数据库控制台重置密码。 修改密码可能会影响业务,请谨慎操作。 报错原因:输入的用户没有数据库的权限。 解决方法:请确认此用户是否有此数据库的权限。如果不确认,可以先使用rwuser用户,连接admin数据库,登录DAS后,在“账号管理”里确认权限是否设置正确。 父主题: 连接管理
  • 如何查看并放通E CS 实例安全组规则 需要添加实例端口号(示例为3306)到100.125.0.0/16和100.79.0.0/16的规则,DAS才能访问ECS自建库。 在ECS实例详情页面,单击“安全组”页签,查看安全组规则。 图1 安全组规则 单击页面左侧的“配置规则”,进入安全组信息页面。 单击“入方向规则”页签,单击“添加规则”,设置安全组规则请参见配置安全组规则。 图2 添加入方向规则 推荐配置:“协议端口”选择“基本协议/自定义TCP”,端口与ECS自建库保持一致,源IP地址设置为100.125.0.0/16和100.79.0.0/16。 在 “出方向规则”页签,单击“添加规则”,设置安全组规则请参见配置安全组规则。 图3 添加出方向规则 推荐配置:“协议端口”选择“TCP”,端口与ECS自建库保持一致,源IP地址设置为100.125.0.0/16和100.79.0.0/16。 父主题: 连接管理
  • 冻结、解冻、释放资源时对业务的影响 资源冻结时: 资源将被限制访问和使用,会导致您的业务中断,无法使用DAS提供的数据库管理功能。例如RDS实例被冻结时,会使得用户无法使用DAS连接至数据库执行SQL命令。 包周期资源被冻结后,将被限制进行变更操作。 资源被冻结后,可以手动进行退订/删除。 资源解冻时:资源将被解除限制,用户可以使用DAS连接至数据库。 资源释放时:资源将被释放,DAS管理的实例将被删除。
  • ECS自建库(Microsoft SQL Server)连接失败怎么办 报错信息: The TCP/IP connection to the host 100.xxx.xx.xx, port xxx has failed。 报错原因:ECS自建库输入的端口号不正确,或者网络不通。 解决方法:请确认输入的自建库端口号是否正确,并且放通了安全组规则和防火墙白名单。请参考查看并放通ECS实例安全组规则和查看并放通防火墙。 父主题: 连接管理
  • 解决方案 登录 统一身份认证 服务控制台。 选择当前用户所属的用户组,在用户组列表中,单击新建用户组右侧的“授权”。 图2 进入用户组权限设置页面 搜索“关系型数据库RDS”,勾选权限“RDS FullAccess”后,单击“下一步”。 图3 添加权限 选择授权范围方案后,单击“确定”。 返回授权记录页面,确认当前用户组拥有的权限。 确保当前用户组拥有DAS FullAccess、DAS Administrator、RDS FullAccess和Tenant Guest权限即可。
  • ECS自建库(MySQL)连接失败怎么办 报错信息:“Access denied for user 'user_name'@'100.xxx.xx.xx' (using password: YES)”。 报错原因:ECS自建库用户名或密码不对。 解决方法:请确认数据库用户名和密码是否正确。如果确认账户名和密码正确,可以通过客户端或命令行工具登录数据库,执行select * from mysql.user where user = 'user_name'命令查看用户信息,如果存在100.%网段的用户,则DAS只能通过100.%网段的数据库用户去连接数据库。user_name @%与user_name @100.%是两个用户,其密码和权限都是独立的,请确认输入的密码是否是user_name @100.%用户的密码。 报错原因:DAS服务器的IP地址不在您输入用户的白名单中。 解决方法:使用客户端或命令行工具登录到数据库,创建DAS可以访问的数据库用户。 create user 'user_name'@'100.%' identified by 'password';grant all privileges on *.* to 'user_name'@'100.%'; DAS服务器IP地址所在网段为100.%,请根据实际使用需要添加白名单。 请根据实际使用需要给user_name@100.%用户赋予权限。 报错原因: 使用SSL用户登录,服务端没有开启SSL功能。 解决方法:请执行如下语句查询用户是否是SSL用户,如果是,则在RDS实例详情页面,将SSL开关打开。其中,ssl_type字段有值即表示此用户是SSL用户。 select user, host, ssl_type from mysql.user where user = 'user_name'; 报错信息: Host 'xxx.xxx.xx.xx' is not allowed to connect to this MySQL server。 报错原因: 您输入的数据库用户不允许远程登录MySQL(如root用户,mysql.user表中只设置了root@localhost用户,指定用户只能本地登录)。 解决方法:使用客户端工具或命令行登录MySQL,创建可以远程登录的用户。 create user 'user_name'@'100.%' identified by 'password'; grant all privileges on *.* to 'user_name'@'100.%'; DAS服务器IP地址所在网段为100.%,请根据实际使用需要添加白名单。 请根据实际使用需要给user_name@100.%用户赋予权限。 报错信息: Communications link failure The last packet sent successfully to the server was 0 milliseconds ago. The driver has not received any packets from the server。 报错原因: ECS设置的安全组规则不支持此端口被访问 解决方法:请参考查看并放通ECS实例安全组规则。 报错原因: ECS虚拟机设置的防火墙策略不允许此端口被访问。 解决方法:请参考查看并放通防火墙。 报错原因:远程访问MySQL数据库,服务端侧进行的DNS解析动作,耗时太长导致连接实例超时。 解决方法:请按照以下操作进行修复。 在/etc/my.cnf路径下查找MySQL数据库的配置文件,在“[mysqld]”下,输入如下内容,并保存退出。 skip-name-resolve MySQL数据库的配置文件,默认位置为“/etc/my.cnf”,若您将配置文件指定位置存放时,需对应调整。 重启数据库服务"systemctl restart mysqld",尝试再次连接。 报错信息: Communications link failure The last packet sent successfully to the server was 0 milliseconds ago. The driver has not received any packets from the server 报错原因:DAS服务器与实例网络不通。 解决方法:请检查实例的防火墙配置是否正常、是否开放对应端口,如防火墙配置异常或未开放对应端口请修复后再次尝试连接实例。修复后还无法解决,请提交工单联系客服人员协助处理 报错信息:Instance connect timeout, please login again. 报错原因:DAS服务器连接超时。 解决方案:请按照以下方法进行检查并尝试修复。 请远程登录ECS虚拟机,执行“iptables -S | grep input”命令检查实例的防火墙配置是否正常。如果自建库端口号没在开放的白名单中,您可以新增一条iptables规则或通过“systemctl stop iptables”命令关闭防火墙,保证端口能被访问后再次尝试连接实例。 请远程登录ECS虚拟机,执行“ps -ef | grep mysql”命令检查数据库进程是否正常,mysqld_safe进程与mysqld进程均存在则为正常。如进程不存在请执行“systemctl start mysqld”命令重启数据库后再次尝试连接实例。 如上述方法均无法解决,请提交工单联系客服人员协助处理。 父主题: 连接管理
  • RDS for MySQ L实例 连接失败怎么办 报错信息:Access denied for user 'user_name'@'100.xxx.xx.xx' (using password: YES)。 报错原因:RDS实例用户名或密码不对。 解决方法:请确认数据库用户名和密码是否正确,如果您不确认密码是否正确,可以在RDS控制台重置实例密码。 修改密码可能会影响业务,请谨慎操作。 如果确认账户名和密码正确,可以通过客户端或命令行工具登录数据库,执行select * from mysql.user where user = 'user_name'命令查看用户信息,如果存在100.%网段的用户,则DAS只能通过100.%网段的数据库用户去连接数据库。user_name @%与user_name @100.%是两个用户,其密码和权限都是独立的,请确认输入的密码是否是user_name @100.%用户的密码。 报错原因:DAS服务器的IP地址不在您输入用户的白名单中。 解决方法:使用客户端或命令行工具登录到数据库,创建DAS可以访问的数据库用户。 create user 'user_name'@'100.%' identified by 'password'; grant select on *.* to 'user_name'@'100.%'; DAS服务器IP地址所在网段为100.%,请根据实际使用需要添加白名单。 请根据实际使用需要给user_name@100.%用户赋予权限。 报错原因: 使用SSL用户登录,服务端没有开启SSL功能。 解决方法:请执行如下语句查询用户是否是SSL用户,如果是,则在RDS实例详情页面,将SSL开关打开。其中,ssl_type字段有值即表示此用户是SSL用户。 select user, host, ssl_type from mysql.user where user = 'user_name'; 报错信息: Trying to connect with ssl, but ssl not enabled in the server 报错原因: 使用SSL用户登录,服务端没有开启SSL功能。 解决方法:请执行如下语句查询用户是否是SSL用户,如果是,则在RDS实例详情页面,将SSL开关打开。其中,ssl_type字段有值即表示此用户是SSL用户。 select user, host, ssl_type from mysql.user where user = 'user_name'; 报错信息: Client does not support authentication protocol requested by server. plugin type was = 'sha256_password' 报错原因: DAS暂不支持密码的加密方式为sha256_password的数据库用户连接登录。 解决方法:请执行如下语句将密码的加密方式改为mysql_native_password。 alter user 'user_name'@'%' identified with mysql_native_password by 'password'; 报错原因:对于MySQL 8.0,DAS服务器的IP地址不在您输入用户的白名单中。 解决方法:使用客户端或命令行工具登录到数据库,创建DAS可以访问的数据库用户。 报错信息: Communications link failure The last packet sent successfully to the server was 0 milliseconds ago. The driver has not received any packets from the server 报错原因: DAS服务器与实例网络不通。 解决方法:请提交工单联系客服人员协助处理。 报错信息:Instance connect timeout, please login again. 报错原因:DAS服务器连接超时。 解决方法:请提交工单联系客服人员协助处理。 报错信息:RSA public key is not available client side (option serverRsaPublicKeyFile not set). 报错原因:数据库用户的身份认证方式对密码安全性要求较高,要求用户认证过程中在网络传输的密码是加密的。 如果是SSL加密连接,则使用SSL证书和密钥对来完成“对称加密密钥对(在TSL握手中生成)”的交换,后续使用“对称加密密钥对”加密密码和数据。 如果是非SSL加密连接,则在连接建立时客户端使用MySQL Server端的RSA公钥加密用户密码,Server端使用RSA私钥解密验证密码的正确性,可以防止密码在网络传输时被窥探。 解决方法:开启实例SSL或者修改数据库用户的身份认证方式。 父主题: 连接管理
  • 权限不足导致数据库实例连接失败怎么办 报错信息:您的权限不足。策略不允许执行 das:connections:xxx。 报错原因:您的账号没有添加DAS FullAccess权限。 解决方法:请参考创建用户并授权使用DAS,添加DAS FullAccess权限。 报错信息:您没有执行此操作的权限,请联系您的管理员为您开通权限。 报错原因:您的账号没有添加DAS FullAccess权限。 解决方法:请参考创建用户并授权使用DAS,添加DAS FullAccess权限。 报错信息:您当前登录的账号仅具有只读权限,不能执行此操作。为确保您顺利使用DAS,请添加DAS Administrator权限。 报错原因:您的账号没有添加DAS FullAccess权限。 解决方法:请参考创建用户并授权使用DAS,添加DAS FullAccess权限。 父主题: 连接管理
  • TaurusDB实例连接失败怎么办 报错信息:Access denied for user 'user_name'@'100.xxx.xx.xx' (using password: YES)。 报错原因:TaurusDB数据库用户名或密码不对。 解决方法:请确认数据库用户名和密码是否正确,如果您不确认密码是否正确,可以在 GaussDB 控制台重置实例密码。 修改密码可能会影响业务,请谨慎操作。 如果确认账户名和密码正确,可以通过客户端或命令行工具登录数据库,执行select * from mysql.user where user = 'user_name'命令查看用户信息,如果存在100.%网段的用户,则DAS只能通过100.%网段的数据库用户去连接数据库。user_name @%与user_name @100.%是两个用户,其密码和权限都是独立的,请确认输入的密码是否是user_name @100.%用户的密码。 报错原因:DAS服务器的IP地址不在您输入用户的白名单中。 解决方法:使用客户端或命令行工具登录到数据库,创建DAS可以访问的数据库用户。 create user 'user_name'@'100.%' identified by 'password';grant all privileges on *.* to 'user_name'@'100.%'; DAS服务器IP地址所在网段为100.%,请根据实际使用需要添加白名单。 请根据实际使用需要给user_name@100.%用户赋予权限。 报错信息: Trying to connect with ssl, but ssl not enabled in the server 报错原因: 使用SSL用户登录,服务端没有开启SSL功能。 解决方法:请执行如下语句查询用户是否是SSL用户,如果是,则在TaurusDB实例详情页面,将SSL开关打开。其中,ssl_type字段有值即表示此用户是SSL用户。 select user, host, ssl_type from mysql.user where user = 'user_name'; 报错信息: Client does not support authentication protocol requested by server. plugin type was = 'sha256_password' 报错原因: DAS暂不支持密码的加密方式为sha256_password的数据库用户连接登录。 解决方法:请执行如下语句将密码的加密方式改为mysql_native_password。 alter user 'user_name'@'%' identified with mysql_native_password by 'password'; 报错信息: Communications link failure The last packet sent successfully to the server was 0 milliseconds ago. The driver has not received any packets from the server 报错原因: DAS服务器与实例网络不通。 解决方法:请联系技术支持协助处理。 父主题: 连接管理
  • 使用须知 支持登录的数据库实例如下: 表1 支持的数据库实例列表 数据库实例来源 支持的数据库引擎 华为云数据库实例 RDS for MySQL RDS for PostgreSQL RDS for SQL Server RDS for MariaDB DDS TaurusDB GaussDB GeminiDB Cassandra 华为云ECS自建数据库实例 支持MySQL5.5、5.6、5.7、8.0版本实例,暂不支持HA集群。 支持PostgreSQL9.4、9.5、9.6、10、11、12版本的实例。 支持SQL Server2008、2012、2014、2016、2017版本实例;暂不支持HA集群。 创建当前数据库实例的账号和目前登录的账号属于同一个云账号。 创建的数据库实例需要和数据管理服务在同一个Region下。
  • 基本概念 账号 用户注册时的账号,账号对其所拥有的资源及云服务具有完全的访问权限,可以重置用户密码、分配用户权限等。由于账号是付费主体,为了确保账号安全,建议您不要直接使用账号进行日常管理工作,而是创建用户并使用它们进行日常管理工作。 用户 由账号在 IAM 中创建的用户,是云服务的使用人员,具有身份凭证(密码和访问密钥)。 在我的凭证下,您可以查看账号ID和IAM用户ID。 区域(Region) 指云资源所在的物理位置,同一区域内可用区间内网互通,不同区域间内网不互通。通过在不同地区创建云资源,可以将应用程序设计的更接近特定客户的要求,或满足不同地区的法律或其他要求。 可用区(AZ,Availability Zone) 一个可用区是一个或多个物理数据中心的集合,有独立的风火水电,AZ内逻辑上再将计算、网络、存储等资源划分成多个集群。一个Region中的多个AZ间通过高速光纤相连,以满足用户跨AZ构建高可用性系统的需求。 项目 区域默认对应一个项目,这个项目由系统预置,用来隔离物理区域间的资源(计算资源、存储资源和网络资源),以默认项目为单位进行授权,用户可以访问账号中该区域的所有资源。如果希望进行更加精细的权限控制,可以在区域默认的项目中创建子项目,并在子项目中创建资源,然后以子项目为单位进行授权,使得用户仅能访问特定子项目中资源,使得资源的权限控制更加精确。 同样在我的凭证下,您可以查看项目ID。 图1 项目隔离模型 企业项目 企业项目是项目的升级版,针对企业不同项目间资源的分组和管理,是逻辑隔离。企业项目中可以包含多个区域的资源,且项目中的资源可以迁入迁出。 关于企业项目ID的获取及企业项目特性的详细信息,请参见《企业管理服务用户指南》。
  • 获取账号ID 在调用接口的时候,部分URL中需要填入账号ID,所以需要先在管理控制台上获取到账号ID。账号ID获取步骤如下: 登录华为云控制台。 将鼠标移动到页面右上角的账号名,在下拉列表中单击“我的凭证”,进入“我的凭证”页面。 在左侧导航栏中,单击“API凭证”,进入“API凭证”页面。 您可以在该页面查看IAM用户名(user name)、IAM用户ID(user_id)、账号名(domain name)、账号ID(domain_id)等信息。 图1 获取账号ID 父主题: 附录
  • 支持的授权项 策略包含系统策略和自定义策略,如果系统策略不满足授权要求,管理员可以创建自定义策略,并通过给用户组授予自定义策略来进行精细的访问控制。策略支持的操作与API相对应,授权项列表说明如下: 权限:允许或拒绝在特定条件下对指定资源进行某项操作。 对应API接口:自定义策略实际调用的API接口。 授权项:自定义策略中支持的Action,在自定义策略中的Action中写入授权项,可以实现授权项对应的权限功能。 依赖的授权项:部分Action存在对其他Action的依赖,需要将依赖的Action同时写入授权项,才能实现对应的权限功能。 IAM项目(Project)/企业项目(Enterprise Project):自定义策略的授权范围,包括IAM项目与企业项目。授权范围如果同时支持IAM项目和企业项目,表示此授权项对应的自定义策略,可以在IAM和企业管理两个服务中给用户组授权并生效。如果仅支持IAM项目,不支持企业项目,表示仅能在IAM中给用户组授权并生效,如果在企业管理中授权,则该自定义策略不生效。关于IAM项目与企业项目的区别,详情请参见:IAM与企业管理的区别。 “√”表示支持,“x”表示暂不支持。 iDME的支持自定义策略授权项如下所示: 表1 控制台的细化权限说明 权限 对应API接口 授权项(Action) IAM项目 (Project) 企业项目 (Enterprise Project) 创建应用 /v1/{project_id}/apps dme:apps:create √ × 获取租户下的应用清单 /v1/{project_id}/apps dme:apps:get √ × 编辑应用 /v1/{project_id}/apps/{app_id} dme:apps:modify √ × 获取运行服务清单 /v1/{project_id}/envs dme:envs:get √ × 部署应用 /v1/{project_id}/envs/{env_id}/apps/{app_id}/deploy dme:envs:deployApp √ × 卸载应用 /v1/{project_id}/envs/{env_id}/apps/{app_id} dme:envs:destroyApp √ × 删除应用 /v1/{project_id}/apps/{app_id} dme:apps:delete √ × 开通iDME实例 /v1/{project_id}/{service_type}/instances dme:envs:create √ × 删除iDME实例 /v1/{project_id}/{service_type}/instances/{instance_id} dme:envs:delete √ ×
  • URI DELETE /v1/{project_id}/{service_type}/instances/{instance_id} 表1 路径参数 参数 是否必选 参数类型 描述 project_id 是 String 参数解释: 项目ID。 获取方法请参见获取项目ID。 约束限制: 不涉及。 取值范围: 只能由英文字母、数字组成,且长度为[1-36]个字符。 默认取值: 不涉及。 service_type 是 String 参数解释: iDME服务的类型。 约束限制: 不涉及。 取值范围: CLOUD_LINKX:公有云基础版数字主线引擎。 默认取值: 不涉及。 instance_id 是 String 参数解释: 待删除的实例ID。 约束限制: 不涉及。 取值范围: 不涉及。 默认取值: 不涉及。
  • 请求方法 HTTP请求方法(也称为操作或动词),它告诉服务您正在请求什么类型的操作。 表2 HTTP请求方法 方法 说明 GET 请求服务器返回指定资源。 PUT 请求服务器更新指定资源。 POST 请求服务器新增资源或执行特殊操作。 DELETE 请求服务器删除指定资源,如删除对象等。 HEAD 请求服务器资源头部。 PATCH 请求服务器更新资源的部分内容。当资源不存在的时候,PATCH可能会去创建一个新的资源。 在管理员创建IAM用户的URI部分,您可以看到其请求方法为“POST”,则其请求为: POST https://iam.cn-north-4.myhuaweicloud.com/v3.0/OS-USER/users
  • 请求消息体(可选) 该部分可选。请求消息体通常以结构化格式(如JSON或XML)发出,与请求消息头中Content-Type对应,传递除请求消息头之外的内容。若请求消息体中的参数支持中文,则中文字符必须为UTF-8编码。 每个接口的请求消息体内容不同,也并不是每个接口都需要有请求消息体(或者说消息体为空),GET、DELETE操作类型的接口就不需要消息体,消息体具体内容需要根据具体接口而定。 对于管理员创建IAM用户接口,您可以从接口的请求部分看到所需的请求参数及参数说明。将消息体加入后的请求如下所示,加粗的斜体字段需要根据实际值填写。其中, accountid为IAM用户所属的账号ID。 username为要创建的IAM用户名。 email为IAM用户的邮箱。 **********为IAM用户的登录密码。 POST https://iam.cn-north-4.myhuaweicloud.com/v3.0/OS-USER/users Content-Type: application/json X-Sdk-Date: 20240416T095341ZAuthorization: SDK-HMAC-SHA256 Access=****************, SignedHeaders=content-type;host;x-sdk-date, Signature=****************{ "user": { "domain_id": "accountid", "name": "username", "password": "**********", "email": "email", "description": "IAM User Description" } } 到这里为止这个请求需要的内容就具备齐全了,您可以使用curl、Postman或直接编写代码等方式发送请求调用API。对于获取用户Token接口,返回的响应消息头中的“X-Subject-Token”就是需要获取的用户Token。有了Token之后,您就可以使用Token认证调用其他API。
  • 请求消息头 附加请求头字段,如指定的URI和HTTP方法所要求的字段。例如定义消息体类型的请求头“Content-Type”,请求鉴权信息等。 详细的公共请求消息头字段请参见表3。 表3 公共请求消息头 名称 描述 是否必选 示例 Host 请求的服务器信息,从服务API的URL中获取。值为hostname[:port]。端口缺省时使用默认的端口,HTTPS的默认端口为443。 否 当使用AK/SK认证时,该字段必选。 code.test.com or code.test.com:443 Content-Type 消息体的类型(格式)。推荐用户使用默认值application/json,有其他取值时会在具体接口中专门说明。 是 application/json Content-Length 请求body长度,单位为Byte。 否 3495 Authorization 签名认证信息。 否 当使用AK/SK方式认证时,使用SDK对请求进行签名的过程中会自动填充该字段。 - X-Sdk-Date 请求发送的时间。 否 当使用AK/SK方式认证时,使用SDK对请求进行签名的过程中会自动填充该字段。 - X-Project-ID Project ID,项目编号。 否 如果是专属云场景采用AK/SK认证方式的接口请求或者多project场景采用AK/SK认证的接口请求,则该字段必选。 e9993fc787d**********aa340f9c0f4 X-Auth-Token 用户Token。 用户Token也就是调用获取用户Token接口的响应值,该接口是唯一不需要认证的接口。 请求响应成功后在响应消息头中包含的“X-Subject-Token”的值即为Token值。 否 使用Token认证时该字段必选。 注:以下仅为Token示例片段。 MIIPAgYJKoZIhvcNAQcCo...ggg1BBIINPXsidG9rZ X-Domain-ID 账号ID。 否 AK/SK认证方式下,全局服务的接口调用时,需在请求消息头中携带X-Domain-ID。 - API同时支持使用AK/SK认证,AK/SK认证是使用SDK对请求进行签名,签名过程会自动往请求中添加Authorization(签名认证信息)和X-Sdk-Date(请求发送的时间)请求头。 AK/SK认证的详细说明请参见认证鉴权的“AK/SK认证”。 对于管理员创建IAM用户接口,使用AK/SK方式认证时,添加消息头后的请求如下所示。 POST https://iam.cn-north-4.myhuaweicloud.com/v3.0/OS-USER/users Content-Type: application/jsonX-Sdk-Date: 20240416T095341ZAuthorization: SDK-HMAC-SHA256 Access=****************, SignedHeaders=content-type;host;x-sdk-date, Signature=****************
  • 请求URI 请求URI由如下部分组成。 {URI-scheme}://{Endpoint}/{resource-path}?{query-string} 尽管请求URI包含在请求消息头中,但大多数语言或框架都要求您从请求消息中单独传递它,所以在此单独强调。 表1 URI中的参数说明 参数 描述 URI-scheme 表示用于传输请求的协议,当前所有API均采用HTTPS协议。 Endpoint 指定承载REST服务端点的服务器域名或IP,不同服务不同区域的Endpoint不同,您可以从地区和终端节点中获取。 例如IAM服务在“华北-北京四”区域的Endpoint为“iam.cn-north-4.myhuaweicloud.com”。 resource-path 资源路径,即API访问路径。从具体API的URI模块获取,例如“获取用户Token”API的resource-path为“/v3/auth/tokens”。 query-string 查询参数,是可选部分,并不是每个API都有查询参数。查询参数前面需要带一个“?”,形式为“参数名=参数取值”。 例如“?limit=10”,表示查询不超过10条数据。 例如您需要获取IAM在“华北-北京四”区域的Token,则需使用“华北-北京四”区域的Endpoint(iam.cn-north-4.myhuaweicloud.com),并在管理员创建IAM用户的URI部分找到resource-path(/v3.0/OS-USER/users),拼接起来如下所示。 https://iam.cn-north-4.myhuaweicloud.com/v3.0/OS-USER/users 图1 URI示意图 为查看方便,在每个具体API的URI部分,只给出resource-path部分,并将请求方法写在一起。这是因为URI-scheme都是HTTPS,而Endpoint在同一个区域也相同,所以简洁起见将这两部分省略。
  • 状态码 状态码如表1所示: 表1 状态码 状态码 编码 错误码说明 100 Continue 继续请求。 这个临时响应用来通知客户端,它的部分请求已经被服务器接收,且仍未被拒绝。 101 Switching Protocols 切换协议。只能切换到更高级的协议。 例如,切换到HTTP的新版本协议。 201 Created 创建类的请求完全成功。 202 Accepted 已经接受请求,但未处理完成。 203 Non-Authoritative Information 非授权信息,请求成功。 204 NoContent 请求完全成功,同时HTTP响应不包含响应体。 在响应OPTIONS方法的HTTP请求时返回此状态码。 205 Reset Content 重置内容,服务器处理成功。 206 Partial Content 服务器成功处理了部分GET请求。 300 Multiple Choices 多种选择。请求的资源可包括多个位置,相应可返回一个资源特征与地址的列表用于用户终端(例如:浏览器)选择。 301 Moved Permanently 永久移动,请求的资源已被永久的移动到新的URI,返回信息会包括新的URI。 302 Found 资源被临时移动。 303 See Other 查看其他地址。 使用GET和POST请求查看。 304 Not Modified 所请求的资源未修改,服务器返回此状态码时,不会返回任何资源。 305 Use Proxy 所请求的资源必须通过代理访问。 306 Unused 已经被废弃的HTTP状态码。 400 BadRequest 非法请求。 建议直接修改该请求,不要重试该请求。 401 Unauthorized 在客户端提供认证信息后,返回该状态码,表明服务端指出客户端所提供的认证信息不正确或非法。 402 Payment Required 保留请求。 403 Forbidden 请求被拒绝访问。 返回该状态码,表明请求能够到达服务端,且服务端能够理解用户请求,但是拒绝做更多的事情,因为该请求被设置为拒绝访问,建议直接修改该请求,不要重试该请求。 404 NotFound 所请求的资源不存在。 建议直接修改该请求,不要重试该请求。 405 MethodNotAllowed 请求中带有该资源不支持的方法。 建议直接修改该请求,不要重试该请求。 406 Not Acceptable 服务器无法根据客户端请求的内容特性完成请求。 407 Proxy Authentication Required 请求要求代理的身份认证,与401类似,但请求者应当使用代理进行授权。 408 Request Time-out 服务器等候请求时发生超时。 客户端可以随时再次提交该请求而无需进行任何更改。 409 Conflict 服务器在完成请求时发生冲突。 返回该状态码,表明客户端尝试创建的资源已经存在,或者由于冲突请求的更新操作不能被完成。 410 Gone 客户端请求的资源已经不存在。 返回该状态码,表明请求的资源已被永久删除。 411 Length Required 服务器无法处理客户端发送的不带Content-Length的请求信息。 412 Precondition Failed 未满足前提条件,服务器未满足请求者在请求中设置的其中一个前提条件。 413 Request Entity Too Large 由于请求的实体过大,服务器无法处理,因此拒绝请求。为防止客户端的连续请求,服务器可能会关闭连接。如果只是服务器暂时无法处理,则会包含一个Retry-After的响应信息。 414 Request-URI Too Large 请求的URI过长(URI通常为网址),服务器无法处理。 415 Unsupported Media Type 服务器无法处理请求附带的媒体格式。 416 Requested range not satisfiable 客户端请求的范围无效。 417 Expectation Failed 服务器无法满足Expect的请求头信息。 422 UnprocessableEntity 请求格式正确,但是由于含有语义错误,无法响应。 429 TooManyRequests 表明请求超出了客户端访问频率的限制或者服务端接收到多于它能处理的请求。建议客户端读取相应的Retry-After首部,然后等待该首部指出的时间后再重试。 500 InternalServerError 表明服务端能被请求访问到,但是不能理解用户的请求。 501 Not Implemented 服务器不支持请求的功能,无法完成请求。 502 Bad Gateway 充当网关或代理的服务器,从远端服务器接收到了一个无效的请求。 503 ServiceUnavailable 被请求的服务无效。 建议直接修改该请求,不要重试该请求。 504 ServerTimeout 请求在给定的时间内无法完成。客户端仅在为请求指定超时(Timeout)参数时会得到该响应。 505 HTTP Version not supported 服务器不支持请求的HTTP协议的版本,无法完成处理。 父主题: 附录
  • 调用API获取项目ID 项目ID还可以通过调用查询指定条件下的项目列表API获取。 获取项目ID的接口为“GET https://{Endpoint}/v3/projects”,其中{Endpoint}为IAM的终端节点,可以从地区和终端节点获取。接口的认证鉴权请参见认证鉴权。 响应示例如下,其中projects下的“id”即为项目ID。 { "projects": [ { "domain_id": "65382450e8f64ac0870cd180d14e684b", "is_domain": false, "parent_id": "65382450e8f64ac0870cd180d14e684b", "name": "cn-north-4", "description": "", "links": { "next": null, "previous": null, "self": "https://www.example.com/v3/projects/a4a5d4098fb4474fa22cd05f897d6b99" }, "id": "a4a5d4098fb4474fa22cd05f897d6b99", "enabled": true } ], "links": { "next": null, "previous": null, "self": "https://www.example.com/v3/projects" } }
共100000条
提示

您即将访问非华为云网站,请注意账号财产安全