关于云服务:阿里云API网关9常见问题

138次阅读

共计 12059 个字符,预计需要花费 31 分钟才能阅读完成。

网关指南: https://help.aliyun.com/document\_detail/29487.html?spm=5176.doc48835.6.550.23Oqbl

网关控制台: https://apigateway.console.aliyun.com/?spm=5176.doc42740.2.2.Q4z5ws#/cn-hangzhou/apis/list

一、如何获取错误信息

所有的 API 申请只有达到了网关,网关就会返回申请后果信息。

用户须要查看返回后果的头部,即 Header 局部。其中 X-Ca 结尾的均为网关返回,比拟重要信息是:

在 Header 中取得 X-Ca-Error-Message 能够根本明确报错起因,而 X-Ca-Request-Id 能够用于提供给这边的反对人员,供反对人员搜寻日志。

二、返回值为空

HTTP/HTTPS 申请的返回后果有 HttpCode、Header、Body 三局部。当申请报错时,因为没有进入业务逻辑,所以返回的 Body 可能为空,体现为“返回值为空”,但实际上,重要信息都在 Header 外面。

用户发动的 API 申请只有可能达到网关,就会返回胜利 / 谬误的后果信息。

重要的返回信息都在 Header 外面,以 X -Ca 结尾的为网关返回的信息。其中较次要的为上面的几个信息:

所以如果发送申请后,发现返回值为空,那么看一下返回的 Header 信息。如果申请达到网关就谬误返回了,那么 Body 为空很失常,会体现为返回值为空,然而在 Header 外面会有重要信息。

如果 Header 也为空,那么阐明申请没有达到网关,请自行查看网络情况等。

各种语言获取和查看 HTTP/HTTPS 头部信息的办法均可在网上查问到。

三、HTTPS 证书报错

谬误提醒

调用 HTTPS 接口呈现证书认证谬误或者提醒证书曾经过期。

起因及解决方案

1\. 证书不非法

API 提供者应用的证书其余非主流机构颁发的证书,此类证书应用浏览器拜访是没有问题的,因为浏览器会自动更新根证书。但老版本操作系统的根证书对这些机构(证书颁发机构)的不信赖或者信赖工夫曾经过期。

解决方案
  1. 降级客户端根证书。如:Java+Linux 降级 OpenSSL 客户端即可,其余操作系统 + 编程语言,请降级编程语言中 HTTPS 应用的根证书。
  2. 分割 API 提供者,要求其更换兼容性更好的支流 SSL 证书。
  3. 程序中疏忽查看 SSL 证书有效性(不举荐),疏忽后会有申请被劫持的平安危险。只在与 API 提供商无奈提供兼容性更好的支流 SSL 证书,且平安危险可控的前提下,能够思考应用此办法。

2\. API 提供者的 SSL 证书过期

提供者的 SSL 证书过期。

解决方案
  1. 分割 API 提供者,要求其更换 SSL 证书。
  2. 程序中疏忽查看 SSL 证书有效性(不举荐),疏忽后会有申请被劫持的平安危险。只在与 API 提供商无奈提供兼容性更好的支流 SSL 证书,且平安危险可控的前提下,能够思考应用此办法。

四、错误代码表

公共错误码

报错场景

错误码

谬误提醒

状态码

倡议

Domain 不正确(通过 Domain 找不到 Product)。

InvalidProduct.NotFound

Cannot find product according to your specified domain.

404

请查看调用的域名或产品配置中的域名是否正确。

API 找不到
该 API 是 Private 类型,名单中没有该用户。

InvalidApi.NotFound

Specified api is not found,
please check your url and method.

404

请查看调用的 API 是否正确,需注意大小写,确认是否配置了访问控制。

API 必须应用 HTTPS 协定。

InvalidProtocol.NeedSsl

Your request is denied as lack of ssl protect.

400

请查看 API 配置,是否配置成只反对 https。

必填参数没有填({}中替换成相应的参数名)。

Missing{ParameterName}

{ParameterName} is mandatory for this action.

400

查看调用时是否填写提醒的了此参数。

AccessKeyId 找不到

InvalidAccessKeyId.NotFound

Specified access key is not found.

404

请查看调用时是否应用了正确的 AccessKeyId。

AccessKeyId 被禁用。

