上云无忧 > 文档中心 > 百度智能云消息队列 for RabbitMQ API调用须知
消息队列 for RabbitMQ
百度智能云消息队列 for RabbitMQ API调用须知

文档简介:
用户与百度智能云进行交互时,需要通过使用Access Key Id / Secret Access Key加密的方法来验证某个请求的发送者身份。Access Key Id(AK)用于标示用户,Secret Access Key(SK)是用户用于加密认证字符串和百度智能云用来验证认证字符串的密钥,其中SK必须保密,只有用户和百度智能云知道。
*此产品及展示信息均由百度智能云官方提供。免费试用 咨询热线:400-826-7010,为您提供专业的售前咨询,让您快速了解云产品,助您轻松上云! 微信咨询
  免费试用、价格特惠

API认证机制

用户与百度智能云进行交互时,需要通过使用Access Key Id / Secret Access Key加密的方法来验证某个请求的发送者身份。Access Key Id(AK)用于标示用户,Secret Access Key(SK)是用户用于加密认证字符串和百度智能云用来验证认证字符串的密钥,其中SK必须保密,只有用户和百度智能云知道。

当百度智能云接收到用户的请求后,系统将使用相同的SK和同样的认证机制生成认证字符串,并与用户请求中包含的认证字符串进行比对。如果认证字符串相同,系统认为用户拥有指定的操作权限,并执行相关操作;如果认证字符串不同,系统将忽略该操作并返回错误码。鉴权认证机制的详细内容请参见鉴权认证机制。

排版约定

排版格式 含义
< > 变量
[] 可选项
{} 必选项
等宽字体Courier New 屏幕输出

时间与日期

日期与时间的表示有多种方式。为统一起见,除非是约定俗成或者有相应规范的,凡需要日期时间表示的地方一律采用UTC时间,遵循ISO 8601,并做以下约束:

  • 表示日期一律采用YYYY-MM-DD方式,例如2016-06-01表示2016年6月1日。
  • 表示时间一律采用hh:mm:ss方式,并在最后加一个大写字母Z表示UTC时间。例如23:00:10Z表示UTC时间23点0分10秒。
  • 凡涉及日期和时间合并表示时,在两者中间加大写字母T,例如2016-06-01T23:00:10Z表示UTC时间2016年6月1日23点0分10秒。

通用说明

API调用遵循HTTP/HTTPS协议,各Region采用不同的域名,具体域名为rabbitmq.{region}.baidubce.com。 数据交换格式为JSON,所有request/response body内容均采用UTF-8编码。

请求参数

请求参数包括如下4种:

参数类型 说明
URI 通常用于指明操作实体,如:POST /v{version}/instance/{instanceId}
Query URL中携带的请求参数
HEADER 通过HTTP头域传入,如:x-bce-date
RequestBody 通过JSON格式组织的请求数据体

返回值

返回值分为两种形式:

返回内容 说明
HTTP STATUS CODE 如200,400,403,404等
RequestBody JSON格式组织的响应数据体

API版本号

参数 类型 参数位置 描述 是否必须
version string URL参数 API版本号,当前API版本为v1

认证机制

所有API的安全认证一律采用Access Key与请求签名机制。 Access Key由Access Key ID和Secret Access Key组成,均为字符串。 对于每个HTTP请求,使用下面所描述的算法生成一个认证字符串。提交认证字符串放在Authorization头域里。服务端根据生成算法验证认证字符串的正确性。 认证字符串的格式为:

bce-auth-v{version}/{accessKeyId}/{timestamp}/{expirationPeriodInSeconds}/{signedHeaders}/{signature}

说明

  • version是正整数。
  • timestamp是生成签名时的UTC时间。
  • expirationPeriodInSeconds表示签名有效期限。
  • signedHeaders是签名算法中涉及到的头域列表。头域名之间用分号(;)分隔,如host;x-bce-date。列表按照字典序排列。(本API签名仅使用host和x-bce-date两个header)
  • signature是256位签名的十六进制表示,由64个小写字母组成。

密码加密传输规范定义

所有涉及密码的接口参数都需要加密,禁止明文传输。密码一律采用AES 128位加密算法进行加密,用SK的前16位作为密钥,加密后生成的二进制字节流需要转成十六进制,并以字符串的形式传到服务端。具体步骤如下:

  • byte[] bCiphertext= AES(明文,SK)
  • String strHex = HexStr(bCiphertext)

幂等性

当调用创建接口时如果遇到了请求超时或服务器内部错误,用户可能会尝试重发请求,这时用户通过clientToken参数避免创建出比预期要多的资源,即保证请求的幂等性。

幂等性基于clientToken,clientToken是一个长度不超过64位的ASCII字符串,通常放在query string里,如 http://rabbitmq.bj.baidubce.com/v1/instance?clientToken=be31b98c-5e41-4838-9830-9be700de5a20。

如果用户使用同一个clientToken值调用创建接口,则服务端会返回相同的请求结果。因此用户在遇到错误进行重试的时候,可以通过提供相同的clientToken值,来确保只创建一个资源;如果用户提供了一个已经使用过的clientToken,但其他请求参数(包括queryString和requestBody)不同甚至url Path不同,则会返回IdempotentParameterMismatch的错误代码。

