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

Aws lambda 使用AWS CodeBuild构建的AWS Lambda中的cx_Oracle问题,aws-lambda,cx-oracle,aws-codebuild,Aws Lambda,Cx Oracle,Aws Codebuild,我正在尝试使用cx_Oracle从AWS Lambda函数(python3.7)内部连接到RDS(Oracle)数据库。此外,Lambda函数本身是使用buildspec.yml文件从AWS CodeBuild自动构建的。代码构建本身是通过配置AWS代码管道来运行的,只要我将代码放入的存储库(在本例中为AWS CodeCommit)更新,它就会自动构建代码 我所做的事情: 1.我有一个AWS Lambda函数,代码如下 import cx_Oracle def lambda_h

我正在尝试使用cx_Oracle从AWS Lambda函数(python3.7)内部连接到RDS(Oracle)数据库。此外,Lambda函数本身是使用buildspec.yml文件从AWS CodeBuild自动构建的。代码构建本身是通过配置AWS代码管道来运行的,只要我将代码放入的存储库(在本例中为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
  • 在buildspec.yml中,我有以下构建命令
  • 在这里,一切都运行顺利,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"
    

    任何帮助都将不胜感激。

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


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

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

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

        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: ./
    
    "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"
    
    zip --symlinks -r lambda.zip .