amazon-web-services - 如何在 SAM 模板上指定现有函数名称

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

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

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

是否有任何方法可以在 SAM 中指定函数名称以更新 lambda 函数?

[模板.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

最佳答案

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

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

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

关于amazon-web-services - 如何在 SAM 模板上指定现有函数名称,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48733338/

相关文章:

amazon-web-services - 在本地运行 AWS SAM 项目出现错误

javascript - AWS Javascript 开发工具包 : Greengrass createFunctionDefinition

amazon-web-services - 如何在 AWS 应用程序负载均衡器 (ALB) 端口转发中转发端口

mysql - 每日将 AWS Aurora 数据库复制到另一个 AWS Aurora 数据库

amazon-web-services - 是否可以在不使用 s3 的情况下在 sagemaker 中进行预测

asynchronous - 返回响应后,Lambda 可以继续吗?

amazon-web-services - AWS CLI - sam 部署与 sam 同步

amazon-web-services - 如何为 VMWare 的 fluentd operator 安装 ConfigMap 卷?

amazon-web-services - SNS 的 Lambda 节流行为

amazon-web-services - 我们可以在不使用 AWS Sam 的情况下在本地设置 AWS Lambda 函数吗?