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

在ECS上“无AK”访问云服务API

更新时间:2018-02-02 16:12:57

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

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

代码样例

  1. using Aliyun.Acs.Core;
  2. using Aliyun.Acs.Core.Auth;
  3. using Aliyun.Acs.Core.Exceptions;
  4. using Aliyun.Acs.Core.Profile;
  5. using Aliyun.Acs.Ecs.Model.V20140526;
  6. class NoAKAccessSample
  7. {
  8. static void Main(string[] args)
  9. {
  10. // 构建一个客户端实例,用于发起请求
  11. DefaultProfile profile = DefaultProfile.GetProfile("<your-region-id>");
  12. InstanceProfileCredentialsProvider provider = new InstanceProfileCredentialsProvider(
  13. "<your-role-name>");
  14. DefaultAcsClient client = new DefaultAcsClient(profile, provider);
  15. try
  16. {
  17. // 构造请求
  18. DescribeInstancesRequest request = new DescribeInstancesRequest();
  19. request.PageSize = 10;
  20. // 发起请求,并得到 Response
  21. DescribeInstancesResponse response = client.GetAcsResponse(request);
  22. System.Console.WriteLine(response.TotalCount);
  23. }
  24. catch (ServerException ex)
  25. {
  26. System.Console.WriteLine(ex.ToString());
  27. }
  28. catch (ClientException ex)
  29. {
  30. System.Console.WriteLine(ex.ToString());
  31. }
  32. }
  33. }

其中:

  • <your-role-name>即与ECS实例关联的RAM角色名称。
  • <your-region-id>是您正在使用的地域的Region ID,详情请看地域列表。请注意,这个Region ID是RAM角色有权访问的服务API所在的Region ID,不一定等于这个ECS实例的Region ID
本文导读目录