繁体   English   中英

通过lambda使用psycopg2连接到亚马逊RDS

[英]connecting to amazon rds with psycopg2 via lambda

我在AWS Lambda上的代码:

import sys, boto3, logging, rds_config, psycopg2

rds_host = "hostname"
name = rds_config.db_username
password = rds_config.db_password
db_name = rds_config.db_name

s3 = boto3.resource('s3')
rds_client = boto3.client('rds',aws_access_key_id=Access_Key,aws_secret_access_key=Secret_Access_Key)
instances = rds_client.describe_db_instances()
print (instances)

try:
    conn = psycopg2.connect(host=rds_host,
                        database=db_name,
                        user=name,
                        password=password)
    cur = conn.cursor()

except:
    logger.error("ERROR: Unexpected error: Could not connect to Postgresql instance.")
    sys.exit()

我相信我的boto3.client已连接到RDS实例,因为实例的信息已输出到屏幕。

但是使用psycopg2则不会。
而不是logger.error我得到了超时错误消息:

Task timed out after 60.06 seconds

另外:我可以使用本地psql控制台或本地服务器中的python脚本连接到RDS。 仅当我在线使用aws-lambda测试脚本时,它才起作用

有什么帮助吗? 谢谢!

RDS文档建议,如果遇到超时错误并且主机和端口正确,则应检查数据库所在的安全组是否允许网络访问。 默认情况下,不授予数据库实例网络访问权限。

请参阅入门使用Amazon RDS安全组控制访问

最近遇到同样的问题。 60秒通常是连接到RDB实例的超时时间。

仔细检查您的安全组和vpc设置,默认情况下拒绝访问,您需要显式启用它。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM