CloudFormation lambda 函数给出本地代码

CloudFormation lambda function give local code

我正在尝试使用 CloudFormation 将 lambda 函数部署到 AWS。我的问题是,对于代码部分,我想提供一个本地文件而不是 s3 存储桶。这就是我目前所拥有的。

  getStores:
    Type: AWS::Lambda::Function
    Properties:
      Handler: index.get
      Role: !GetAtt SyncGalaxyLambdaRole.Arn
      Code:
        ZipFile:
          Fn::Join:
          - "\n"
          - - exports.get = function(event, context) {
            - "  console.log('hello world!');"
            - "};"
      Runtime: nodejs6.10

现在在 Code 部分我想给出一个通过 webpack 生成的本地文件的内容。我该怎么做?

您可以避免将 Javascript 代码与 cloudformation 内联。将来很难维护。您还可以使用 AWS SAM 将代码压缩到 s3 存储桶并用于 lambda 函数。这是 AWS 推荐的方法。 http://docs.aws.amazon.com/lambda/latest/dg/deploying-lambda-apps.html

AWSTemplateFormatVersion: '2010-09-09'
Transform: AWS::Serverless-2016-10-31
Description: Hello World
Resources:
  HelloWorldFunction:
    Type: AWS::Serverless::Function
    Properties:
      Handler: index.handler
      Runtime: nodejs4.3
      CodeUri: ./

执行以下步骤创建堆栈。

  1. 安装和配置 AWS CLI。
  2. aws s3 mb s3://[STACK_NAME]-app-artifact --region [REGION]
  3. 运行 你的 webpack 生成代码的步骤。
  4. aws cloudformation package --template-file samTemplate.yaml --s3-bucket [STACK_NAME]-app-artifact --output-template-file NewSamTemplate.yaml
  5. aws --region [REGION] cloudformation deploy --template-file NewSamTemplate.yaml --stack-name [STACK_NAME] --capabilities CAPABILITY_IAM.

更新代码后,您只需重新运行上述步骤即可创建堆栈。