【问题标题】:timeout issue python aws lambda data copy from s3 to redshift超时问题python aws lambda数据从s3复制到redshift
【发布时间】:2018-12-08 05:58:29
【问题描述】:

据我所知,如果函数运行时间超过 3 秒,AWS lambda 将认为失败

def copy_to_redshift(cur, key):
    sql = '''
    copy <table_name> 
    from '<s3 bucket url>' 
    credentials 'aws_access_key_id=<..>;aws_secret_access_key=<..>' 
    json 'auto'
    ''' % (key)

    cur.execute(sql)

我使用此代码将数据从 s3 加载到 redshift。它需要超过 3 秒,我从 lambda 得到这个日志

Task timed out after 3.00 seconds

如何降低这种性能?

我的 s3 文件大小为 7M,有 50000 行。

幸运的是,即使 lambda 完成失败,我的 redshift 也可以成功加载,我认为函数不需要等到复制 sql。

是否可以只给出sql和终止函数?

【问题讨论】:

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


【解决方案1】:

AWS Lambda 的最大超时时间为 5 分钟。如果您的处理没有在 3 秒内完成,您可以尝试逐渐增加它并查看您的 Lambda 的最佳超时时间(显然最多 5 分钟)

关于“我怎样才能降低这种性能”,您可以尝试增加 Lambda 的内存占用。这个单一的内存控制旋钮做了两件事

  1. 增加可用于 Lambda 的内存 (RAM)
  2. 与内存成比例地增加可用于 Lambda 的 CPU 功率

以上 2 的组合应该有望解决问题

是的,如果 Lambda 在超时之前发出 Redshift 复制命令,那么无论 Lambda 是否超时,Redshift 操作都会成功

【讨论】:

    猜你喜欢
    • 2013-03-14
    • 1970-01-01
    • 1970-01-01
    • 2017-10-22
    • 1970-01-01
    • 2018-01-26
    • 2018-09-12
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多