华为云用户手册

  • Go语言 package demo import ( "bytes" "crypto" "crypto/rsa" "crypto/x509" "encoding/base64" "encoding/json" "encoding/pem" "fmt" "io/ioutil" ) type Message struct { Signature string `json:"signature"` Subject *string `json:"subject"` TopicUrn string `json:"topic_urn"` MessageId string `json:"message_id"` SignatureVersion string `json:"signature_version"` Type string `json:"type"` Message string `json:"message"` SubscribeUrl string `json:"subscribe_url"` UnsubscribeUrl string `json:"unsubscribe_url"` SigningCertUrl string `json:"signing_cert_url"` Timestamp string `json:"timestamp"` } func VerifyMessage(pemFile string, message string) bool { msg := Message{} err := json.Unmarshal([]byte(message), &msg) if err != nil { fmt.Println("Convert json to struct failed") return false } pemContent, err := ioutil.ReadFile(pemFile) if err != nil { fmt.Println("Read pem file failed") return false } certDerblock, _ := pem.Decode(pemContent) if certDerblock == nil { fmt.Println("Decode pem file failed") return false } cert, err := x509.ParseCertificate(certDerblock.Bytes) if err != nil { fmt.Println("Parse cert failed") return false } msgString := buildMessage(&msg) msgHash := crypto.SHA256.New() msgHash.Write([]byte(msgString)) msgHashSum := msgHash.Sum(nil) decodeSign, _ := base64.StdEncoding.DecodeString(msg.Signature) publicKey := cert.PublicKey.(*rsa.PublicKey) err = rsa.VerifyPK CS 1v15(publicKey, crypto.SHA256, msgHashSum, decodeSign) if err != nil { fmt.Println("Verify failed") return false } else { fmt.Println("Verify success") return true } } func buildMessage(msg *Message) string { if msg.Type == "Notification" { return buildNotificationMessage(msg) } else if msg.Type == "SubscriptionConfirmation" || msg.Type == "UnsubscribeConfirmation" { return buildSubscriptionMessage(msg) } return "" } func buildNotificationMessage(msg *Message) string { buf := bytes.Buffer{} buf.WriteString("message\n" + msg.Message + "\n") buf.WriteString("message_id\n" + msg.MessageId + "\n") // msg中存在Subject字段不存在的场景,需要特殊处理 if msg.Subject != nil { buf.WriteString("subject\n" + *msg.Subject + "\n") } buf.WriteString("timestamp\n" + msg.Timestamp + "\n") buf.WriteString("topic_urn\n" + msg.TopicUrn + "\n") buf.WriteString("type\n" + msg.Type + "\n") return buf.String() } func buildSubscriptionMessage(msg *Message) string { buf := bytes.Buffer{} buf.WriteString("message\n" + msg.Message + "\n") buf.WriteString("message_id\n" + msg.MessageId + "\n") buf.WriteString("subscribe_url\n" + msg.SubscribeUrl + "\n") buf.WriteString("timestamp\n" + msg.Timestamp + "\n") buf.WriteString("topic_urn\n" + msg.TopicUrn + "\n") buf.WriteString("type\n" + msg.Type + "\n") return buf.String() } 该示例代码已在go 1.15版本上测试通过。
  • 支持审计的关键操作列表 在您的账户中启用 云审计 服务后,当 SMN 服务的API被调用时,日志文件将跟踪记录该操作,并依据时间和数据的变化将日志文件转储到对象存储桶。 如果您在没有登录的情况下调用SMN的取消订阅(Unsubscribe)操作,云审计则不会记录这些操作。例如,当您需要取消订阅时,在电子邮件通知中单击取消订阅的链接,此时会在未登录的情况下调用Unsubscribe,这种情况下您的取消订阅操作则不会被云审计记录。 云审计支持的 消息通知 服务操作列表如表1所示。 表1 云审计支持的SMN操作列表 操作名称 资源类型 事件名称 创建主题 topic createTopic 删除主题 topic deleteTopic 更新主题 topic updateTopic 更新主题策略 topic updateTopicAttribute 删除所有主题策略 topic deleteTopicAttributes 删除指定名称的主题策略 topic deleteTopicAttributeByName 添加订阅 subscription subscribe 删除订阅 subscription delsubscribe 创建消息模板 message_template createMessageTemplate 批量创建消息模板 message_template batchCreateMessageTemplate 更新消息模板 message_template updateMessageTemplate 删除消息模板 message_template deleteMessageTemplate 创建短信签名 sms createSmsSign 删除短信签名 sms deleteSmsSign 更新短信回调事件 sms updateSmsEvent 父主题: 记录消息通知服务
  • 操作场景 消息模板指消息的固定格式。如果您要发布的消息内容丰富,并且这条消息需要多次发布,每次发布时需要变更的内容极少,此时您可以套用已创建的消息模板向订阅者发送消息。 在相同的消息模板名称下面,可创建一个或多个不同协议类型的消息模板来适配不同协议的订阅者,但必须包含一个Default协议类型的模板。不同协议类型的消息模板可以设置不同的模板内容,使用{tag}占位符代替变量。如果没有预置的Default协议的模板,将不允许发送该模板。 使用模板格式发送消息时,需要选择模板名称,名称选定后,系统会按照Default、 SMS 、Email、HTTP、HTTPS、FunctionGraph(函数)、FunctionGraph(工作流)的协议顺序,将该模板名称下不同协议的所有模板内容中的{tag}标签列出,重复的{tag}只列出一次,并在右侧显示拥有该{tag}的协议名称。设置{tag}值之后,消息通知服务会自动替换模板的{tag}标签为对应的参数值。如果{tag}没有设置参数值,模板内容不做替换。消息通知服务会按照模板名称和订阅者协议类型获取模板内容,如果对应订阅协议的模板内容不存在,将使用Default模板内容发送。 在这一部分中,您可以按照模板格式进行消息推送至您设定的订阅终端地址。在发送模板消息之前,您需要先创建好消息模板,关于消息模板的详细信息请参见《消息通知服务用户指南》的“消息模板管理”章节。
  • 操作场景 消息模板指消息的固定格式,发布消息时可以使用已创建的消息模板向订阅者发送消息。使用模板发送消息,发送时会自动替换模板变量为对应的参数值。 消息模板通过消息名称进行分组,消息名称下面可以根据不同的协议创建不同的模板。每个模板名称下面都必须要创建一个Default模板。当按照模板格式推送消息时,不同协议订阅者优先会选择模板名称下面对应的协议模板,如果对应的协议模板不存在,则采用默认Default的模板。如果没有预置的Default协议的模板,将不允许发送该模板。 当您需要发送模板格式的消息时,可参考本章节管理消息模板。
  • 国家(或地区)码 国家(或地区) 中文名 国家(或地区)码 Afghanistan 阿富汗 93 Albania 阿尔巴尼亚 355 Algeria 阿尔及利亚 213 American Samoa 美属萨摩亚 1684 Andorra 安道尔 376 Angola 安哥拉 244 Anguilla 安圭拉 1264 Antigua and Barbuda 安提瓜和巴布达 1268 Argentina 阿根廷 54 Armenia 亚美尼亚 374 Aruba 阿鲁巴 297 Australia 澳大利亚 61 Austria 奥地利 43 Azerbaijan 阿塞拜疆 994 Bahamas 巴哈马 1242 Bahrain 巴林 973 Bangladesh 孟加拉国 880 Barbados 巴巴多斯 1246 Belarus 白俄罗斯 375 Belgium 比利时 32 Belize 伯利兹 501 Benin 贝宁 229 Bermuda 百慕大群岛 1441 Bhutan 不丹 975 Bolivia 玻利维亚 591 Bosnia and Herzegovina 波斯尼亚和黑塞哥维那 387 Botswana 博茨瓦纳 267 Brazil 巴西 55 British Indian Ocean Territory 英属印度洋领地 246 Brunei 文莱 673 Bulgaria 保加利亚 359 Burkina Faso 布基纳法索 226 Burundi 布隆迪 257 Cambodia 柬埔寨 855 Cameroon 喀麦隆 237 Canada 加拿大 1 Cape Verde 佛得角 238 Cayman Islands 开曼群岛 1345 Central African Republic 中非共和国 236 Chad 乍得 235 Chile 智利 56 Colombia 哥伦比亚 57 Comoros 科摩罗 269 Republic Of the Congo 刚果共和国 242 Democratic Republic of the Congo 刚果民主共和国 243 Cook Islands 库克群岛 682 Costa Rica 哥斯达黎加 506 Croatia 克罗地亚 385 Curacao 库拉索 599 Cyprus 塞浦路斯 357 Czechia 捷克 420 Denmark 丹麦 45 Djibouti 吉布提 253 Dominica 多米尼克 1767 Dominican Republic 多米尼加共和国 1809 Ecuador 厄瓜多尔 593 Egypt 埃及 20 El Salvador 萨尔瓦多 503 Equatorial Guinea 赤道几内亚 240 Eritrea 厄立特里亚 291 Estonia 爱沙尼亚 372 Eswatini 史瓦帝尼王国 268 Ethiopia 埃塞俄比亚 251 Falkland Islands 福克兰群岛 500 Faroe Islands 法罗群岛 298 Fiji 斐济 679 Finland 芬兰 358 France 法国 33 French Guiana 法属圭亚那 594 French Polynesia 法属波利尼西亚 689 Gabon 加蓬 241 Gambia 冈比亚 220 Georgia 格鲁吉亚 995 Germany 德国 49 Ghana 加纳 233 Gibraltar 直布罗陀 350 Greece 希腊 30 Greenland 格陵兰岛 299 Grenada 格林纳达 1473 Guadeloupe 瓜德罗普岛 590 Guatemala 瓜地马拉 502 Guernsey 根西 44 Guinea 几内亚 224 Guinea-Bissau 几内亚比绍 245 Guyana 圭亚那 592 Haiti 海地 509 Honduras 洪都拉斯 504 Hong Kong (China) 中国香港 852 Hungary 匈牙利 36 Iceland 冰岛 354 India 印度 91 Indonesia 印度尼西亚 62 Iraq 伊拉克 964 Ireland 爱尔兰 353 Isle of Man 马恩岛 44 Israel 以色列 972 Italy 意大利 39 Ivory Coast 科特迪瓦 225 Jamaica 牙买加 1876 Japan 日本 81 Jersey 泽西岛 44 Jordan 约旦 962 Kazakhstan 哈萨克斯坦 7 Kenya 肯尼亚 254 Kuwait 科威特 965 Kyrgyzstan 吉尔吉斯斯坦 996 Laos 老挝 856 Latvia 拉脱维亚 371 Lebanon 黎巴嫩 961 Lesotho 莱索托 266 Liberia 利比里亚 231 Libya 利比亚 218 Liechtenstein 列支敦士登 423 Lithuania 立陶宛 370 Luxembourg 卢森堡 352 Macau (China) 中国澳门 853 North Macedonia 北马其顿 389 Madagascar 马达加斯加 261 Malawi 马拉维 265 Malaysia 马来西亚 60 Maldives 马尔代夫 960 Mali 马里 223 Malta 马耳他 356 Marshall Islands 马绍尔群岛 692 Martinique 马提尼克 596 Mauritania 毛里塔尼亚 222 Mauritius 毛里求斯 230 Mexico 墨西哥 52 Moldova 摩尔多瓦 373 Monaco 摩纳哥 377 Mongolia 蒙古 976 Montenegro 黑山 382 Montserrat 蒙特塞拉特岛 1664 Morocco 摩洛哥 212 Mozambique 莫桑比克 258 Myanmar 缅甸 95 Namibia 纳米比亚 264 Nauru 瑙鲁 674 Nepal 尼泊尔 977 Netherlands 荷兰 31 New Caledonia 新喀里多尼亚 687 New Zealand 新西兰 64 Nicaragua 尼加拉瓜 505 Niger 尼日尔 227 Nigeria 尼日利亚 234 Niue 纽埃岛 683 Norfolk Island 诺福克岛 672 Norway 挪威 47 Oman 阿曼 968 Pakistan 巴基斯坦 92 Palau 帕劳 680 Palestinian Territory 巴勒斯坦 970 Panama 巴拿马 507 Papua New Guinea 巴布亚新几内亚 675 Paraguay 巴拉圭 595 Peru 秘鲁 51 Philippines 菲律宾 63 Poland 波兰 48 Portugal 葡萄牙 351 Qatar 卡塔尔 974 Réunion Island 留尼汪 262 Romania 罗马尼亚 40 Rwanda 卢旺达 250 Saint Kitts and Nevis 圣基茨和尼维斯 1869 Saint Lucia 圣卢西亚 1758 Saint Pierre and Miquelon 圣皮埃尔和密克隆 508 Saint Vincent and the Grenadines 圣文森特和格林纳丁斯 1784 Samoa 萨摩亚 685 San Marino 圣马力诺 378 Sao Tome and Principe 圣多美和普林西比 239 Saudi Arabia 沙特阿拉伯 966 Senegal 塞内加尔 221 Serbia 塞尔维亚 381 Seychelles 塞舌尔 248 Sierra Leone 塞拉利昂 232 Singapore 新加坡 65 Sint Maarten (Dutch Part) 荷属圣马丁 1721 Slovakia 斯洛伐克 421 Slovenia 斯洛文尼亚 386 Solomon Islands 所罗门群岛 677 Somalia 索马里 252 South Africa 南非 27 South Korea 韩国 82 Spain 西班牙 34 Sri Lanka 斯里兰卡 94 Suriname 苏里南 597 Sweden 瑞典 46 Switzerland 瑞士 41 Taiwan (China) 中国台湾 886 Tajikistan 塔吉克斯坦 992 Tanzania 坦桑尼亚 255 Thailand 泰国 66 Timor-Leste 东帝汶 670 Togo 多哥 228 Tonga 汤加 676 Trinidad and Tobago 特立尼达和多巴哥 1868 Tunisia 突尼斯 216 Türkiye 土耳其 90 Turkmenistan 土库曼斯坦 993 Turks and Caicos Islands 特克斯和凯科斯群岛 1649 Tuvalu 图瓦卢 688 Uganda 乌干达 256 Ukraine 乌克兰 380 United Arab Emirates 阿拉伯联合酋长国 971 United Kingdom 英国 44 United States 美国 1 Uruguay 乌拉圭 598 Uzbekistan 乌兹别克斯坦 998 Vanuatu 瓦努阿图 678 Venezuela 委内瑞拉 58 Vietnam 越南 84 Virgin Islands, British 英属维尔京群岛 1284 Wallis and Futuna 瓦利斯和富图纳 681 Yemen 也门 967 Zambia 赞比亚 260 Zimbabwe 津巴布韦 263 父主题: 附录
  • 身份认证与访问控制 IAM 权限策略: 统一身份认证 (Identity and Access Management,简称IAM)是华为云提供权限管理、访问控制和身份认证的基础服务,您可以使用IAM创建和管理用户、用户组,通过授权来允许或拒绝他们对云服务和资源的访问,通过设置安全策略提高账号和资源的安全性,同时IAM为您提供多种安全的访问凭证。 消息通知服务支持通过IAM权限策略进行访问控制。IAM权限是作用于云资源的,定义了允许和拒绝的访问操作,以此实现云资源权限访问控制。通过IAM,您可以在华为云账号中给员工创建IAM用户,并授权控制他们对华为云资源的访问范围 管理员创建IAM用户后,需要将用户加入到一个用户组中,IAM可以对这个组授予所需的权限,组内用户自动继承用户组的所有权限。SMN支持的系统权限与策略,请参见权限管理。 主题策略: 主题创建者拥有设置主题访问策略的权限。通过主题策略的设置,您可授权或拒绝云服务或其他用户对主题资源进行特定类型操作,如查询主题详情、发布消息等。授权其他用户后,主题创建者依然可以操作该主题。 详情请参见主题策略。 父主题: 安全
  • 责任共担 华为云秉承“将公司对网络和业务安全性保障的责任置于公司的商业利益之上”。针对层出不穷的 云安全 挑战和无孔不入的云安全威胁与攻击,华为云在遵从法律法规业界标准的基础上,以安全生态圈为护城河,依托华为独有的软硬件优势,构建面向不同区域和行业的完善云服务安全保障体系。 安全性是华为云与您的共同责任,如图1所示。 华为云:负责云服务自身的安全,提供安全的云。华为云的安全责任在于保障其所提供的 IaaS、PaaS 和 SaaS 类云服务自身的安全,涵盖华为云数据中心的物理环境设施和运行其上的基础服务、平台服务、应用服务等。这不仅包括华为云基础设施和各项云服务技术的安全功能和性能本身,也包括运维运营安全,以及更广义的安全合规遵从。 租户:负责云服务内部的安全,安全地使用云。华为云租户的安全责任在于对使用的 IaaS、PaaS 和 SaaS 类云服务内部的安全以及对租户定制配置进行安全有效的管理,包括但不限于虚拟网络、 虚拟主机 和访客虚拟机的操作系统,虚拟防火墙、API 网关和高级安全服务,各项云服务,租户数据,以及身份账号和密钥管理等方面的安全配置。 《华为云安全白皮书》详细介绍华为云安全性的构建思路与措施,包括云安全战略、责任共担模型、合规与隐私、安全组织与人员、基础设施安全、租户服务与租户安全、工程安全、运维运营安全、生态安全。 图1 华为云安全责任共担模型 父主题: 安全
  • 模板变量 创建消息模板时,在消息模板里设置的变量。在使用消息模板发送消息时,可以使用参数值来替换此变量。 如:“The Arts and Crafts Exposition will be held from {startdate} through {enddate}. We sincerely invite you to join us.”其中,“{startdate}”和“{enddate}”即为模板变量。
  • URN URN是SMN用来标识资源的字符串,目前存在以下几种类型。 主题URN 创建主题后,SMN将为该主题分配的唯一资源标识,其中包括服务名称(SMN)、区域名称、项目ID和主题名称。形如:urn:smn:region:cffe4fc4c9a54219b60dbaf7b586e132:Mytopic。主题URN将作为创建主题时使用的API调用的一部分返回。无论何时发布者或者订阅者需要对该主题执行任何操作,都应引用该唯一主题URN。 订阅URN 成功订阅主题后,由系统生成的订阅者唯一资源标识,其中包括服务名称(SMN)、区域名称、项目ID、主题名称、订阅ID等。形如:urn:smn:region:cffe4fc4c9a54219b60dbaf7b586e132:Mytopic:5293b436967f450abc51e0c36347b27a。在您确认订阅和取消订阅时,页面会显示订阅URN,方便您确认是否操作正确。
  • 订阅者 消息订阅者,从主题接收消息的订阅终端。 添加订阅时,用户可以根据需要选择不同的传输协议,每种协议对应不同类型的订阅者,具体对应关系如下所示: 邮件传输协议,订阅者为邮箱地址。 短信传输协议,订阅者为手机号码。 HTTP/HTTPS传输协议,订阅者为URL。 FunctionGraph(函数)传输协议,订阅者为一个函数。 FunctionGraph(工作流)传输协议,订阅者为由一组函数编排成的工作流。
  • 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:tag:create √ √ × 设置主题策略 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使用异步方式推送消息,不保证消息送达的时效性。如果业务要求消息准实时送达,请慎重考虑是否使用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小时内有效,用户需要及时在手机端、邮箱或其他协议终端确认订阅。
  • 消息通知服务的主题名称有何格式要求? 主题名称不能超过255个字符,允许使用字母数字字符以及连字符(-)和下划线(_)。 一个账户中的主题名称必须唯一,删除主题后,可以重新使用该主题名称。 创建主题后,主题名称为主题的唯一标识,一旦创建后不能再修改主题名称。SMN将为该主题分配唯一的URN,其中包括服务名称(SMN)、区域名称、项目ID和主题名称。URN将作为创建主题时使用的API调用的一部分返回。无论何时发布者或者订阅者需要对该主题执行任何操作,都应引用该唯一主题URN。
  • 是否会保证将消息传送到订阅的终端节点? SMN向终端节点推送消息时,使用异步方式送达,不保证消息送达的时效性。如果业务要求消息准实时送达,请慎重考虑是否使用SMN服务。 如果订阅终端节点可以送达,消息通知服务会确保消息传送到订阅终端节点。 如果订阅终端节点无法送达,消息通知服务会将发送失败的消息保存到失败的消息队列尾部,等待下次被发送。如果发送失败次数超过6次,消息将直接丢弃,不再保存到失败的消息队列,且不会给用户发送“消息发送失败”的相关信息。 失败的消息队列中的消息处理间隔时间是不确定的,它取决于失败的消息队列的长度。一般会在数小时之内处理完成,如果失败消息队列中的内容太多,则会在一天之内处理完成。 SMN向HTTP(S)订阅终端发送消息的超时时间为5s,即响应时长超过5s后,SMN会认为连接超时发送失败。 指定时间段内如果多次发送失败,则会加入到黑名单中,加入到黑名单的订阅终端SMN不再向其发送消息。 黑名单中的订阅终端会在5-10min后自动移除,移除后SMN能够正常向该订阅终端发送消息。
  • 消息通知服务支持的传输协议有哪些? 消息通知服务支持的协议有“邮件”、“短信”、“HTTP”和“HTTPS”、“FunctionGraph(函数)”、“FunctionGraph(工作流)”等。 “邮件”:消息以电子邮件形式发送到订阅的邮箱地址。 “短信”:消息以短信文本消息发送到订阅的电话号码。 “HTTP”、“HTTPS”: 消息以HTTP/HTTPS请求的形式发送到订阅的URL,目前只支持公网域名或者公网IP地址。 “FunctionGraph(函数)”:使用已发布的消息的负载调用订阅的FunctionGraph(函数)终端。 “FunctionGraph(工作流)”:使用已发布的消息触发执行订阅的FunctionGraph(工作流)终端。 语音通知:将消息转化为语音,通知到订阅的电话号码。消息内容只支持云服务推送,不支持用户直接发送语音消息。 语音只支持中国大陆部分地区拨打,具体支持地区请参考语音通话服务区域限制。 钉钉群消息:将消息通过钉钉机器人发送到钉钉群。不可@群内某人。 企业微信群消息:将消息通过企业微信群机器人发送到企业微信群。不可@群内某人。 飞书群消息:将消息通过飞书机器人发送到飞书群。不可@群内某人。 其中,“语音通知”、“钉钉群消息”、“企业微信群消息”、“飞书群消息”当前是公测功能,如果需要使用请提交工单申请开通公测。 开通公测后,会导致用户当前token失效,需要重新登录才能继续使用(使用API调用时,需要重新获取token)。 企业微信群消息,钉钉群消息,飞书群消息有发送条数限制和接收方系统故障情况,可能会导致消息发送失败。 当出现上述原因时,SMN不保证消息成功送达。
  • 注册华为云并实名认证 如果用户已注册华为云,可直接登录管理控制台,访问消息通知服务。如果用户没有登录管理控制台的账号,请先注册华为云。 登录网站https://www.huaweicloud.com/。 单击“注册”。 进入注册页面,根据提示信息完成注册,详细操作请参见如何注册华为云管理控制台的用户? 注册成功后,系统会自动跳转至您的个人信息界面。 个人或企业账号实名认证请参考:实名认证。 注册成功后,该账号可访问华为云的所有服务,包括消息通知服务。
  • 功能介绍 表1 运行时引擎主要功能 服务分类 服务名称 服务简介 微服务开发 微服务平台 微服务平台(NUWA Runtime,简称NUWA)是一款全代管式微服务计算平台,可快速、安全地部署和扩缩容器化应用,是一个广义的Serverless平台,提供容器级别的完全托管的能力,目标是让业务看不到云。管理平台标准化业务的部署形式,业务只需要提供软件包,NUWA Runtime借助底层的弹性伸缩平台完成网络配置、双云集群部署、日志自动收集、灰度多阶段升级等。 负载均衡 负载均衡(Software/Server Load Balancer,简称SLB)基于Nginx/OpenResty构建,作为业务前置的流量开关,提供反向代理;负载均衡、路由分发、灰度分流、限流降级、访问控制、监控告警等能力。 服务发现 服务发现(NUWA Cloud Map,简称Cloud Map)是NUWA的重要组成部分,它设计的目的是作为云服务统一的服务注册发现中心,主要是为解决业务依赖环境配置繁琐的难题,具有服务注册和发现、业务故障隔离、服务路由、服务间调用关系正向设计和治理、微服务配置中心等特性。 数据库治理 数据库治理(WiseDBA)是一站式数据库管理平台与数据库专家服务,为用户提供数据库台账、自动化SQL变更、数据查询、自动化数据提取、性能分析、负载分析、数据库风险诊断等功能。 安全 访问凭证管理服务 访问凭证管理服务(Access Credential Management Service,简称ACMS)提供了微服务之间请求认证、敏感配置的托管和分发功能。 父主题: 运行时引擎简介
  • 更多操作 创建任务后,支持实例级、Schema级、sql文件级的任务执行,操作说明如表1所示。 表1 操作说明 操作 说明 批量执行 - 批量风险评估 - 刷新 - 查看详情 单击“详情”,可以执行单个sql文件,包括风险评估和对应执行的sql文件和sql语句。 风险评估:风险评估状态有高危、中危、低危、无四种状态,如果存在高危语句,请用户自行评估风险在确定是否要执行。 执行任务 执行选项: 并行执行:默认关闭,默认SQL变更任务下所有子任务都会串行执行。 预检查:默认关闭,主要是检查是否存在长事务和锁,此时任务状态为“预检查中”。 忽略重复执行的错误:默认关闭,默认在执行中遇到任何错误都会停止执行。 说明: SQL变更工具在用户单击执行按钮后会花费1分钟左右的时间对数据库进行预检查,此过程时间较长, 自行评估是否要选择。 主要是检查是否存在长事务和锁,此时任务状态为“预检查中”。 预检查成功后会自动执行,预检查失败会报出提示信息,并且任务状态重新退回“准备就绪”。 此时用户需要对数据库进行检查,是否此时负载较高,或者存在长事务,或者是否有大数据量的查询语句一直在执行未结束等等。 检查完毕后可重新单击“执行”,如果确定该问题不影响SQL语句的执行,则可单击“执行(忽略预检查)”。
  • 更多操作 表2 相关操作 操作 说明 修改环境信息 单击环境信息管理3.0列表操作列的“修改”,在弹出的窗口中重新选择环境,单击“确定”,修改环境信息。 删除环境信息 单击环境信息管理3.0列表操作列的“删除”,在弹出的提示框中单击“确定”,删除环境信息。 同步 单击环境信息管理3.0列表操作列的“同步”,在弹出的提示框中单击“确定”,将部署服务下服务环境管理中的环境信息同步至微服务平台。 撤销同步 单击环境信息管理3.0列表操作列的“撤销同步”,在弹出的提示框中单击“确定”,撤销同步的环境信息。
  • 应用场景 AppStage运行时引擎基于NUWA Runtime(NUWA全托管式微服务计算平台),提供全代管式微服务计算平台,可快速、安全地部署和扩缩容器化应用,是一个广义的Serverless平台,提供容器级别的完全托管的能力,目标是让业务看不到云。管理平台标准化业务的部署形式,业务只需要提供软件包,NUWA Runtime借助底层的弹性伸缩平台完成网络的配置、双云集群部署、日志的自动收集、灰度多阶段升级等。通过SLB负载均衡服务,提供丰富的扩展功能,可以对HTTP请求定制丰富的控制策略,同时提供负载均衡,灰度,动态路由,流控,健康检查。 父主题: 运行时引擎简介
  • 应用场景 使用SLB为高访问量业务进行流量分发 对于业务量访问较大的业务,可以通过SLB设置相应的分配策略,将访问量均匀的分到多个后端服务器处理。例如大型门户网站,移动应用市场等。 使用SLB消除单点故障 对可靠性有较高要求的业务,可以在SLB上添加多个后端服务器。SLB会通过健康检查及时发现并屏蔽有故障的服务器,并将流量转发到其他正常运行的后端服务器,确保业务不中断,例如官网,计费业务,Web业务等。 使用SLB跨可用区特性实现业务容灾部署 对可靠性和容灾有很高要求的业务,SLB可将流量跨可用区进行分发,建立实时的业务容灾部署。即使出现某个可用区网络故障,SLB仍可将流量转发到其他可用区的后端服务器进行处理,例如银行业务,警务业务,大型应用系统等。
  • 更多操作 任务创建完成后,您可以执行如表2所示的操作。 表2 相关操作 操作 说明 编辑任务 单击任务列表中的任务名称,进入任务详情页面,单击“编辑”,编辑评估模板配置信息,单击“保存”。 删除任务 单击任务列表操作列的“删除”,在弹出的提示框中单击“确定”,删除评估任务。 查看评估效果 单击任务列表操作列的“评估效果”,进入效果评估页面,查看评估详细信息,具体介绍请参见查看评估效果。 克隆任务 单击任务列表操作列的“克隆”,进入克隆任务页面,可以根据需要修改评估模板参数,单击“保存”,任务列表中生成一条评估任务。
  • 前提条件 需要具备AppStage服务运维岗位权限,权限申请操作请参见申请权限。 规划隔离域 隔离域是一个逻辑上的安全分组,为具有相同安全保护需求并互相信任的服务提供访问策略,当服务器加入到隔离域后,即受到这些访问规则的保护。在创建实例时,需要选择实例所属的隔离域,请提前规划好隔离域,具体操作请参见隔离域规划。 新服务或租户确认是否配置EPS信息。 通过AppStage申请对应服务华为云账号下的资源时,需要获取租户的EPS,如果租户没有绑定EPS,会导致在AppStage上申请资源失败。具体介绍请参见企业项目配置。
  • 更多操作 微服务注册完成后,您可以执行如表1的操作。 表1 操作说明 操作 说明 修改微服务注册信息 单击微服务列表操作列的“修改”,可以配置如下信息: 访问能力表 ACL列表 如果业务要使用ACMS的认证功能,需要在被调用方(Provider)端配置ACL列表,让相应的调用方(Consumer)端微服务可以获取Provider端微服务的认证凭据。 在ACL列表区域,单击“添加”,选择服务名称和微服务名称,单击操作列的“提交”,添加一条ACL配置。 单击ACL列表操作列的“删除”,即可删除ACL配置。 说明: 添加ACL配置时,服务名称需要输入全称进行搜索,不支持模糊查询。 添加ACL配置后,由于存在缓存机制,配置需要等待10分钟左右生效。 仅在需要使用ACMS认证的情况下才配置ACL,如果业务使用ACMS签发的证书进行HTTPS双向认证,或者仅使用了敏感配置项管理的功能,则不需要配置ACL。 删除微服务 单击微服务列表操作列的“删除”,删除微服务。
  • 更多操作 表6 相关操作 操作 说明 发布流控服务 单击流控服务列表操作列的“发布”。 您也可以在流控服务列表页面,单击待发布的服务名称,在流控服务详情页面,单击右上角的“发布”。 在弹出的提示框中单击“确定”。 发布成功后,服务发布状态列显示“已发布”。 编辑流控服务 单击流控服务列表操作列的“编辑”,在弹出的编辑窗口,单击认证密钥后的“重置”,可以重置认证密钥。 删除流控服务 单击流控服务列表操作列的“删除”,在弹出的提示框中单击“确定”,即可删除服务。 查看流控服务详情 单击流控服务名称,在流控服务详情页面,查看服务详情。
  • 开通了代表什么 开通了Cloud Map类似于放通了权限,业务的中间件、微服务等信息就可以注册上来了,并且可以在管理台上看到。如果业务没有开通直接对接Cloud Map会报错403。 对于首次接入Cloud Map的产品,Cloud Map会为其产品单独规划集群,所以开通时需要Cloud Map运维审批,可能需要创建集群耗时较长。对于已经有服务接入过Cloud Map的产品,Cloud Map已经为其规划好了集群,产品下的服务申请开通后会自动审批完成,用户在申请开通后刷新页面即可直接使用。
  • 基本概念 表1 基本概念说明 基本概念 说明 微服务 微服务是云原生应用的最佳架构, 它提倡将单一应用程序划分成一组小的服务,服务之间互相协调、互相配合,为用户提供最终价值。每个微服务运行在其独立的进程中, 微服务与微服务间采用轻量级的通信机制互相沟通。每个微服务由全功能团队独立构建、独立测试,并且能够被独立地部署到生产环境。微服务的特点:组件化、松耦合、服务自治、去中心化。 应用 完成某项完整业务场景的软件系统。应用一般由多个微服务组成,应用里面的微服务能够相互发现和调用。 NUWA框架 NUWA提供一个完整的微服务开发框架,是一个开箱即用的应用级容器,以插件的形式汇聚云服务平台能力,让开发把时间更多的花在业务代码逻辑上。 NUWA Runtime NUWA Runtime托管了一个微服务运行的所有基础设施,微服务对基础设施的所有要求,都通过IaC代码来描述。NUWA Runtime根据IaC描述,对接相关的配置服务器,通过弹性伸缩管理平台接口,完成部署。应用托管到NUWA Runtime以后,Runtime提供IaC、管理台、CLI三种方式对集群进行变更。 kubernetes 它是一个开源的,用于管理云平台中多个主机上的容器化的应用,Kubernetes的目标是让部署容器化的应用简单并且高效(powerful),Kubernetes提供了应用部署,规划,更新,维护的一种机制。 Pod Pod是Kubernetes创建或部署的最小单位。一个Pod封装一个或多个容器、存储资源、一个独立的网络IP以及管理控制容器运行方式的策略选项。 Node Node是一个执行具体工作的机器,可以是虚拟机或者物理机。Pod是部署在Node节点上的,如果Node故障,整个Pod会被调度到集群中的另外可用的Node节点上去。 工作负载 工作负载是在Kubernetes上运行的应用程序。无论您的工作负载是单个组件还是协同工作的多个组件,您都可以在Kubernetes上的一组Pod中运行它。在Kubernetes中,工作负载是对一组Pod的抽象模型,用于描述业务的运行载体,包括Deployment、StatefulSet、DaemonSet、Job、CronJob等多种类型。 无状态工作负载:即Kubernetes中的“Deployment”,无状态工作负载支持弹性伸缩与滚动升级,适用于实例完全独立、功能相同的场景,如:nginx、wordpress等。 有状态工作负载:即Kubernetes中的“StatefulSet”,有状态工作负载支持实例有序部署和删除,支持持久化存储,适用于实例间存在互访的场景,如ETCD、mysql-HA等。 创建守护进程集:即Kubernetes中的“DaemonSet”,守护进程集确保全部(或者某些)节点都运行一个Pod实例,支持实例动态添加到新节点,适用于实例在每个节点上都需要运行的场景,如ceph、fluentd、Prometheus Node Exporter等。 普通任务:即Kubernetes中的“Job”,普通任务是一次性运行的短任务,部署完成后即可执行。使用场景为在创建工作负载前,执行普通任务,将镜像上传至镜像仓库。 定时任务:即Kubernetes中的“CronJob”,定时任务是按照指定时间周期运行的短任务。使用场景为在某个固定时间点,为所有运行中的节点做时间同步。 父主题: 运行时引擎简介
  • 更多操作 部门添加成功后,您还可以进行如下表1所示的操作。 表1 更多操作 操作名称 操作步骤 编辑部门 单击待修改部门所在行“操作”列下的“编辑部门”。 修改部门信息,单击“更新”。 说明: 组织创建成功后,会默认生成一个一级部门,该一级部门不支持编辑。 删除部门 单击待删除部门所在行“操作”列下的“删除”。 单击“确认”。 说明: 删除部门前,需要先删除该部门下所有子部门,否则无法删除部门。 删除部门后,数据无法恢复,请谨慎操作。
  • 更多操作 创建产品信息完成后,您还可以执行如表1所示的操作。 表1 更多操作 操作 步骤 查看产品信息 单击产品列表中产品中文名,可查看产品详情。 编辑产品信息 说明: 仅可编辑“状态”为“草稿”的产品信息。 单击产品列表“操作”列的“编辑”。 在“编辑产品”页面编辑产品中文名(不可以编辑产品归属部门和产品英文名)。 删除产品信息 说明: 仅可删除“状态”为“草稿”的产品信息。 单击产品列表中“状态”为“草稿”的产品“操作”列的“删除”。 单击“确定”。 发布产品信息 说明: 仅可发布“状态”为“草稿”或“已下线”的产品信息。 单击产品列表“操作”列的“发布”(发布后产品无法删除,请谨慎操作)。 单击“确定”,该产品信息将发布到已购买的AppStage相关中心。 同步产品信息 说明: 发布产品信息后,如果在AppStage相关中心未同步到该产品信息,可使用此“同步”功能重新同步产品信息。 仅可同步非“草稿”状态的产品信息。 单击产品列表“操作”列的“同步”。 单击“确定”,该产品信息将同步到已购买的AppStage相关中心。 下线产品信息 说明: 下线产品需确保该产品下的服务及微服务已下线,下线后AppStage的开发中心、运维中心等中心无法使用该产品,请谨慎操作;下线后可以在“操作”列再次单击“发布”重新上线该产品信息。 单击产品列表“操作”列的“下线”。 在“下线产品”对话框输入“确定下线”,并单击“确定”。
  • 相关概念 管理员:AppStage系统级管理员为组织管理员,组织管理员可以进行的操作请参见管理员操作指南。组织管理员分为两类,具体如下: 组织管理员(租户开通者):购买AppStage的华为云主账号默认为组织管理员,作为当前应用平台云服务的开通者,除具有应用平台内套餐的订购权限外,具备当前租户下AppStage业务控制台全部的操作权限,如系统级功能的维护,如公告的新增/修改/删除、应用基础信息(产品、服务、微服务)的新增/修改/删除等。 组织管理员(非租户开通者):由组织管理员添加的企业成员,且该企业成员已申请组织管理员权限。具备AppStage业务控制台全部的操作权限,如系统级功能的维护,如公告、应用基础信息(产品、服务、微服务)等。 企业成员:由组织管理员在AppStage业务控制台添加的成员,企业成员在AppStage业务控制台的操作请参见企业成员操作指南。企业成员还可以申请各类不同的角色,从而具备对应角色的操作权限。企业成员可申请的角色以及对应的权限范围请参见权限管理。
共100000条