Endpoint是阿里云服务的API服务端地址。阿里云SDK内置了Endpoint寻址模块,当您调用SDK对一个服务发起请求时,SDK会自动根据您在创建Client时指定的地域ID(Region ID)和产品ID确定要使用的Endpoint。

自动寻址

不同的地域,单个服务可能有不同的Endpoint。例如,云服务器(ECS)在华东1(杭州)地域的Endpoint是 ecs.cn-hangzhou.aliyuncs.com, 而在日本(东京)地域的Endpoint是ecs.ap-northeast-1.aliyuncs.com

阿里云2000元代金券免费领,最新优惠1折抢购,2核4G云服务器仅799元/3年,新老用户同享,立即抢购>>>

您需要在初始化AcsClient实例时指定一个地域ID,系统会根据指定的地域ID和产品名称,返回对应的服务地址。例如,您在调用ECS SDK时创建Client的Region ID设置为cn-hangzhou,则使用ecs.cn-hangzhou.aliyuncs.com这个Endpoint。

说明 不允许随意改变初始化AcsClient实例的参数顺序,必须先输入AccessKey IDAccesskey Secret,最后是Region ID

client = AcsClient(     "<your-access-key-id>",     "<your-access-key-secret>",     "<your-region-id>"   # 注意参数顺序,Region ID是第三个参数 );

直接设置Endpoint

参考以下代码直接为服务请求设置Endpoint。参考各云产品的API文档,查看可用的Endpoint。

注意 请根据实际情况替换代码示例中的Endpoint (ecs.cn-hangzhou.aliyuncs.com)。

request = DescribeInstancesRequest() # 对这个请求直接设置 Endpoint request.set_endpoint("ecs.cn-hangzhou.aliyuncs.com") # 使用这个 Endpoint 发起请求 response = self.client.do_action_with_exception(request)

异常处理

如果遇到了SDK.InvalidRegionID 或者SDK.EndpointResolvingError的错误,建议您参考以下信息解决。

错误码 错误消息 解决方法
SDK.InvalidRegionID can not find endpoint to access 当前SDK版本过低。请将SDK核心库aliyun-python-sdk-core升级到2.9.0版本或更高版本。
SDK.EndpointResolvingError No such region <region-id>. Please check your region ID. 请检查您输入的地域ID是否正确。

可以通过DescribeRegions API查找地域ID。

SDK.EndpointResolvingError No endpoint for product <product-id>. 解决方法:

  • 当前SDK版本过低。请将SDK核心库aliyun-python-sdk-core升级到2.9.0版本或更高版本,并将使用的产品SDK如aliyun-java-sdk-ecs升级到最新版本。
  • 直接设置Endpoint来发送请求,详情参见直接设置Endpoint
SDK.EndpointResolvingError No endpoint in the region <region-id> for product <product-id>. 在指定地域下找不到该产品的Endpoint,解决方法如下:

  • 可能该产品在指定地域尚未开放服务,请根据提示信息更换地域ID。
  • aliyun-python-sdk-core升级到最新版本,以便应用最新的内置Endpoint解析配置。阿里云在服务地址发生新增、变更时会发布新的SDK Core版本。
  • 直接设置Endpoint来发送请求,详情参见直接设置Endpoint