Closed a-bhaskarank closed 9 months ago
Hi @a-bhaskarank ,
This error is indicating that the response received is not in a format that the SQS client can read. It's not clear what you are serving from that endpoint, but if I had to guess you are using some sort of SQS clone or local implementation.
Recently SQS migrated their service's protocol from the Query protocol which was XML based, to a JSONRPC protocol. My assumption is that the endpoint you are using is returning the data in the old protocol which is no longer supported.
You can verify this by enabling the response logs to view the raw response prior to deserialization by doing the following:
cfg, err := config.LoadDefaultConfig(context.TODO(), config.WithClientLogMode(aws.LogResponseWithBody))
If you can provide the output here it will help us understand better what is happening. Thanks, Ran~
Hi @RanVaknin , Thanks for the reply.,
Enabled response logs but the logs are not clear to me. However, your information about the query protocol helped to fix the issue. PFB the response logs:
<ErrorResponse xmlns="http://queue.amazonaws.com/doc/2012-11-05/">
<Error>
<Type>Sender</Type>
<Code>MissingAction</Code>
<Message>MissingAction; see the SQS docs.</Message>
<Detail/>
</Error>
<RequestId>00000000-0000-0000-0000-000000000000</RequestId>
</ErrorResponse>
FYI: I am running a local integration test(with a fake SQS in my local) for my application which sends messages to SQS. The fake/mock SQS docker image is here https://hub.docker.com/r/softwaremill/elasticmq.
The problem was resolved after pulling the latest docker image.
Comments on closed issues are hard for our team to see. If you need more assistance, please either tag a team member or open a new issue that references this one. If you wish to keep having a conversation with other community members under this issue feel free to do so.
Describe the bug
Connecting docker sqs with the below endpoint resolver throwing
GetQueueUrl, https response error StatusCode: 400, RequestID: , deserialization failed, failed to decode response body, invalid character '<' looking for beginning of value
docker run-cmd:
docker run -p 9324:9324 -p 9325:9325 -v
pwd/custom.conf:/opt/elasticmq.conf softwaremill/elasticmq
My Test code:
Expected Behavior
It has to connect to the docker and get the queue url.
Current Behavior
Its throws error GetQueueUrl, https response error StatusCode: 400, RequestID: , deserialization failed, failed to decode response body, invalid character '<' looking for beginning of value
Its not only for GetQueueUrl even if I give the queue url and invoke sendMessage I get the same error for SendMessage call
Reproduction Steps
test code is given in the description
Possible Solution
No response
Additional Information/Context
The test code in the description section is able to connect to the AWS environment without issues., is there any issue with the EndpointResolverWithOptions?
AWS Go SDK V2 Module Versions Used
Compiler and Version used
go1.21.5 windows/amd64
Operating System and version
Windows 11