首页 > 解决方案 > AWS::Lambda::Function, JS 文件作为源

问题描述

我正在尝试通过 cloudformation 部署 lambda 函数。我的项目已设置

-src
--lambdas
---lambda1.js
---lambda2.js
---lambda3.js

然后我尝试将每个 lambda 文件作为 lambda 函数上传

Type: AWS::Lambda::Function
    Properties:
      FunctionName: lambda1
      Role: !GetAtt LambdaAtEdgeRole.Arn
      Runtime: nodejs10.x
      Handler: index.handler

现在我正在尝试获取代码,但我没有看到可以上传 JS 文件的任何地方。我可以看到 ZIP,但是我必须为每个文件添加一个构建步骤来压缩它。我在哪里可以说lambda_src = ./src/lambdas/lambda1.js

标签: amazon-web-servicesaws-lambdaamazon-cloudformation

解决方案


这是尝试重现您的设置以供执行的工作示例。aws cloudformation package

目录结构

.
├── src
│   └── lambdas
│       ├── lambda1.js
│       ├── lambda2.js
│       └── lambda3.js
└── template.yaml

模板.yaml

Resources:

  MyFunction1:
    Type: AWS::Lambda::Function
    Properties:
      FunctionName: lambda1
      Runtime: nodejs10.x
      Handler: index.handler
      Code: ./src/lambdas/lambda1.js  
  
  MyFunction2:
    Type: AWS::Lambda::Function
    Properties:
      FunctionName: lambda1
      Runtime: nodejs10.x
      Handler: index.handler
      Code: ./src/lambdas/lambda2.js  


  MyFunction3:
    Type: AWS::Lambda::Function
    Properties:
      FunctionName: lambda1
      Runtime: nodejs10.x
      Handler: index.handler
      Code: ./src/lambdas/lambda3.js 

在项目的根文件夹中执行

aws cloudformation package  --template-file template.yaml --output-template-file output.yml --s3-bucket <your-bucket-name> 

然后你可以部署你的output.yml.


推荐阅读