in aws-core-server/src/main/java/jetbrains/buildServer/clouds/amazon/connector/impl/iamRoleType/IamRoleSessionCredentialsHolder.java [92:118]
private Credentials requestSession() throws ConnectionCredentialsException {
StsClient sts = myStsClientProvider
.getClientWithCredentials(
new AwsConnectionCredentials(
myLinkedConnectionProvider.getLinkedConnectionCredentials(myAwsConnectionFeature)
),
myAwsConnectionFeature.getParameters()
);
Map<String, String> connectionProperties = myAwsConnectionFeature.getParameters();
AssumeRoleRequest.Builder assumeRoleRequest = AssumeRoleRequest.builder()
.roleArn(connectionProperties.get(IAM_ROLE_ARN_PARAM))
.roleSessionName(connectionProperties.get(IAM_ROLE_SESSION_NAME_PARAM));
String sessionDurationParam = connectionProperties.get(AwsSessionCredentialsParams.SESSION_DURATION_PARAM);
if (sessionDurationParam != null) {
int sessionDurationMinutes = ParamUtil.getSessionDurationMinutes(connectionProperties);
assumeRoleRequest.durationSeconds(sessionDurationMinutes * 60);
}
String externalId = getAwsConnectionExternalId();
if (externalId != null) {
assumeRoleRequest.externalId(externalId);
}
return IOGuard.allowNetworkCall(() -> sts.assumeRole(assumeRoleRequest.build())).credentials();
}