从AWS Lambda在AWS Oracle RDS上运行清理脚本

时间:2017-09-01 14:49:04

标签: python oracle python-2.7 aws-lambda

我使用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可能很困难

hooks {}

这项功能可以让我预先制作东西,但是我无法找到文档来展示这些文物会发生什么以及它是如何工作的。理论上我可以将库下载到nexus或S3存储桶中,然后在我的hooks {}声明中,我可以将它们添加到zip文件中。然后我可以尝试将它们安装为python脚本的一部分。但是,我有一些问题:

  1. 如何构建'在lambda内部访问的人工制品 功能?他们可以吗?我误解了吗?
  2. python 2.7 lambda函数是否具有足够的访问权限 主机容器的操作系统能够安装一个 库中?
  3. 如果对问题2的回答是否定的,是否有另一种写法 一个lambda函数,用于对Oracle RDS实例运行一些SQL吗?

0 个答案:

没有答案