Amazon web services CloudFormation lambda函数给出本地代码

Amazon web services CloudFormation lambda函数给出本地代码,amazon-web-services,aws-lambda,amazon-cloudformation,Amazon Web Services,Aws Lambda,Amazon Cloudformation,我正在尝试使用CloudFormation将lambda函数部署到AWS。我的问题是,对于代码部分,我想给出一个本地文件,而不是一个s3存储桶。这就是我现在拥有的 getStores: Type: AWS::Lambda::Function Properties: Handler: index.get Role: !GetAtt SyncGalaxyLambdaRole.Arn Code: ZipFile:

我正在尝试使用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

现在对于代码部分,我想给出通过webpack生成的本地文件的内容。如何做到这一点?

您可以避免将Javascript代码与cloudformation内联。这在未来将很难维持。您还可以使用AWS SAM将代码压缩到s3 bucket并用于lambda函数。这是AWS推荐的方法

执行以下步骤以创建堆栈

  • 安装和配置AWS CLI
  • aws s3 mb s3://[STACK_NAME]-应用程序工件--区域[region]
  • 运行webpack步骤以生成代码
  • aws cloudformation包--模板文件samTemplate.yaml--s3 bucket[STACK_NAME]-应用程序工件--输出模板文件NewSamTemplate.yaml
  • aws——区域[region]云信息部署——模板文件NewSamTemplate.yaml——堆栈名称[stack\u name]——功能IAM

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

    谢谢您的帮助,我想问一个简单的问题,如果我重新运行要部署的命令,AWS如何判断哪些已更改?当您运行package命令时,AWS每次都会以不同的名称将zip上载到s3 bucket,类似于时间戳。此S3URI将反映NewSamTemplate.yaml中的更改
    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: ./