gpt4 book ai didi

postgresql - 如何在 AWS Lambda 上安装 psycopg2(Python Postgres 驱动程序)?

转载 作者:行者123 更新时间:2023-12-01 19:41:03 25 4
gpt4 key购买 nike

这应该有效吗?当我尝试使用 psycopg2 运行代码时,似乎没有发生任何事情。

我遵循以下说明:

http://docs.aws.amazon.com/lambda/latest/dg/lambda-python-how-to-create-deployment-package.html

因此,在 Amazon Linux 实例上,我创建了一个 Python 2.7 virtualenv

然后我执行“pip install --upgrade pip”

然后我执行 pip install psycopg2 - 我现在看到了这些文件:

(venv27)[ec2-user@ip-172-30-0-194 applyreplyPythonTest]$ ls /home/ec2-user/venv27/lib64/python2.7/site-packages/psycopg2
errorcodes.py extensions.py extras.py __init__.py _ipaddress.py _json.py pool.py psycopg1.py _psycopg.so _range.pyc sql.pyc tz.py
errorcodes.pyc extensions.pyc extras.pyc __init__.pyc _ipaddress.pyc _json.pyc pool.pyc psycopg1.pyc _range.py sql.py tests tz.pyc
(venv27)[ec2-user@ip-172-30-0-194 applyreplyPythonTest]$

我将 psycopg2 复制到 Lambda 代码目录的根目录,其中有一个 lambda_function.py

#!/usr/bin/python
from __future__ import print_function
import psycopg2
import sys
import pprint
import json
import urllib
import boto3


def getdata():

conn_string = "host='some address' dbname='DBNAME' user='XXXXXXX' password='XXXXXXX'"
# print the connection string we will use to connect
print("Connecting to database\n ->%s" % (conn_string))

# get a connection, if a connect cannot be made an exception will be raised here
print('floob')
conn = psycopg2.connect(conn_string)
print('conn.status', conn.status)
print('conn.server_version', conn.server_version)

# conn.cursor will return a cursor object, you can use this cursor to perform queries
cursor = conn.cursor()

# execute our Query
cursor.execute("SELECT * FROM cognitouser")

# retrieve the records from the database

results = []
for row in cursor.fetchall():
print(row)
#results.append(row)

# print out the records using pretty print
# note that the NAMES of the columns are not shown, instead just indexes.
# for most people this isn't very useful so we'll show you how to return
# columns as a dictionary (hash) in the next example.
#pprint.pprint(records)




def lambda_handler(event, context):
#print("Received event: " + json.dumps(event, indent=2))
getdata()
return json.dumps(event)

然后,我通过 S3 将函数作为 zip 文件上传到 AWS。

它确实运行了,但是,在打印“floob”后,Lambda Cloudwatch 日志上没有任何输出。

我已独立检查数据库服务器是否可访问。

任何人都可以建议我可能做错了什么吗?

谢谢

最佳答案

我向包含 psycopg2 的 lambda 函数添​​加了一个 lamdba 层。以下是可用 Lambda 层的列表:https://github.com/jetbridge/psycopg2-lambda-layer

我正在使用无服务器框架,这就是我的 Lambda 函数的样子:

functions:
example:
handler: handler.example
layers:
- arn:aws:lambda:us-east-1:898466741470:layer:psycopg2-py37:3
events:
- http:
path: example
method: post
authorizer: aws_iam
cors: true

关于postgresql - 如何在 AWS Lambda 上安装 psycopg2(Python Postgres 驱动程序)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42757905/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com