无服务器如何在aws中调用

时间:2017-10-26 23:02:04

标签: amazon-web-services lambda serverless

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

  1. 似乎没有创建API网关,所以它如何调用?
  2. 还有serverless.yml文件中提到的阶段,我不确定这些转换为
  3. 对此的任何帮助都非常感谢。

3 个答案:

答案 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之上。