(answering my own question)
The fix to the above was as follows:
(i) replace HOSTNAME_EXTERNAL with LOCALSTACK_HOST and add a new setting to set the Sqs Endpoint Strategy to "dynamic" as follows:
version: '3.4'
services:
localstack:
image: localstack/localstack:3.2.0
environment:
- SERVICES=dynamodb,kinesis,s3,sns,sqs
- DEFAULT_REGION=eu-west-1
- SQS_ENDPOINT_STRATEGY=dynamic
- LOCALSTACK_HOST=127.0.0.1
- LOCALSTACK_SSL=0
- REQUESTS_CA_BUNDLE=
- CURL_CA_BUNDLE=
ports:
- 4566:4566
healthcheck:
test: [ "CMD", "curl", "-f", "http://localhost:4566/health" ]
interval: 30s
timeout: 10s
retries: 5
(ii) As the dynamic endpoint strategy was added in 3.2.0, I needed to go to 3.2.0 rather than 3.0.1 as I was originally intending
(iii) The URL format for accessing the queues has changed .
Previously I was using
http://localhost:4566/000000000000/[queueName]?Action=ReceiveMessage
and I have now had to change this to
http://localhost:4566/000000000000/[queueName]?Action=ReceiveMessage
where [queueName] and [region] should be replaced as appropriate but the "queue" after the localhost address is actually the word "queue"