云服务器内容精选

  • SDK列表 表1提供了 SMN 服务支持的SDK列表,您可以在GitHub仓库查看SDK更新历史、获取安装包以及查看指导文档。 表1 SDK列表 编程语言 Github地址 参考文档 Java huaweicloud-sdk-java-v3 Java SDK使用指导 Python huaweicloud-sdk-python-v3 Python SDK使用指导 Go huaweicloud-sdk-go-v3 Go SDK使用指导 .NET huaweicloud-sdk-net-v3 .Net SDK使用指导 NodeJS huaweicloud-sdk-nodejs-v3 NodeJS SDK使用指导 PHP huaweicloud-sdk-php-v3 PHP SDK使用指导
  • 计费项 华为 云消息 通知服务对 消息通知 费用、外网下行流量计费,具体的计费详情请参见价格详情。 表1 计费项说明 计费项 计费说明 消息通知 SMS :统计每月每个区域每个主题的发送条数,按数量收费。短信条数计算规则请参考《消息&短信服务产品介绍》中“内容长度计算规则”章节。 说明: 全球短信:发送即计费,即SMN侧调用供应商接口成功则计费。 中国大陆短信:短信发送成功才计费。 电子邮件:统计每月每个区域每个主题的发送邮件数,按数量收费。 HTTP(S):统计每月每个区域每个主题的发送请求数量,每月100万次为单位计费。 FunctionGraph:发送到FunctionGraph免费。 发送请求订阅消息也会作为发送条数进行计费。 外网下行流量 仅在您有数据传输到Internet时收取,每月前1GB流量免费,之后按照华为云标准流量费用每GB收取。 所有的用量统计按照自然月计算。
  • 访问消息通知服务的方式 云平台提供了Web化的服务管理平台,即管理控制台和基于HTTPS请求的API(Application programming interface)管理方式。 管理控制台方式 管理控制台提供Web界面,供您管理计算、存储和其他云资源。你可以使用管理控制台方式访问消息通知服务。登录管理控制台,从主页选择“消息通知服务”。 API方式 如果用户需要将云平台上的消息通知服务集成到第三方系统,用于二次开发,请使用API方式访问消息通知服务,具体操作请参见《消息通知服务API参考》。
  • 计费项 华为云消息通知服务对消息通知费用、外网下行流量计费,具体的计费详情请参见价格详情。 表1 计费项说明 计费项 计费说明 消息通知 SMS:统计每月每个区域的发送条数,按数量收费。 电子邮件:统计每月每个区域的发送邮件数,按数量收费。 HTTP(S):统计每月每个区域的发送请求数量,每月100万次为单位计费。 FunctionGraph:发送到FunctionGraph免费。 外网下行流量 仅在您有数据传输到Internet时收取,每月前1GB流量免费,之后按照华为云标准流量费用每GB收取。
  • 产品优势 对比其他传统消息中间件组件,消息通知服务的核心优势如表1所示。 表1 产品优势 核心优势 消息通知服务 传统消息中间件 服务简便 直接使用消息通知服务,只需要使用三个简单的API (创建Topic、订阅Topic、发送消息),就能够快速高效的发送消息,使用门槛极低,快速融入业务使用。 自建消息通知服务成本高,接口使用复杂,学习曲线高,融于业务时间周期长。 稳定可靠 消息在多数据中心冗余,Topic支持透明迁移。消息推送失败,可以设置消息推送到SMN进行持久化。服务单节点故障,请求会自动迁移到可用节点。 关键业务使用对消息通知服务的稳定性和可靠性要求很高,需要解决消息不丢问题,并能提供多种措施保障业务的连续性。 多协议通知 使用消息通知服务,只需要通过一次发布请求,就能向各种协议的订阅者推送消息。 业务需要发送电子邮件、短信、FunctionGraph(函数)或者进行HTTP(S)推送,开发多种协议的消息收发系统,周期长。 安全 消息通知服务数据安全是基于Topic进行安全隔离,用户未经授权不能访问队列消息,有效保护用户业务安全。 业务数据访问需要有安全保护措施,没有认证授权的系统随意获取消息会导致严重的数据安全和隐私风险。
  • 应用场景 系统告警 系统告警是由预定义阈值触发的通知,通过邮件、短信、FunctionGraph(函数)、HTTP和HTTPS等多种通知方式发送给特定用户。举例来说,很多云服务都使用SMN,从而可使您在事件发生(如 云审计 服务检测到云服务资源发生关键操作)时能立即接收到通知。 与云服务的集成 将SMN作为消息连接不同的云服务,可降低系统复杂度,提升服务使用效率。例如将消息从云服务(如 CES )通知到其他服务(如OBS),实现服务解耦。即便一个服务出现故障,也不会影响到其他服务。 错峰流控 上下游系统处理能力有差异时,可以使用SMN转储系统间的通信数据,提供消息堆积缓冲能力,减少下游系统的压力,可减少系统崩溃等问题,提高系统可用性,降低系统实现的复杂性。
  • 责任共担 华为云秉承“将公司对网络和业务安全性保障的责任置于公司的商业利益之上”。针对层出不穷的 云安全 挑战和无孔不入的云安全威胁与攻击,华为云在遵从法律法规业界标准的基础上,以安全生态圈为护城河,依托华为独有的软硬件优势,构建面向不同区域和行业的完善云服务安全保障体系。 安全性是华为云与您的共同责任,如图1所示。 华为云:负责云服务自身的安全,提供安全的云。华为云的安全责任在于保障其所提供的IaaS、PaaS和SaaS类云服务自身的安全,涵盖华为云数据中心的物理环境设施和运行其上的基础服务、平台服务、应用服务等。这不仅包括华为云基础设施和各项云服务技术的安全功能和性能本身,也包括运维运营安全,以及更广义的安全合规遵从。 租户:负责云服务内部的安全,安全地使用云。华为云租户的安全责任在于对使用的IaaS、PaaS和SaaS类云服务内部的安全以及对租户定制配置进行安全有效的管理,包括但不限于虚拟网络、 虚拟主机 和访客虚拟机的操作系统,虚拟防火墙、API网关和高级安全服务,各项云服务,租户数据,以及身份账号和密钥管理等方面的安全配置。 《华为云安全白皮书》详细介绍华为云安全性的构建思路与措施,包括云安全战略、责任共担模型、合规与隐私、安全组织与人员、基础设施安全、租户服务与租户安全、工程安全、运维运营安全、生态安全。 图1 华为云安全责任共担模型 父主题: 安全
  • SMN权限 默认情况下,账号管理员创建的 IAM 用户没有任何权限,需要将其加入用户组,并给用户组授予策略或角色,才能使得用户组中的用户获得对应的权限,这一过程称为授权。授权后,用户就可以基于被授予的权限对云服务进行操作。 SMN部署时通过物理区域划分,为项目级服务。授权时,“作用范围”需要选择“区域级项目”,然后在指定区域(如华北-北京四)对应的项目(cn-north-4)中设置相关权限,并且该权限仅对此项目生效;如果在“所有项目”中设置权限,则该权限在所有区域项目中都生效。访问SMN时,需要先切换至授权区域。 权限根据授权精细程度分为角色和策略。 角色:IAM最初提供的一种根据用户的工作职能定义权限的粗粒度授权机制。该机制以服务为粒度,提供有限的服务相关角色用于授权。由于华为云各服务之间存在业务依赖关系,因此给用户授予角色时,可能需要一并授予依赖的其他角色,才能正确完成业务。角色并不能满足用户对精细化授权的要求,无法完全达到企业对权限最小化的安全管控要求。 策略:IAM最新提供的一种细粒度授权的能力,可以精确到具体服务的操作、资源以及请求条件等。基于策略的授权是一种更加灵活的授权方式,能够满足企业对权限最小化的安全管控要求。例如:针对SMN服务,管理员能够控制IAM用户仅能对某一类资源进行指定的管理操作。多数细粒度策略以API接口为粒度进行权限拆分,权限的最小粒度为API授权项(action),SMN支持的API授权项请参见《消息通知服务接口参考》中“策略及授权项说明”章节。 如表1所示,包括了SMN的所有系统权限。 表1 SMN系统权限 系统角色/策略名称 描述 类别 依赖关系 SMN Administrator 消息通知服务的管理员权限,拥有该权限的用户拥有消息通知服务所有执行权限。 系统角色 依赖Tenant Guest角色,需要在同项目中勾选依赖的角色。 SMN FullAccess 消息通知服务管理员权限,拥有该权限的用户可以操作并使用所有消息通知服务资源。 系统策略 无 SMN ReadOnlyAccess 消息通知服务的只读权限。 拥有该权限的用户仅能查看消息通知服务数据。 系统策略 无 表2列出了SMN常用操作与系统权限的授权关系,您可以参照该表选择合适的系统权限。 表2 常用操作与系统权限的关系 操作 IAM细粒度项 SMN Administrator SMN FullAccess SMN ReadOnlyAccess 创建主题 smn:topic:create √ √ × 更新主题 smn:topic:update √ √ × 删除主题 smn:topic:delete √ √ × 查询主题列表 smn:topic:list √ √ √ 订阅主题 smn:topic:update √ √ × 设置主题策略 smn:topic:update √ √ × 发布主题消息 smn:topic:publish √ √ × 添加订阅 smn:topic:update √ √ × 请求订阅 smn:topic:update √ √ × 删除订阅 smn:topic:update √ √ × 查询订阅者列表 smn:topic:list √ √ √ 创建消息模板 smn:template:create √ √ × 更新消息模板 smn:template:update √ √ × 删除消息模板 smn:template:delete √ √ × 查询消息模板 smn:template:list √ √ √ 添加标签 smn:tag:create √ √ × 更新标签 smn:tag:update √ √ × 删除标签 smn:tag:delete √ √ × 查询标签 smn:tag:list √ √ √
  • 约束与限制 当您通过消息通知服务SMN发送邮件、短信等消息时,您需要确保传输的内容符合当地法律法规要求。 SMN使用异步方式推送消息,不保证消息送达的时效性。如果业务要求消息准实时送达,请慎重考虑是否使用SMN服务。 SMN服务发送消息的邮箱地址和发送短信/语音的号码地址不固定,有切换的可能。请勿将邮箱地址和发送短信/语音的号码地址作白名单限制,否则可能导致无法接收到SMN消息。 SMN对外发送消息的源IP地址不固定,且有随时更换的可能。请勿将消息源IP地址作白名单限制,否则可能导致无法接收到SMN消息。 基于网络安全考虑,SMN默认不支持使用华为云内网地址接收消息。 消息通知服务SMN对某些具体指标进行了约束和规范,您在使用时注意不要超过相应的限制值,以免程序出现异常。 针对主题的限制项和限制值请参见表1。 表1 主题限制项及限制值 限制项 限制值 说明 主题名称 1-255字符 超过该限制,主题无法创建。 显示名 192字节或64个中文字 超过该限制,主题无法创建。 创建标签数 20个 超过该限制,主题无法创建。 标签的键长度 128字符 超过该限制,标签无法创建。 标签的值长度 256字符 超过该限制,标签无法创建。 发布文本消息标题 512字节 无 发布文本消息内容 256KB 如果消息超过1000个字符,系统向短信订阅者发送消息时,因运营商限制可能会发送失败。 发布json消息内容 256KB 无 发布模板消息内容 256KB 无 针对订阅的限制项和限制值请参见表2。 表2 订阅的限制项及限制值 限制项 限制值 说明 订阅终端数 10000个 无 订阅确认链接失效时间 48小时 订阅确认的链接在48小时内有效,用户需要及时在手机端、邮箱或其他协议终端确认订阅。
  • HTTP(S)取消订阅消息的格式 HTTP(S)订阅终端取消订阅确认后,终端将收到SMN推送的取消订阅确认消息,下面将描述HTTP Content信息,它是JSON串,具体字段说明如表4所示。 表4 HTTP(S)取消订阅消息的格式参数说明 参数 说明 type 消息类型,UnsubscribeConfirmation。 signature 签名信息。 签名字段包括message,message_id,subscribe_url、timestamp,topic_urn和type,具体签名信息校验,请参见校验消息签名。 topic_urn 主题的唯一标识,表示消息归属的主题。 message_id 消息唯一标识。 signature_version 签名的版本信息,目前是V1。 message 取消订阅确认消息的描述。 subscribe_url 再次订阅确认需要访问的URL。 signing_cert_url 用于消息签名的证书URL。 timestamp 消息第一次发送的时间戳。 HTTP(S)取消订阅消息样例如下: { "signature": "ViE96uGbBkl+S8eWqgebi5KdmRht2U8+Rs88yuyMHq1k4h3jUkcDZ6HCqTqdpJ8nrLcdqETyyEiOQyTszJdU05z+LhfE8jerCCdSbL4zeInVkydHh0kcCRWmORye0/EuQ/gLC1UIXwvUsqbUCPnBRhNFXOeXMOPPCzK+d04xjy4QHd1H/bHxgsY3AlTe0gCFT068Zru7OK6w9aQaY44mXnN3OWGmBmoHyFab5TRXLSQNz/9u/Vj646cQMMaI0PPQ30QzGYD0MtzgDZi12m8jMTHAnMkTEcbLaEgaqmaoEnATSpEcspFKNXv2skwk7rsVakMOISpMH3+qC6RzhE******", "topic_urn": "urn:smn:region01:0a419ac94f80f2c62f14c01e34******:test_******", "message_id": "d86c201092574e71a3ca85826652c58b", "signature_version": "v1", "type": "UnsubscribeConfirmation", "message": "You are unsubscribed from topic: urn:smn:region01:0a419ac94f80f2c62f14c01e34******:test_******. To subscribe to this topic again, please visit the subscribe_url included in this message. The subscribe_url is valid only within 48 hours.", "subscribe_url": "https://console.******.com/smn/subscription/confirm?token=0a419ac94f80f2c62f14c01e34ae5dfcf6b0b92ef46241218eaae5b4cb90d5d423cf104593284665a1f98691b1576976785114fb4408450e8de153b9f1******&topic_urn=urn:smn:region01:0a419ac94f80f2c62f14c01e34******:test_******®ion=region01®ion_id=region01", "signing_cert_url": "https://smn.region01.******.com/smn/SMN_region01_3190c26a56fb435f9882e3435b******.pem", "timestamp": "2024-07-10T11:45:00Z" }
  • HTTP(S)订阅确认消息的格式 添加HTTP(S)订阅终端以后,SMN会向订阅终端推送一条订阅确认的消息,下面将描述消息的HTTP Content,它是JSON格式的字符串,其中包括subscribe_url值,订阅确认需要GET请求subscribe_url地址进行确认,具体JSON字段说明如表2所示。 表2 HTTP(S)订阅确认消息的格式参数说明 参数 说明 type 消息类型,SubscriptionConfirmation。 signature 签名信息。 签名字段包括message,message_id,subscribe_url,timestamp,topic_urn和type,具体签名信息校验,请参见校验消息签名。 topic_urn 主题的唯一标识,表示消息归属的主题。 message_id 消息唯一标识。 signature_version 签名的版本信息,目前是V1。 message 订阅确认消息的描述。 subscribe_url 订阅确认需要访问的URL。 signing_cert_url 用于消息签名的证书URL,不需要鉴权,可直接访问。 timestamp 消息第一次发送的时间戳。 HTTP(S)订阅确认消息样例如下: { "subscribe_url": "https://console.******.com/smn/subscription/confirm?token=0a419ac94f80f2c62f14c01e34ae5dfcf6b0b92ef46241218eaae5b4cb90d5d423cf104593284665a1f98691b1576976785114fb4408450e8de153b9f1******&topic_urn=urn:smn:region01:0a419ac94f80f2c62f14c01e34******:test_******®ion=region01®ion_id=region01", "signature": "W/DQSiqpRkY6En0jNaFtCYOpmUjMhzoJIdMPLhnRv37iPzNhH+SxlievFoUIyS29z7Ig4hL/ECWNfGrRhTqoasiAeOaXOjoRNoQ73YfyqWm7x7OdX+2c202zxaOS5GcsUHohxAS+wCYd6W6aVhx6eQpWzpzLwrGgE+iPmsd5I00HXIBeZEeBx/VuoqkPyBDnSvGNNDTJ2gw+fL7XuKqf/DUUjjI8dkPsp3gAcETe/XMgf3UTMFDvLLrq2fAZVhr/jMR/9m81PwuDs1k9i3iBxT67afzmQ1AhY/a/ayQX7Fmwf/FBpehG1o8e98lXAZFS2nzhvTpttawUFG8Z82******", "topic_urn": "urn:smn:region01:0a419ac94f80f2c62f14c01e34******:test_******", "message_id": "54bb04eddfc842e9b44ca36393f77cd3", "signature_version": "v1", "type": "SubscriptionConfirmation", "message": "You are invited to subscribe to topic: urn:smn:regionid:0a419ac94f80f2c62f14c01e34******:test_******. To confirm this subscription, please visit the subscribe_url included in this message. The subscribe_url is valid only within 48 hours.", "signing_cert_url": "https://smn.region01.******.com/smn/SMN_region01_3190c26a56fb435f9882e3435b******.pem", "timestamp": "2024-07-10T09:43:44Z" }
  • HTTP(S)推送消息的格式 HTTP(S)订阅终端订阅确认后,终端将收到SMN推送的消息,下面将描述HTTP Content信息,它是JSON串,具体字段说明如表3所示。 表3 HTTP(S)推送消息的格式参数说明 参数 说明 type 消息类型,Notification。 signature 签名信息。 签名字段包括message,message_id,subject, timestamp,topic_urn和type,具体签名信息校验,如果subject不存在,则不参与校验,请参见校验消息签名。 subject 消息标题。 topic_urn 主题的唯一标识,表示消息归属的主题。 message_id 消息唯一标识。 signature_version 签名的版本信息,目前是V1。 message 订阅推送消息的描述。 unsubscribe_url 通过访问该链接可以取消终端订阅。 signing_cert_url 用于消息签名的证书URL。 timestamp 消息第一次发送的时间戳。 HTTP(S)推送消息样例如下: { "signature": "WmSQ2/0kp2v2u2T33lMqKYrrLxnJoW2NHqIy5QowDuHH3y+HvhCNlCgHDUiAGpb3suCXJm16hWF+EJAYR+tPaTY1q0N3p0p+oBbhlD30fOTxRNsEWRAg73k4qArmQajhdDZOtd57xelQiNhzl2r6iCs0en4kR2iY78zZM/9caZQGBTlNcjkd2lyXYP6aSc7MOgxTsYrRus0A6yipD3zsUA7TvTdfsauAe2hZLR5W0l+um+S3ytT7sA1CMlIJPBXHP5WlqS4iMAeivmufZv7T+G43DbwWfw/seKnK6uFKWd214oqsY2/oLY3C4dcyLdvsy0/7/W8zvxXbgHeSL4******", "subject": "SMN", "topic_urn": "urn:smn:region01:0a419ac94f80f2c62f14c01e34******:test_******", "message_id": "d84bd6629ef04513ad2e37bffd6e17cb", "signature_version": "v1", "type": "Notification", "message": "{\"enterpriseProjectId\": \"0\", \"eventTime\": \"2019-08-12 22:40:55.040632\", \"chargingMode\": \"postPaid\", \"cloudserviceType\": \"xxx.service.type.bandwidth\", \"eventType\": 1, \"regionId\": \"region01\", \"tenantId\": \"057eefe55400d2742f8cc00178******\", \"resourceType\": \"xxx.resource.type.bandwidth\", \"resourceSpecCode\": \"19_bgp\", \"resourceSize\": 10, \"resourceId\": \"e091f1b1-08ef-4e2b-a27e-f85e4c******\", \"resouceSizeMeasureId\": 15, \"resourceName\": \"elbauto_2019_08_13_06_40_46\"}", "unsubscribe_url": "https://console.******.com/smn/subscription/unsubscribe?region=region01®ion_id=region01&subscription_urn=urn:smn:region01:0a419ac94f80f2c62f14c01e34******:test_******:23cf104593284665a1f98691b1******", "signing_cert_url": "https://smn.region01.******.com/smn/SMN_region01_3190c26a56fb435f9882e3435b******.pem", "timestamp": "2024-07-10T09:45:00Z" }
  • 操作场景 接收SMN服务发送的HTTP(S)消息时,终端证书的CN名称请参考业界规范,部分特殊字符可能导致https消息发送失败。 在互联网上传递未加密的http协议消息内容存在信息泄漏风险,推荐用户终端添加订阅时对接通道优先使用https类型。 描述SMN服务向HTTP(S)终端发送消息的格式,您可以通过消息头部信息中的消息类型来区分消息格式。消息格式包括:HTTP(S)订阅确认消息的格式、HTTP(S)推送消息的格式和HTTP(S)取消订阅消息的格式三种消息格式,HTTP/HTTPS协议均为POST方式。 当SMN服务向HTTP(S)终端发送消息时,头部包括请求X-SMN-MESSAGE-TYPE,X-SMN-MESSAGE-ID,X-SMN-TOPIC-URN,如表1所示。 表1 消息HTTP(S)头部参数说明 参数 说明 X-SMN-MESSAGE-TYPE 消息类型,消息类型分别有: SubscriptionConfirmation Notification UnsubscribeConfirmation X-SMN-MESSAGE-ID 消息唯一标识。 X-SMN-TOPIC-URN 主题的唯一标识,表示消息归属的主题。 关于HTTP(S)头部字段的说明: RFC 7230 章节3.2中规定,HTTP(S)头部的字段名称不区分大小写。 RFC 7540 章节8.1.2中规定,对于支持HTTP/2的服务端,头部字段信息需要统一改为全小写。 对于用户自定义的HTTP(S)头部字段,SMN也将采用上述的处理策略。 用户如果从HTTP(S)头部中获取相关字段,建议采用不区分大小写的方式。
  • 查看访问日志 当您配置了消息传输日志,可以查看消息传输日志的详细信息。 日志显示格式如下: {"message_id":"$message_id","project_id":"$project_id","topic_urn":"$topic_urn","subscriber_urn":"$subscriber_urn","protocol_name":"$protocol_name","endpoint":"$endpoint","status":"$status","http_code":$http_code,"create_time":"$create_time","send_time":"$send_time"} 不支持修改日志格式。日志字段说明如表1所示。 表1 字段说明 参数 参数类型 描述 message_id String 消息ID。 project_id String 项目ID。 topic_urn String Topic的唯一的资源标识 subscriber_urn String 订阅者的唯一资源标识。 protocol_name String 不同协议对应不同的endpoint(接受消息的接入点)。目前支持的协议包括: “email”:邮件传输协议,endpoint为邮箱地址。 “sms”:短信传输协议,endpoint为手机号码。 “functiongraph” FunctionGraph(函数)传输协议,endpoint为一个函数 “functionstage”:。FunctionStage(工作流)传输协议,endpoint为一个 函数工作流 “http”、“https”:HTTP/HTTPS传输协议,endpoint为URL。 endpoint String 接受消息的接入点。 status String 消息状态。目前包括以下状态: “DELIVERED”:已送达。 “FAIL_DELIVERED”:发送失败。 “REJE CTS ”:已拒绝。触发流控机制。 http_code Integer HTTP返回码,仅支持HTTP/HTTPS协议消息。 create_time String 消息创建时间。时间格式为UTC时间,YYYY-MM-DDTHH:MM:SSZ。 send_time String 消息发送时间。时间格式为UTC时间,YYYY-MM-DDTHH:MM:SSZ。
  • 日志示例 {"message_id":"1ae49922602a42fc83acb9689a2eb5f4","project_id":"5a9f32e4f1ec4bbe9695ff9da51c2925","topic_urn":"urn:smn:regionid:5a9f32e4f1ec4bbe9695ff9da51c2925:demo","subscriber_urn":"urn:smn:regionid:5a9f32e4f1ec4bbe9695ff9da51c2925:demo:b55c3c6fa7cd471b9f24818d530a8740","protocol_name":"https","endpoint":"https://127.0.0.1:443/https","status":"DELIVERED","http_code":200,"create_time":"2022-11-01T00:00:00Z","send_time":"2022-11-01T00:00:10Z"} 以上日志示例对应的字段如下: 表2 日志示例对应的字段 参数 示例 message_id 1ae49922602a42fc83acb9689a2eb5f4 project_id 5a9f32e4f1ec4bbe9695ff9da51c2925 topic_urn urn:smn:regionid:5a9f32e4f1ec4bbe9695ff9da51c2925:demo subscriber_urn urn:smn:regionid:5a9f32e4f1ec4bbe9695ff9da51c2925:demo:b55c3c6fa7cd471b9f24818d530a8740 protocol_name https endpoint https://127.0.0.1:443/https status DELIVERED http_code 200 create_time 2022-11-01T00:00:00Z send_time 2022-11-01T00:00:10Z