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

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

更新时间:2018-02-02 15:20:18

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

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

代码样例

  1. #include <iostream>
  2. #include <alibabacloud/core/AlibabaCloud.h>
  3. #include <alibabacloud/core/InstanceProfileCredentialsProvider.h>
  4. #include <alibabacloud/ecs/EcsClient.h>
  5. using namespace AlibabaCloud;
  6. using namespace AlibabaCloud::Ecs;
  7. int main(int argc, char** argv)
  8. {
  9. // 初始化 SDK
  10. AlibabaCloud::InitializeSdk();
  11. ClientConfiguration configuration("<your-region-id>");
  12. EcsClient client(std::make_shared<InstanceProfileCredentialsProvider>("<your-role-name>"), configuration);
  13. // 创建API请求并设置参数
  14. Model::DescribeInstancesRequest request;
  15. request.setPageSize(10);
  16. auto outcome = client.describeInstances(request);
  17. if (!outcome.isSuccess())
  18. {
  19. // 异常处理
  20. std::cout << outcome.error().errorCode() << std::endl;
  21. AlibabaCloud::ShutdownSdk();
  22. return -1;
  23. }
  24. std::cout << "totalCount: " << outcome.result().getTotalCount() << std::endl;
  25. // 关闭 SDK
  26. AlibabaCloud::ShutdownSdk();
  27. return 0;
  28. }

其中:

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