У меня есть экземпляр mysql RDS
его присвоено по умолчанию VPC для всех подсетей по умолчанию
имеет группу безопасности, входящее правило, установленное для прослушивания всего трафика, всего протокола, всех диапазонов портов и источника 0.0.0.0/0
Доступно для общего доступа значение Истина
Я могу подключиться к RDS из SQl Workbench, а также из локального скрипта python
-In моя лямбда-функция python -
назначили роль с AWSLambdaVPCAccessExecutionRole, lambda_basic_execution
2.Lambda не назначается ни одному VPC
Я получаю следующее сообщение об ошибке из lambda "errorMessage": "RequestId: xx Процесс завершен до завершения запроса"
Код завершается с ошибкой в точке, где он пытается подключиться к БД get_database_connection(), и кроме журнала logging.logger logger.error("ОШИБКА: Неожиданная ошибка: Не удалось подключиться к экземпляру MySql.")
Возможно ли, что lambda может подключаться к экземпляру RDS по умолчанию VPC? lambda не назначается ни одному VPC
Лямбда-код
import sys
import logging
import package.pymysql
import logging
import package.pymysql.cursors
DATABASE_HOST = 'XXX'
DATABASE_USER = 'XXX'
DATABASE_PASSWORD = 'XXX'
DATABASE_DB_NAME = 'XXX'
port = 3306
def get_database_connection():
"Build a database connection"
conn = pymysql.connect(DATABASE_HOST, user=DATABASE_USER,
passwd=DATABASE_PASSWORD, db=DATABASE_DB_NAME, connect_timeout=5)
return conn
try:
conn = get_database_connection()
except:
logger.error("ERROR: Unexpected error: Could not connect to MySql instance.")
sys.exit()
logger.info("SUCCESS: Connection to RDS mysql instance succeeded")
def lambda_handler(event, context):
print("Lambda executed")
по этой ссылке [ https://docs.aws.amazon.com/lambda/latest/dg/vpc-rds-deployment-pkg.html][1]
да, ваша лямбда не находится в vpc, поэтому экземпляр не может обратиться к публичному экземпляру rds, следуйте этой документации, чтобы обеспечить вашу лямбда-функцию интернет-функциональность,
https://aws.amazon.com/it/premiumsupport/knowledge-center/internet-access-lambda-function/
Что вам нужно сделать, так это:
Создайте 2 частных подсети для VPC по умолчанию
xxx.xxx.64.0/20
xxx.xxx.128.0/20
Перейдите к вашей функции Lambda в консоли.
Прокрутите вниз и с левой стороны выберите VPC по умолчанию.
Select the 2 Private Subnets as your subnets on your lambda function.