InvalidAccessKeyId.Inactive

Specified access key is disabled.

400

查看 AK 是否可用,或是否与所在环境匹配。

工夫戳格局不对(Date 和 Timestamp)

InvalidTimeStamp.Format

Specified time stamp or date value is not well formatted.

400

查看工夫戳

用户工夫和服务器工夫不在 15 分钟内

InvalidTimeStamp.Expired

Specified time stamp or date value is expired.

400

查看工夫戳

SignatureNonce 反复

SignatureNonceUsed

Specified signature nonce war used already.

400

 

MD5 校验不通过(ROA)

ContentMD5NotMatched

Specified content md5 is not matched with your request body.

400

 

返回值格局不正确(Format 不反对)

InvalidParameter.Format

Specified parameter format is not valid.

400

反对 XML/JSON,ROA 形式反对 application/json、application/xml。

返回值格局不正确(Accept 不反对)

InvalidParameter.Accept

Specified parameter accept is not valid.

400

 

参数值校验不通过

Invalid{ParameterName}

Specified parameter {ParameterName} is not valid.

400

 

Http 申请办法不反对(API 上回配置容许的申请办法)

UnsupportedHTTPMethod

Specified signature is not matched with our calculation.

400

 

签名办法不反对

InvalidSignatureMethod

Specified signature method is not valid.

400

 

服务器端地位谬误

InternalError

The request processing has failed
due to some unknown error.

500

 

服务临时不可用(底层服务不可用)

ServiceUnavailable

The request has failed due to a temporary failure of the server.

503

倡议查看 API 配置中的 Isp 协定形容,并查看接入方提供的服务是否失常

签名不通过

SignatureDoesNotMatch

Specified signature is not matched with our calculation.

400

签名不通过,请参照 签名验证

参数取值不匹配(url 和 body 体中的参数不匹配)

ValueMismatch.{ParameterName}

Multi-specified parameter {ParameterName} conflicts with each other.

400

 

用户这个时段的流量曾经超限

Throttling.User

Request was denied due to user flow control.

 

 

API 这个时段的流量曾经超限

Throttling.API

Request was denied due to api flow control.

 

 

指定的 content-length 与 body 长度不匹配

ContentLengthDoesNotMatch

Specified content-length is not matched with the length of body.

400

 

指定的参数反复

RepeatedParameter. {ParameterName}

Specified parameter is repeated.

400

 

用户这个时段的流量曾经超限

Throttling.User

Request was denied due to user flow control.

400

 

API 这个时段的流量曾经超限

Throttling.API

Request was denied due to api flow control.

400

 

短少 AccessKeyId

MissingSecurityToken

SecurityToken is mandatory for this action.

400

当 AccessKeyId 以 STS. 结尾时,走 Token 的鉴权逻辑。如果 AccessKeyId 以 STS. 但未提供 SecurityToken 参数 (包含 RPC 和 ROA) 时报此谬误

SecurityToken 过期

InvalidSecurityToken.Expired

Specified SecurityToken is expired.

400

需查看 SecurityToken

客户端谬误(凋谢 API)

错误代码

形容

Http 状态码

语义

解决方案

Repeated%s

The specified %s is repeated.

400

某参数反复(%s 是占位符,理论调用会给出明确的参数名或提醒。)

倡议依照提醒批改反复的参数后重试。

RepeatedCommit

Resubmit request.

400

申请反复

请不要频繁提交申请。

Missing%s

The %s is mandatory for this action.

400

短少参数 %s

依据具体返回补充短少的参数,重试申请。

MissingAppIdOrAppOwner

AppId or AppOwner must have a valid value.

400

短少参数 AppId 或者 AppOwner

参数 AppId 和 AppOwner 不能同时为空。

Invalid%s

The specified parameter %s value is not valid.

400

参数有效

依据返回提醒的具体参数,查看相干参数束缚,批改后重试。

NotFound%s

Cannot find resource according to your specified %s.

400

找不到资源

依据指定的参数 %s 找不到资源,倡议查看 %s 是否正确。

InvalidFormat%s

The specified parameter %s value is not well formatted.

400

参数格局谬误

倡议依据理论返回提醒,查看 %s 的格局要求,批改后重试。

Duplicate%s

The specified parameter %s value is duplicate.

400

参数反复

