部署在VPC A的Lambda无法稳定访问对等VPC B中RDS的问题求助
Lambda跨区域VPC对等连接访问RDS不稳定问题
部署在us-east-1区域VPC A的Lambda函数,无法稳定访问与VPC A建立对等连接的us-west-2区域VPC B内的RDS数据库。已确认配置符合AWS官方文档要求,该场景应被支持。
环境信息
- Lambda函数关联至VPC A(us-east-1)
- VPC A与VPC B(us-west-2)已建立对等连接
- 目标RDS位于VPC B,属于全局数据库,支持跨区域故障转移
问题现象
Lambda有时能成功连接RDS(检测端口开放),有时无法连接(检测端口未开放)。复现方法:重新部署Lambda或部署后等待一段时间,即可触发两种不同的连接结果。
复现代码
import socket def lambda_handler(event, context): host = "aurora-xxx.cluster-xxx.us-west-2.rds.amazonaws.com" ip=socket.gethostbyname(host) port = 5432 a_socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM) location = (ip, port) a_socket.settimeout(10) result_of_check = a_socket.connect_ex(location) a_socket.settimeout(None) if result_of_check == 0: print(f'Host {host}({ip}) port {port} is open.') else: print(f'Host {host}({ip}) port {port} is NOT open.')
部署命令
aws --region us-east-1 lambda delete-function --function-name test-2 aws --region us-east-1 lambda create-function --function-name test-2 --zip-file fileb://../lambda/lambda_function.zip --handler lambda_function.lambda_handler --runtime "python3.7" --role <role_arn> --vpc-config SubnetIds=subnet1,subnet2,SecurityGroupIds=sg-xxx --timeout 120
补充说明
VPC A与VPC B的对等连接配置正确,端口始终开放——VPC A内的EC2实例可通过psql稳定连接到该RDS。由于RDS是全局数据库,需确保Lambda能跨VPC稳定访问它。
内容的提问来源于stack exchange,提问作者puravidaso
相关产品推荐
相关产品推荐

