Учитывая, что вы можете подключиться к экземпляру EC2, и все остальное выглядит правильно настроенным, вам необходимо убедиться, что ваша группа подсетей использует общедоступные подсети, если вы хотите предоставить свою базу данных публично.Вы можете проверить свою группу подсетей и подсети на деталях экземпляра для своего экземпляра RDS.В разделе «Безопасность и сеть» вы должны найти что-то вроде:
Группа подсетей
examplegroup
Подсети
subnet-84b243ef
subnet-etu1769c
subnet-186b3f30
Вызатем необходимо просмотреть эти подсети и выяснить, как они настроены:
- Перейти на панель мониторинга VPC
- Нажмите подсети
- Выберите подсеть, которую вы хотите проверить
- Щелкните по таблице маршрутов
- Если она общедоступна, вы должны увидеть что-то вроде этого:
Пример таблицы маршрутов:
Destination | Target
10.0.0.0/16 | local
0.0.0.0/0 | igw-e2f87847
An igw
указывает на интернет-шлюз.Если вы видите что-то вроде nat
вместо записи 0.0.0.0/0
, это, вероятно, означает, что это частная подсеть.
Вы можете сделать это программно в bash
, используя aws cli
и jq
.Это выведет список всех таблиц маршрутов, связанных с подсетями группы подсетей данного экземпляра базы данных:
instance_name='example'
aws rds describe-db-instances --filter Name=db-instance-id,Values=${instance_name} | jq .DBInstances[].DBSubnetGroup.Subnets[].SubnetIdentifier -r | while read subnet; do
aws ec2 describe-route-tables --filters Name=association.subnet-id,Values=${subnet} | jq .RouteTables[].Routes
done