Как настроить различные учетные данные aws для потоков Kinesis с помощью Spring Cloud Stream - PullRequest
0 голосов
/ 26 марта 2020

У меня есть два потока Kinesis, которые мне нужно использовать, но у них разные учетные данные.

В выпуске https://github.com/spring-cloud/spring-cloud-stream-binder-aws-kinesis/issues/74 говорится: «... Разница в свойствах конфигурации достигается с помощью свойства среды, в котором можно настроить другое облако. aws .credentials.accessKey и облако. aws .credentials.secretKey ... "

Итак, я создал application.properties файл, который выглядит следующим образом:

# Spring Cloud - Input1
spring.cloud.stream.bindings.input1.destination=example1
spring.cloud.stream.bindings.input1.group=test-kinesis-stream-group1
spring.cloud.stream.bindings.input1.content-type=application/json
spring.cloud.stream.bindings.input1.binder=kinesisConsumer1

# Spring Cloud - Input2
spring.cloud.stream.bindings.input2.destination=example2
spring.cloud.stream.bindings.input2.group=test-kinesis-stream-group2
spring.cloud.stream.bindings.input2.content-type=application/json
spring.cloud.stream.bindings.input2.binder=kinesisConsumer2


# Kinesis
spring.cloud.stream.kinesis.binder.kpl-kcl-enabled=true
spring.cloud.stream.kinesis.bindings.input.consumer.listener-mode=batch
spring.cloud.stream.kinesis.bindings.input.consumer.idle-between-polls=200

# BINDERS1
spring.cloud.stream.binders.kinesisConsumer1.type=kinesis
spring.cloud.stream.binders.kinesisConsumer1.default-candidate=false
spring.cloud.stream.binders.kinesisConsumer1.inherit-environment=true
spring.cloud.stream.binders.kinesisConsumer1.environment.cloud.aws.credentials.accessKey=${AWS_ACCESS_KEY_ID1}
spring.cloud.stream.binders.kinesisConsumer1.environment.cloud.aws.credentials.secretKey=${AWS_SECRET_ACCESS_KEY1}

# BINDERS2
spring.cloud.stream.binders.kinesisConsumer2.type=kinesis
spring.cloud.stream.binders.kinesisConsumer2.default-candidate=false
spring.cloud.stream.binders.kinesisConsumer2.inherit-environment=false
spring.cloud.stream.binders.kinesisConsumer2.environment.cloud.aws.credentials.accessKey=${AWS_ACCESS_KEY_ID2}
spring.cloud.stream.binders.kinesisConsumer2.environment.cloud.aws.credentials.secretKey=${AWS_SECRET_ACCESS_KEY2}

Но тогда я получите java.lang.IllegalArgumentException: 'cloudWatchClient' must not be null исключение. Даже когда я пробую пример с прослушиванием только одного потока, он перестает работать, когда я добавляю свойства environment.cloud.aws.credentials.secretKey и environment.cloud.aws.credentials.accessKey.

Нужно ли настраивать это свойство среды по-другому? Возможно, мне не хватает настройки какого-либо свойства в application.properties файле или в классе, который реализует @ StreamListener.

Мои потребители работают отлично, когда я использую их в отдельных приложениях с обычным способом предоставления aws учетные данные, но как только я добавляю environment.cloud.aws, они перестают работать с приведенным выше исключением, даже когда я пытаюсь запустить их отдельно.

...