云服务器内容精选

  • 脚本配置示例 { "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" ] }
  • 更新SSL证书 进入证书列表页面,找到待更新证书,在“操作”列单击“编辑”,修改证书信息即可。 更新SSL证书不影响API的调用。 如果待更新证书已绑定独立域名,那么所有访问这个域名的客户端都会看到更新后的证书。 如果更新的SSL证书已绑定独立域名且更新的内容新增CA证书,那么独立域名侧默认关闭“支持客户端认证”即关闭HTTPS双向认证;如果更新的SSL证书已绑定独立域名且更新的内容无CA证书,那么独立域名侧默认关闭“支持客户端认证”即未开启HTTPS双向认证。
  • 转换证书为PEM格式 格式类型 转换方式(通过OpenSSL工具进行转换) CER/CRT 将“cert.crt”证书文件直接重命名为“cert.pem”。 PFX 提取私钥命令,以“cert.pfx”转换为“key.pem”为例。 openssl pkcs12 -in cert.pfx -nocerts -out key.pem 提取证书命令,以“cert.pfx”转换为“cert.pem”为例。 openssl pkcs12 -in cert.pfx -nokeys -out cert.pem P7B 证书转换,以“cert.p7b”转换为“cert.cer”为例。 openssl pkcs7 -print_certs -in cert.p7b -out cert.cer 将“cert.cer”证书文件直接重命名为“cert.pem”。 DER 提取私钥命令,以“privatekey.der”转换为“privatekey.pem”为例。 openssl rsa -inform DER -outform PEM -in privatekey.der -out privatekey.pem 提取证书命令,以“cert.cer”转换为“cert.pem”为例。 openssl x509 -inform der -in cert.cer -out cert.pem
  • 添加特殊租户 在流控策略详情页面,单击“特殊租户”,进入特殊租户页面。 单击“添加特殊租户”,弹出“添加特殊租户”对话框。 输入租户信息。 图1 添加特殊租户 表2 特殊租户信息 信息项 描述 租户ID 绑定华为IAM认证的API时,租户ID填写API调用者的账号ID。 绑定APP认证的API时,租户ID填写APP所属者的项目ID。 您可以单击控制台右上角的用户名,选择“我的凭证”,在我的凭证页面获取用户的项目ID和账号ID。 阈值 “时长”时间内,此租户访问单个API次数的最大值。 不能大于“API流量限制”值。 单击“确定”,完成特殊租户的添加。
  • 配置参数说明 表1 配置参数说明 信息项 描述 策略名称 API流控策略名称。 类型 分“基础流控”和“共享流控”两类。 基础流控:针对单个API进行流量统计和控制。 共享流控:针对绑定了该策略的所有API进行总流量统计和控制。 时长 流量限制的时长。时长单位支持秒,分钟,小时,天。 与“API流量限制”配合使用,表示“时长”时间内的单个API请求次数上限。 与“用户流量限制”配合使用,表示“时长”时间内的单个用户请求次数上限。 与“凭据流量限制”配合使用,表示“时长”时间内的单个凭据请求次数上限。 与“源IP流量限制”配合使用,表示“时长”时间内的单个IP地址请求次数上限。 API流量限制 单个API被调用次数上限。 与“时长”配合使用,表示“时长”时间内的单个API请求次数上限。 用户流量限制 单个用户调用API次数上限,仅在API的安全认证方式为“华为IAM认证”时适用。 不能大于“API流量限制”的值。 与“时长”配合使用,表示“时长”时间内的单个用户请求次数上限。 如果主账号下有多个子用户访问API,按主账号累计的调用次数进行限制。 说明: 如果希望单独为某个用户添加流量控制策略,可以通过对该策略增加特殊租户实现,具体参考添加特殊租户。增加特殊租户后,此用户调用API次数的上限受增加特殊租户时设置的“阈值”限制,其他用户调用API次数的上限,仍然受本参数值限制。 凭据流量限制 单个凭据调用API次数上限,仅在API的安全认证方式为“APP认证”时适用。 不能大于“API流量限制”的值。 与“时长”配合使用,表示“时长”时间内的凭据请求次数上限。 说明: 如果希望单独为某个凭据添加流量控制策略,可以通过对该策略增加特殊应用实现,具体参考添加特殊应用。增加特殊应用后,此凭据调用API次数的上限受增加特殊应用时设置的“阈值”限制,其他凭据调用API次数的上限,仍然受本参数值限制。 源IP流量限制 单个IP地址调用API次数上限。 不能大于“API流量限制”的值。 与“时长”配合使用,表示“时长”时间内的IP地址请求次数上限。 描述 关于控制策略的描述。
  • 使用流程 图1 签名密钥流程图 在API中心管理控制台创建签名密钥。 将新创建的签名密钥绑定API。 API网关代理将签名后的请求发送到后端服务,此时Authorization头中包含签名信息。后端服务通过不同的开发语言(例如Java、Go、Python、JavaScript、C#、PHP、C++、C等)进行签名,通过比对签名结果和API网关代理传过来的Authorization头中签名是否一致,来校验API网关代理的合法性。
  • 配置参数说明 表1 配置参数说明 信息项 描述 密钥名称 自定义名称,用于识别不同的密钥。 类型 选择签名密钥的认证类型,可选择“HMAC”、“Basic Auth”、“Public Key”和“Aes”。 签名算法 选择Aes的签名算法,包含以下两种: aes-128-cfb aes-256-cfb Key 根据选择的密钥类型,填写不同的密钥信息。 HMAC:填写APP认证所使用密钥对的Key。 Basic Auth:填写basic认证所使用的用户名。 Aes:填写Aes认证所使用的密钥Key。 Public Key:填写Public Key认证所使用的公钥。 Secret 根据选择的密钥类型,填写不同的密钥信息。 HMAC:填写APP认证所使用密钥对的Secret。 Basic Auth:填写basic认证所使用的密码。 Aes:填写Aes认证所使用的向量。 Public Key:填写Public Key认证所使用的私钥。 确认Secret 填写与“Secret”一致的值。
  • 配置参数说明 表1 配置参数说明 参数 配置说明 allowed origins Access-Control-Allow-Origin响应头,指定允许访问API的外域URI,多个URI之间使用英文逗号隔开。 对于未携带身份凭证的请求,可以把参数值设置为“*”,表示允许来自所有域的访问请求。 allowed methods Access-Control-Allow-Methods响应头,指定允许使用的HTTP请求方法,多个请求方法之间使用英文逗号隔开。 allowed headers Access-Control-Allow-Headers响应头,指定XMLHttpRequest请求中允许携带的请求头字段,多个请求头之间使用英文逗号隔开。 其中,简单请求头Accept、Accept-Language、Content-Language、Content-Type(取值仅限为application/x-www-form-urlencoded、multipart/form-data、text/plain时)默认允许在请求中携带,无需在该参数中设置。 exposed headers Access-Control-Expose-Headers响应头,指定XMLHttpRequest请求响应中允许携带的响应头字段,多个响应头之间使用英文逗号隔开。 其中,基本响应头Cache-Control、Content-Language、Content-Type、Expires、Last-Modified、Pragma默认允许在响应中携带,无需在该参数中设置。 maximum age Access-Control-Max-Age响应头,指定本次预检请求的有效期,单位为秒。在有效期内,无需再次发出预检请求。 allowed credentials Access-Control-Allow-Credentials响应头,定XMLHttpRequest请求中是否允许携带Cookie。 true表示允许。 false表示不允许。
  • 脚本配置示例 { "allow_origin": "*", "allow_methods": "GET,POST,PUT", "allow_headers": "Content-Type,Accept,Accept-Ranges,Cache-Control", "expose_headers": "X-Request-Id,X-Apig-Latency", "max_age": 172800, "allow_credentials": true}