Проблема с аутентификацией Java в AWS DAX

Я пытаюсь написать гибкий механизм аутентификации между использованием DAX и DynamoDB для тестирования производительности. Мне удалось заставить его нормально работать с DynamoDB во всех регионах, но он правильно работает только в us-west-1 в DAX.

if (this.useDax) {
  try {
    AWSCredentials credentials = new PropertiesCredentials(new File(credentialsFile));
    ClientConfig daxConfig = new ClientConfig().withEndpoints(endpoint).withRegion(daxRegion)
        .withCredentialsProvider(new AWSStaticCredentialsProvider(credentials));
    daxDB = new ClusterDaxClient(daxConfig);
    primaryKeyName = primaryKey;
    LOGGER.info("dynamodb DAX connection created with " + this.endpoint);
  } catch (Exception e1) {
    LOGGER.error("DaxDBClient.init(): Could not initialize DaxDB client.", e1);
  }
} else {
  try {
    AWSCredentials credentials = new PropertiesCredentials(new File(credentialsFile));
    ClientConfiguration cconfig = new ClientConfiguration();
    cconfig.setMaxConnections(maxConnects);
    dynamoDB = new AmazonDynamoDBClient(credentials, cconfig);
    dynamoDB.setEndpoint(this.endpoint);
    primaryKeyName = primaryKey;
    LOGGER.info("dynamodb connection created with " + this.endpoint);
  } catch (Exception e1) {
    LOGGER.error("DynamoDBClient.init(): Could not initialize DynamoDB client.", e1);
  }
}

Ошибка, которую я получаю:

com.amazon.dax.client.exceptions.DaxServiceException: [1.23.31.33] Соединение требует аутентификации (служба: null; код состояния: -1; код ошибки: null; идентификатор запроса: null)


person Flint Dominic    schedule 22.06.2018    source источник


Ответы (1)


В итоге я использовал другого поставщика учетных данных (PropertiesFileCredentialsProvider), и это сработало:

if (this.useDax) {
  try {
    ClientConfig daxConfig = new ClientConfig().withEndpoints(this.endpoint).withRegion(daxRegion)
        .withCredentialsProvider(new PropertiesFileCredentialsProvider(credentialsFile));
    daxDB = new ClusterDaxClient(daxConfig);
    primaryKeyName = primaryKey;
    LOGGER.info("dynamodb DAX connection created with " + this.endpoint);
  } catch (Exception e1) {
    LOGGER.error("DaxDBClient.init(): Could not initialize DaxDB client.", e1);
  }
} else {
  try {
    AWSCredentials credentials = new PropertiesCredentials(new File(credentialsFile));
    ClientConfiguration cconfig = new ClientConfiguration();
    cconfig.setMaxConnections(maxConnects);
    dynamoDB = new AmazonDynamoDBClient(credentials, cconfig);
    dynamoDB.setEndpoint(this.endpoint);
    primaryKeyName = primaryKey;
    LOGGER.info("dynamodb connection created with " + this.endpoint);
  } catch (Exception e1) {
    LOGGER.error("DynamoDBClient.init(): Could not initialize DynamoDB client.", e1);
  }
}
person Flint Dominic    schedule 22.06.2018