【问题标题】:how does serverless invoke in aws无服务器如何在 aws 中调用
【发布时间】:2017-10-26 23:02:04
【问题描述】:

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

  1. 好像没有创建 API 网关,怎么调用呢?
  2. serverless.yml 文件中还提到了一些阶段,我不确定这些转换为什么

非常感谢您对此的任何帮助。

【问题讨论】:

    标签: amazon-web-services lambda serverless


    【解决方案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 Gateway 并有一个单独的阶段来自包含每个阶段以进行隔离。

    【讨论】:

      【解决方案2】:

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

      或者

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

      或者

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

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

      【讨论】:

      • 谢谢,但是我想知道无服务器调用是如何工作的,因为它似乎没有创建任何东西(我是 AWS 新手,所以很容易遗漏一些东西)
      【解决方案3】:

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

      【讨论】:

        猜你喜欢
        • 2019-01-21
        • 2023-03-28
        • 2020-01-02
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2018-08-06
        • 1970-01-01
        • 2018-01-21
        相关资源
        最近更新 更多