Örnek
1. Şöyle yaparız. Burada SQS_ENDPOINT_STRATEGY path veriliyor. Böylece kuyruğa erişmek için üretilen URL http://localhost:8701/queue/us-east-1/000000000000/myqueue şeklinde oluyor. Eğer böyle yapmazsak UnknownHostException alırız
2. Eğer istenirse awslocal komutu container içinde çalıştırılabilir.
@ClassRule public static LocalStackContainer container = new LocalStackContainer(DockerImageName.parse("localstack/localstack:3.0.2")) .withServices(LocalStackContainer.Service.SQS) .withEnv("SQS_ENDPOINT_STRATEGY", "path"); // Burası @BeforeClass public static void beforeClass() { container.execInContainer("awslocal", "sqs", "create-queue", "--queue-name", "myqueue"); }
SQSClient ile kullanmak için şöyle yaparız. SQSClient aws.accessKeyId ve aws.secretKey değişkenlerini istiyor. Yoksa "Unable to load AWS credentials from any provider in the chain ..." hatası alırız
void insertData() throws URISyntaxException { System.setProperty("aws.accessKeyId", container.getAccessKey()); System.setProperty("aws.secretKey", container.getSecretKey()); SqsClient sqs = SqsClient.builder() .endpointOverride(container.getEndpointOverride(LocalStackContainer.Service.SQS)) .credentialsProvider( StaticCredentialsProvider.create( AwsBasicCredentials.create(container.getAccessKey(), container.getSecretKey()) ) ) .region(Region.of(container.getRegion())) .build(); ... }
Hiç yorum yok:
Yorum Gönder