Как проверить, что приложение в EC2 использует конечную точку VPC для связи с Dynamodb?
У меня есть приложение Java, которое развернуто в EC2 и взаимодействует с Dynamodb. Я включил конечную точку VPC (конечную точку шлюза) для Dynamodb. Но я не заметил улучшения производительности с этим изменением. Теоретически я должен видеть меньшую задержку через конечную точку VPC по сравнению с публичным доступом. Также на основе tcpdump я вижу, что наше приложение все еще использует общедоступный IP-адрес Dynamodb для связи.
Здесь
52.119.232.38
это общедоступный IP-адрес Dynamodb. Как я могу убедиться, что наше приложение в EC2 использует конечную точку VPC для связи с Dynamodb?
- Конечные точки EC2 и VPC позволяют использовать один и тот же VPC.
3 ответа
Вы можете использовать AWS Cloudtrail, чтобы убедиться в этом. Если вы подключаетесь к DynamoDB только из приложения, размещенного в сети AWS, которая имеет связанную конечную точку шлюза VPC, тогда вы должны видеть только частные IP-адреса в поле «Исходный IP-адрес» в журналах Cloudtrail. Если вы видите другие общедоступные IP-адреса, это означает, что доступ к DyanmoDB осуществляется через Интернет.
- Перейдите в AWS Cloudtrail и отфильтруйте
EventSource
dynamodb.amazonaws.com
- Если вы не видите какое-либо событие cloudtrail, убедитесь, что вы выбрали период времени, когда вы ожидаете, что приложение получило доступ к DynamoDB или вручную ssh в экземпляр EC2, и запустите некоторые команды cli
aws dynamodb list-tables
а затем подождите 10-15 минут, пока не появится это новое событие. - Щелкните значок настроек, чтобы отобразить события
- В
Source IP address
для события должно быть из диапазона CIDR вашего VPC (и в этом случае частный IP-адрес экземпляра EC2) - Вы можете нажать на название события и просмотреть необработанное событие, которое будет иметь ключ
vpcEndpointId
со значением, таким же, как идентификатор конечной точки VPC
Если исходный IP-адрес не является частным IP-адресом экземпляра EC2, убедитесь, что соответствующие таблицы маршрутов обновлены записью конечной точки шлюза, следуя
To add or remove route tables used by a gateway endpoint
раздел ссылки здесь
Dynamodb и s3 используют конечную точку шлюза. Поскольку это конечная точка шлюза, nslookup всегда дает IP-адрес из диапазона CIDR списка префиксов, который находится в вашей таблице маршрутов.
поскольку AWS знает IP-адреса S3, они говорят, что просто добавьте эту запись в свою таблицу маршрутов, и любой трафик, предназначенный для их блоков CIDR, связанных с S3/dynamo, будет перенаправлен на конечную точку VPC. Нет обновлений для DNS, таких как конечная точка интерфейса. Всякий раз, когда ваш SDK вызывает S3 API, он выполняет поиск s3.us-east-1.amazonaws.com и всегда получает ответ с IP-адресом, который связан со списком префиксов, что заставляет маршрутизатор VPC маршрутизировать трафик соответствующим образом.
для s3/dynamo всегда лучше подтверждать из событий cloudtrail (исходный IP-адрес)
Вы можете просто выполнить nslookup для конечной точки для Dynamodb, и он должен вернуть частный IP-адрес из экземпляра внутри vpc.