我使用Apex在AWS中部署lambda函数。我需要编写一个lambda函数,它在我的AWS VPC中的Oracle RDS上运行清理脚本。 Oracle有一个非常好的python库,名为cx_Oracle,但我在Lambda函数中使用它有一些问题(在Python 2.7上运行)。我的第一步是尝试按如下方式运行oracle描述的测试代码:
from __future__ import print_function
import json
import boto3
import boto3.ec2
import os
import cx_Oracle
def handle(event, context):
con = cx_Oracle.connect('username/password@my.oracle.rds:1521/orcl')
print(str(con.version))
con.close()
当我尝试运行这段测试代码时,我收到以下响应:
Unable to import module 'main': /var/task/cx_Oracle.so: invalid ELF header
Google告诉我这个错误是因为cx_Oracle库不是python的完整oracle实现,而是需要预安装SQLPlus客户端,而cx_Oracle库引用组件作为SQLPlus的一部分安装。
显然,预安装SQLPlus可能很困难
这项功能可以让我预先制作东西,但是我无法找到文档来展示这些文物会发生什么以及它是如何工作的。理论上我可以将库下载到nexus或S3存储桶中,然后在我的hooks {}声明中,我可以将它们添加到zip文件中。然后我可以尝试将它们安装为python脚本的一部分。但是,我有一些问题:hooks {}