#amazon-web-services #scala #amazon-iam
#amazon-web-services #scala #amazon-iam
Вопрос:
Я хочу получить информацию о роли для имени роли. Например, получение точного идентификатора 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, работают отлично.
Я также попробовал шаблон builder для GetRoleRequest и IamClient.
Комментарии:
1. Я протестирую этот код с помощью AWS SDK для Java V2 и опубликую результаты. Ваш импорт использует как V2, так и V1. Рекомендую вам использовать только версию V2.
Ответ №1:
У меня этот код IAM V2 работает нормально. Как указано в моем комментарии, настройте среду разработки на использование AWS SDK для 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> nn"
"Where:n"
" policyArn - a policy ARN that you can obtain from the AWS Management Console. nn" ;
// 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);
}
}
}
Вывод: