Commit 3d9f1cf1e36223e3585fa9275b5cc66ec8f69192

Authored by Jan Schumann
Committed by Andrew Shvayka
1 parent 45e3c229

enable default credential provider chain for aws sqs

... ... @@ -612,6 +612,10 @@ queue:
612 612 notifications: "${TB_QUEUE_KAFKA_NOTIFICATIONS_TOPIC_PROPERTIES:retention.ms:604800000;segment.bytes:26214400;retention.bytes:1048576000}"
613 613 js-executor: "${TB_QUEUE_KAFKA_JE_TOPIC_PROPERTIES:retention.ms:604800000;segment.bytes:26214400;retention.bytes:104857600}"
614 614 aws_sqs:
  615 + # @see https://docs.aws.amazon.com/sdk-for-java/v1/developer-guide/java-dg-roles.html
  616 + # setting this to true, will ignore the access keys below and instead use the
  617 + # default credential provider chain, which includes instance profile credentials etc.
  618 + use_default_credential_provider_chain: "${TB_QUEUE_AWS_SQS_USE_DEFAULT_CREDENTIAL_PROVIDER_CHAIN:false}"
615 619 access_key_id: "${TB_QUEUE_AWS_SQS_ACCESS_KEY_ID:YOUR_KEY}"
616 620 secret_access_key: "${TB_QUEUE_AWS_SQS_SECRET_ACCESS_KEY:YOUR_SECRET}"
617 621 region: "${TB_QUEUE_AWS_SQS_REGION:YOUR_REGION}"
... ...
... ... @@ -15,9 +15,7 @@
15 15 */
16 16 package org.thingsboard.server.queue.sqs;
17 17
18   -import com.amazonaws.auth.AWSCredentials;
19   -import com.amazonaws.auth.AWSStaticCredentialsProvider;
20   -import com.amazonaws.auth.BasicAWSCredentials;
  18 +import com.amazonaws.auth.*;
21 19 import com.amazonaws.services.sqs.AmazonSQS;
22 20 import com.amazonaws.services.sqs.AmazonSQSClientBuilder;
23 21 import com.amazonaws.services.sqs.model.CreateQueueRequest;
... ... @@ -37,9 +35,16 @@ public class TbAwsSqsAdmin implements TbQueueAdmin {
37 35 public TbAwsSqsAdmin(TbAwsSqsSettings sqsSettings, Map<String, String> attributes) {
38 36 this.attributes = attributes;
39 37
40   - AWSCredentials awsCredentials = new BasicAWSCredentials(sqsSettings.getAccessKeyId(), sqsSettings.getSecretAccessKey());
  38 + AWSCredentialsProvider credentialsProvider;
  39 + if (sqsSettings.getUseDefaultCredentialProviderChain()) {
  40 + credentialsProvider = new DefaultAWSCredentialsProviderChain();
  41 + } else {
  42 + AWSCredentials awsCredentials = new BasicAWSCredentials(sqsSettings.getAccessKeyId(), sqsSettings.getSecretAccessKey());
  43 + credentialsProvider = new AWSStaticCredentialsProvider(awsCredentials);
  44 + }
  45 +
41 46 sqsClient = AmazonSQSClientBuilder.standard()
42   - .withCredentials(new AWSStaticCredentialsProvider(awsCredentials))
  47 + .withCredentials(credentialsProvider)
43 48 .withRegion(sqsSettings.getRegion())
44 49 .build();
45 50
... ...
... ... @@ -27,6 +27,9 @@ import org.springframework.stereotype.Component;
27 27 @Data
28 28 public class TbAwsSqsSettings {
29 29
  30 + @Value("${queue.aws_sqs.use_default_credential_provider_chain}")
  31 + private Boolean useDefaultCredentialProviderChain;
  32 +
30 33 @Value("${queue.aws_sqs.access_key_id}")
31 34 private String accessKeyId;
32 35
... ...