lambda call aurora global database

0

I use lambda (python) to connect aurora global database to query data。 use response = boto3.client('rds').describe_global_clusters(GlobalClusterIdentifier='global database name') ...... response = boto3.client('rds').describe_db_clusters(DBClusterIdentifier='cluster id') Get the Endpoint and DatabaseName of the aurora global database then use pymysql.connect(host=Endpoint, user=user,password=password, database=database) connect to the database

When my lambda has a vpc, the database can be connected successfully, but the endpoint cannot be obtained。

When the vpc is deleted, the endpoint can be obtained normally, and the database cannot be connected。

yulong
已提問 1 年前檢視次數 246 次
1 個回答
2

When a Lambda function runs in a default VPC, it has access to the internet but no access to private resources in your VPC. When the function is attached to your VPC, it has access to the private resources, but it looses the access to the internet. To regain that access, you need to add a VPC endpoint for the AWS services you want to access or a NAT gateway to access the rest of the internet of AWS services that do not support VPC endpoints.

All the client('rds') calls are trying to access the RDS service public endpoint. As such you need to create an RDS VPC endpoint.

An alternative would be to configure an environment variable that contains the connection string so that you do not need to find it every time.

profile pictureAWS
專家
Uri
已回答 1 年前

您尚未登入。 登入 去張貼答案。

一個好的回答可以清楚地回答問題並提供建設性的意見回饋,同時有助於提問者的專業成長。

回答問題指南