0

我是整个无服务器框架的新手。我创建了我的第一个无服务器函数,如此处所述https://www.npmjs.com/package/serverless#quick-start。接下来,当我执行“无服务器调用”时,它会起作用。我很困惑这是如何工作的,我对此的问题是

  1. 似乎没有创建 API 网关,那么它如何调用?
  2. serverless.yml 文件中还提到了阶段,我不确定这些转换为什么

对此的任何帮助都将受到高度赞赏。

4

3 回答 3

1

首先,AWS 模板附带的默认代码仅声明了一个 Lambda 函数。让我尝试在线回答您的问题。

似乎没有创建 API 网关,那么它如何调用?

是的,由于没有创建 API 网关,因此无法通过 URL 调用 Lambda。但是,可以使用无服务器框架通过“无服务器调用”提供的 AWS CLI 或开发工具包来调用 Lambda。要创建 API 网关,您需要在函数代码中添加一个事件对象,如下所示。

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

serverless.yml 文件中还提到了阶段,我不确定这些转换为什么

当您在 serverless.yml 文件中定义阶段时,部署后,它会在 API Gateway 中创建一个阶段,将其包含在 API Gateway URL 路径中,如下所示。

https://your-api/<stage-you-defined>/resurce-methods

注意:如果您为 API Gateway 设置了自定义证书,那么您可以选择设置自己的自定义路径。

还需要注意的是,尽管 API Gateway 支持此功能以具有单个 API Gateway 部署的不同阶段(例如测试、登台、生产),但最新的无服务器框架不使用此功能。相反,当您定义一个新阶段时,它将使用新阶段部署一个全新的 API 网关。Serverless Framework 具有分离 API 网关的论点,并有一个单独的阶段来自包含每个阶段以进行隔离。

于 2017-10-29T05:37:49.833 回答
0

您可以附加一个 API 网关来调用您的 lambda

或者

你可以得到事件驱动。您的 lambda 被调用以响应某些事件,例如 AWS SNS 中的新消息或在 S3 中创建新对象时

或者

您可以使用 cloudwatch 触发事件安排调用

有关可以调用 lambda 的事件的完整列表,请参阅调用 Lambda 函数

于 2017-10-27T02:20:19.260 回答
0

AWS 区域和终端节点中所述,Lambda 有 HTTPS 终端节点。例如,在us-east-1区域中,端点是https://lambda.us-east-1.amazonaws.com。这就是您无需 API 网关即可直接调用 Lambda 的方式。API 网关可以添加额外的功能并将完整的 HTTP 协议置于 Lambda 之上。

于 2017-10-29T02:56:43.947 回答