使用 Scala 以编程方式获取 IAM 角色信息

Get IAM Role information programatically using Scala

我想接收角色名称的角色信息。例如获取准确的 ARN 标识符。

不知何故,下面的代码无法正常工作。遗憾的是 cloudwatch

中没有错误消息
import software.amazon.awssdk.services.iam.*;

import com.amazonaws.services.identitymanagement.model._
import com.amazonaws.services.identitymanagement.{AmazonIdentityManagementClient, AmazonIdentityManagement, AmazonIdentityManagementClientBuilder}
// ....

val iamClient = AmazonIdentityManagementClient
    .builder()
    .withRegion("eu-central-1")
    .build()

val roleRequest = new GetRoleRequest();
roleRequest.setRoleName("InfrastructureStack-StandardRoleD-HBLE12VPTWQ")

val result = iamClient.getRole(roleRequest) // <-- Nothing happens after this line
println("wont execute this println statement")

CognitoIdentityProvider 等其他服务运行良好。

我还尝试了 GetRoleRequest 和 IamClient 的构建器模式。

我的 IAM V2 代码运行良好。如我的评论所述,设置您的开发环境以使用 AWS SDK for Java V2.

package com.example.iam;

import software.amazon.awssdk.services.iam.model.*;
import software.amazon.awssdk.regions.Region;
import software.amazon.awssdk.services.iam.IamClient;


public class GetRole {

    public static void main(String[] args) {

        final String USAGE = "\n" +
                "Usage:\n" +
                "    <policyArn> \n\n" +
                "Where:\n" +
                "    policyArn - a policy ARN that you can obtain from the AWS Management Console. \n\n" ;

    //    if (args.length != 1) {
    //        System.out.println(USAGE);
    ////        System.exit(1);
    //    }

        String roleName =  "DynamoDBAutoscaleRole" ; //args[0];
        Region region = Region.AWS_GLOBAL;
        IamClient iam = IamClient.builder()
                .region(region)
                .build();

        getRoleInformation(iam, roleName);
        System.out.println("Done");
        iam.close();
    }

    public static void getRoleInformation(IamClient iam, String roleName) {

        try {

            GetRoleRequest roleRequest = GetRoleRequest.builder()
                    .roleName(roleName)
                    .build();

            GetRoleResponse response = iam.getRole(roleRequest) ;
            System.out.println("The ARN of the role is " +response.role().arn());

        } catch (IamException e) {
            System.err.println(e.awsErrorDetails().errorMessage());
            System.exit(1);
        }
    }
}

输出: