云服务器内容精选

  • SMN 自定义身份策略样例 如果系统预置的SMN系统策略,不满足您的授权要求,可以创建自定义身份策略。自定义身份策略中可以添加的授权项(Action)请参考身份策略授权参考。 目前华为云支持以下两种方式创建自定义身份策略: 可视化视图创建自定义身份策略:无需了解策略语法,按可视化视图导航栏选择云服务、操作、资源、条件等策略内容,可自动生成策略。 JSON视图创建自定义身份策略:可以在选择策略模板后,根据具体需求编辑策略内容;也可以直接在编辑框内编写JSON格式的策略内容。 具体创建步骤请参见:创建自定义身份策略并附加至主体。 您可以在创建自定义身份策略时,通过资源类型(Resource)元素来选择特定资源,以及条件键(Condition)元素来控制策略何时生效。支持的资源类型和条件键请参考身份策略授权参考。下面为您介绍常用的SMN自定义身份策略样例。 示例1:授权 消息通知 只读权限。 { "Version": "5.0", "Statement": [ { "Effect": "Allow", "Action": [ "smn:topic:listTopic", "smn:topic:get", "smn:topic:listAttributes", "smn:topic:listSubscriptionsByTopic", "smn:topic:listSubscriptions", "smn:template:listTemplates", "smn:template:get", "smn:tag:list", "smn:topic:listLogTank" ] } ] } 示例2:多个授权项自定义身份策略 一个自定义策略中可以包含多个授权项,且除了可以包含本服务的授权项外,还可以包含其他服务的授权项。多个授权语句策略描述如下: { "Version": "5.0", "Statement": [ { "Effect": "Allow", "Action": [ "smn:topic:listTopic", "smn:topic:listAttributes" ] }, { "Effect": "Allow", "Action": [ "ecs:cloudServers:listResizeFlavors", "ecs:cloudServers:listServerTags" ] } ] }
  • 操作步骤 登录SMN控制台。 在左侧导航栏,选择“订阅用户”。 在订阅用户列表中,选择一个为“未确认”的订阅用户。 单击订阅用户列表“操作列”的“请求订阅”。 在弹出的“请求订阅”窗口中,单击“确定”,发送该订阅的确认请求。 图1 请求订阅 获取请求订阅确认信息,确认订阅。 为了防止恶意攻击订阅终端,云平台会对订阅终端进行流控保护,触发流控规则后,消息通知服务不再发送订阅确认消息,具体的保护规则请参见订阅确认流控说明。 消息通知服务不会校验订阅终端是否真实存在。 添加订阅后,消息通知服务会向订阅终端发送订阅确认信息,信息中包含订阅确认的链接。订阅确认的链接在48小时内有效,用户需要及时在手机端、邮箱或其他协议终端确认订阅。
  • 操作步骤 不同的订阅协议对应不同的取消订阅方式: 短信取消订阅:因为短信长度有限,无法每次推送消息时候附带取消订阅的链接,用户需通过请求确认的链接进入WEB页面进行取消订阅。 具体流程如下: 添加订阅后,消息通知服务会向订阅终端发送订阅确认短信,如图1所示,短信中包含订阅确认的链接。 图1 订阅确认短信 单击短信中的确认链接 ,进入WEB页面提示“订阅成功”。 该页面下方有提示信息:如果您不希望订阅这个主题,点击“这里”取消订阅。 图2 订阅成功 单击“这里”,进入取消订阅页面,确认待取消订阅的相关信息,包含主题名称、主题URN、订阅URN。 图3 确认取消订阅 确认无误后,单击“确定”,取消订阅成功。 图4 取消订阅成功 邮件取消订阅:消息通知服务向指定邮箱地址发送电子邮件消息,其中包含取消订阅的链接,订阅者单击进入取消订阅的页面。如果取消成功,页面会显示取消订阅成功,稍后消息通知服务会向这个订阅者发送一封确认取消订阅的邮件(48小时内有效)。如果误操作了取消订阅,可以通过该消息重新订阅。 具体流程如下: 添加订阅后,消息通知服务会向指定邮箱地址发送电子邮件消息,如图5所示,邮件中包含订阅确认的链接。 图5 订阅确认邮件 单击邮件中的“订阅确认”链接 ,进入WEB页面提示“订阅成功”。 该页面下方有提示信息:如果您不希望订阅这个主题,点击“这里”取消订阅。 图6 订阅成功 单击“这里”,进入取消订阅页面,确认待取消订阅的相关信息,包含主题名称、主题URN、订阅URN。 图7 确认取消订阅 确认无误后,单击“确定”,取消订阅成功。 图8 取消订阅成功 HTTP(S)取消订阅,消息通知服务向指定的URL发送消息。消息体中包含取消订阅的链接,订阅者需要访问该链接,如果取消订阅成功,将获取HTTPS协议的200返回码,稍后消息通知服务会向这个订阅者发送一次取消订阅的消息(48小时内有效)。如果误操作了取消订阅,可以通过访问重新订阅的链接重新订阅。HTTP(S)消息头和消息体参数含义请参见HTTP(S)终端节点使用样例简介。
  • 日志示例 {"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"} 以上日志示例对应的字段如表2所示。 表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
  • 查看访问日志 当您配置了消息传输日志,可以查看消息传输日志的详细信息。 日志显示格式如下: {"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”:发送失败。 “DELIVERING”:发送中。 http_code Integer HTTP返回码,仅支持HTTP/HTTPS协议消息。 create_time String 消息创建时间。时间格式为UTC时间,YYYY-MM-DDTHH:MM:SSZ。 send_time String 消息发送时间。时间格式为UTC时间,YYYY-MM-DDTHH:MM:SSZ。
  • 发布主题消息简介 消息通知服务提供了以下三种通用的方式。 向主题发布文本消息 向主题发布JSON消息 向主题发布模板消息 一旦一条新的消息已经发布,消息通知服务试图将消息发布至每个已经向主题确认订阅的终端节点。 如果使用短信协议接收消息,对于内容很长的消息,短信长度限制为490字,超出则可能被运营商拦截。向短信终端发送消息时消息内容不能包含“[]”或者“【】”符号。 如果使用“HTTP”或“HTTPS”协议接收消息,用户的HTTP(S)要开通防火墙策略,允许SMN访问,SMN通过公网发送消息到HTTP(S)终端节点。消息通知服务会自动组装消息,用户接收到整条消息由消息头和消息体组成,具体参数含义请参考HTTP(S)消息格式。 如果使用FunctionGraph(函数)接收消息,消息中包含消息属性、消息标题、消息内容、主题URN等信息,具体参数含义请参考不同协议消息说明。 关于短信发送的流控策略,请参见“订阅确认流控说明”章节。 关于消息发送的限制,请参见“服务韧性”章节。 父主题: 发布主题消息
  • 操作步骤 登录SMN控制台。 在左侧导航栏,选择“订阅用户”。 在订阅用户页面,单击“创建订阅用户”,开始创建订阅用户。 此时将显示“创建订阅用户”页面。 图1 创建订阅用户 在“名称”框中,输入创建订阅用户名称,在“协议”下拉框中选择订阅终端支持的协议,在“订阅终端”输入框中输入对应的订阅终端,填写说明如表1所示。 表1 添加订阅参数说明 参数 说明 名称 在弹出的对话框中输入创建订阅用户的名称。 协议 在下拉框中选择需要订阅终端支持的协议,提供的选项为“短信”、“邮件”、“HTTP”、“HTTPS”。 说明: 当订阅终端协议选择短信”或“邮件”时,可勾选“从 IAM 用户添加”,订阅终端可在IAM用户中进行选择,无需进行输入。 订阅终端 订阅的终端地址,短信、邮件、HTTP以及HTTPS终端支持批量输入,批量添加时,每个终端地址占一行。最多可输入10个终端。 选择“短信”终端,请输入有效手机号码。 输入规则为[+] [国家码][手机号码]。国内手机号码可省略[+]或[+] [国家码]。 例如: +8600000000000 +8600000000001 选择“邮件”终端,请输入有效的邮箱地址。 例如: username@example.com username2@example.com 选择“HTTP”终端,请输入公网网址。 例如: http://example.com/notification/action 选择“HTTPS”终端,请输入公网网址。 例如: https://example.com/notification/action 请求头 当协议选择“HTTP”和“HTTPS”时,可配置请求头。输入请求头的Key和Value值。 Key应该满足以下条件: 不区分大小写且不能重复。 必须以x-开头但不能以x-smn开头。 只能由数字、英文字母或中划线(-)组成,中划线不能作为结尾且不能连续出现。 分组 订阅用户的分组。 单击“确定”。创建订阅用户成功。
  • 发布消息 向已创建的主题发布消息,根据添加的不同订阅,会出现以下场景。 发布消息详细操作步骤请参见发布主题消息简介。 场景一: 消息属性字段为: { "name": "week", "type": "STRING", "value": [ "sunday" ] } 发送结果:在消息中只规定了消息属性字段中的week字段,而没有规定time字段,因此本条消息只会发送给订阅A。 场景二: 消息属性字段为: [ { "name": "week", "type": "STRING", "value": [ "sunday" ] }, { "name": "time", "type": "STRING", "value": [ "night" ] } ] 发送结果:此条消息含义为发送给周日晚上接收消息的订阅者,订阅A和订阅B均不符合条件。因此本条消息不会发送给订阅A和订阅B。 场景三: 消息属性字段为: [ { "name": "week", "type": "STRING", "value": [ "monday" ] }, { "name": "time", "type": "STRING", "value": [ "night" ] } ] 发送结果:此条消息含义为发送给周一晚上接收消息的订阅者,订阅A不符合条件。因此本条消息只发送给订阅B。 场景四: 消息属性字段为: [ { "name": "week", "type": "STRING", "value": [ "sunday" ] }, { "name": "time", "type": "STRING", "value": [ "morning" ] } ] 发送结果:此条消息含义为发送给周日早上接收消息的订阅者,订阅A符合条件,订阅B不符合条件。因此本条消息不会发送给订阅B。 场景五: 消息属性字段为: [ { "name": "week", "type": "STRING_ARRAY", "value": [ "sunday", "monday" ] }, { "name": "time", "type": "STRING_ARRAY", "value": [ "morning", "night" ] } ] 发送结果:此条消息含义为发送给周日或周一的早上或晚上接收消息的订阅者,订阅A和订阅B均符合条件。因此本条消息会发送给订阅A和订阅B。 场景六: 订阅筛选策略字段没有配置。 发送结果:带有任何消息属性的消息不会发送给未配置订阅筛选策略的订阅。
  • 添加订阅 在已创建的主题下添加以下两种订阅。添加订阅详细操作步骤请参见订阅主题。 用户在主题下添加订阅终端A,并且希望在每周周日和周三的早上或下午将消息通知给A。则用户可以在创建订阅A时配置如下订阅筛选策略: { "filter_polices": [ { "name": "week", "string_equals": [ "sunday", "wednesday" ] }, { "name": "time", "string_equals": [ "morning", "afternoon" ] } ] } 用户在主题下添加订阅终端B,并且希望在每周周一、周二和周三的晚上或深夜将消息通知给B。则用户在创建订阅B时配置如下订阅筛选策略: { "filter_polices": [ { "name": "week", "string_equals": [ "monday", "tuesday", "wednesday" ] }, { "name": "time", "string_equals": [ "night", "midnight" ] } ] }
  • 订阅确认流控说明 为了控制用户对订阅者进行恶意的攻击,云平台对添加订阅时发送订阅确认消息进行了流控。流控策略既适用于从控制台发送订阅确认消息也适用于通过调用API发送订阅确认消息。 根据不同的协议有不同的流控策略: 对于一个邮件订阅者,1个小时最多允许发送20次订阅确认消息,2天最多允许发送40次订阅确认消息。如果超过1小时的流控阈值,则SMN会在接下来的1小时内不对该终端发送订阅确认邮件。如果超过2天的流控阈值,将7天之内不对这个邮件订阅者发送订阅确认邮件。如果这个邮件订阅者对这个用户的确认信息进行了确认,之前的流控状态将清空置零。 对于一个短信订阅者,1个小时最多允许发送10次订阅确认消息,2天最多允许发送20次订阅确认,如果超过1小时的流控阈值,则SMN会在接下来的1小时内不对该终端发送订阅确认短信。如果超过2天的流控阈值,将7天之内不对这个手机订阅者发送订阅确认短信。如果这个手机订阅者对这个用户的确认信息进行了确认,之前的流控状态将清空置零。 对于一个HTTP(S)订阅者,10分钟最多允许发送200次订阅确认消息。 以上参数仅供参考,SMN服务会根据实际业务情况进行调整。 父主题: 订阅管理
  • 操作场景 消息模板指消息的固定格式。如果您要发布的消息内容丰富,并且这条消息需要多次发布,每次发布时需要变更的内容极少,此时您可以套用已创建的消息模板向订阅者发送消息。 在相同的消息模板名称下面,可创建一个或多个不同协议类型的消息模板来适配不同协议的订阅者,但必须包含一个Default协议类型的模板。不同协议类型的消息模板可以设置不同的模板内容,使用{tag}占位符代替变量。如果没有预置的Default协议的模板,将不允许发送该模板。 使用模板格式发送消息时,需要选择模板名称,名称选定后,系统会按照Default、 SMS 、Email、HTTP、HTTPS、FunctionGraph(函数)、FunctionGraph(工作流)的协议顺序,将该模板名称下不同协议的所有模板内容中的{tag}标签列出,重复的{tag}只列出一次,并在右侧显示拥有该{tag}的协议名称。设置{tag}值之后,消息通知服务会自动替换模板的{tag}标签为对应的参数值。如果{tag}没有设置参数值,模板内容不做替换。消息通知服务会按照模板名称和订阅者协议类型获取模板内容,如果对应订阅协议的模板内容不存在,将使用Default模板内容发送。 在这一部分中,您可以按照模板格式进行消息推送至您设定的订阅终端地址。在发送模板消息之前,您需要先创建好消息模板,关于消息模板的详细信息请参见《消息通知服务用户指南》的“消息模板管理”章节。
  • SMN自定义策略样例 如果系统预置的SMN权限,不满足您的授权要求,可以创建自定义策略。自定义策略中可以添加的授权项(Action)请参考策略授权参考。 目前华为云支持以下两种方式创建自定义策略: 可视化视图创建自定义策略:无需了解策略语法,按可视化视图导航栏选择云服务、操作、资源、条件等策略内容,可自动生成策略。 JSON视图创建自定义策略:可以在选择策略模板后,根据具体需求编辑策略内容;也可以直接在编辑框内编写JSON格式的策略内容。 具体创建步骤请参见:创建自定义策略。下面为您介绍常用的SMN自定义策略样例。 示例1:授权用户创建主题 { "Version": "1.1", "Statement": [ { "Effect": "Allow", "Action": [ "smn:topic:create" ] } ] } 示例2:拒绝用户删除主题 拒绝策略需要同时配合其他策略使用,否则没有实际作用。用户被授予的策略中,一个授权项的作用如果同时存在Allow和Deny,则遵循Deny优先原则。 如果您给用户授予SMN FullAccess的系统策略,但不希望用户拥有SMN FullAccess中定义的删除主题权限,您可以创建一条拒绝删除主题的自定义策略,然后同时将SMN FullAccess和拒绝策略授予用户,根据Deny优先原则,则用户可以对SMN执行除了删除主题外的所有操作。拒绝策略示例如下: { "Version": "1.1", "Statement": [ { "Effect": "Deny", "Action": [ "smn:topic:delete" ] } ] } 示例3:多个授权项策略 一个自定义策略中可以包含多个授权项,且除了可以包含本服务的授权项外,还可以包含其他服务的授权项,可以包含的其他服务必须跟本服务同属性,即都是项目级服务或都是全局级服务。多个授权语句策略描述如下: { "Version": "1.1", "Statement": [ { "Effect": "Allow", "Action": [ "smn:topic:create", "smn:tag:create", "smn:application:create" ] }, { "Effect": "Allow", "Action": [ "elb:certificates:create", "elb:whitelists:create", "elb:pools:create", "elb:members:create", "elb:healthmonitors:create", "elb:l7policies:create", "elb:listeners:create", "elb:loadbalancers:create" ] } ] }
  • 约束与限制 表1 主题限制项及限制值 限制项 限制值 说明 主题数量 3000个 超过该限制,主题无法创建。 主题名称 1-255字符 超过该限制,主题无法创建。 显示名 192字节或64个中文字 超过该限制,主题无法创建。 创建标签数 20个 超过该限制,主题无法创建。 标签的键长度 128字符 超过该限制,标签无法创建。 标签的值长度 255字符 超过该限制,标签无法创建。 发布文本消息标题 512字节 无 发布文本消息内容 256KB 短信长度限制为490字,超出则可能被运营商拦截。向短信终端发送消息时消息内容不能包含“[]”或者“【】”符号。 发布JSON消息内容 256KB 无 发布模板消息内容 256KB 无
  • 订阅用户 SMN的终端节点订阅主题且确认订阅后,终端节点才能够接收到向该主题发布的所有消息。当用户在多个区域均需要创建同样的订阅时,终端节点会多次收到确认订阅信息,且需要在每一条订阅消息内确认订阅。为防止这种场景下对终端节点的消息干扰,建议使用订阅用户功能,一次创建用户后即可导入其他区域的订阅。 订阅用户是提供跨区域统一管理订阅者信息的功能。订阅者可以先创建多个订阅用户,当主题需要添加订阅时,再将订阅用户批量添加到该主题上。
  • 消息模板 消息模板指消息的固定格式,发布消息时可以使用已创建的消息模板向订阅者发送消息。使用模板发送消息,发送时会自动替换模板变量为对应的参数值。 消息模板通过消息名称进行分组,消息名称下面可以根据不同的协议创建不同的模板。每个模板名称下面都必须要创建一个Default模板。当按照模板格式推送消息时,不同协议订阅者优先会选择模板名称下面对应的协议模板,如果对应的协议模板不存在,则采用默认Default的模板。如果没有预置的Default协议的模板,将不允许发送该模板。