clientToken的有效期为24小时,以服务端最后一次收到该clientToken为准。也就是说,如果客户端不断发送同一个clientToken,那么该clientToken将长期有效。

错误返回

错误返回格式

请求发生错误时通过response body返回详细错误信息,遵循如下格式。

参数名 类型 说明
requestId String 本次请求的requestId
code String 错误码
message String 错误描述

示例:

{
    "requestId" : "ae2225f7-1c2e-427a-a1ad-5413b762957d",
    "code" : "NoSuchKey",
    "message" : "The resource you requested does not exist"
}

错误返回码

错误码 错误描述 HTTP状态码 中文解释
InternalFailure We encountered an Internal error. Please try again. 400 内部错误
ValidationError 具体错误原因 400 校验失败
InvalidVersion The API version specified was invalid. 400 非法版本号
ServiceInternalError Internal service occurs error. 500 内部(未知)服务器错误
PaymentFailed payment failed, please check remaining balance 403 支付失败
InsufficientBalance Insufficient balance, please check remaining balance 403 支付失败,余额不足
NoSuchObject The specified object is not found or resource do not exist. 404 资源不存在
OperationDenied No permission to accessor or permission error. 403 没有权限做此操作
BadRequest Bad request parameters or illegal request. 400 参数输入不合法
InstanceNotFound The specified instance does not exist. 404 指定的RabbitMQ实例不存在
QualifyNotPass The User has not pass qualify. 403 用户未通过实名认证
AuthValidateFailed Fail to validate authorization 401 鉴权失败
AccessDenied Access denied. 403 禁止操作该实例
InvalidAction Invalid Action. 400 非法操作
MissingParameter A required parameter '' is not supplied. 400 缺少必传参数""
MissingDateHeader Request must have a "date" or "x-bce-date" header. 400 Header中缺少"date" 或 "x-bce-date"其中之一
MissingAuthToken Request must have a "authorization" header. 400 Header中缺少"authorization"
RequestExpired Request has expired. 400 请求中authorization过期
QuotaExceeded The amount of instance exceed limit. 400 实例数量超出用户配额
InstanceCreationFailed Fail to create instance. 400 创建实例失败,通常是由于资源不足,用户金额不足等
NotSupportOperation Internal server does not support such operation. 501 服务器不支持该操作
InternalServerError Internal Server Error. >500 服务器内部错误

公共头

公共请求头

下表列出了所有RabbitMQ OpenAPI所携带的公共头域。HTTP协议的标准头域不在此处列出。

公共头部 描述
Authorization 包含Access Key与请求签名。
Host 表示请求API的域名。
Content-Type application/json; charset=utf-8。
Content-Length 实际请求body大小。
x-bce-date 表示日期的字符串,如果用户使用了标准的Date域,该头域可以不填。当两者同时存在时,以x-bce-date为准。统一使用UTC时间,日期和时间之间加字母T,结尾加字母Z表示UTC时间,如:2014-06-01T23:00:10Z。服务端由到请求会判断本机时间与该时间差值,若大于30分钟,则抛弃本次请求,响应HTTP 400。
Date 同x-bce-date头域,二者必须存在其一。

公共响应头

下表列出了所有RabbitMQ OpenAPI的公共响应头域。HTTP协议的标准响应头域不在此处列出。

公共头部 描述
Content-Type application/json; charset=utf-8。
Content-Length 返回body大小。
x-bce-request-id 对应请求的requestId,由服务端生成并自动设置到响应头域中。
相似文档
  • 实例续费: 为一个指定的预付费实例续费,延长该实例的使用时间。 说明: 后付费实例不能续费。 处于变配、创建期间的实例不能续费。 已开通到期转后付费的实例不能续费。 预付费转后付费: 为一个指定的预付费实例开通转后付费,预付费到期后生效。
  • Instance Object详情: nstanceId String 实例ID instanceName String 实例名称 instanceStatus String 实例状态 instanceType String 实例类型:单机(Single),集群(Cluster) description String 实例描述信息 engine String 消息引擎 engineVersion String 消息引擎版本 specification Struct 实例规格:单机返回实例规格(CPU核数和内存,内存单位GB),集群返回实例规格和节点数
  • Billing相关: paymentTiming String 付费方式。预付费:Prepaid,后付费:Postpaid;reservation Reservation 保留信息,支付方式为后支付时不需要设置,预支付时必须设置;
  • 本文档通过一个简单的例子来展示如何使用代码来访问RabiitMQ实例。 前置条件: 参考操作指南,创建RabbitMQ示例,并且记录下创建时配置的账号和密码。 RabbitMQ实例创建完毕后,在实例详情页面获取实例的地址和端口,以及所在的VPC。
  • 百度智能云时序时空数据库(Time Series Database,简称 TSDB)是一种存储和管理时间序列数据的专业化数据库,为时间序列的存储提供高性能读写、低成本存储、强计算能力和多生态支持的多种能力。
官方微信
联系客服
400-826-7010
7x24小时客服热线
分享
  • QQ好友
  • QQ空间
  • 微信
  • 微博
返回顶部