private static AwsCredentialsProvider createSessionCredentialsProvider()

in aws-core-common/src/main/java/jetbrains/buildServer/util/amazon/AWSCommonParams.java [338:370]


  private static AwsCredentialsProvider createSessionCredentialsProvider(Map<String, String> params) throws AWSException {
    final String iamRoleARN = getIamRoleArnParam(params);
    final String externalID = getExternalId(params);
    final String sessionName = getStringOrDefault(params.get(TEMP_CREDENTIALS_SESSION_NAME_PARAM), TEMP_CREDENTIALS_SESSION_NAME_DEFAULT_PREFIX + new Date().getTime());
    final int sessionDuration = getIntegerOrDefault(params.get(TEMP_CREDENTIALS_DURATION_SEC_PARAM), TEMP_CREDENTIALS_DURATION_SEC_DEFAULT);

    try {
      if (StringUtil.isEmptyOrSpaces(iamRoleARN)){
        return StsGetSessionTokenCredentialsProvider.builder()
          .stsClient(createSecurityTokenService(params))
          .build();
      } else {
        AssumeRoleRequest.Builder reqBuilder = AssumeRoleRequest.builder()
          .roleArn(iamRoleARN)
          .roleSessionName(sessionName)
          .durationSeconds(sessionDuration);

        if (StringUtil.isNotEmpty(externalID)) {
          reqBuilder.externalId(externalID);
        }

        AssumeRoleRequest assumeRoleRequest = reqBuilder.build();

        StsAssumeRoleCredentialsProvider.Builder builder = StsAssumeRoleCredentialsProvider.builder()
          .refreshRequest(assumeRoleRequest)
          .stsClient(createSecurityTokenService(params));

        return builder.build();
      }
    } catch (Exception e) {
      throw new AWSException(e);
    }
  }