首页 > 解决方案 > AWS SAM - 模板没有任何 API 连接到 Lambda 函数

问题描述

所以我正在尝试将现有的 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

标签: amazon-web-servicesaws-serverless

解决方案


您没有将任何 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


推荐阅读