如果您使用火山引擎 API 来调用云服务的功能,必须在 API 请求头中包含签名参数。签名参数中需要包含 Signature 签名。
Signature 签名是基于密钥(kSigning)和签名字符串(StringToSign)计算出来的。计算逻辑的伪代码如下:
// kSigning:密钥 // StringToSign:签名字符串 // HMAC:指代 HMAC-SHA256 Signature = HexEncode(HMAC(kSigning, StringToSign))
kSigning 表示用来计算签名的密钥。要获取 kSigning,必须先从密钥列表页面获取 Secret Access Key。然后使用以下代码生成 kSigning。
kSecret = *Your Secret Access Key* kDate = HMAC(kSecret, Date) kRegion = HMAC(kDate, Region) kService = HMAC(kRegion, Service) kSigning = HMAC(kService, "request")
StringToSign 表示用来计算签名的签名字符串,包含规范请求的元数据信息。StringToSign 是通过连接以下值生成的:
StringToSign 的伪代码如下:
// Hash 函数使用 SHA256 算法 StringToSign = Algorithm + '\n' + RequestDate + '\n' + CredentialScope + '\n' + HexEncode(Hash(CanonicalRequest))
StringToSign 伪代码中的参数含义如下:
Algorithm
Algorithm 表示签名算法,是一个固定值的字符串。取值为 HMAC-SHA256
。
RequestDate
RequestDate 表示请求日期,与公共参数 x-date
相同。示例值是20210913T081805Z
。
CredentialScope
CredentialScope 表示凭证范围。格式如下:
YYYYMMDD/region/service/request
CanonicalRequest
CanonicalRequest 表示规范请求。CanonicalRequest 的伪代码如下:
HTTPRequestMethod + '\n' + CanonicalURI + '\n' + CanonicalQueryString + '\n' + CanonicalHeaders + '\n' + SignedHeaders + '\n' + HexEncode(Hash(RequestPayload))
CanonicalRequest 伪代码中参数的含义如下:
\n
)。在示例代码中,我们调用 requestMCDN 函数进行加密和发起请求,并输出请求的结果。这里我们以调用 DescribeContentQuota
API 为例,获取在多云CDN服务中某个账号 ID 的刷新与预热任务的配额。