并非所有 Python 代码都在 AWS Lambda 函数中执行

我有一个简单的 lambda 函数,它打印一个事件,然后尝试将一行插入数据库。它运行时没有错误,但不执行所有代码。


event被打印,但该行永远不会被插入到表中。任何事情,甚至是我放在后面的打印语句都connection不会被执行。我猜测连接有问题,但据我所知,我无法判断问题出在哪里。某处还有更多日志吗?在 CloudWatch 中,我看到最后显示“任务在 3.00 秒后超时”


import boto3

import psycopg2


s3 = boto3.client('s3')



def insert_data(event=None, context=None):

    print(event)


    connection = psycopg2.connect(user="xxxx", password="xxxx",

                                  host="xxxx", port="xx",

                                  database="xxxx")


    cursor = connection.cursor()

    postgres_insert_query = "INSERT INTO dronedata (name,lat,long,other) VALUES ('img2','54','43','from lambda')"

    cursor.execute(postgres_insert_query)

    connection.commit()

    count = cursor.rowcount

    print(count, "Record inserted successfully into mobile table")


天涯尽头无女友
浏览 119回答 2
2回答

慕盖茨4494581

典型的安全设置是:AWS Lambda 函数 ( Lambda-SG) 上的安全组允许所有出站访问(无需入站规则)数据库(EC2 实例或 Amazon RDS)上的安全组 ( DB-SG),允许在适当端口上进行入站访问Lambda-SG也就是说,DB-SG应该在其入站规则中具体引用Lambda-SG。

白猪掌柜的

是的,您必须将默认超时从 3 秒增加到更多:超时 – Lambda 允许函数在停止之前运行的时间量。默认值为3 秒。允许的最大值为 900 秒。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python