写入具有AWS Lambda错误的数据库-调用invoke API操作失败,并显示以下消息:网络错误

时间:2020-04-16 13:15:41

标签: python pandas amazon-web-services aws-lambda amazon-redshift

我正在查询API,将其存储到pandas数据框,对其进行转换,然后将其写入AWS Redshift数据库。在我的本地计算机上没有问题,一切正常。当我将代码与所有必需的软件包放在AWS Lambda中时,出现此错误:

Calling the invoke API action failed with this message: Network Error

我已经读到它可能是由于它可以向数据库写入多少行的限制,所以我尝试仅向数据库写入1行,但仍然出现相同的错误。

我写的代码如下:

conn = create_engine('postgresql://user:password@redshifteu-west-1.redshift.amazonaws.com:5439/dev')
result.to_sql('table_1', conn, index=False, if_exists='replace', schema='schema')

我正在使用熊猫to_sql方法和sqlalchemy。如何使用AWS Lambda将数据框写入Redshift数据库?

1 个答案:

答案 0 :(得分:1)

请注意,您可能需要psycopg2才能通过SQLAlchemy连接到Redshift:

pip install psycopg2

现在,另一种可能性是您实际上超出了速率limit of S3


如果上述方法无效,并且您确信未超出速率限制,则可以尝试pandas_redshift

# pip install pandas-redshift
import pandas_redshift as pr


pr.connect_to_redshift(
    dbname='dev', host='redshifteu-west-1.redshift.amazonaws.com', 
    port=5439, user='user', password='password'
)

pr.connect_to_s3(
   aws_access_key_id='aws_access_key_id',
   aws_secret_access_key='aws_secret_access_key',
   bucket='bucket_name',
   subdirectory='subdirectory'
)

pr.pandas_to_redshift(data_frame=result, redshift_table_name='table_1')
相关问题