这个问题是由于VPC间DNS解析问题造成的。为了解决这个问题,需要确保Lambda的VPC与端点所在的VPC之间存在连接。一种解决方法是在Lambda的VPC和端点VPC之间创建VPC Peering连接。这样Lambda函数就可以通过Peering连接访问端点。
以下是一个示例Python Lambda函数,它使用VPC Peering连接到位于另一个VPC中的RDS实例:
import pymysql
import os
# 获取环境变量
db_host = os.environ['DB_HOST']
db_user = os.environ['DB_USER']
db_pass = os.environ['DB_PASS']
db_name = os.environ['DB_NAME']
# 创建Peering连接
ec2 = boto3.client('ec2')
peering = ec2.create_vpc_peering_connection(
VpcId='vpc-123456', # Lambda所在VPC ID
PeerVpcId='vpc-789012' # 目标VPC ID
)
conn = pymysql.connect(host=db_host, user=db_user, passwd=db_pass, db=db_name)
在上面的示例中,Lambda函数与位于vpc-789012上的RDS数据库通过vpc-123456创建的VPC Peering连接进行通信。