某申请参数不容许反复,倡议查看修改后重试。

DependencyViolation%s

The specified %s has %s definitions.

400

参数依赖谬误

指定参数被依赖,不能随便删除,请先解除依赖。

Forbidden%s

Not allowed to operate on the specified %s.

403

无权操作 / 操作禁止

您无权执行该操作。

NoPermission

User is not authorized to operate on the specified resource.

403

无权操作

RAM 鉴权不通过。

ExceedLimit%s

The specified %s count exceeds the limit.

400

超出个数限度

个别指用户账户下创立的 API、API 分组或者 APP 超出个数限度。

UserNotFound

The specified user can not be found.

404

指定用户找不到

依据输出的用户信息找不到该用户。

DomainCertificateNotFound

Cannot find the domain certificate.

400

指定域名证书不存在

倡议查看传入的证书 ID 及名称。

DomainNotResolved

The specified domain has not been resolved.

400

指定域名未解析

须要将指定域名 CNAME 解析到分组的二级域名上,能力实现绑定。域名解析是在用户域名购买的网站上操作。

InvalidICPLicense

The specified domain have not got ICP license, or the ICP license does not belong to Aliyun.

400

域名备案不合格

要绑定的域名须要在阿里云做首次备案,曾经在其余零碎做备案的,须要在阿里云备案接入。备案接入须要获取备案号,在阿里云有 ECS 且具备公网 IP 的,每个 ECS 有 5 个备案号。

Invalid%s.LengthLimit

The parameter %s length exceeds the limit.

400

长度超限

参数 %s 超出长度限度,倡议修改后重试。

InvalidApiDefault

The ApiDefault value exceeds limit.

400

流控 API 默认值超过限度值

该值数值不能超过 1 亿,与单位无关。如需上调请提工单申请。

InvalidAppDefault

The AppDefault value must smaller than the UserDefault and ApiDefault.

400

AppDefault 的值不合乎规定

该值须要小于 API 流控值和用户流控值。

InvalidUserDefault

The UserDefault value must bigger than the AppDefault and smaller than the ApiDefault.

400

UserDefault 的值不合乎规定

该值须要小于 API 流控值并大于 APP 流控值。

InvalidParamMapping

Parameters must be fully mapped.

400

参数映射有效

创立 API 时,前后端参数映射须要是全映射。即每个入参都须要配置后端参数名称。

InvalidOwnerAccount

OwnerAccount is invalid.

400

APP 所有者账号有效

个别为操作受权时,输出指标用户的阿里云邮箱账号,该账号有效。倡议查看修改后重试。

ServiceForbidden

Your Gateway service is forbidden by risk control.

400

API 网关服务被风控(应该使用户被风控吧)

请留神不要频繁申请,倡议稍后重试。若重试后仍未解决,可提工单征询。

ServiceUnOpen

Your Gateway service has not been opened.

400

服务未开明

倡议到阿里云官网开明一下 API 网关服务。

ServiceInDept

Your API Gateway service is in dept.

400

(您的 API 网关)服务欠费

充值或者结算后从新开始应用。

EqualSignature

The new signature is the same as the old.

400

新密钥与旧的相等

批改后端签名密钥时,新设置的 Key 和 Secret 不能跟原来的一样。

CertificateNotMatch

The domain does not match the one in the certificate.

400

证书不匹配

指定域名与证书内域名不匹配。

CertificateKeyNotMatch

The certificate private key does not match the public key.

400

证书密钥不匹配

证书的公钥和私钥不匹配。

PrivateKeyEncrypted

The certificate private key is encrypted, please upload the unencrypted version.

400

密钥不能加密

证书私钥加密了,要求上传不加密的版本。

CertificateSecretKeyError

The certificate private key is invalid.

400

证书私钥谬误

倡议查看后从新传入。

InvalidApiServiceAddress

The specified service address is not valid.

400

API 后端服务地址有效

配置的 API 后端服务地址有效。

客户端谬误(调用 API)

错误代码

Http 状态码

语义

解决方案

Throttled by USER Flow Control

403

因用户流控被限度

个别是因为 API 服务商设置的用户流控值导致被流控,能够分割 API 服务商协商放宽限度。

Throttled by APP Flow Control

403

因 APP 流控被限度

