首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >函数在手动删除SAM CloudFormation堆栈中的函数后找不到。

函数在手动删除SAM CloudFormation堆栈中的函数后找不到。
EN

Stack Overflow用户
提问于 2019-05-16 00:46:22
回答 3查看 7.3K关注 0票数 7

我使用sam deploy来部署lambda函数和API网关。它可以正常工作,但是在我通过AWS控制台手动删除lambda函数之后,它就不能工作了。我发现了以下错误:

代码语言:javascript
复制
"ResourceStatusReason": "Function not found: 
  arn:aws:lambda:ap-southeast-2:286334053171:function:polaroid (Service: 
  AWSLambdaInternal; Status Code: 404; Error Code: ResourceNotFoundException;
  Request ID: b431cbfc-7772-11e9-8022-1b92fa2cfa9e)

删除lambda并执行刷新部署的正确方法是什么?如果发生这种情况,如何强制SAM创建缺少的lambda函数?

我在模板yaml中的lambda看起来如下:

代码语言:javascript
复制
...
Resources:
  PolaroidFunction:
    Type: AWS::Serverless::Function 
    Properties:
      FunctionName: test
      CodeUri: ./lambdas
      Handler: lib/index.fun
      Runtime: nodejs8.10
      Events:
        polaroid:
          Type: Api 
          Properties:
            Path: /test
            Method: post
...
EN

回答 3

Stack Overflow用户

发布于 2020-12-21 20:17:03

我也有过类似的问题。在我的例子中,我删除了Lambda作为一个实验,同时尝试重置TRIM_HORIZON以使它在DynamoDB流中重新处理旧事件。

我找到了一个更简单的解决方案:

进入CloudFormation控制台并删除已部署的Stack.

在那之后,sam deploy再次正常工作。

票数 4
EN

Stack Overflow用户

发布于 2022-06-05 20:22:27

因此,正如在其他答案中所建议的那样,我从控制台手动删除了该函数。

我是从CDK部署堆栈的

解决方案

  • 注释我手动删除的函数的lambda函数代码(在cdk中)。
  • 部署堆栈
  • 注释代码并再次部署。
票数 2
EN

Stack Overflow用户

发布于 2021-07-20 16:49:31

如果您想避免删除堆栈并再次将其重新部署,或者避免对齐CloudFormation模板文件,那么也许您可以将AWS中的资源与模板文件对齐。

这意味着,如果删除了最初从模板文件中创建的某个Lambda (例如),只需在AWS ( GUI或aws )中手动创建相同的Lambda即可。现在再运行‘山姆部署’-你应该是对齐的。

现在,从模板文件中删除Lambda定义并重新部署--应该删除Lambda并对齐CloudFormation。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/56159381

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档