18

所以我正在尝试将现有的 Spring Boot 应用程序转换为 AWS lambda 并使用 SAM。

我正在尝试使用 aws-sam-cli 在本地尝试我的 lambda,但是通过我的 SAM 设置,我得到:Template does not have any APIs connected to Lambda functions

当我做:sam local start-api

我的template.yml

AWSTemplateFormatVersion : '2010-09-09'
Transform: AWS::Serverless-2016-10-31
Description: foo
Resources:
  MailFunction:
    Type: AWS::Serverless::Function
    Properties:
      Handler: bar.LambdaHandler::handleRequest
      Runtime: java8
      CodeUri: target/foo-bar-1.0.jar
      Timeout: 300
      MemorySize: 1024
      Events:
        Timer:
          Type: Schedule
          Properties:
            Schedule: rate(1 day)

知道我做错了什么吗?据我所知,它看起来是正确的https://blog.couchbase.com/aws-serverless-lambda-scheduled-events-tweets-couchbase/ + https://docs.aws.amazon.com/lambda/latest /dg/tutorial-schedule-events-schedule-expressions.html

4

6 回答 6

16

您没有将任何 API Gateway 事件添加到您的函数中。并start-api生成一个本地 API 网关。

您需要将至少一个Api事件添加到您的Events部分。

Events:
  [...]
  Api:
    Type: Api
    Properties:
      Path: /myresource
      Method: get

如果你只是有一个Schedule事件,尝试使用generate-event来创建这样一个事件。

sam local generate-event schedule ...

并调用函数,例如sam local invoke function-name -e event_file.json

于 2018-06-04T12:18:39.993 回答
10

对于 Google 员工:

  • 检查你是否有一个EventwithType: Api
  • 还要检查你是否已经运行sam build非常重要
  • 使用--debug标志,这样你就会知道发生了什么

截至 2020 年 7 月 13 日,Type: HttpApi不适用于sam local start-api. 见问题

于 2019-11-28T02:17:25.697 回答
2

如果您尝试在本地测试 websocket API,也会显示此错误消息。不幸的是,目前不支持对 websockets 的本地测试 - 请参阅https://github.com/awslabs/aws-sam-cli/issues/896

于 2019-09-19T04:43:03.113 回答
1

即使在我的 SAM 模板中定义了一个事件,我遇到了这个错误。Api问题是我的.aws-sam/build/目录中有一个以前的模板,它没有定义 Api 事件(来自以前的运行sam build)。清理构建目录修复了它。

于 2019-04-04T17:12:49.787 回答
1

我收到此错误,但我HttpApisamHttpApi.

命令行版本

SAM CLI, version 0.52.0

示例函数

FeedsFunction:
  Type: AWS::Serverless::Function
  Properties:
    CodeUri:
    Description: "Function that handles feeds"
    Events:
      Handler:
        Type: HttpApi
        Properties:
          ApiId: !Ref FeedsApi
          Path: /
          Method: get
    Handler: api
    MemorySize: 1024
    Runtime: go1.x
    Timeout: 5
    Tracing: Active

目前在 GitHub 上有一个用于添加支持的未解决问题:https ://github.com/awslabs/aws-sam-cli/issues/1641

于 2020-06-10T20:20:31.653 回答
0

当我的 AWS::Serverless::Function 定义中出现空格错误时,我收到了这个错误,特别是Environment需要成为其子级Properties但处于同一级别。更正空格使此错误消失。节点 10.15。

于 2019-07-18T05:17:59.750 回答