个别是因为 API 服务商设置的 APP 流控值导致被流控,能够分割 API 服务商协商放宽限度。

Throttled by API Flow Control

403

因 API 流控被限度

个别是因为 API 服务商设置的 API 流控值导致被流控,能够分割 API 服务商协商放宽限度。

Throttled by DOMAIN Flow Control

403

因二级域名流控被限度

间接拜访二级域名调用 API,每天被拜访次数下限 1000 次。

TThrottled by GROUP Flow Control

403

因分组流控被限度

每个分组有 QPS 限度,能够分割 API 服务商反馈。

Quota Exhausted

403

调用次数已用完

购买的次数已用完。

Quota Expired

403

购买次数已过期

购买的次数曾经过期。

User Arrears

403

用户已欠费

请尽快充值续费。

Empty Request Body

400

body 为空

请查看申请 Body 内容。

Invalid Request Body

400

body 有效

请查看申请 Body。

Invalid Param Location

400

参数地位谬误

申请参数地位谬误。

Unsupported Multipart

400

不反对上传

不反对上传文件。

Invalid Url

400

Url 有效

申请的 Method、Path 或者环境不对。请参照谬误阐明 Invalid Url。

Invalid Domain

400

域名有效

申请域名有效,依据域名找不到 API。请分割 API 服务商。

Invalid HttpMethod

400

HttpMethod 有效

输出的 Method 不非法。

Invalid AppKey

400

AppKey 有效或不存在

请查看传入的 AppKey。留神左右空格的影响。

Invalid AppSecret

400

APP 的 Secret 谬误

查看传入的 AppSecret。留神左右空格的影响。

Timestamp Expired

400

工夫戳过期

请核查申请零碎工夫是否为规范工夫。

Invalid Timestamp

400

工夫戳不非法

请参照 申请签名阐明文档。

Empty Signature

404

签名为空

请传入签名字符串,请参照 申请签名阐明文档。

Invalid Signature, Server StringToSign:%s

400

签名有效

签名有效,参照 Invalid Signature 谬误阐明

Invalid Content-MD5

400

Content-MD5 值不非法

申请 Body 为空,但传入了 MD5 值,或 MD5 值计算错误。请参照 申请签名阐明文档。

Unauthorized

403

未被受权

APP 未取得要调用的 API 的受权。请参照谬误阐明 Unauthorized。

Nonce Used

400

SignatureNonce 已被应用一次

SignatureNonce 不能被重复使用。

API Not Found

400

找不到 API

传入的 GroupId、Stage 等参数不正确,或已下线。

服务器端谬误(凋谢 API)

错误代码

形容

Http 状态码

语义

解决方案

ServiceUnavailable

The request has failed due to a temporary failure of the server.

503

服务不可用

倡议重试。

InternalError

The request processing has failed due to some unknown error, exception or failure.

500

外部谬误

倡议重试。

服务器端谬误(调用 API)

错误代码

Http 状态码

语义

解决方案

Internal Error

500

API 网关外部谬误

倡议重试。

Failed To Invoke Backend Service

500

底层服务谬误

API 提供者底层服务谬误,倡议重试,如果重试屡次依然不可用,可分割 API 服务商解决。

Service Unavailable

503

服务不可用

倡议稍后重试。

Async Service

504

后端服务超时

倡议稍后重试。

五、Invalid Signature

谬误起因

客户端与服务端计算的签名不匹配导致的。

解决方案

当签名不匹配时网关会通过 HTTP Response Header 中的 X-Ca-Error-Message 返回服务端参加签名计算的 StringToSign。

StringToSign 是用户申请前须要拼接的一个用于计算签名的字符串,在文档:【申请签名阐明文档】查看具体阐明。

客户端只需打印出本地本人拼接的 StringToSign 进行比照,找出哪里不同,针对性的解决,如果应用的官网提供的调用 Demo,能够到签名计算的工具类中找出计算签名前的 StringToSign 打印进去即可进行比照。

因为 HTTP Response Header 中不容许呈现换行符,因而返回后果中的 StringToSign 换行符都曾经被抹去。请参照文档正当比对。

如果服务端 StringToSign 与客户端统一,请再查看应用的 AppKey、AppSecret 是否正确,尤其留神是否额定谬误增加了空格等不容易发现的字符。

六、Invalid Signature

