AWS SAM - шаблон не имеет никаких API-интерфейсов, связанных с функциями Lambda - PullRequest
0 голосов
/ 04 июня 2018

Итак, я пытаюсь преобразовать существующее весеннее загрузочное приложение в лямбду AWS и использую SAM.

Я пытаюсь использовать aws-sam-cli, чтобы попробовать мою лямбду локально, однако с моим 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-scheduled-events-schedule-expressions.html

Ответы [ 3 ]

0 голосов
/ 04 апреля 2019

Я тоже столкнулся с этой ошибкой, даже когда у меня было , в моем шаблоне SAM определено событие Api.Проблема заключалась в том, что в моем каталоге .aws-sam/build/ был предыдущий шаблон, для которого не было определено событие Api (из предыдущего запуска sam build).Очистка директории сборки исправила это.

0 голосов
/ 18 июля 2019

Я получил эту ошибку, когда у меня возникла ошибка с пробелами в определении AWS :: Serverless :: Function, в частности, Environment должен был быть потомком Properties, но находился на том же уровне.Исправление пробела заставило эту ошибку исчезнуть.Узлы 10.15.

0 голосов
/ 04 июня 2018

Вы не добавили событие 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 ( см. )

...