private Credentials requestSession()

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();
  }