当前位置: 首页 > 知识库问答 >
问题:

使用AWS CodeBuild构建的AWS Lambda中的cx_Oracle问题

钱经业
2023-03-14

我试图使用cx_Oracle从AWS Lambda函数(python3.7)内部连接到RDS(Oracle)数据库。此外,Lambda函数本身是使用buildspec.yml文件从AWS CodeBuild自动构建的。CodeBuild本身通过配置AWS CodePipeline来运行,这样,每当我将代码放入的存储库(在本例中是AWS CodeCommit)更新时,它都会自动构建这些东西。

我所做的事情:1。我有一个AWS Lambda函数,代码如下。

    import cx_Oracle

    def lambda_handler(event, context):
      dsn = cx_Oracle.makedsn('www.host.com', '1521', 'dbname')
      connection = cx_Oracle.connect(user='user', password='password', dsn=dsn)

      cursor = connection.cursor()

      cursor.execute('select * from table_name')

      return cursor
    version: 0.2
    phases: 
      install:
        runtime-versions:
          python: 3.7
      commands:
        - pip install cx_Oracle -t ./ # to install cx_Oracle package in the same directory as the script
        - unzip instantclient-basic-linux*.zip -d /opt/oracle # I have downloaded the zip file beforehand

    <other code>
        -  
    AWSTemplateFormatVersion: '2010-09-09'
    Transform: 'AWS::Serverless-2016-10-31'
    Description: Making a test lambda function using codepipeline

    Resources:
       funcAuthorityReceive:
         Type: 'AWS::Serverless::Function'
         Properties:
            FunctionName: testFunction
            Environment: 
            Variables:
              PATH: '/opt/oracle/instantclient_19_5:$PATH'
              LD_LIBRARY_PATH : '$LD_LIBRARY_PATH:/opt/oracle/instantclient_19_5'
            Handler: lambda_function.lambda_handler
            MemorySize: 128
            Role: 'arn:aws:iam::XXXXXXXXXXXXXX:role/role-for-lambda
            Runtime: python3.7
            CodeUri: ./

在这里,一切都运行顺利,Lambda函数本身也得到了构建,但当我运行Lambda时,会出现以下错误:

"DPI-1047: Cannot locate a 64-bit Oracle Client library: \"libclntsh.so: cannot open shared object file: No such file or directory\". See https://oracle.github.io/odpi/doc/installation.html#linux for help"

任何帮助都将不胜感激。

共有1个答案

百里默
2023-03-14

当您希望使用cx_Oracle访问Oracle数据库时,在压缩lambda包(代码和其他依赖项)时,请确保保留符号链接

zip --symlinks -r lambda.zip .

我没有使用codebuild,但我已经在linux服务器上构建了lambda包,很快我将在Azure Devops中创建一个构建管道。

 类似资料:
  • DockerFile: 在之后,GPG行显示为红色,图像创建失败。为什么?

  • 我已经建立了一个简单的应用程序使用电子和它的作品罚款当你启动与。在我尝试部署我的应用程序后,我得到以下错误。 警告:--asar不接受任何参数,它只有子属性(请参阅--help)使用electron v4.1.3为平台win32 ia32打包应用程序警告:找到“electron”,但不是作为devDependency,修剪rcedit.exe失败,退出代码为1。保留标题不是0或图像类型不是“a”的

  • 我从中查看了axis2的最新版本http://svn.apache.org/repos/asf/axis/axis2/java/core/trunk/安装了最新的maven。 在执行mvn安装后,我得到了以下信息。请帮帮我,我做错了什么? 这是pom的部分,因为整个东西太大了

  • 我试图建立一个基本的应用程序使用Kotlin/Anko,但我得到以下重复文件例外 我尝试删除gradle缓存并再次构建项目,但没有任何工作。请告诉我哪里出了问题?

  • 我正在Netbean中的Netbean MavenJava应用程序上工作。无法构建java摇摆应用程序。依赖项不在. m2文件夹中下载。