我是整个无服务器框架的新手。我创建了我的第一个无服务器函数,如此处所述https://www.npmjs.com/package/serverless#quick-start。接下来,当我执行“无服务器调用”时,它会起作用。我很困惑这是如何工作的,我对此的问题是
- 似乎没有创建 API 网关,那么它如何调用?
- serverless.yml 文件中还提到了阶段,我不确定这些转换为什么
对此的任何帮助都将受到高度赞赏。
我是整个无服务器框架的新手。我创建了我的第一个无服务器函数,如此处所述https://www.npmjs.com/package/serverless#quick-start。接下来,当我执行“无服务器调用”时,它会起作用。我很困惑这是如何工作的,我对此的问题是
对此的任何帮助都将受到高度赞赏。
首先,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 网关的论点,并有一个单独的阶段来自包含每个阶段以进行隔离。
您可以附加一个 API 网关来调用您的 lambda
或者
你可以得到事件驱动。您的 lambda 被调用以响应某些事件,例如 AWS SNS 中的新消息或在 S3 中创建新对象时
或者
您可以使用 cloudwatch 触发事件安排调用
有关可以调用 lambda 的事件的完整列表,请参阅调用 Lambda 函数
如AWS 区域和终端节点中所述,Lambda 有 HTTPS 终端节点。例如,在us-east-1
区域中,端点是https://lambda.us-east-1.amazonaws.com
。这就是您无需 API 网关即可直接调用 Lambda 的方式。API 网关可以添加额外的功能并将完整的 HTTP 协议置于 Lambda 之上。