我想创建包含二进制文件共享库依赖项的 AWS Lambda 部署程序包。如何在不重新编译 Amazon Linux AMI 程序包的情况下使用该程序包?

Lambda 部署程序包是包含代码和任何依赖项的 .zip 文件。Lambda 执行环境基于特定的 Amazon Linux AMI 和内核版本。Lambda 部署程序包中使用的任何本机二进制文件都必须在此环境中进行编译,并且仅支持 64 位二进制文件。

要使用 Amazon Linux AMI 本机二进制文件程序包,您可以提取 64 位库,然后将这些库包含在您的 Lambda 部署程序包中。(另一个选项(本文中未介绍)是将源代码下载到共享库,然后重新编译程序包。)

从 Amazon Linux AMI 启动 Amazon EC2 实例

1.    打开 Lambda 执行环境和可用库,然后找到以“amzn-ami-hvm”开头的 AMI 名称。

2.    选择 AMI 名称链接以打开 Amazon Elastic Compute Cloud (Amazon EC2) 控制台来搜索 AMI 的结果。

3.    选择 Launch (启动) 以打开“Launch Instance (启动实例)”向导。

4.    选择 Review and Launch (审查并启动) 以接受该向导中的默认实例启动详细信息,然后选择 Launch (启动)

从该实例中提取库

1.    连接到实例,然后运行以下命令来安装用于提取程序包的工具:

sudo yum install -y yum-utils rpmdevtools

2.    如果您不知道代码需要哪些库和依赖项,请使用 yum 查找它们。

例如,对于适用于 Microsoft SQL Server 和 Sybase 数据库的 FreeTDS 库,请运行以下命令:

sudo yum install freetds

注意:在此示例中,系统还将提示您为依赖项安装 gnutls、libtool-ltdl 和 unixODBC。

3.    要下载并提取库和依赖项,请运行以下命令:

cd /tmp
yumdownloader unixODBC.x86_64 freetds.x86_64 libtool-ltdl.x86_64 gnutls.x86_64
rpmdev-extract *rpm

4.    要将库复制到 Lambda 部署程序包的目录,请运行以下命令: 

sudo mkdir -p /var/task
sudo chown ec2-user:ec2-user /var/task
cd /var/task
/bin/cp /tmp/*/usr/lib64/* /var/task

创建部署程序包

执行下列操作之一:

  • 将您的代码和其他资源复制到同一目录中,执行特定于代码和运行时环境的任何配置,然后进行测试。
  • 通过运行以下命令来创建 .zip 文件部署程序包:
cd /var/task
zip -r9 /tmp/MyCodeWithLibraries.zip *

部署 .zip 文件部署程序包,然后进行测试。

有关创建部署程序包的更多信息,请参阅示例函数代码使用环境变量创建 Lambda 函数


此页内容对您是否有帮助? |

返回 AWS Support 知识中心

需要帮助? 访问 AWS 支持中心

发布时间:2018 年 11 月 14 日