阿里云国际分销商:阿里云API接口调用与密钥配置方法
对于刚接触云计算或者后端开发的同学来说,“调用 API 接口”是把业务和云资源打通的必经之路。无论是想写个脚本自动开关机、批量修改安全组,还是把阿里云的 OSS 存储、大模型接口集成到自己的系统里,都离不开 API。
但很多人一看到密码学名词(比如 AccessKey、Secret、HMAC-SHA1、签名算法)就头大,或者因为配置不当,不小心把密钥泄漏到了 GitHub 上,导致服务器被黑客黑去挖矿,损失惨重。
今天这篇教程用大白话带你走通全流程:从如何安全地获取密钥,到如何在本地优雅地配置,再到用最简单的代码完成第一次 API 调用。
第一阶段:核心概念(别把大门钥匙直接挂在嘴边)
在动手之前,必须搞清楚两个核心概念:AK 和 SK。它们就像是你的云端身份证和密码。
- AccessKey ID(简称 AK): 相当于你的“用户名”。它是公开的,用来告诉阿里云“我是谁”。
- AccessKey Secret(简称 SK): 相当于你的“密码”。它绝对不能公开,用来证明“我确实是我”。
阿里云的每一个 API 请求,都需要用 SK 对请求内容进行加密签名。阿里云收到请求后,用同样的算法校验,对上了才放行。
🚨 铁律:千万不要用主账号的 AK/SK!
如果你直接用阿里云大老板账号(主账号)的密钥,这个密钥就拥有你账户下所有财产的最高控制权(扣费、删库、买服务器)。
正确做法: 专门创建一个“扫地僧”一样的子账号(RAM 用户),只给它分配干某一件特定事情的权限,然后用这个子账号的 AK/SK。
第二阶段:安全获取密钥(5分钟)
我们要通过阿里云的 RAM(访问控制) 来创建一个安全的子账号密钥。
1. 创建 RAM 子用户
- 登录阿里云控制台,在顶部搜索栏输入 RAM,点击进入 访问控制 控制台。
- 在左侧导航栏,点击 身份管理 -> 用户。
- 点击 创建用户 按钮。
- 关键参数配置:登录名称: 起个有意义的名字,比如 api-operator-oss(代表这个账号专门用来调 OSS 接口)。显示名称: 比如 OSS接口专用账号。访问方式: 重点! 必须勾选 OpenAPI 调用访问。不需要勾选“控制台登录”,因为这个账号不需要登录网页。
- 点击确定。此时屏幕上会弹出一个表格,里面包含 AccessKey ID 和 AccessKey Secret。
- 立刻复制并保存到本地安全的地方(比如密码管理器)! > 注意: 这个 Secret 只会显示这一次,一旦你刷新页面或者关闭窗口,就再也看不到了。如果丢了,只能删掉重新建一个。
2. 给人事塞权限(授权)
刚创建的子账号是个“白丁”,没有任何权限,直接调用接口会报错 User not authorized。
- 在刚刚的用户列表里,找到你新建的用户,点击右侧的 添加权限。
- 选择授权范围: 整个云账号。
- 选择策略: 在搜索框输入你需要调用的服务。比如你想控制服务器,就搜 ECS,勾选 AliyunECSFullAccess(管理权限)或 AliyunECSReadOnlyAccess(只读权限)。建议遵循最小权限原则,需要什么给什么,别图省事直接给 AdministratorAccess(系统管理员)。
- 点击确定,授权完成。
第三阶段:密钥本地配置(拒绝硬编码!)
拿到 AK/SK 后,千万不要直接写死在代码里(这就是传说中的“硬编码”)。万一哪天代码传到了公开仓库,你就等着用全额工资来交云账单吧。
业界标准做法是利用环境变量(Environment Variables)。
1. Linux / macOS 配置方法
打开终端,编辑你的环境变量文件(比如 ~/.bashrc 或 ~/.zshrc):
export ALIBABA_CLOUD_ACCESS_KEY_ID="你的AccessKeyID"
export ALIBABA_CLOUD_ACCESS_KEY_SECRET="你的AccessKeySecret"
保存后,运行 source ~/.bashrc(或对应文件)让配置生效。
2. Windows 配置方法
- 右键“此电脑” -> “属性” -> “高级系统设置” -> “环境变量”。
- 在“用户变量”或“系统变量”里,点击“新建”:变量名:ALIBABA_CLOUD_ACCESS_KEY_ID,变量值:填入你的 AK。再新建一个:变量名:ALIBABA_CLOUD_ACCESS_KEY_SECRET,变量值:填入你的 SK。
- 一路点击确定保存。注意:配置完后需要重启你的集成开发环境(如 VS Code / PyCharm)或命令行窗口,否则读不到新变量。
第四阶段:第一次 API 调用实战(Python 示例)
现在环境准备好了,我们用最推荐的方法——使用阿里云官方的 V2.0 SDK 来做一次调用。这里以查询你账号下所有的 ECS 服务器实例(DescribeInstances)为例。
1. 安装 SDK 核心库和对应产品库
在本地终端运行:
Bash
pip install alibabacloud_tea_openapi
pip install alibabacloud_ecs20140526==4.3.0
2. 编写调用代码
阿里云的 V2.0 SDK 非常智能,它会自动去读取我们刚才配置的环境变量 ALIBABA_CLOUD_ACCESS_KEY_ID 和 ALIBABA_CLOUD_ACCESS_KEY_SECRET,代码里一个敏感词都不用写。
import os
import sys
from alibabacloud_ecs20140526.client import Client as Ecs20140526Client
from alibabacloud_tea_openapi import models as open_api_models
from alibabacloud_ecs20140526 import models as ecs_20140526_models
class AliyunApiDemo:
@staticmethod
def create_client() -> Ecs20140526Client:
"""
初始化账号Client
"""
# SDK会自动从环境变量中获取ALIBABA_CLOUD_ACCESS_KEY_ID和ALIBABA_CLOUD_ACCESS_KEY_SECRET
config = open_api_models.Config()
# 选择你要调用的地域名,比如杭州是 cn-hangzhou,上海是 cn-shanghai
config.endpoint = f"ecs.cn-hangzhou.aliyuncs.com"
return Ecs20140526Client(config)
@staticmethod
def main():
client = AliyunApiDemo.create_client()
# 构造请求参数(查询当前地域下的ECS实例)
describe_instances_request = (
ecs_20140526_models.DescribeInstancesRequest(
region_id="cn-hangzhou"
)
)
try:
# 发起调用
response = client.describe_instances(describe_instances_request)
# 打印返回的 JSON 结果
print("=== API 调用成功,返回结果如下 ===")
print(response.body)
except Exception as error:
# 优雅地处理报错
print(f"=== API 调用失败 ===")
if hasattr(error, "message"):
print(f"错误信息: {error.message}")
if hasattr(error, "code"):
print(f"错误码: {error.code}")
if __name__ == "__main__":
AliyunApiDemo.main()
运行这段代码,如果你看到了你服务器的实例列表 JSON 数据,说明你已经成功打通了阿里云的 API 大门。
第五阶段:高手进阶神仙工具——OpenAPI Explorer
如果你不想写代码,或者不知道某个接口的参数怎么填,阿里云提供了一个绝对的“作弊神器”——OpenAPI 门户(OpenAPI Explorer)。
- 浏览器访问 https://next.api.aliyun.com/。
- 在左侧搜索框输入你想用的功能,比如“创建云盘”或者“发送短信”。
- 在中间的表单里,直接用可视化界面的输入框填参数。
- 重点来了: 网页右侧的“SDK 示例”标签页,会实时根据你填的参数自动生成各种语言的代码(Python、Java、Go、Node.js 都有)。
- 你甚至可以直接在网页上点击“发起调用”,看接口返回的结果对不对,调试好了之后,把右侧的代码直接复制到你的项目里就能用。
总结避坑口诀
调接口不难,难在细节和安全。最后送你四个避坑锦囊:
- 权限最小化: 能给只读就别给读写,能限特定产品就别全选。
- 代码无密化: 源码里看到 access_key 后面跟着字符串的,通通改写成从环境变量读取。
- 定期轮换制: 商业项目的子账号密钥,建议每隔半年在控制台禁用掉,重新生成一套,防止员工离职或无意中泄露。
- 善用 Explorer: 别硬啃官方的文字文档,多去 OpenAPI 门户看自动生成的 Demo 代码,能少走弯路。

