【问题标题】:CloudFormation lambda function give local codeCloudFormation lambda 函数提供本地代码
【发布时间】:2018-04-11 00:26:41
【问题描述】:

我正在尝试使用 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 生成的本地文件的内容。我该怎么做?

【问题讨论】:

    标签: amazon-web-services aws-lambda amazon-cloudformation


    【解决方案1】:

    您可以避免将 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

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

    【讨论】:

    • 谢谢你,只是一个简单的问题,如果我重新运行命令进行部署,AWS 如何确定哪些发生了变化?
    • 当您运行 package 命令时,AWS 每次都将 zip 上传到 s3 存储桶,每次使用不同的名称,类似于时间戳。此 s3 URI 将反映 NewSamTemplate.yaml 中的更改
    猜你喜欢
    • 2019-07-28
    • 1970-01-01
    • 2017-10-15
    • 1970-01-01
    • 2016-12-07
    • 2017-10-14
    • 2018-09-01
    • 2018-07-19
    • 1970-01-01
    相关资源
    最近更新 更多