每天一个知识点——怎么调用接口

发布时间:2026/7/16 17:39:44
每天一个知识点——怎么调用接口 使用AK/SK认证调用接口使用AK/SK调用接口本质上就是用SK对请求做签名然后把AK和签名一起发给服务端。根据场景不同有两种主流方式自己拼签名或使用官方SDK。每天一个知识点——AK认证Access Key 认证-CSDN博客一、调用前的准备工作无论哪种方式你都需要先拿到以下信息 [cite:1]信息项说明AK/SK从云厂商控制台如阿里云/AWS/华为云的访问密钥页面获取Endpoint服务访问域名不同Region地址不同URI具体接口的路径和参数Project/Region部分云厂商还需要项目ID或区域信息二、方式一手动构造签名Python 标准库即可核心流程拼规范请求串 → 用SK做HMAC-SHA256签名 → 拼到Authorization头[cite:2]。import hmac import hashlib import secrets import time # 1. 准备密钥从控制台获取 AK your-access-key-id SK your-secret-access-key # 务必保密不要硬编码在代码中 # 2. 拼规范请求串简化版实际需按云厂商文档拼 def canonical_request(method, path, query, body): body_hash hashlib.sha256(body.encode()).hexdigest() return f{method}\n{path}\n{query}\n{body_hash} # 3. 生成签名 def sign(secret_key, string_to_sign): return hmac.new( secret_key.encode(), string_to_sign.encode(), hashlib.sha256 ).hexdigest() # 4. 构造请求 method, path, query GET, /api/v1/resources, page1size10 canon canonical_request(method, path, query) signature sign(SK, canon) # 拼 Authorization 头 auth_header fAK {AK}:{signature} # 发请求需 pip install requests # import requests # resp requests.get( # fhttps://your-endpoint.com{path}?{query}, # headers{Authorization: auth_header} # )三、方式二使用官方SDK推荐云厂商提供了封装好的SDK你只需传入AK/SK即可无需手动处理签名细节。Python阿里云为例# pip install alibabacloud-ecs20140526 # 按需安装对应产品的SDK from alibabacloud_ecs20140526.client import Client as EcsClient from alibabacloud_ecs20140526 import models as ecs_models from alibabacloud_tea_openapi import models as open_api_models # 配置AK/SK config open_api_models.Config( access_key_idyour-ak, access_key_secretyour-sk, region_idcn-hangzhou ) client EcsClient(config) # 调用接口比如查询ECS实例列表 req ecs_models.DescribeInstancesRequest() resp client.describe_instances(req) print(resp.body)Java阿里云为例// Maven 依赖aliyun-java-sdk-core 对应产品SDK import com.aliyuncs.DefaultAcsClient; import com.aliyuncs.profile.DefaultProfile; import com.aliyuncs.IAcsClient; DefaultProfile profile DefaultProfile.getProfile( cn-hangzhou, // Region your-access-key-id, // AK your-secret-key // SK ); IAcsClient client new DefaultAcsClient(profile); // 然后调用具体产品的Request即可Python华为云为例# pip install huaweicloudsdkcore from huaweicloudsdkcore.auth.credentials import BasicCredentials from huaweicloudsdkcore.http.http_config import HttpConfig credentials BasicCredentials(your-ak, your-sk) config HttpConfig.get_default_config() # 然后用对应服务的Client调用接口四、关键注意事项要点说明SK绝不可泄露不要硬编码在代码中推荐用环境变量或密钥管理服务Vault/KMS签名需要时间戳多数云厂商要求签名中包含时间戳用于防重放攻击HTTPS必须虽然签名能防篡改但AK在请求中明文传输必须走HTTPS防窃听按厂商文档为准阿里云、AWS、华为云、腾讯云的规范请求格式各有差异务必参考对应官方文档[cite:2][cite:3]使用SDK 手动签名手动签名容易出错URL编码、Header排序等生产环境强烈建议使用官方SDK