如何在SAM模板上指定现有的FunctionName

时间:2018-02-11 15:50:51

标签: amazon-web-services aws-lambda aws-sam-cli

我尝试使用SAM部署AWS Lambda函数。 我想要做的是通过部署本地源代码来更新现有的lambda函数。

为了做到这一点,我将现有的lambda函数名称指定为' FunctionName'在template.yaml中如下。 但是,' FunctionName'仅支持创建新功能,不支持更新现有功能。 https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-lambda-function.html#cfn-lambda-function-functionname

有没有办法在SAM中指定函数名以更新lambda函数?

[template.yaml]

AWSTemplateFormatVersion: '2010-09-09'
Transform: AWS::Serverless-2016-10-31
Resources:
  HelloWorld:
    Type: 'AWS::Serverless::Function'
    Properties:
      FunctionName: 'hello_world'
      Description: ''
      Handler: index.handler
      MemorySize: 256
      Role: 'arn:aws:iam::368834739507:role/lambda_basic_execution'
      Runtime: nodejs6.10
      Timeout: 120

1 个答案:

答案 0 :(得分:3)

使用SAM(和/或CloudFormation),您无法更新现有资源。

SAM(和CloudFormation)创建和管理自己的资源。创建堆栈时将创建模板中指定的所有资源。他们不能被接管"。

相反,您应该允许SAM(或CloudFormation)为您创建Lambda函数,然后更新用户以引用新函数。之后,您可以使用SAM更新代码。