谬误起因

申请传入的 HTTP Method 或者 Path 不正确,或者申请指定的环境(X-Ca-Stage)不正确。

如指定调用 TEST 环境的 API,但 API 并未被公布到测试。

留神:

  • 申请时不指定环境,默认为拜访 RELEASE 环境。
  • 对 API 定义有批改,须要从新公布能力失效。许多呈现这个谬误的都是因为批改了 Path 没公布不失效,用新 Path 申请报错。

解决办法

别离查看上述三个因素:HTTP Method、Path、环境。

  1. API 阐明中要求用 POST 则不能用 GET 申请。Method 要统一。
  2. Path 要与以后运行的统一。凋谢 API 的用户常常批改之后不公布,导致调用失败。
  3. 指定环境要正当。在申请的 Header 里有个参数 X-Ca-Stage,取值 TEST/PRE/RELEASE,别离指向测试和线上环境,不传入该参数则默认是线上。
  4. 更多参数及申请阐明,参见 API 调用示例

七、Unauthorized

谬误起因

申请 API 时,应用的 AppKey 所属于的 APP 未取得受权。无权调用 API。

解决办法

受权失效的决定因素有:APP、API、环境、已受权

  1. 如果是凋谢 API 的用户本人测试,则须要在 API 网关控制台,实在创立 APP,而后依据 AppId 在 API 列表页操作受权。即凋谢 API 的用户自测时,其实是本人须要给本人创立的 APP 受权。
  2. 如果是购买了 API 的用户,则在 APP 详情页能够查看该 APP 曾经被受权的 API,若没有要调用的 API,则自行操作受权。
  3. 如果是应用了合作伙伴的 API,没有购买行为的。则分割合作伙伴。您须要提供 AppId,而后由 API 提供者操作受权。
  4. 受权关系是有环境属性的,即 APP、API 都是同一个的状况下,受权的环境和申请的环境也要雷同。受权了某 API 在 A 环境的权限,然而也不能调用该 API 在 B 环境中的服务。申请时的环境等参数指定,请参见【API 申请示例】。
  5. 最重要的一点是,确认分明是否用错了 APP,是否调用错了 API。因为 API 和 APP 较多,很多用户因为搞混了而没能调用胜利。比方受权了 APP A,然而调用时候用的是 APP B,请认真排查。

八、后端服务调不通

  • 须要查看您录入的后端服务地址是否正确。
  • 须要保障您的后端服务能够被网关拜访到。
  • 如果应用的是内网 IP,请保障您的后端服务于您的 API 处于同一地区。
  • 查看您 API 定义的“后端超时”工夫。
    在 API 定义时会要求您录入一个超时工夫,当您的后端服务没有在您指定的工夫内返回时,API 网关依然会提醒您无奈链接后端服务。您能够依据后端服务的理论耗时对”后端超时”进行调整,最大反对 30000ms。

    留神:单位是 ms(毫秒)

  • 如后端服务在 Ecs,请查看平安组设置,是否能够被内部拜访。请保障平安组能够被 API 网关所在的 IP 段拜访。

    • 设置办法点击链接:设置 ECS 平安组
      跳转至:

      在发送调用申请前,请调整如下配置项,其余项为选填,如无特殊要求,请不要改变。

      • RegionId, 区域 ID,请填写资源所在的区域 ID, 例如:cn-shenzhen、cn-shanghai
      • PortRange:端口,若后端服务 HTTP 为:80/80,HTTPS:443/443
      • NicType:网络类型,取值:

        • internet:外网
        • intranet:内网
        • 若以如上述链接进入,则曾经为您默认设置了:intranet(内网)
      • SourceCidrIp: 容许的源 IP 地址范畴,以下地址为 API 网关的进口 IP,请辨别区域填写
        注:局部区域的 API 网关存在多个进口 IP 段,均须要退出平安组(每次操作只能增加一个 IP 段,多个 IP 段的区域需反复执行操作),增加时请留神内、外网。

区域

内网

外网

华北 1(青岛)

10.151.203.0/24

华北 2(北京)

10.152.167.0/24

123.56.213.0/24

华南 1(深圳)

10.152.27.0/24

120.76.91.0/24

华东 1(杭州)

10.152.29.0/24
10.152.30.0/24

114.55.70.0/24

