全部产品
存储与CDN 数据库 域名与网站(万网) 应用服务 数加·人工智能 数加·大数据基础服务 互联网中间件 视频服务 开发者工具 解决方案 物联网 钉钉智能硬件
阿里云SDK开发指南

在ECS实例上使用“无AK访问”

更新时间:2018-02-02 15:52:00

为了提高应用部署的安全性的同时提升便利性,阿里云SDK支持通过 实例元数据,ECS Metadata Service 服务来获取RAM角色的授权信息来访问阿里云资源和服务。在这种方式中,您部署在ECS上的应用程序,无需在SDK上配置授权信息即可访问阿里云API(“无AK”访问),通过这种方式授权的SDK,可以拥有这个RAM角色的权限。

请注意:Ecs“无AK”访问是基于STS Token实现的,所以也受限于STS Token的使用条件,您需要确认目标产品是否支持该验证方式,点此查看目前支持STS Token产品线

如果要使用这种方式,您需要首先创建一个与RAM角色关联的ECS实例,具体步骤请参考文档借助于实例 RAM 角色访问其它云产品 API

代码示例

  1. import com.aliyuncs.DefaultAcsClient;
  2. import com.aliyuncs.auth.InstanceProfileCredentialsProvider;
  3. import com.aliyuncs.ecs.model.v20140526.DescribeInstancesRequest;
  4. import com.aliyuncs.ecs.model.v20140526.DescribeInstancesResponse;
  5. import com.aliyuncs.exceptions.ClientException;
  6. import com.aliyuncs.profile.DefaultProfile;
  7. public class NoAKAccessSample {
  8. public static void main(String[] args) {
  9. DefaultProfile profile = DefaultProfile.getProfile("<your-region-id>");
  10. InstanceProfileCredentialsProvider provider = new InstanceProfileCredentialsProvider(
  11. "<your-role-name>"
  12. );
  13. DefaultAcsClient client = new DefaultAcsClient(profile, provider);
  14. DescribeInstancesRequest request = new DescribeInstancesRequest();
  15. try {
  16. DescribeInstancesResponse response = client.getAcsResponse(request);
  17. } catch (ClientException e) {
  18. System.err.println(e.toString());
  19. }
  20. }
  21. }
  • role-name 即与ECS实例关联的RAM角色名称。
  • region-id 是您正在使用的地域的Region ID,详情请看地域列表

==请注意,这个Region ID是目标服务(且RAM角色有权访问)的API所在Region,不一定等于这个ECS实例的Region ID。==

本文导读目录