我是这个无服务器框架的新手。我创建了我的第一个无服务器功能,如https://www.npmjs.com/package/serverless#quick-start所述。接下来,当我执行“无服务器调用”时,它可以工作。我很困惑这是如何工作的,我对此的问题是
对此的任何帮助都非常感谢。
答案 0 :(得分:1)
首先,AWS模板附带默认代码,仅声明了Lambda函数。让我试着回答你的问题。
似乎没有创建API网关,所以它如何调用?
是的,由于没有创建API网关,因此无法通过URL调用Lambda。但是,可以使用AWS CLI或SDK调用Lambda,这是无服务器框架提供的“无服务器调用”。要创建API网关,您需要将一个事件对象添加到功能代码中,如下所示。
functions:
hello:
handler: handler.hello
events:
- http:
method: get
path: hello
在serverless.yml文件中也提到了阶段,我不是 确定这些转化为
在serverless.yml文件中定义阶段时,在部署之后,它会在API网关中创建一个阶段,包括它在API网关URL路径中,如下所示。
https://your-api/<stage-you-defined>/resurce-methods
注意:如果您为API Gateway设置自定义证书,则可以选择设置自己的自定义路径。
另外需要注意的是,尽管API网关支持此功能具有单个API网关部署的不同阶段(例如测试,登台,生产),但最新的无服务器框架不使用此功能。相反,当您定义新阶段时,它将使用新阶段部署全新的API网关。无服务器框架具有分离API网关的参数,并且具有单个阶段以自包含每个阶段以进行隔离。
答案 1 :(得分:0)
您可以附加API网关以调用您的lambda
或
你可以得到事件驱动。调用lambda以响应某些事件(如AWS SNS中的新消息或在S3中创建新对象时)
或者
您可以使用cloudwatch触发事件进行预定调用
有关可以调用lambda的事件的完整列表,请参阅Invoking Lambda Functions
答案 2 :(得分:0)
如AWS Regions and Endpoints中所述,Lambda有HTTPS端点。例如,在us-east-1
区域中,端点为https://lambda.us-east-1.amazonaws.com
。这就是您在没有API网关的情况下直接调用Lambda的方法。 API网关可以添加其他功能,并将完整的HTTP协议放在Lambda之上。