当使用Alibaba Cloud SDK for Python访问阿里云服务时,您必须提供阿里云账号进行身份验证。本文以AccessKey凭证类型为例,说明如何设置身份凭证。

目前,Alibaba Cloud SDK for Python支持以下几种身份验证方式:

验证方式 说明
AccessKey 使用一对AccessKey ID和AccessKey Secret访问
StsToken 使用STS Token访问
RamRoleArn 使用RAM子账号的AssumeRole方式访问
EcsRamRole 在ECS实例上通过EcsRamRole实现免密验证
BearerToken 仅云呼叫中心(Cloud Call Ceter)产品支持

为了保证您的账号安全,建议您使用RAM账号来访问阿里云服务。阿里云账号的AccessKey对拥有的资源有完全的权限。RAM账号由阿里云账号授权创建,仅有对特定资源限定的操作权限。如何创建RAM账号的AccessKey,请参见为RAM用户创建AccessKey

使用AccessKey作为访问凭据,您可以直接在初始化Client时,通过get_client方法参数显式传入AccessKey凭证信息。示例代码如下:

from alibabacloud import get_client

ecs_client = get_client(
    'ecs',  # 产品code
    access_key_id=your_access_key_id,  # 账号的AccessKey ID
    access_key_secret=your_access_key_secret,  # 账号的AccessKey Secret
    region_id=your_region_id  # 地域ID
)
response = ecs_client.describe_instances(page_size=10)
for instance in response["Instances"]["Instance"]:
    print(instance.get("ImageId"))
说明 显式传递的方式存在硬编码以及安全问题,请您慎重使用,并保管好您的AccessKey信息。

Alibaba Cloud SDK for Python优化了硬编码传入凭证的方式,提供了默认链式查找的方式,来获取可用的凭证。向客户端发起请求时,Alibaba Cloud SDK for Python会默认开始查找您已经配置好的身份凭证。一旦获取到凭证credentials,立即停止搜索,并返回凭证。您可以通过预先配置好的AccessKey凭证,来直接使用Alibaba Cloud SDK for Python。示例代码如下:

from alibabacloud import get_client
ecs_client = get_client('ecs')
response = ecs_client.describe_instances(status='running')
print(response)
默认查找顺序如下:
  1. 在方法参数中查找。

    若传入了access_key_idaccess_key_secret参数且值不为空,将使用它们创建默认凭证。详情请参见通过方法参数配置凭证

  2. 在环境变量中查找。

    若配置了ALIBABA_CLOUD_ACCESS_KEY_IDALIBABA_CLOUD_ACCESS_KEY_SECRET环境变量且值不为空,将使用它们创建默认凭证。具体配置方法,请参见通过环境变量配置凭证

  3. 在配置文件中查找。

    若配置了credentials.ini文件,将使用它们创建默认凭证。具体配置方法,请参见通过凭证文件配置凭证(推荐)

  4. 在ECS服务器的环境变量中查找。

    若配置了RAM角色的ECS服务器的环境变量ALIBABA_CLOUD_ROLE_NAME且值不为空,将使用它们创建默认凭证。具体配置方法,请参见通过ECS实例凭证实现无AK访问

说明 Alibaba Cloud SDK for Python还支持用户自定义凭证提供链,获取真实的访问凭证。具体实现方法,请参见使用自定义凭证提供链