#java #localhost #aws-sdk #amazon-sqs
#java #локальный хост #aws-sdk #amazon-sqs
Вопрос:
У меня есть следующий код создания экземпляра клиента, который работает при развертывании в AWS:
pom.xml
<dependency>
<groupId>com.amazonaws</groupId>
<artifactId>aws-java-sdk</artifactId>
<version>1.11.888</version>
</dependency>
применение.свойства
aws.sqs.endpoint=https://sqs.us-west-2.amazonaws.com
SQSConfiguration.java
public AmazonSQS buildAWSClient() {
String region = getRegionFromHost(endpoint.getHost());
return AmazonSQSClientBuilder.standard()
.withRegion(region)
.build();
}
Теперь мне нужен клиент для доступа к локальной конечной точке SQS (например, ElasticMQ).
применение.свойства
aws.sqs.endpoint=http://localhost:9300
SQSConfiguration.java
public AmazonSQS buildLocalClient() {
BasicAWSCredentials credentials = new BasicAWSCredentials("not-a-real-key", "not-a-real-secret");
return AmazonSQSClientBuilder.standard()
.withEndpointConfiguration(new AwsClientBuilder.EndpointConfiguration(endpoint.toString(), Regions.DEFAULT_REGION.getName()))
.withCredentials(new AWSStaticCredentialsProvider(credentials))
.build();
}
Однако при запуске приложения я получаю следующую ошибку:
Caught an AmazonServiceException, which means your request made it to Amazon SQS, but was rejected with an error response for some reason.
The security token included in the request is invalid. (Service: AmazonSQS; Status Code: 403; Error Code: InvalidClientTokenId; Request ID: 68c103c1-b848-5cb9-8bbc-5bd2035aa586; Proxy: null)
Я хотел бы, чтобы разработчик мог извлекать этот код и запускать его локально, не требуя ничего настраивать в своем профиле, передавать переменные среды и т. Д.
Могу ли я, и если да, то как мне настроить клиент AWS таким образом, чтобы не требовалось подключение / разрешения AWS?