Я создал функцию Lambda, которая запускается потоком DynamoDB. Я пытаюсь обработать события Dynamodb и поместить их в поток Kinesis после некоторой трансформации. Лямбда имеет полный доступ как к DynamoDB, так и к потоку Kinesis.
Я использую Cloudwatch для проверки журналов и вижу, что события DynamoDb успешно обрабатываются. Но когда я пытаюсь создать клиент Kinesis (представленный в другом классе), код завершается ошибкой. Я попытался записать ошибку и даже распечатать ее, но это не помогло. Иногда журналы заканчиваются этим сообщением
END RequestId: {some request id}
В других случаях я получаю следующую ошибку
log4j:WARN No appenders could be found for logger (com.amazonaws.AmazonWebServiceClient).
Код не выполняется во время создания клиента Kinesis. Я вижу журнал сообщений / выписок до создания клиента Kinesis. Но прямо в этой строке код не работает. Я не уверен, в чем проблема. Может кто-нибудь помочь мне?
Вот класс, в котором код не работает
private AmazonKinesis kinesisClient;
private String streamName;
public TestKinesisPut(String streamName) {
this.streamName = streamName;
BasicAWSCredentials awsCreds = new BasicAWSCredentials("ACCESS_KEY", "SECRET_KEY");
System.out.println("aws creds are: " + awsCreds);
clientBuilder = AmazonKinesisClientBuilder.standard().withRegion(Regions.AP_SOUTH_1).
withCredentials(new AWSStaticCredentialsProvider(awsCreds));
System.out.println("Credentials are set: \n " + clientBuilder);
try {
System.out.println("This one is new \n About to build new kinesis client");
// the code fails after this line
kinesisClient = clientBuilder.build();
System.out.println("failed to build client");
}
catch(Exception e) {
System.out.println("failed to initialize producer: " + e.getMessage());
kinesisClient = null;
}
}
Спасибо