2015-08-16 158 views
7

我通过设置指向它的AWS API网关端点向公开HTTP请求公开AWS Lambda函数。是否可以使用AWS API为Lambda函数设置AWS API网关端点?

有两个部分是:

  • 创建并上传我的AWS lambda函数
  • 设置API网关的HTTP端点指向我的lambda表达式

我想使用API​​调用而不是Web界面来执行这两个部分。我可以使用AWS开发工具包和AWS CLI为第一部分做到这一点。

但是,对于第二部分,我卡住了。在查看AWS SDK for node.jsAWS CLI

时,我没有发现API网关的提及有没有方法使用AWS API以编程方式为Lambda函数设置API网关端点?

+0

CLI/SDK支持书面教程'API Gateway'还没有准备好。我个人希望能够在're:Invent 2015'上发布更多有关这些功能的细节。 – kixorz

+1

此外,'CloudFormation'可能对您未来的工作有很大的帮助。 – kixorz

回答

7

是的,可以通过AWS的API为您的AWS Lambda功能设置您的Amazon API网关端点。

虽然Node.js和AWS CLI中的适用于JavaScript的AWS开发工具包尚不支持Amazon API Gateway,但您可以使用Amazon API Gateway REST API而不使用官方SDK进行设置。在这种情况下,你可能会使用这些API:

  1. RESTAPI:创建
  2. 资源:创建
  3. 方法:把
  4. 整合:把
  5. integrationresponse:把
  6. methodresponse:看跌

您可能希望使用第三方库集成Amazon API Gatew使用AWS Lambda,例如jaws-stack/JAWSr7kamura/fluct

2

是的......这是绝对可能的。以下是使用AWS-SDK for node.js的一些node.js代码。我在这里做一个POST方法集成。现在你需要一些东西。希望这有帮助,祝你好运!

您正在使用的网关API

方法的RESOURCEID网关API休息标识

的调用角色能够引起您的lambda表达式的ARN

您想要整合的Lambda函数的ARN。

var AWS = require('aws-sdk'); 

api = new AWS.APIGateway(); 

var params = { 
    httpMethod: 'POST', 
    resourceId: [YOUR RESOURCE ID], 
    restApiId: [YOUR REST API ID], 
    type: 'AWS', 
    uri: [YOUR LAMBDA FUNCTION ARN], 
    integrationHttpMethod: 'POST', 
    credentials : [YOUR INVOKE ROLE ARN] 
}; 

api.putIntegration(params, function (err, data) { 
    if (err) { 
     console.log('AWS Error', err); 
    } else { 
     console.log('Put Integration Method Created', data); 
    } 
}); 
+0

谢谢凯文! uri不容易弄清楚,所以这里有一个更详细的描述,以帮助某人:--uri arn:aws:apigateway:aws-region:lambda:path/2015-03-31/functions/arn:aws :波长:AWS区域:AWS-ACCT-ID:功能:您-λ-功能名称/调用 –

0

您可以将您的API端点lambda函数。在API网关中创建新的HTTP方法时,选择“集成类型”作为“Lambda函数”,然后选择需要调用的Lambda函数。

主要挑战是将API输入参数映射到Lambda模型对象,您可以手动定义映射或提供模型模式(使用json-schema)。

实施例的映射:

{ 
    "firstname" : "$input.params('firstname')", 
    "lastname" : "$input.params('lastname')" 
} 

参见this blog后为一步一步的Java 8.

相关问题