2015-12-15 2 views
-1

Я использую awssqs в моем текущем проекте. Мне нужно знать, как установить ключ доступа и секретный ключ (для чтения из файла свойств), используя SQSConnectionFactory., устанавливая значения AWS_ACCESS_KEY_ID и AWS_SECRET_KEY с использованием SQSConnectionFactory

Пожалуйста найти мой код ниже:

public void createConnectionFactory() throws JMSException{ 
    try { 
     SQSConnectionFactory connectionFactory = SQSConnectionFactory.builder() 
      .withRegion(Region.getRegion(Regions.US_EAST_1)) 
      .withAWSCredentialsProvider(new EnvironmentVariableCredentialsProvider()) 
      .build(); 

      // Create the connection. 
      SQSConnection connection = connectionFactory.createConnection(); 
    } 
    catch (JMSException ex) 
    { 
     throw ex; 
    } 
} 

Я попытался искать способы, через которые я могу установить, но не смог найти. Как исходить отсюда? Должен ли я написать другой метод для базовой проверки подлинности и вызвать его здесь или есть ли лучший способ сделать это?

ответ

0

Спасибо, я нашел ошибку!

Вот изменения, которые я сделал, и теперь его рабочие штрафа

private BasicAWSCredentials credentials; 

public void createConnectionFactory() throws JMSException,FileNotFoundException{ 
try { 

     Properties properties = new Properties(); 
     properties.load(new FileInputStream("/src/main/resources/AwsCredentials.properties")); 
     this.credentials = new BasicAWSCredentials(properties.getProperty("accessKey"), 
       properties.getProperty("secretKey")); 

     SQSConnectionFactory connectionFactory = 
       SQSConnectionFactory.builder() 
         .withRegion(Region.getRegion(Regions.US_EAST_1)) 
         .withAWSCredentialsProvider(new EnvironmentVariableCredentialsProvider()) 
         .build(); 

     // Create the connection. 
     SQSConnection connection = connectionFactory.createConnection(credentials.getAWSAccessKeyId(),credentials.getAWSSecretKey()); 

    } 
    catch (JMSException ex) 
    { 
     throw ex; 
    } 
    catch (FileNotFoundException ex) 
    { 
     throw ex; 
    } catch (IOException e) { 
     e.printStackTrace(); 
    } 
+0

Я новичок в StackOverflow, работая над своими навыками форматирования. Спасибо за помощь! –

1

Лучше всего использовать учетные данные по умолчанию поставщика ЦЕПЬ, которая позволяет supply credentials in multiple ways

В заключение позволяет очень гибкой конфигурации для как ваши команды разработчиков, так и при развертывании в облаке с несколькими средами и multi-region setup.

Вы можете включить компонент, как это:

<bean id="awsCredentialsProviderBean" class="com.amazonaws.auth.DefaultAWSCredentialsProviderChain"> 
</bean> 
<bean id="awsConnectionFactoryBuilder" class="com.amazon.sqs.javamessaging.SQSConnectionFactory$Builder"> 
    <property name="regionName" value="${aws.region}"/> 
    <property name="numberOfMessagesToPrefetch" value="5"/> 
    <property name="awsCredentialsProvider" ref="awsCredentialsProviderBean"/> 
</bean> 

или использовать Java

@Bean 
public AWSCredentialsProviderChain awsCredentials() { 
    return new DefaultAWSCredentialsProviderChain(); 
} 
+1

Пожалуйста, отформатируйте свой код с помощью кодовых блоков. :) – GrumpyCrouton

Смежные вопросы