I have a simple setup where I only want to start localstack through docker-compose, then run a terraform file to create an aws_api_gateway_rest_api resource. However, it fails to connect to localstack's restapis endpoint "http://localhost:4567/restapis".
Here is the code for docker-compose.yml
version: '3'
services:
localstack:
image: localstack/localstack
ports:
- 4566:4566
- 4567:4567
- 4569:4569
- 4572:4572
- 4574:4574
- 4575:4575
- 4576:4576
- 4593:4593
- 4510-4559:4510-4559
environment:
- SERVICES=restapis,s3,lambda,dynamodb,sns,sqs,apigateway,iam
Here is the code for main.tf
provider "aws" {
region = "ap-southeast-2"
endpoints {
s3 = "http://localhost:4572"
lambda = "http://localhost:4574"
dynamodb = "http://localhost:4569"
sns = "http://localhost:4575"
sqs = "http://localhost:4576"
apigateway = "http://localhost:4567"
iam = "http://localhost:4593"
}
}
resource "aws_api_gateway_rest_api" "example_api" {
name = "example_api"
}
Commands:
terraform init
terraform plan
terraform apply
The error I get is:
Error: creating API Gateway REST API (example_api): RequestError: send request failed
│ caused by: Post "http://localhost:4567/restapis": read tcp 127.0.0.1:46738->127.0.0.1:4567: read: connection reset by peer
Am I missing something? Shouldn't restapis be available on that port? I am able to hit the S3 endpoint (and various others) with no problems.
I was not able to reproduce your issue, as I'm missing some essential info, such as versions; however, here are a few ideas to get things working: it looks like you're using an older version, and LocalStack does not maintain earlier versions, so you're encouraged to use the latest image, with this docker-compose file. With that, all services are standardized to listen on port
4566. Lastly, to simplify things, please use the provided terraform wrapper,tflocal, which automatically configures the local service endpoints, allowing you to run the same config file as you would on AWS. Hope this helps.