AWS Lambda не может подключиться к хранилищу параметров
У меня есть AWS Lambda
(Java), и я пытаюсь сделать тест, чтобы восстановить пароль, хранящийся в хранилище параметров. Вот мой кусок кода:
GetParameterRequest parameterRequest = new GetParameterRequest();
AWSSimpleSystemsManagement client = AWSSimpleSystemsManagementClientBuilder.defaultClient();
parameterRequest.withName("my-password-key")
.setWithDecryption(true);
GetParameterResult parameterResult = client.getParameter(parameterRequest);
password = parameterResult.getParameter().toString();
security group
(и NACL
) связанный с моей лямбда имеет все входящие и исходящие открытые (любой порт и любой IP-адрес).
Моя лямбда запускается в частной подсети.
Когда я выполняю лямбду (вызванную событием шлюза API), у меня появляется следующая ошибка:
Unable to execute HTTP request: Connect to ssm.eu-central-1.amazonaws.com:443 [ssm.eu-central-1.amazonaws.com] failed: connect timed out: com.amazonaws.SdkClientException
Поскольку ошибка связана с ошибкой тайм-аута, я думаю, что это не проблема роли.
Я понятия не имею, где искать. Любая помощь приветствуется.
Благодарю.
CC
1 ответ
Доступ к Интернету требуется при вызове API AWS.
Есть два способа дать доступ лямбда-функции к Интернету:
- Не присоединяйте лямбда-функцию к VPC, или
- Присоедините функцию Lambda к частной подсети и настройте частную подсеть для маршрутизации интернет-трафика через шлюз NAT (или экземпляр NAT) в общедоступной подсети.
Таким образом, если лямбда-функции не требуется доступ к каким-либо ресурсам в VPC, просто удалите ее из VPC. Если ему нужен доступ, добавьте шлюз NAT.