如何解决无法使用特定的Cron时间表通过Lambda过程连接到Redshift
我有一个lambda函数,该函数使用python库psycopg2连接到redshift。如果我通过EventBridge使用以下计划表达式,则everiting运行正常:
cron(0/5 * * * ? *)
但是,如果我使用如下所示的计划表达式,则会引发错误:
cron(0 7 ? * MON-FRI *)
错误:
could not connect to server: Connection timed out
Is the server running on host "<HOST>" (...) and accepting
TCP/IP connections on port 5439?
: OperationalError
Traceback (most recent call last):
File "/var/task/redshiftETL/lambda_function.py",line 29,in lambda_handler
raise e
File "/var/task/redshiftETL/lambda_function.py",line 22,in lambda_handler
host=db_host)
File "/var/task/psycopg2/__init__.py",line 127,in connect
conn = _connect(dsn,connection_factory=connection_factory,**kwasync)
psycopg2.OperationalError: could not connect to server: Connection timed out
Is the server running on host "<HOST>" (...) and accepting
TCP/IP connections on port 5439?
一个重要的信息是,将redshift配置为从上午6点运行到晚上8点,因此cron表达式在该时间段内,并且lambda函数与分配了redshift集群的VPC的连接正确。
以下代码是我连接到redshift的代码段。如您所见,没什么特别的:
# redshift connection
db_database = '...'
db_user = '...'
db_password = '...'
db_port = '...'
db_host = '...'
try:
conn = psycopg2.connect(
database=db_database,user=db_user,password=db_password,port=db_port,host=db_host)
conn.autocommit = True
cur = conn.cursor()
except Exception as e:
<DO STUFF>
raise e
我生气了,因为我没有意识到cron表达式与psycopg2连接有什么关系。
关于发生了什么的任何线索吗?
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。