Search code examples
amazon-web-servicesdockerdocker-composedocker-networklocalstack

Localstack SNS by http protocol cannot connect to API endpoint


I am having a problem trying to mock SNS for my application. I want to use SNS and subscribe by my API endpoint. The error I am getting is:

Could not connect to the endpoint URL: "http://localhost:6010/webhook"

Here is the docker compose I am using:

version: "3.8"

services:
  localstack:
    container_name: localstack
    image: localstack/localstack
    ports:
      - "127.0.0.1:4566:4566"
    environment:
        - LEGACY_INIT_DIR=1
        - SERVICES=sqs,sns
        - AWS_DEFAULT_REGION=eu-west-1
        - AWS_ACCESS_KEY_ID=testUser
        - AWS_SECRET_ACCESS_KEY=testAccessKey
        - DOCKER_HOST=unix:///var/run/docker.sock
    volumes:
      - "${TMPDIR:-/var/lib/localstack}:/var/lib/localstack"
      - "/var/run/docker.sock:/var/run/docker.sock"
      - "./localstack-scripts:/docker-entrypoint-initaws.d/"
    networks:
      - backend
  my-api:
      container_name: my-api
      image: api-image
      command: ["Proj.Api.Host.dll", "Proj.Api.Host"]
      build:
        context: ./../../
        dockerfile: api/Dockerfile
      env_file:
        - ./../../docker/.env_default
      environment:
        ASPNETCORE_ENVIRONMENT: "Development"
      ports:
        - "6010:80"
      networks:
        - backend
      restart: unless-stopped   
networks:
  backend:
    driver: bridge

And the script that is running from initaws folder:

awslocal sns create-topic --name test-topic --region=eu-west-1

awslocal sns subscribe --topic-arn "arn:aws:sns:eu-west-1:000000000000:test-topic" --region=eu-west-1 --protocol http --endpoint-url=http://localhost:6010/webhook

Can someone try to help me figure it out what is the problem here?


Solution

  • I have resolved this issue using host.docker.internal. Hope that helps someone else with this problem. Cheers.