无服务器配置警告在'functions.app.events[0]'处:不支持的函数事件

31

我正在尝试使用serverless.com部署AWS API。

当我这样做时:

sls --stage=dev --aws-profile=myprofile deploy --force

我收到以下警告:

Configuration warning at 'functions.app.events[0]': unsupported function event

我的 serverless.yml 文件包含以下部分:

functions:
  app:
    handler: src/index.handler
    memorySize: 3008
    events:
      - httpApi:
        method: '*'
        path: '*'
        authorizer:
          name: serviceAuthorizer
          scopes: # Optional
            - user.id
            - user.email

活动部分出了什么问题?


路径为什么是 '*'?你是不是指的是 '/'? - ultimoTG
我希望所有路径都由这个函数处理。无论如何,如果我使用路径:'/',我仍然会收到警告。 - Greg Pagendam-Turner
由于您正在尝试捕获所有方法和任何路径,请尝试使用此events:-httpApi:'*',如此处所述-https://www.serverless.com/framework/docs/providers/aws/events/http-api/#catch-alls - ultimoTG
移除了方法和路径并添加了通配符。由此得到:在'functions.app.events[0]'处的配置警告:未识别的属性'authorizer'。 - Greg Pagendam-Turner
授权配置可能不支持 catch all 和 any 场景?虽然我不确定,但文档中没有提到。 - ultimoTG
显示剩余5条评论
3个回答

63

问题确实是缩进。这里的缩进很奇怪,因此我将在下面解释一下。每个·代表一个空格:

functions:
··hello:
····handler: handler.hello
····events:
······- http:
··········path: /hello
··········method: get

注意以下几点:

  • - http:短横线后面有一个空格。
  • 下一行缩进方式有些奇怪,这是导致问题的原因。在定义事件类型(我这里是http)后仅仅使用了两个空格进行缩进,但实际上需要四个空格。我不知道为什么,但它就是这样要求的。

另一个提示:如果你发现文本编辑器会自动格式化你的YAML文件,并将空格缩进替换为制表符或其他字符,请在根目录下添加一个.editorconfig文件,并使用以下设置:

[*.yml]
indent_size = 2
indent_style = spaces

4
你救了我的一天...现在让别人告诉我,寻找缺失的“;”比寻找缺失的两个空格更大的问题...今天我差点把自己的头发都拔光了。 - Greg0ry
3
哥们儿,你刚刚让我开心了一整天。下面只需要写四个空格 - http: 非常感谢你! - Firoj Siddiki
我的英雄,认真地说。 - Heydiddly

34

我曾经遇到过类似的问题,原因是缩进出了问题。请试着像这样修复:

- httpApi:
    method: '*'
    path: '*'

0

我发现了类似的问题, 我通过删除http前缀中的空格来解决它

事件: - http: 路径:/PostFunction 方法:POST

这是正确的: 事件:

  • http: 路径:/PostFunction 方法:POST

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接