华东 2(上海)

10.152.163.0/24
10.152.164.0/24
11.192.97.0/24
11.192.98.0/24
11.192.96.0/24

139.224.92.0/24
139.224.92.0/24
139.224.4.0/24

香港

10.152.161.0/24
10.152.162.0/24

47.91.171.0/24
47.89.61.0/24

亚太西北 1(新加坡)

10.152.165.0/24
10.152.166.0/24
11.192.152.0/23
11.193.8.0/24
11.193.9.0/24

47.88.235.0/24
47.88.147.0/24

        • 填写实现后,点击发送申请,实现设置。

    当之返回一个 RequestID 时,示意设置胜利

    确认增加是否胜利
    能够到控制台 -【ECS 控制台】-【平安组】- 找到相应平安组,点击查看“平安组规定”的“内网入方向”或者“公网入方向”。

九、api 平安

  • 如何保障网关到后端服务器的调用平安?
  • 更换后端密钥是否须要公布 API?
  • 如何不中断服务更换后端密钥?
  • 如何给指定人凋谢 API?
  • 对并发的限度是怎么样的?

十、API 定义

  • Path 与后端服务地址中的动静参数名称、程序是否必须保持一致?
  • 为什么无奈调通我的后端服务?
  • 用户传了一个未定义的参数,网关将如何解决
  • 后端服务是否能够应用 HTTPS
  • 服务信息是什么
  • API 根底定义是什么
  • 为什么要填写 API 形容
  • API 类型是什么
  • API 名称是什么
  • API 更新是否会有提早
  • 一个分组最多能够绑定 5 个已备案的域名
  • 如何使您的 API 反对 HTTPS?
  • 后端服务地址如何录入?
  • 为什么要定义参数?
  • 参数定义是必须的吗?
  • 不定义参数网关如何解决?
  • 参数定义蕴含什么?
  • 能够对参数做哪些限度?
  • Path 是什么?
  • 为什么会提醒我 Path 抵触?

十一、产品阐明

  • VPC 下的用户应用 API 网关有什么要求?
  • 有没有节点、可用区的要求?
  • 申请用户的资格是什么?账号下是否须要什么业务?
  • 产品是否能够降级、降配,流程是什么?
  • 产品应用是怎么免费的?
  • 产品在控制台的治理都有什么?如何治理?
  • 金融云和微金融用户能够购买么?
  • 产品利用场景及作用
  • 产品购买时长是什么?一个账号购买的有限度么?
  • 这个产品能够应用平安产品吗?能够在 slb 上配置吗?
  • 网关反对百倍抵偿吗?
  • 反对退款吗,如何操作?
  • 反对在线协定吗?如果是线下协定如何操作?
  • 产品续费到期暂停工夫、删除工夫

十二、调用 api

  • APP 是什么,怎么从用户理论的利用关联到咱们定义的 APP,理论利用是挪动端还是 web 端?
  • 挪动端的 AppKey 平安怎么保障?
  • 如何指定调用环境?
  • 为什么 API 无奈调用?
  • 如何无效避免 API 的重放攻打?

十三、分组相干

  • 我能够创立多少 API 分组?
  • 云 API 部署在哪些地区?
  • 该怎么抉择分组地区?
  • 二级域名是什么,有什么应用限度?

十一、产品阐明

如何找到已购买的 API

更新工夫:2017-06-17 14:10:07   分享:

您在 API 市场上购买 API 之后,即实现 API 的主动受权。您能够在治理控制台寻找您都曾经购买的 PI。

  • 关上云市场,在右上角点击【买家核心】-【\[进入治理控制台 \]】

(https://market.console.aliyun.com/imageconsole/index.htm“进入治理控制台”)

  • 在左侧菜单,点击【API】即可,如图:

十四、监控与告警

  • API 监控的时效性
  • API 监控的维度
  • 如何查看 API 的运行状况

十五、相干协定

阿里云 API 网关试用服务协定

十六、域名相干

  • 域名绑定多久能失效?
  • 如何应用一个自有域名拜访 API?
  • 域名是不是须要在[阿里云备案能力用于凋谢 API?](https://help.aliyun.com/knowl…
  • 如何解析域名?
  • 分组能够绑定几个域名?

转载于:https://www.cnblogs.com/lexia…

正文完
 0