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



我通过设置指向AWS API Gateway端点的方式将AWS Lambda函数暴露给公共HTTP请求。

有两个部分:

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

我想做这两个部分使用API调用而不是web接口。我可以使用AWS SDK和AWS CLI来完成第一部分。

然而,对于第二部分,我卡住了。在查看node.js的AWS SDK或AWS CLI

时,我没有发现提到API网关。

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

是的,可以通过AWS的API为AWS Lambda函数设置Amazon API网关端点。

虽然在Node.js和AWS CLI中用于JavaScript的AWS SDK还不支持Amazon API Gateway,但您可以使用Amazon API Gateway REST API来设置它们,而不需要官方SDK。在这种情况下,您可能会使用以下api:

  1. restapi:创建
  2. 资源:创建
  3. 方法:把
  4. 集成:将
  5. integrationresponse:把
  6. methodresponse:把

您可能希望使用第三方库将Amazon API Gateway与AWS Lambda集成,例如JAWS -stack/JAWS或r7kamura/fluct。

是…这绝对是可能的。下面是一些使用node.js的aws sdk的node.js代码。我在这里为方法集成做一个POST。现在你需要一些东西。希望这能帮到你…好运!

Gateway API使用的方法的ResourceId

网关API Rest Id

能够调用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);
    }
});

是的,这是可行的。

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

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

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

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

映射例子:

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

相关内容

  • 没有找到相关文章

最新更新