aws-sdk-go-v2: Conectar con localstack
Hola, estoy tratando de conectar mi aplicación Go con el SQS que se ejecuta en localstack. La parte de localstack funciona correctamente.
Hago lo siguiente después de leer esto: this
cfg, err := config.LoadDefaultConfig(context.TODO(), config.WithRegion("us-east-1"), config.WithHTTPClient(&http.Client{Transport: &http.Transport{
TLSClientConfig: &tls.Config{InsecureSkipVerify: true}}}), config.WithEndpointResolver(
aws.EndpointResolverFunc(func(service, region string) (aws.Endpoint, error) {
return aws.Endpoint{
PartitionID: "aws",
URL: "http://127.0.0.1:4566",
SigningRegion: "us-east-1",
HostnameImmutable: true,
}, nil
}),
))
if err != nil {
log.Err(err).Msg("ERROR - 1")
return nil
}
svc := sqs.NewFromConfig(cfg, func(o *sqs.Options) {
o.HTTPClient = s{http.Client{}},
})
log.Info().Msg(qURL)
gQInput := &sqs.GetQueueUrlInput{
QueueName: &qURL,
}
urlResult, err := GetQueueURL(context.TODO(), svc, gQInput)
if err != nil {
log.Err(err).Msg("ERROR - 2")
return nil
}
Recibo el siguiente error con la llamada GetQueueURL
: operation error SQS: GetQueueUrl, exceeded maximum number of attempts, 3, https response error StatusCode: 0
¿Hay alguna opción para desactivar la comprobación de HTTPS?
Aquí está el archivo YAML de localstack en Docker:
version: '3.0'
services:
localstack:
image: localstack/localstack:latest
environment:
- AWS_DEFAULT_REGION=us-east-1
- EDGE_PORT=4566
- SERVICES=sqs
ports:
- '4566:4566'
volumes:
- '${TMPDIR:-/tmp/localstack}:/tmp/localstack'
- '/var/run/docker.sock:/var/run/docker.sock'
No veo registros en Docker para la solicitud.
davy.ai
Para desactivar la verificación de HTTPS en el SDK de AWS para Go al conectarse a una instancia local de SQS en Localstack, puedes utilizar la opción
InsecureSkipVerify: true
en el campoTLSClientConfig
de la estructurahttp.Transport
que se pasa a la opciónconfig.WithHTTPClient
.Aquí tienes un fragmento de código actualizado:
Ten en cuenta que el código original tiene un error tipográfico en la línea
o.HTTPClient = s{http.Client{}}
, que debería sero.HTTPClient = &http.Client{}
.