class DynamoDBClientFetcherImpl implements DynamoDBClientFetcher {

    @Override
    public DynamoDBClientAndCredentials getDynamoDBClient(ZTSClientNotificationSender ztsClientNotificationSender, PrivateKeyStore keyStore) {
        // if we're given key/cert path settings then
        // we'll deal with aws temporary credentials otherwise
        // we'll assume we're running in aws thus our ec2 already
        // has credentials to access dynamodb
        DynamoDBClientSettings dynamoDBClientSettings = new DynamoDBClientSettings(keyStore);

        if (dynamoDBClientSettings.areCredentialsProvided()) {
            LOGGER.info("DynamoDB Client will use temporary AWS credentials");
            return getAuthenticatedDynamoDBClient(dynamoDBClientSettings, ztsClientNotificationSender);
        } else {
            LOGGER.info("DynamoDB client will use existing AWS authentication");
            AmazonDynamoDB client = AmazonDynamoDBClientBuilder
                    .standard()
                    .withRegion(getAWSRegion(dynamoDBClientSettings.getRegion()))
                    .build();
            return new DynamoDBClientAndCredentials(client, null);
        }
    }

    public  DynamoDBClientFetcherImpl();
    public  DynamoDBClientFetcherImpl(String defaultAwsRegion);

}