Почему не срабатывает AWS Service Connect

Пытаюсь разобраться в экосистеме AWS и пробую развернуть 2 сервиса с помощью ECS и Fargate. Один сервис это mongodb, второй - Spring-Boot приложение, которое запрашивает данные и осуществяет миграции с помощью Mongock. Я начал с того, что сначала сбилдил образ базы, залил его в ECR там из нео развернул сервис с таской. далее взял па=убличный айпи таска и обновил application.properties, сделал образ для Spring-Boot приложения и также поднял сервис. все стартануло, Mongock провел миграции. Я не планирую держать сервисы онлайн нон-стоп, поэтому хотелось бы иметь возможность их останавливать. Однако в этом случае оба сервиса получат новые айпи и spring сервис не сможет подключаться к базе.

На этот случай у aws есть service-connect, который позволяет дать dns-имена в их внутренней системе. Тогда при запуске тасков будут запускаться также специальные агенты, которые по именам будут соотносить запросы с нужными айпи. Итак, для базы я с помощью aws cli и файла json установил service-connect:

{
  "enabled": true,
  "namespace": "test",
  "services": [
    {
      "portName": "27017mongo",
      "discoveryName": "user-mongo",
      "clientAliases": [
        {
          "port": 27017
        }
      ]
    }
  ]
}

далее с помощью service-describe проверил его:

serviceConnectConfiguration": {
                    "enabled": true,
                    "namespace": "arn:aws:servicediscovery:eu-north-1:891377330754:namespace/ns-p76w3mzvv5py466a",
                    "services": [
                        {
                            "portName": "27017mongo",
                            "discoveryName": "user-mongo",
                            "clientAliases": [
                                {
                                    "port": 27017,
                                    "dnsName": "user-mongo.test"
                                }
                            ]
                        }
                    ]
                },
                "serviceConnectResources": [
                    {
                        "discoveryName": "user-mongo",
                        "discoveryArn": "arn:aws:servicediscovery:eu-north-1:891377330754:service/srv-rqiink64a7izgkdy"
                    }
                ]
            },

Далее обновил пропсы spring приложения:

 data:
    mongodb:
      uri: mongodb://user-mongo.test:27017/service02

      auto-index-creation: true
      database: service02
      port: 27017
      host: user-mongo.test

Вновь сбилдил докер-образ, отправил в амазоновский реп, поднял сервис и добавил к нему также service-connect:

{
  "enabled": true,
  "namespace": "test",
  "services": [
    {
      "portName": "8083user",
      "discoveryName": "user-service",
      "clientAliases": [
        {
          "port": 8083
        }
      ]
    }
  ]
}

Все было добавлено успешно, security groups на порты 27017, 8083 по адресациями ipv4, ipv6 я добавил. сервис с монгой запустился нормально, а вот spring-сервис через какое-то время после старта отваливается с ошибкой:

org.springframework.beans.factory.UnsatisfiedDependencyException: Error creating bean with name 'getBuilder' defined in io.mongock.runner.springboot.config.MongockContext: Unsatisfied dependency expressed through method 'getBuilder' parameter 0: Error creating bean with name 'connectionDriver' defined in class path resource [io/mongock/driver/mongodb/springdata/v4/config/SpringDataMongoV4Context.class]: Failed to instantiate [io.mongock.driver.api.driver.ConnectionDriver]: Factory method 'connectionDriver' threw exception with message: Timed out after 30000 ms while waiting to connect. Client view of cluster state is {type=UNKNOWN, servers=[{address=user-mongo.test:27017, type=UNKNOWN, state=CONNECTING, exception={com.mongodb.MongoSocketException: user-mongo.test}, caused by {java.net.UnknownHostException: user-mongo.test}}]

Судя по ошибке он не может распознать хост user-mongo.test и Mongock не подключается, чтобы выполнить миграции и тд. Чисто гипотетически проблема может быть либо в этом service-connect, либо может есть какая-то проблема с VPC конфигурацией(но я ничего не менял там от слова совсем). Что я делаю не так?


Ответы (0 шт):