Запретить ответ от API Gateway, если IP-адрес не внесен в белый список

Контекст

Я использую политику ресурсов для внесения в белый список IP-адресов, которые могут вызывать мои API, управляемые с помощью API Gateway.

Моя политика ресурсов выглядит так

Когда я пытаюсь вызвать API с IP-адреса, которого нет в белом списке, я получаю такой ответ API:

{
    "Message": "User: anonymous is not authorized to perform: execute-api:Invoke on resource: arn:aws:execute-api:ap-sou*******-*:************:*****/*****/**/******"
}

Проблема

Я бы предпочел вообще не показывать сообщение об ошибке, если IP-адрес отсутствует в белом списке.

Ожидаемый результат

Как я могу изменить ответ, чтобы отображать сообщения об ошибках только для IP-адресов, внесенных в белый список? Для IP-адресов, которых нет в белом списке, ответа не должно быть. Подобно тому, что делают экземпляры EC2, когда IP-адрес не включен в белый список и время ожидания операции истекает.

РЕДАКТИРОВАТЬ: есть еще один вопрос с аналогичной проблемой - сообщение об отказе в доступе к AWS API Gateway из политики ресурсов

Но моя проблема в другом, потому что я не просто хочу изменить отправленный ответ, но я хотел бы, чтобы API Gateway не отправлял ответ, если IP-адрес не включен в белый список.

1 ответ

Решение

Поскольку у людей в комментариях есть предложение, вы можете рассмотреть возможность использования ответа шлюза, чтобы упростить ответ практически ни на что, вернув что-то вроде{}.

Другой подход, который следует рассмотреть, если вы хотите получить аналогичные ответы от экземпляров EC2, - не использовать API Gateway и использовать Application Load Balancer в качестве вашего прокси. Я не уверен, какой тип интеграции вы используете со шлюзом API, но ALB позволяют маршрутизировать трафик на Lambdas, маршрутизировать трафик на экземпляры EC2 или пересылать / перенаправлять трафик на другие конечные точки HTTP, поэтому это решение будет работать для этих типов интеграции. Затем вы можете настроить группы безопасности на ALB, чтобы разрешить трафик только из подсетей из белого списка, и любые другие пользователи, которые попытаются сделать запросы, просто зависнут.

Другие вопросы по тегам