是否可以使用AWS API为Lambda函数设置AWS API Gateway端点?

时间:2015-08-16 13:57:02

标签: amazon-web-services aws-sdk aws-lambda aws-api-gateway

我通过设置指向它的AWS API Gateway端点,将AWS Lambda函数公开给公共HTTP请求。

这有两个部分:

  • 创建并上传我的AWS Lambda函数
  • 设置API网关以将HTTP端点指向我的Lambda函数

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

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

时,我未发现有关API网关的提及

有没有办法为Lambda函数设置API网关端点,以编程方式使用AWS API?

3 个答案:

答案 0 :(得分:2)

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

  

您用于网关API的方法的ResourceId

     

Gateway API Rest Id

     

能够调用Lambda函数的Invoke Role的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);
    }
});

答案 1 :(得分:1)

是的,它可行。

JAWS项目有一个很好的简单的js实现,它运行得很好 https://github.com/jaws-stack/jaws-api-gateway-client

最新的AWS CLI(版本1.99)也完全支持API Gateway。 http://docs.aws.amazon.com/cli/latest/reference/apigateway/index.html#cli-aws-apigateway

答案 2 :(得分:0)

您可以将API端点指向Lambda函数。在API网关中创建新的HTTP方法时,选择" Integration type" as" Lambda Function",然后选择您需要调用的Lambda函数。

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

示例映射:

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

请参阅this blog帖子,了解为Java 8编写的分步教程。