为了提高应用部署的安全性的同时提升便利性,阿里云SDK支持通过
实例元数据,ECS Metadata Service 服务来获取RAM角色的授权信息来访问阿里云资源和服务。在这种方式中,您部署在ECS上的应用程序,无需在SDK上配置授权信息即可访问阿里云API(“无AK”访问),拥有这个RAM角色的权限。
如果要使用这种方式,您需要首先创建一个与RAM角色关联的ECS实例,具体步骤请参考文档
借助于实例 RAM 角色访问其它云产品 API。
代码样例
- import com.aliyuncs.DefaultAcsClient;
- import com.aliyuncs.auth.InstanceProfileCredentialsProvider;
- import com.aliyuncs.ecs.model.v20140526.DescribeInstancesRequest;
- import com.aliyuncs.ecs.model.v20140526.DescribeInstancesResponse;
- import com.aliyuncs.exceptions.ClientException;
- import com.aliyuncs.profile.DefaultProfile;
- public class NoAKAccessSample {
- public static void main(String[] args) {
- DefaultProfile profile = DefaultProfile.getProfile("<your-region-id>");
- InstanceProfileCredentialsProvider provider = new InstanceProfileCredentialsProvider(
- "<your-role-name>"
- );
- DefaultAcsClient client = new DefaultAcsClient(profile, provider);
- DescribeInstancesRequest request = new DescribeInstancesRequest();
- try {
- DescribeInstancesResponse response = client.getAcsResponse(request);
- } catch (ClientException e) {
- System.err.println(e.toString());
- }
- }
- }
其中:
- <your-role-name>即与ECS实例关联的RAM角色名称。
- <your-region-id>是您正在使用的地域的Region ID,详情请看地域列表。请注意,这个Region ID是RAM角色有权访问的服务API所在的Region ID,不一定等于这个ECS实例的Region ID。