使用容器镜像部署 Ruby Lambda 函数 - AWS Lambda

使用容器镜像部署 Ruby Lambda 函数

您可以将 Lambda 函数代码部署为容器镜像。AWS提供了以下资源,帮助您为 Ruby 函数构建容器镜像:

  • Lambda 的AWS基本镜像

    这些基本镜像会预加载一个语言运行时和在 Lambda 上运行镜像所需的其他组件。AWS为每个基本镜像提供 Dockerfile,以帮助构建容器镜像。

  • 开源运行时接口客户端

    如果使用社区或私有企业基本镜像,必须将运行时接口客户端添加到基本镜像,使其与 Lambda 兼容。

  • 开源运行时接口模拟器 (RIE)

    Lambda 提供了一个运行时接口模拟器,供您在本地测试函数。Lambda 的基本镜像和自定义运行时的基本镜像包括 RIE。对于其他基本镜像,您可以下载 RIE 以在本地测试镜像

定义为容器镜像的函数的工作流包括以下步骤:

  1. 使用本主题中列出的资源构建容器镜像。

  2. 将镜像上载到 Amazon ECR 容器注册表

  3. 创建 Lambda 函数或更新函数代码以将镜像部署到现有函数。

AWSRuby 的 基本映像

AWS 为 Ruby 提供了以下基本映像:

标签 运行时 操作系统 Dockerfile

2、2.7

Ruby 2.7 Amazon Linux 2 GitHub 上的适用于 Ruby 2.7 的 Dockerfile

2.5

Ruby 2.5 Amazon Linux 2018.03 GitHub 上的适用于 Ruby 2.5 的 Dockerfile

Amazon ECR 存储库:gallery.ecr.aws/lambda/ruby

使用 Ruby 基本镜像

有关如何使用 Ruby 基本镜像的说明,请选择 Amazon ECR 存储库AWS Lambda Ruby 基本镜像usage(使用情况)选项卡。

Ruby 运行时接口客户端

使用 RubyGems.org 程序包管理器安装 Ruby 的运行时接口客户端:

gem install aws_lambda_ric

有关程序包的详细信息,请参阅 Rubygems.org 上的 Lambda RIC

您也可以从 GitHub 下载 Ruby 运行时接口客户端

从 AWS 基本镜像创建 Ruby 镜像

使用 AWS 基本镜像为 Ruby 构建容器镜像时,只需将 ruby 应用程序复制到容器并安装所有依赖项即可。

使用 ruby:2.7 基本镜像构建和部署 Ruby 函数。

  1. 在本地计算机上,为新函数创建项目目录。

  2. 在项目目录中,添加一个名为 app.rb 且包含函数代码的文件。以下示例是一个简单的 Ruby 处理程序。

    module LambdaFunction class Handler def self.process(event:,context:) "Hello from Ruby 2.7 container image!" end end end
  3. 使用文本编辑器在项目目录中创建一个 Dockerfile。以下示例显示了在上一步中为处理程序创建的 Dockerfile。与函数处理程序一起,在 ${LAMBDA_TASK_ROOT} 目录下安装所有依赖项,以确保在调用该函数时,Lambda 运行时可以找到它们。

    FROM public.ecr.aws/lambda/ruby:2.7 # Copy function code COPY app.rb ${LAMBDA_TASK_ROOT} # Copy dependency management file COPY Gemfile ${LAMBDA_TASK_ROOT} # Install dependencies under LAMBDA_TASK_ROOT ENV GEM_HOME=${LAMBDA_TASK_ROOT} RUN bundle install # Set the CMD to your handler (could also be done as a parameter override outside of the Dockerfile) CMD [ "app.LambdaFunction::Handler.process" ]
  4. 要创建容器镜像,请按照从 Lambda 的AWS基本镜像创建镜像中的步骤 4 至步骤 7 进行操作。

部署容器镜像

对于新函数,您可以在创建函数时部署 Ruby 镜像。对于现有函数,如果重建容器镜像,则需要通过更新函数代码重新部署镜像。