华为云用户手册

  • 实例计费方式更改 支持实例包周期和按需计费方式互换。注意包周期转按需计费生效的前提是包周期已到期。 在左侧导航栏单击“实例管理”。 在需要更改计费方式的实例上,单击“更多”,选择“转包周期”或“转按需”。 按需转包周期:选择续费时长,单击“去支付”,完成付款即可。 包周期转按需:包周期转按需生效的前提是包周期已到期,包周期转按需操作可在包周期到期前或包周期到期后的冻结期内执行。单击“转按需”即可。
  • 操作步骤 进入购买实例页面。 除墨西哥城一、北京一区域外,在其他区域购买实例后默认开启ELB负载。开启ELB负载的实例暂不支持安全组配置,如需禁用部分IP请使用访问控制策略。 开启ELB负载:ELB作为网关入口的负载均衡器,入口支持跨VPC访问。但在开启公网入口时,弹性IP地址由网关随机分配,不支持选择已有弹性IP地址。 根据下表参数说明,配置实例参数。 表1 API网关实例参数说明 信息项 描述 计费模式 实例收费方式,当前支持“按需计费”和“包周期”两种方式。 目前仅北京一、北京四、乌兰察布一、上海一、上海二、广州、广州-友好用户环境和贵阳一支持包周期收费方式。 区域 指APIG实例部署的区域,建议和您其他的业务部署在相同区域,这样不同的业务可以在负载内以子网方式通信,节省公网带宽成本,降低网络延时。 可用区 指同一区域内电力、网络等资源物理隔离的地理区域,一般为互相独立的机房。 APIG实例支持同时选择多个可用区,进行跨可用区部署,提升实例高可用性。 APIG不支持跨可用区迁移实例。 实例名称 实例的名称,根据规划自定义。 实例规格 当前开放基础版、专业版、企业版、铂金版实例。不同实例规格,对API请求的并发支持能力不同,具体请参考《API网关产品介绍》的规格说明章节。 说明: 目前仅上海一和北京四区域支持选择更多铂金版规格。 可维护时间窗 指允许云服务技术支持对实例进行维护的时间段。如果有维护需要,技术支持会提前与您沟通确认。 建议选择业务量较少的时间段。 企业项目 使用企业用户登录时,可选择实例所属企业项目。 有关企业项目的资源使用、迁移以及用户权限等,请参考《企业管理用户指南》。 公网入口 指允许外部服务通过弹性IP地址,调用实例创建的API。开启“公网入口”,需要绑定一个“弹性IP地址”,弹性IP地址另行收费。 说明: 在北京四、上海一、广州、贵阳一区域开启公网入口后,弹性IP地址由网关随机分配,不支持选择已有弹性IP地址。您可以根据业务预估设置合适的“入公网带宽”,入公网带宽费用按小时计算,以弹性IP服务的价格为准。 您需要使用独立域名/调试域名访问,使用调试域名访问时存在单日访问次数限制。可在创建API分组后,为分组绑定独立域名,独立域名需要解析到实例的弹性IP地址。 例如您有一个API,请求协议为HTTPS,Path为/apidemo,开启了公网访问,并为分组绑定了独立域名后,可使用https://{domain}/apidemo这个URL访问您的API。其中,{domain}表示已绑定到分组的独立域名,目标端口443可默认缺省。 公网出口 指允许实例API的后端服务部署在外部网络,APIG为实例开启公网出口。您可以根据业务预估设置合适的“出公网带宽”,出公网带宽费用按小时计算,以弹性IP服务的价格为准。 IPv6 仅在计费模式为“按需计费”时,需要配置。 如果后端服务部署在外部网络,且需要使用IPv6地址访问,则需要勾选“支持IPv6”。 说明: 目前仅北京四支持。 网络 指为实例绑定到一个VPC,并为其分配子网。 使用已创建的VPC和子网,请在下拉列表选择当前账号下创建的VPC和子网。 使用共享VPC和子网,请在下拉列表选择其他账号共享给当前账号的VPC和子网。 共享VPC基于资源访问管理(Resource Access Manager,简称RAM)服务的机制,VPC的所有者可以将VPC内的子网共享给一个或者多个账号使用。通过共享VPC功能,可以简化网络配置,帮助您统一配置和运维多个账号下的资源,有助于提升资源的管控效率,降低运维成本。有关VPC子网共享的更多信息,请参见共享VPC。 使用新的VPC和子网,请单击“控制台”,参考创建虚拟私有云创建待使用的新VPC和子网。 安全组 安全组用于设置端口访问规则,定义哪些端口允许被外部访问,以及允许访问外部哪些地址与端口。 例如,后端服务部署在外部网络,则需要设置相应的安全组规则,允许访问后端服务地址与API调用端口。 说明: 如果开启公网入口,安全组入方向需要放开80(HTTP)和443(HTTPS)端口的访问权限。 终端节点服务名称 填写终端节点服务名称。购买实例后,同步创建VPC终端节点服务,可以被终端节点连接和访问。 如果填写了终端节点服务名称,购买实例后,在实例详情中的“终端节点管理”页签下展示名称为{region}.{终端节点服务名称}.{终端节点服务ID};如果终端节点服务名称为空,购买实例后,在实例详情中的“终端节点管理”页签下展示名称为{region}.{apig}.{终端节点服务ID}。 标签 通过标签对实例资源进行标记,批量分类实例资源,实现对实例资源进行分组查询、分析及管理。如果没有标签选择可单击“查看预定义标签”创建,也可以直接输入标签键值创建。 实例创建完成后,也可以在标签管理中设置。 说明: 如您的组织已经设定API网关服务的相关标签策略,则需按照标签策略规则为实例添加标签。标签如果不符合标签策略的规则,则可能会导致创建实例失败,请联系组织管理员了解标签策略详情。 购买时长 计费模式为“包年/包月”时配置。实例的购买时长,最短1个月。 描述 实例的描述信息。 单击“立即购买”,进入实例规格确认页面。 规格确认无误后,勾选服务协议,支付费用后,开始创建实例,界面显示创建进度。
  • 购买的约束说明 创建实例存在一些约束,当您登录后无法创建实例,或者创建失败,请参考以下约束说明进行检查,并解除限制。 实例配额 同一项目ID下,一个主账号默认只能创建5个实例。如果您需要创建更多实例,可提交工单,申请修改配额。 用户权限 如果您使用系统角色相关权限,需要同时拥有“APIG Administrator”和“VPC Administrator”权限才能创建实例。 如果您使用系统策略,则拥有“APIG FullAccess”即可。 如果使用自定义策略,请参考对用户组授权。 子网中可用私有地址数量 API网关专享实例的基础版、专业版、企业版,以及铂金版分别需要3、5、6、7个私有地址。在铂金版的基础上,铂金版X依次增加4个私有地址。请确保您选择的子网段有足够多的私有地址可用,私有地址可在虚拟私有云服务的控制台查询。
  • 网络环境准备 负载 虚拟私有云(Virtual Private Cloud,简称VPC)。实例需要配置虚拟私有云(负载),在同一负载中的资源(如ECS),可以使用实例的私有地址调用API。 在创建实例时,建议配置和您其他关联业务相同负载,确保网络安全的同时,方便网络配置。 创建实例后,不支持修改虚拟私有云(负载)。 弹性公网IP 实例的API如果要允许外部调用,则需要创建一个弹性公网IP,并与实例绑定,作为实例的公网入口。 如果API的后端服务部署在公网,还需要有公网出口访问权限,这由API网关统一规划,不需要单独创建弹性公网IP。 安全组 安全组类似防火墙,控制谁能访问实例的指定端口,以及控制实例的通信数据流向指定的目的地址。安全组入方向规则建议按需开放地址与端口,这样可以保护实例的网络安全。 实例绑定的安全组有如下要求: 入方向:如果需要从公网调用API,或从其他安全组内资源调用API,则需要为实例绑定的安全组的入方向放开80(HTTP)、443(HTTPS)两个端口。 出方向:如果后端服务部署在公网,或者其他安全组内,则需要为实例绑定的安全组的出方向放开后端服务地址与API调用端口。 如果API的前后端服务与实例绑定了相同的安全组、相同的虚拟私有云,则无需专门为实例开放上述端口。
  • 配置参数说明 表1 配置参数说明 信息项 描述 策略名称 访问控制策略的名称。 类型 控制访问API的类型。 IP地址:限制调用API的IP地址。 账号名:仅适用IAM认证类型的API,限制调用API的账号名。仅支持配置账号名,对账号名及账号名下的IAM用户名做限制,不支持配置IAM用户名。 账号ID:仅适用IAM认证类型的API,限制调用API的账号ID。仅支持配置账号ID,对账号ID及账号ID下的IAM用户ID做限制,不支持配置IAM用户ID。 说明: 一个API同时绑定两种类型的访问控制策略:账户维度的账户名类型和账号ID类型。访问API时,如果同时有黑白名单,只校验白名单,校验通过则访问成功;如果只有黑名单或白名单,校验通过的结果为“且”逻辑。 一个API同时绑定三种类型的访问控制策略:IP维度的IP类型、账户维度的账号名类型和账号ID类型。访问API时,IP维度和账户维度为“且”的关系,其中一方校验失败则访问失败。(一个API同时绑定IP类型和账号名/账号ID类型的访问控制策略,这两种类型的判断逻辑与三种类型的判断逻辑相同)。 动作 包括“允许”和“禁止”。 和“类型”配合使用,允许/禁止访问API的IP地址/账号名/账号ID。 IP地址 仅当“类型”为“IP地址”时需要配置。 输入允许或者禁止访问API的IP地址,或IP地址范围。 说明: 允许或禁止访问的IP地址条数,分别可以配置最多100条。 账号名 仅当“类型”为“账号名”时需要配置。 输入允许或者禁止访问API的账号名,多个账号名之间使用英文逗号(,)隔开。 您可以单击控制台右上角的用户名,选择“我的凭证”,在“我的凭证”页面获取用户的账号名。 账号ID 仅当“类型”为“账号ID”时需要配置。 输入允许或者禁止访问API的账号ID,多个账号ID之间使用英文逗号(,)隔开。 您可以单击控制台右上角的用户名,选择“我的凭证”,在“我的凭证”页面获取用户的账号ID。
  • 后续操作 确认APIG实例已添加路由。通过同一个VPC(有扩展网段等)、对等连接等方式连接CCE负载与APIG实例的网络时,需要添加路由。 进入云容器引擎控制台,在“集群管理”页面单击已创建的CCE集群名称。 在“总览”页面的“网络信息”区域查看“容器网段”,并记录。 进入API网关控制台,在“实例管理”页面单击对应的实例名称。 在“实例信息”页面的“路由”区域查看已添加的路由与容器网段是否一致。如果不一致,请添加。 创建API,将部署在负载中的后端服务开放API。
  • 配置参数说明 表1 配置参数 参数 配置说明 策略基本信息 Broker地址 填写目标Kafka的连接地址,建立连接关系。多个地址间以英文逗号(,)隔开。 Topic主题 填写目标Kafka上报日志的主题。 Key 填写日志的Key值,表示日志存储在Kafka的指定分区,可以当成有序消息队列使用。如果Key为空,则日志分布式存储在不同的消息分区。 失败重试分配 日志推送到Kafka失败后的重试配置。 重试次数:失败后的重试次数,范围为0-5次。 重试间隔时间:失败后的重试时间间隔,范围为1-10秒。 SASL配置信息 安全协议 连接目标Kafka所使用的安全协议。 PLAINTEXT:默认接入点的用户认证协议。 SASL_PLAINTEXT:SASL用户认证协议。 SASL_SSL:SSL用户认证协议。 消息收发机制 目标Kafka的消息收发机制,默认为PLAIN。 SASL用户名 仅当“安全协议”选择“SASL_PLAINTEXT”或“SASL_SSL”时需配置。 SASL或SSL认证所使用的用户名。 SASL用户密码 仅当“安全协议”选择“SASL_PLAINTEXT”或“SASL_SSL”时需配置。 SASL或SSL认证所使用的用户密码。 确认SASL用户密码 仅当“安全协议”选择“SASL_PLAINTEXT”或“SASL_SSL”时需配置。 填写与SASL用户密码一样的值。 证书内容 仅当“安全协议”选择“SASL_SSL”时需配置。 SSL认证所使用的CA证书内容。 元数据配置信息 系统元数据 推送的日志中,需要携带的系统字段信息。 其中,start_time、request_id、client_ip、request_time、http_status、scheme、request_method、host、uri、upstream_addr、upstream_status、upstream_response_time、http_x_forwarded_for、http_user_agent和error_type字段信息默认在日志中携带,其他系统字段需勾选后才携带。 请求数据 推送的日志中,需要携带的API请求信息。 日志包含请求头域信息:勾选后,需填写日志中要携带的请求Header参数。多个字段间使用英文逗号(,)分隔,支持使用*进行通配设置。 日志包含请求QueryString信息:勾选后,需填写日志中要携带的请求Query参数信息。多个字段间使用英文逗号(,)分隔,支持使用*进行通配设置。 日志包含请求Body体信息:勾选后,日志中会携带API请求的Body体信息。 响应数据 推送的日志中,需要携带的API响应信息。 日志包含响应头域信息:勾选后,需填写日志中要携带的响应Header参数。多个字段间使用英文逗号(,)分隔,支持使用*进行通配设置。 日志包含响应Body体信息:勾选后,日志中会携带响应Body体信息。 自定义认证配置 推送的日志中,需要携带的自定义认证信息。 前端:填写日志中要携带的前端自定义认证的响应字段信息,多个字段间使用英文逗号(,)分隔。 后端:填写日志中要携带的后端自定义认证的响应字段信息,多个字段间使用英文逗号(,)分隔。
  • 配置参数说明 表1 配置参数说明 参数 配置说明 流控类型 推荐使用高性能流控。 高精度流控:高并发场景下实例内部会有一定的性能损耗,适用于并发量较小的场景。 高性能流控:高并发场景下实例内部性能损耗较小,单位时间内会偶现较小的误差值,适用于并发量较大的场景。 单机流控:实例的每个节点各自进行流控,高并发场景下实例内部性能损耗最小,单位时间内会存在一定的误差值,适用于并发量更大的场景。 策略生效范围 单个API生效 对单个API进行流量统计和控制。 API共享生效 对绑定了该策略的所有API进行总流量统计和控制。 时长 流量限制的时长。 与“API流量限制”配合使用,表示单位时间内的单个API请求次数上限。 与“用户流量限制”配合使用,表示单位时间内的单个用户请求次数上限。 与“凭据流量限制”配合使用,表示单位时间内的单个凭据请求次数上限。 与“源IP流量限制”配合使用,表示单位时间内的单个IP地址请求次数上限。 API流量限制 单个API被调用次数上限。 与“时长”配合使用,表示单位时间内的单个API请求次数上限。 用户流量限制 单个用户调用API次数上限,如果API认证方式为IAM认证,用户流量根据项目ID来限制;如果API认证方式为APP认证,用户流量根据账号ID来限制。账号ID和项目ID请参考下文“特殊租户”配置说明。 不超过“API流量限制”。 与“时长”配合使用,表示单位时间内的单个用户请求次数上限。 如果主账号下有多个子用户访问API,按主账号累计的调用次数进行限制。 凭据流量限制 单个凭据调用API次数上限,仅适用于API的安全认证方式为APP认证时。 不超过“API流量限制”。 与“时长”配合使用,表示单位时间内的单个凭据请求次数上限。 源IP流量限制 单个IP地址调用API次数上限。 不超过“API流量限制”。 与“时长”配合使用,表示单位时间内的单个IP地址请求次数上限。 参数流控配置 参数流控配置开关。开启后,以参数维度进行流控限制。 定义参数 定义用于规则匹配的参数。 参数位置:用于规则匹配的参数位置。 path:API请求的URI,系统默认配置。 method:API请求方法,系统默认配置。 Header:请求头的key值。 Query:QueryString的key值。 System:系统参数。 参数:用于判断与规则匹配中的参数值是否匹配。 定义规则 定义规则的匹配条件,以及API流量限制和时长。 单击“添加规则”,可添加多个规则。 规则 单击,可添加多个条件表达式,选择“定义参数”中的参数名和判断条件,以及输入参数值。 =为等于 !=为不等于 pattern为正则表达式 enum为枚举值,多个参数值之间用英文逗号分隔 API流量限制 API调用次数的最大值。 时长 定义规则的流量控制时长,如果此处不配置时长,规则的流量控制时长以“策略基本信息”的时长为准。 例如,在“定义参数”中添加参数“Host”,参数位置选择“Header”;在“定义规则”中添加一条规则,匹配条件设置成“Host = www.abc.com”,API流量限制为10,时长为60s。表示在60s内,对于请求头域中Host参数等于“www.abc.com”的API,且API调用次数达到10,参数流控生效。 特殊流控配置 特殊流控配置开关。开启后,“基础流控”的用户流量限制/凭据流量限制与“特殊流控”的特殊租户/特殊凭据共同作用时,以特殊流控值为准。 特殊租户 租户ID为账号ID或项目ID。 绑定APP认证的API时,租户ID为项目ID,获取项目ID。 绑定华为IAM认证的API时,租户ID为账号ID,不支持细分到IAM用户维度,获取账号名和账号ID。 阈值为单位时间内,此租户访问API的最大值,不超过“基础流控”的API流量限制值。 特殊凭据 选择已有凭据,阈值为单位时间内,此凭据访问API的最大值,不超过“基础流控”的API流量限制值。
  • 脚本配置示例 { "scope": "basic", "default_interval": 60, "default_time_unit": "second", "api_limit": 100, "app_limit": 50, "user_limit": 50, "ip_limit": 20, "specials": [ { "type": "app", "policies": [ { "key": "e9230d70c749408eb3d1e838850cdd23", "limit": 10 } ] }, { "type": "user", "policies": [ { "key": "878f1b87f71c40a7a15db0998f358bb9", "limit": 10 } ] } ], "algorithm": "counter", "parameters": [ { "id": "3wuj354lpptv0toe0", "value": "reqPath", "type": "path", "name": "reqPath" }, { "id": "53h7e7j11u38l3ocp", "value": "method", "type": "method", "name": "method" }, { "id": "vv502bnb6g40td8u0", "value": "Host", "type": "header", "name": "Host" } ], "rules": [ { "match_regex": "[\"Host\",\"==\",\"www.abc.com\"]", "rule_name": "u8mb", "time_unit": "second", "interval": 2, "limit": 5 } ] }
  • 脚本配置示例 { "breaker_condition":{ "breaker_type":"timeout", "breaker_mode":"counter", "unhealthy_threshold":30, "time_window":15, "open_breaker_time":15, "unhealthy_percentage":51, "min_call_threshold":20 }, "scope":"share", "downgrade_default":{ "type":"http", "passthrough_infos":null, "func_info":null, "mock_info":null, "http_info":{ "isVpc":false, "vpc_channel_id":"", "address":"10.10.10.10", "scheme":"HTTP", "method":"GET", "path":"/demo", "timeout":5000 }, "http_vpc_info":null }, "downgrade_parameters":[ { "name":"reqPath", "type":"path", "value":"path", "disabled":true, "focused":true, "id":"92002eqbpilg6g" }, { "name":"method", "type":"method", "value":"method", "disabled":true, "focused":true, "id":"tuvxetsdqvcos8" }], "downgrade_rules":[ { "rule_name":"rule-test1", "parameters":[ "reqPath", "method" ], "match_regex":"[\"reqPath\",\"==\",\"/test\"]", "downgrade_backend":{ "type":"mock", "passthrough_infos":null, "func_info":null, "mock_info":{ "status_code":200, "result_content":"{status: ok}", "headers":[] }, "http_info":null, "http_vpc_info":null }, "breaker_condition":{ "breaker_type":"timeout", "breaker_mode":"percentage", "unhealthy_threshold":30, "time_window":15, "open_breaker_time":15, "unhealthy_percentage":51, "min_call_threshold":20 } }] }
  • 配置参数说明 表1 配置参数 参数 配置说明 策略生效范围 单个API生效 对单个API进行控制。 API共享生效 对绑定了该策略的所有API进行控制。 断路器类型 选择断路器的触发类型。 超时降级:断路器以后端服务超时作为触发条件。 匹配条件降级:断路器以“匹配条件”中的设置作为触发条件。 条件模式 选择断路器的触发模式。 计数器:在时间窗内满足触发条件的请求次数达到设定阈值,则立即触发断路器。 百分比:在时间窗内满足触发条件的请求率达到设定阈值,时间窗结束后触发断路器。 匹配条件 仅当“断路器类型”选择“匹配条件降级”时需配置。 配置断路器的触发条件。 响应错误码:后端响应状态码符合设定值,则该后端请求满足触发条件。 触发降级响应时延:后端响应时延超过设定值,则该后端请求满足触发条件。 时间窗(秒) 断路器的触发次数统计时间窗,与“阈值”或“最小百分比”参数配合使用,当时间窗内的触发次数达到设定阈值或百分比,则触发断路器。 阈值(次) 仅当“条件模式”选择“计数器”时需配置。 断路器的触发阈值,与“时间窗”参数配合使用。在时间窗内,满足触发条件的后端请求次数达到阈值,则触发断路器。 说明: 断路器策略是按单个网关组件分开触发,如果API网关存在多个网关组件,则各个网关组件的触发统计分开计数。 如果某个网关组件在时间窗内的触发次数超过阈值,则发送到该网关组件上的请求会触发断路器,其他未超过阈值的网关组件依然正常转发请求。 您可以在API网关实例控制台的“实例信息”页面,在“出私网IP”下查看网关组件的IP个数,一个IP表示为一个网关组件。 最小调用次数 仅当“条件模式”选择“百分比”时需配置。 时间窗内触发断路器的API最小调用次数。如果时间窗内API的总调用次数小于该值,则不触发断路器。 最小百分比(%) 仅当“条件模式”选择“百分比”时需配置。 断路器的触发阈值,与“时间窗”参数配合使用。当时间窗内的满足触发条件的后端请求百分比达到阈值,则触发断路器。 开启时长(秒) 断路器开启的持续时间,断路器开启时间达到该值后将关闭。 后端降级策略 后端降级策略开关。 开启:触发降级的API将把请求转发到指定后端服务。 关闭:触发降级的API不会把请求转发到任何后端服务,直接返回服务不可用的错误信息。 后端策略类型 仅当“后端降级策略”开启时需配置。 断路器开启后,后端请求的转发策略类型。 Mock:把配置的响应结果作为后端服务响应固定返回。 Mock自定义返回码:后端服务响应的状态码。 Mock返回结果:后端服务响应的Body信息,JSON格式。 响应头参数:后端服务响应的Header参数。 HTTP&HTTPS:把后端服务请求转发给指定HTTP&HTTPS后端服务。 负载通道:是否使用负载通道访问后端服务。如果选择“使用”,您需要提前创建负载通道。 后端URL:配置要转发的后端服务请求地址。 后端超时(ms):后端服务请求的超时时间,默认为5000ms。 FunctionGraph:把后端服务请求转发给指定函数。 函数URN:函数请求的唯一标识。单击“添加”,添加作为后端服务的函数URN。 函数名:选择函数URN后自动配置。 版本:选择要使用的函数版本。 调用类型:选择函数的调用类型。 Synchronous:表示同步调用,后端函数服务收到调用请求后立即执行并返回调用结果,客户端发送请求后同步等待,收到后端响应后关闭连接。 Asynchronous:表示异步调用,后端函数服务收到调用请求后将请求排队,执行成功后返回调用结果,服务端在空闲的情况下会逐个处理排队的请求,客户端不关注请求调用的结果。 后端超时(ms):后端服务请求的超时时间,默认为5000ms。 Passthrough:把后端服务请求转发给API的原后端服务。 单击“添加参数”,可为转发给后端服务的请求添加请求头参数。 降级参数配置 降级参数配置开关。开启后可为断路器自定义规则,API请求优先匹配自定义规则中的触发条件和降级策略,仅当未匹配到自定义规则时才执行上方配置的默认触发条件和降级策略。 如果匹配到自定义规则,则执行规则内配置的触发条件和降级策略。如果匹配到的自定义规则内未配置触发条件或降级策略,则执行上方配置的默认触发条件或降级策略。 如果未匹配到自定义规则,则执行上方配置的默认触发条件和降级策略。 定义参数 定义用于规则匹配的参数。 参数位置:参数在API请求中的位置。 参数:用于做规则匹配的参数名。 系统默认包含reqPath(请求路径)和method(请求方法)参数。单击“添加参数”,可添加其他匹配参数。 定义规则 自定义断路器的匹配规则。单击“添加规则”,可添加规则,系统根据从上到下的顺序匹配规则,可通过上下移动调整规则优先级。 匹配条件:单击“”编辑匹配条件表达式。如果表达式数量大于等于3个,可通过“转子层级”对表达式进行分层设置。 =为等于 !=为不等于 pattern为正则表达式 enum为枚举值,多个参数值之间用英文逗号分隔 触发条件和后端降级策略配置可参考上方的默认触发条件和降级策略配置。 例如,开启“降级参数配置”,按顺序添加“rule01”和“rule02”规则,“rule01”关闭“触发条件配置”并且开启“后端降级策略”,“rule02”两者都开启。断路器优先判断“rule01”匹配条件,如果匹配则会按照上方配置的默认触发条件开启断路器(rule01内未配置触发条件),并执行rule01内的后端降级策略。如果不匹配则会继续判断“rule02”,以此类推。
  • 配置参数说明 表1 配置参数说明 信息项 描述 响应缓存键 配置参数作为响应缓存键,用于区分不同的缓存。 system_params类型:配置不同的网关内置系统参数作为响应缓存键来区分缓存。配置参数请参考网关内置参数。 parameters类型:配置不同的请求query参数作为响应缓存键来区分缓存。 headers类型:配置不同的请求头作为响应缓存键来区分缓存。 HTTP参数 根据HTTP响应码和缓存时长来决定是否缓存,以及缓存的有效时间。 如果不配置HTTP参数,那么HTTP响应码默认值为200,取值范围:200-599。缓存时长默认值为300s,取值范围:1s~720000s。 缓存策略模式 网关通过客户端请求中的Cache-Control请求头来处理缓存,默认拒绝所有客户端带Cache-Control头的请求。 all:允许所有客户端带Cache-Control头的请求。 off:拒绝所有客户端带Cache-Control头的请求。 apps:允许appId(凭据ID)取值在datas列表中的客户端。 允许缓存的后端响应头 对于后端的响应Headers,默认仅支持缓存Content-Type,Content-Encoding,Content-Language头。如果需要缓存更多的Headers,请在“允许缓存的后端响应头”处添加,但是无法添加API网关增加的系统响应头(x-apig-*,x-request-id等)。
  • 脚本配置示例 { "cache_key": { "system_params": [ "$context.sourceIp", "$context.requestId" ], "parameters": [ "demo_parameters" ], "headers": [ "demo_header" ] }, "cache_http_status_and_ttl": [ { "http_status": [ 200 ], "ttl": 300 } ], "client_cache_control": { "mode": "apps", "datas": [ "demo_app_id_1,demo_app_id_2" ] }, "cacheable_headers": [ "demo_cacheable_headers_1,demo_cacheable_headers_2" ] }
  • 示例 1 2 3 4 5 6 create table 1_datasource_mongo.test_momgo(id string, name string, age int) using mongo options( 'url' = '192.168.4.62:8635,192.168.5.134:8635/test?authSource=admin', 'database' = 'test', 'collection' = 'test', 'passwdauth' = 'xxx', 'encryption' = 'true');
  • 语法格式 1 2 3 4 5 6 7 8 9 10 CREATE TABLE [IF NOT EXISTS] TABLE_NAME( FIELDNAME1 FIELDTYPE1, FIELDNAME2 FIELDTYPE2) USING MONGO OPTIONS ( 'url'='IP:PORT[,IP:PORT]/[DATABASE][.COLLECTION][AUTH_PROPERTIES]', 'database'='xx', 'collection'='xx', 'passwdauth' = 'xxx', 'encryption' = 'true' ); 文档数据库服务(Document Database Service,简称DDS)完全兼容MongoDB协议,因此语法中使用“using mongo options”。
  • 注意事项 通过配置“spark.sql.shuffle.partitions”参数可以设置非DLI表在OBS桶中插入的文件个数,同时,为了避免数据倾斜,在INSERT语句后可加上“distribute by rand()”,可以增加处理作业的并发量。例如: insert into table table_target select * from table_source distribute by cast(rand() * N as int); 配置项为OPTIONS('DELIMITER'=',')时,可以指定分隔符,默认值为“,”。 对于CSV数据,支持如下所述分隔符: 制表符tab,例如:'DELIMITER'='\t'。 支持通过unicode编码指定分割符,例如:'DELIMITER'='\u0001'。 单引号('),单引号必须在双引号(" ")内。例如:'DELIMITER'= "'"。
  • 响应示例:基于最后一次修改时间执行转换文件存储类型以及删除操作 x-obs-id-2: 32AAAQAAEAABSAAgAAEAABAAAQAAEAABCSMYkLcGTyUsgSJe2Rdsg2P8JwMsJV6n x-obs-request-id: 0000018A2BDA0816D2877F5D5622F0BA Server: OBS Content-Length: 0 Date: WED, 01 Jul 2015 02:37:22 GMT
  • 响应示例:基于最后一次修改时间执行删除历史版本文件及清理删除标记的操作 x-obs-id-2: 32AAAQAAEAABSAAgAAEAABAAAQAAEAABCSZbDadL1f7fYU44bvRLvc0l6D10+wzG x-obs-request-id: 0000018A2BCBB3ABD3046B99E3ED2E30 Server: OBS Content-Length: 0 Date: WED, 01 Jul 2015 02:37:22 GMT
  • 响应示例 1 2 3 4 5 6 HTTP/1.1 200 OK Server: OBS x-obs-request-id: BF26000001643670AC06E7B9A7767921 x-obs-id-2: 32AAAQAAEAABSAAgAAEAABAAAQAAEAABCSvK6z8HV6nrJh49gsB5vqzpgtohkiFm Date: WED, 01 Jul 2015 03:05:34 GMT Content-Length: 0
  • 响应示例:基于最后一次修改时间策略仅执行删除文件操作 x-obs-id-2: 32AAAQAAEAABSAAgAAEAABAAAQAAEAABCSfpG6nArWY7cM7rB3+GbvO13XJPx9g4 x-obs-request-id: 0000018A2BD6BB02D30426F6E4A1FBA2 Server: OBS Content-Length: 0 Date: WED, 01 Jul 2015 02:37:22 GMT
  • 响应示例:执行删除碎片操作 x-obs-id-2: 32AAAQAAEAABSAAgAAEAABAAAQAAEAABCTlN+glNMVGtTicAnVXkTVDjR5xKSLuH x-obs-request-id: 0000018A2BE86742D2C6989CA79E136C Server: OBS Content-Length: 0 Date: WED, 01 Jul 2015 02:37:22 GMT
  • 请求消息头 该请求使用的消息头如下表1所示。 表1 请求消息头 消息头名称 描述 是否必选 Content-MD5 按照RFC 1864标准计算出消息体的MD5摘要字符串,即消息体128-bit MD5值经过base64编码后得到的字符串。也支持设置Content-SHA256头域,其值为消息体256-bit SHA256值经过base64编码后得到的字符串,Content-MD5和Content-SHA256二选一。 类型:String 示例:n58IG6hfM7vqI4K0vnWpog== 是
  • 请求消息元素 在此请求中,需要在请求的消息体中配置桶的生命周期配置信息。配置信息以XML格式上传,具体的配置元素如表2描述。 如果桶的多版本是Enabled或者Suspended,那么可以设置NoncurrentVersionTransition或NoncurrentVersionExpiration来控制对象的历史版本的生命周期。一个历史版本的生命周期,取决于它成为历史版本的时刻(即被新版本覆盖的那个时刻)和NoncurrentDays。对于删除来说,例如NoncurrentDays配置为1的话,表示当一个版本成为历史版本之后,再过1天才能删除。对象A的版本V1创建于1号,5号的时候又上传新的版本V2,此时V1成为历史版本,那么再过1天,7号的0点,V1就过期了。如果该版本不满足删除,迁移配置NoncurrentDays为1,StorageClass为WARM的话,表示当一个版本成为历史版本之后,再过1天转为低频访问对象。对象A的版本V1创建于1号,5号的时候又上传新的版本V2,此时V1成为历史版本,那么再过1天,7号的0点,V1就会迁移成低频访问对象了。(备注:对象过期后被删除或对象迁移的时间可能会有一定的延迟,一般不超过48小时。) 如果桶的多版本是Enabled或者Suspended,且最新版本对象满足Expiration规则时的处理: 桶当前的多版本状态为Enabled: 如果对象的最新版本不是deletemarker,则该对象会产生一个新的deletemarker; 如果最新版本是deletemarker,且该对象只有这一个版本,则这个版本会被删除; 如果最新版本是deletemarker,且对象还有其他版本,则该对象的所有版本维持不变,没有新增和删除,也不会被修改(即无任何变化)。 桶当前的多版本状态为Suspended: 如果对象的最新版本不是deletemarker,且版本不是null版本,则会产生一个新的null版本的deletemarker; 如果对象的最新版本不是deletemarker,且版本是null版本,则这个null版本会被新产生的null版本的deletemarker覆盖; 如果最新版本是deletemarker,且该对象只有这一个版本,则这个版本会被删除; 如果最新版本是deletemarker,且对象还有其他版本,则该对象的所有版本维持不变,没有新增和删除,也不会被修改(即无任何变化)。 如果桶的多版本是Enabled或者Suspended,且最新版本对象满足Transition规则时的处理: 如果对象的最新版本是deletemarker,则这个版本不被迁移; 如果最新版本不是deletemarker,且该对象满足迁移条件,则这个版本会被迁移。 表2 生命周期配置元素 名称 描述 是否必选 Date 指定OBS对该日期之前的对象执行生命周期规则。日期格式必须为ISO8601的格式,并且为UTC的零点。 例如:2018-01-01T00:00:00.000Z,表示将最后修改时间早于2018-01-01T00:00:00.000Z的对象删除或转换成其他存储类型,等于或晚于这个时间的对象不会被删除或转储。 类型:String 父节点:Expiration, Transition 当对象转储时,如果没有Days元素,则必选; 当删除对象时,如果没有Days或ExpiredObjectDeleteMarker元素,则必选。 Days 指定生命周期规则在对象最后更新过后多少天生效(仅针对对象的最新版本)。 类型:Integer 父节点:Expiration, Transition 当对象转储时,如果没有Date元素,则必选; 当删除对象时,如果没有Date或ExpiredObjectDeleteMarker元素,则必选。 ExpiredObjectDeleteMarker 表示是否删除过期删除标记,可以配置true和false。当配置true时,生命周期才会删除,当配置false时,不会删除。 类型:Boolean 父节点:Expiration 如果没有Days或Date元素,则必选。 StorageClass 表示对象将被修改成存储级别。 类型:String 取值范围: WARM、COLD或DEEP_ARCHIVE 父节点:Transition, NoncurrentVersionTransition 如果有Transition或NoncurrentVersionTransition元素,则必选 Transition 生命周期配置中表示迁移时间和迁移后对象存储级别的元素(仅针对对象的最新版本) 类型:XML 子节点:Date或Days,StorageClass 父节点:Rule 如果没有NoncurrentVersionTransition, Expiration, NoncurrentVersionExpiration, AbortIncompleteMultipartUpload则必选 Expiration 生命周期配置中表示过期时间的Container(仅针对对象的最新版本)。 类型:XML 子节点:Date或Days或ExpiredObjectDeleteMarker 父节点:Rule 如果没有Transition, NoncurrentVersionTransition, NoncurrentVersionExpiration, AbortIncompleteMultipartUpload则必选 ID 一条Rule的标识,由不超过255个字符的字符串组成。 类型:String 父节点:Rule 否 LifecycleConfiguration 生命周期配置Rule的Container。可以配置多条Rule,但需保证整个配置消息体总大小不超过20KB。 类型:XML 子节点:Rule 父节点:无 是 NoncurrentDays 表示对象在成为历史版本之后第几天时规则生效(仅针对历史版本)。 类型:Integer 父节点:NoncurrentVersionExpiration, NoncurrentVersionTransition 如果有NoncurrentVersionExpiration或NoncurrentVersionTransition元素,则必选 NoncurrentVersionTransition 生命周期配置中表示对象的历史版本迁移时间和迁移后对象存储级别的元素。 类型:XML 子节点:NoncurrentDays, StorageClass 父节点:Rule 如果没有Transition, Expiration, NoncurrentVersionExpiration, AbortIncompleteMultipartUpload则必选 NoncurrentVersionExpiration 生命周期配置中表示历史版本过期时间的Container。您可以将该动作设置在已启用多版本(或暂停)的桶,来让系统删除对象的满足特定生命周期的历史版本(仅针对历史版本)。 类型:XML 子节点:NoncurrentDays 父节点:Rule 否 AbortIncompleteMultipartUpload 生命周期配置中表示未合并的多段任务(碎片)的过期属性Container。 类型:XML 子节点:DaysAfterInitiation 父节点:Rule 如果没有Transition, Expiration, NoncurrentVersionExpiration, NoncurrentVersionTransition则必选 DaysAfterInitiation 指定未合并的多段任务(碎片)的生命周期规则,在多段任务初始化过后多少天生效。 类型:Integer 父节点:AbortIncompleteMultipartUpload 如果有AbortIncompleteMultipartUpload则必选 Prefix 对象名前缀,用以标识哪些对象可以匹配到当前这条Rule。 类型:String 父节点:Rule 约束: 当按前缀配置时,如果指定的前缀名与某条已配置的生命周期规则指定的前缀名存在包含关系,OBS会将两条规则视为同一条,而禁止您配置本条规则。例如,系统中已存在指定前缀名为“abc”的规则,则不允许再配置指定前缀以“abc”字段开头的规则。 如果已存在按前缀配置的生命周期规则,则不允许再新增配置到整个桶的规则。 是 Rule 具体某一条生命周期配置的Container。 类型:Container 父节点:LifecycleConfiguration 是 Status 标识当前这条Rule是否启用。 类型:String 父节点:Rule 有效值:Enabled,Disabled 是
  • 功能介绍 OBS系统支持指定规则来实现定时删除或迁移桶中对象,这就是生命周期配置。典型的应用场景如: 周期性上传的日志文件,可能只需要保留一个星期或一个月,到期后要删除它们。 某些文档在一段时间内经常访问,但是超过一定时间后就可能不会再访问了。这种文档您可能会先选择归档,然后在一定时间后删除。 桶的最低转低频访问和转归档的时间可以配置,取值范围为24~8640。 本接口实现为桶创建或更新生命周期配置信息。 对象生命周期到期以后,对象将会永久删除,无法恢复。 归档存储和深度归档存储不支持多AZ,因此不支持使用生命周期的存储类别转换功能,将多AZ的桶或对象转化为归档或深度归档存储。 要正确执行此操作,需要确保执行者有PutLifecycleConfiguration权限。默认情况下只有桶的所有者可以执行此操作,也可以通过设置桶策略或用户策略授权给其他用户。 生命周期配置实现了定时删除对象和定时迁移对象的功能,所以如果想要阻止用户删除或迁移对象,以下几项操作的权限都应该被禁止: DeleteObject DeleteObjectVersion PutLifecycleConfiguration 如果想要阻止用户管理桶的生命周期配置,应该禁止PutLifecycleConfiguration权限。
  • 响应示例:基于最后一次修改时间策略仅执行转换文件存储类型操作 x-obs-id-2: 32AAAQAAEAABSAAgAAEAABAAAQAAEAABCSZbDadL1f7fYU44bvRLvc0l6D10+wzG x-obs-request-id: 0000018A2BCBB3ABD3046B99E3ED2E30 Server: OBS Content-Length: 0 Date: WED, 01 Jul 2015 02:37:22 GMT
  • 响应示例:删除对象元数据 1 2 3 4 5 6 7 8 HTTP/1.1 200 OK Server: OBS x-obs-request-id: 8DF400000163D3E4BB5905C41B6E65B6 Accept-Ranges: bytes x-obs-id-2: 32AAAQAAEAABAAAQAAEAABAAAQAAEAABCSD3nAiTaBoeyt9oHp9vTYtXnLDmwV6D Date: WED, 01 Jul 2015 04:19:21 GMT Content-Length: 0 x-obs-metadata-directive:REPLACE
  • 请求示例:删除对象元数据 对象object已存在元数据x-obs-meta-test:newmeta,Content-Type:application/zip,删除元数据x-obs-meta-test。 1 2 3 4 5 6 7 8 PUT /object?metadata HTTP/1.1 User-Agent: curl/7.29.0 Host: examplebucket.obs.cn-north-4.myhuaweicloud.com Accept: */* Date: WED, 01 Jul 2015 14:24:33 GMT Authorization: OBS H4IPJX0TQTHTHEBQQCEC:NxtSMS0jaVxlLnxlO9awaMTn47s= x-obs-metadata-directive:REPLACE Content-Type:application/zip
  • 请求消息头 OBS支持在修改对象元数据的请求里携带HTTP协议规定的6个请求头:Cache-Control、Expires、Content-Encoding、Content-Disposition、Content-Type、Content-Language,OBS会直接将这些头域的值保存在对象元数据中,在下载对象或者HEAD对象的时候,这些保存的值将会被设置到对应的HTTP头域中返回客户端。 表2 请求消息头 消息头名称 描述 是否必选 x-obs-metadata-directive 元数据操作指示符。 取值为REPLACE_NEW或REPLACE。 REPLACE_NEW表示:对于已经存在值的元数据进行替换,不存在值的元数据进行赋值,未指定的元数据保持不变(备注:自定义头域作替换处理)。 REPLACE表示:使用当前请求中携带的头域完整替换,未指定的元数据(本表中除x-obs-storage-class的其它元数据)会被删除。 类型:String 是 Cache-Control 指定Object被下载时的网页的缓存行为。 类型:String 否 Content-Disposition 指定Object被下载时的名称。 类型:String 否 Content-Encoding 指定Object被下载时的内容编码格式。 类型:String 否 Content-Language 指定Object被下载时的内容语言格式。 类型:String 否 Content-Type Object文件类型。 类型:String 否 Expires 指定Object被下载时的网页的缓存过期时间。 类型:String 否 x-obs-website-redirect-location 当桶设置了Website配置,可以将获取这个对象的请求重定向到桶内另一个对象或一个外部的URL。 例如,重定向请求到桶内另一对象: x-obs-website-redirect-location:/anotherPage.html 或重定向请求到一个外部URL: x-obs-website-redirect-location:http://www.example.com/ 类型:String 约束:必须以“/”、“http://”或“https://”开头,长度不超过2KB 否 x-obs-storage-class 指定对象的存储类型。 类型:String 说明:存储类型有4种:STANDARD(标准存储)、WARM(低频访问存储)、COLD(归档存储)、DEEP_ARCHIVE(深度归档存储)。因此这里可配置的值有:STANDARD、WARM、COLD、DEEP_ARCHIVE,注意大小写敏感。 示例:x-obs-storage-class: STANDARD 否 x-obs-meta-* 可以在请求中加入以“x-obs-meta-”开头的消息头,用来加入自定义的元数据,以便对对象进行自定义管理。当用户获取此对象或查询此对象元数据时,加入的自定义元数据将会在返回消息的头中出现。更多说明详见对象自定义元数据介绍。 类型:String 示例:x-obs-meta-test: test metadata 否 x-obs-expires 指定对象过期时间,单位是天。过期之后对象会被自动删除。 类型:Integer 示例:x-obs-expires:3 否
  • 请求示例:添加对象元数据 给对象object添加元数据:Content-Type:application/zip和x-obs-meta-test:meta。 1 2 3 4 5 6 7 8 9 PUT /object?metadata HTTP/1.1 User-Agent: curl/7.29.0 Host: examplebucket.obs.cn-north-4.myhuaweicloud.com Accept: */* Date: WED, 01 Jul 2015 14:24:33 GMT Authorization: OBS H4IPJX0TQTHTHEBQQCEC:NxtSMS0jaVxlLnxlO9awaMTn47s= x-obs-metadata-directive:REPLACE_NEW Content-Type:application/zip x-obs-meta-test:meta
  • 响应示例:添加对象元数据 1 2 3 4 5 6 7 8 9 HTTP/1.1 200 OK Server: OBS x-obs-request-id: 8DF400000163D3E4BB5905C41B6E65B6 Accept-Ranges: bytes x-obs-id-2: 32AAAQAAEAABAAAQAAEAABAAAQAAEAABCSD3nAiTaBoeyt9oHp9vTYtXnLDmwV6D Date: WED, 01 Jul 2015 04:19:21 GMT Content-Length: 0 x-obs-metadata-directive:REPLACE_NEW x-obs-meta-test:meta
共100000条