AWS SAM - 模板没有任何连接到 Lambda 函数的 API
AWS SAM - Template does not have any APIs connected to Lambda functions
所以我正在尝试将现有的 spring 启动应用程序转换为 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-scheduled-events-schedule-expressions.html
它看起来是正确的
您没有向您的函数添加任何 API 网关事件。 start-api
生成一个本地 API 网关。
您需要在 Events
部分添加至少一个 Api
活动。
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
(see)
我 运行 也遇到了这个错误,即使我 确实 在我的 SAM 模板中定义了 Api
事件。问题是我的 .aws-sam/build/
目录中有一个以前的模板,它没有定义 Api 事件(来自 sam build
的先前 运行)。清理构建目录修复它。
当我在 AWS::Serverless::Function 定义中出现空格错误时,我得到了这个错误,特别是 Environment
需要成为 Properties
的子级,但处于同一级别。更正空格使此错误消失。节点 10.15.
如果您尝试在本地测试 websocket API,也会显示此错误消息。不幸的是,当前不支持 websockets 的本地测试 - 请参阅 https://github.com/awslabs/aws-sam-cli/issues/896。
Google 员工:
- 检查您是否有
Event
和 Type: Api
- 还要检查您是否有 运行
sam build
(非常重要)
- 使用
--debug
标志,这样您就会知道发生了什么
自 2020 年 7 月 13 日起,Type: HttpApi
不适用于 sam local start-api
。参见 issue。
我收到此错误,但我的函数正在使用 HttpApi
,看来 sam
的当前版本不支持 HttpApi
。
CLI 版本
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
There is currently an open issue on GitHub for adding support: https://github.com/awslabs/aws-sam-cli/issues/1641
所以我正在尝试将现有的 spring 启动应用程序转换为 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-scheduled-events-schedule-expressions.html
它看起来是正确的您没有向您的函数添加任何 API 网关事件。 start-api
生成一个本地 API 网关。
您需要在 Events
部分添加至少一个 Api
活动。
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
(see)
我 运行 也遇到了这个错误,即使我 确实 在我的 SAM 模板中定义了 Api
事件。问题是我的 .aws-sam/build/
目录中有一个以前的模板,它没有定义 Api 事件(来自 sam build
的先前 运行)。清理构建目录修复它。
当我在 AWS::Serverless::Function 定义中出现空格错误时,我得到了这个错误,特别是 Environment
需要成为 Properties
的子级,但处于同一级别。更正空格使此错误消失。节点 10.15.
如果您尝试在本地测试 websocket API,也会显示此错误消息。不幸的是,当前不支持 websockets 的本地测试 - 请参阅 https://github.com/awslabs/aws-sam-cli/issues/896。
Google 员工:
- 检查您是否有
Event
和Type: Api
- 还要检查您是否有 运行
sam build
(非常重要) - 使用
--debug
标志,这样您就会知道发生了什么
自 2020 年 7 月 13 日起,Type: HttpApi
不适用于 sam local start-api
。参见 issue。
我收到此错误,但我的函数正在使用 HttpApi
,看来 sam
的当前版本不支持 HttpApi
。
CLI 版本
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
There is currently an open issue on GitHub for adding support: https://github.com/awslabs/aws-sam-cli/issues/1641