首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在部署为Docker镜像时运行多个lambda函数?

如何在部署为Docker镜像时运行多个lambda函数?
EN

Stack Overflow用户
提问于 2021-01-15 02:19:34
回答 1查看 1K关注 0票数 3

templates.yaml中声明多个函数/应用程序时,通过aws-sam使用带docker镜像的aws lambda的dockerfile是什么样子的

下面是运行“单个应用程序”的示例dockerfile

代码语言:javascript
复制
FROM public.ecr.aws/lambda/python:3.8

COPY app.py requirements.txt ./

RUN python3.8 -m pip install -r requirements.txt -t .

# Command can be overwritten by providing a different command in the template directly.
CMD ["app.lambda_handler"]
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-02-24 06:26:41

Dockerfile本身看起来是一样的。不需要做任何更改。

Docker文件中的CMD行看起来需要更改,但这是误导性的。可以在template.yaml文件中为每个函数指定CMD值。

必须使用有关新函数的信息更新template.yaml文件。您需要为每个函数添加一个ImageConfig属性。ImageConfig属性必须以与CMD值相同的方式指定函数的名称。

您还需要更新每个函数的DockerTag值以使其唯一,尽管此may be a bug

以下是NodeJs "Hello World“示例template.yaml的参考资料部分,更新后可以使用单个Docker镜像支持多个功能:

代码语言:javascript
复制
Resources:
  HelloWorldFunction:
    Type: AWS::Serverless::Function
    Properties:
      PackageType: Image
      ImageConfig:
        Command: [ "app.lambdaHandler" ]
      Events:
        HelloWorld:
          Type: Api
          Properties:
            Path: /hello
            Method: get
    Metadata:
      DockerTag: nodejs14.x-v1-1
      DockerContext: ./hello-world
      Dockerfile: Dockerfile
  HelloWorldFunction2:
    Type: AWS::Serverless::Function
    Properties:
      PackageType: Image
      ImageConfig:
        Command: [ "app.lambdaHandler2" ]
      Events:
        HelloWorld:
          Type: Api
          Properties:
            Path: /hello2
            Method: get
    Metadata:
      DockerTag: nodejs14.x-v1-2
      DockerContext: ./hello-world
      Dockerfile: Dockerfile

这里假设已经修改了app.js文件以同时提供exports.lambdaHandlerexports.lambdaHandler2。我假设相应的python文件应该进行类似的修改。

以这种方式更新template.yaml后,sam local start-api按预期工作,将/hello路由到lambdaHandler,将/hello2路由到lambdaHandler2

这在技术上创建了两个单独的Docker镜像(每个不同的DockerTag值对应一个)。然而,除了标签之外,这两个镜像将是相同的,并且基于相同的Dockerfile,因此第二个镜像将使用Docker的第一个镜像的缓存。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/65724726

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档