可以使用AWS API设置AWS API网关端点以调用Lambda函数吗?

8

我将通过设置AWS API Gateway端点来公开一个AWS Lambda函数以接收公共HTTP请求。

这需要分两个部分:

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

我想使用API调用来完成这两个部分,而不是使用Web界面。我可以使用AWS SDK和AWS CLI完成第一部分。

然而,在第二部分中,我卡住了。在查看AWS SDK for node.jsAWS CLI时,我没有找到有关API Gateway的提及。

是否有方法可以使用AWS API以编程方式设置Lambda函数的API Gateway端点?


CLI / SDK 对于 API Gateway 的支持还未准备就绪。我个人期望更多关于这些功能的细节将在 re:Invent 2015 上发布。 - adamkonrad
1
此外,CloudFormation 可能会在您未来的努力中对您有所帮助。 - adamkonrad
4个回答

8

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

虽然Node.js中的AWS JavaScript SDK和AWS CLI尚未支持Amazon API Gateway,但您可以使用Amazon API Gateway REST API进行设置,而无需官方SDK。在这种情况下,您可能会使用以下API:

  1. restapi:create
  2. resource:create
  3. method:put
  4. integration:put
  5. integrationresponse:put
  6. methodresponse:put

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


3
可以,下面是使用 AWS-SDK for node.js 的一些 node.js 代码。 我正在进行方法集成的 POST 操作。 现在有几件事情需要注意。 希望这可以帮到你...祝你好运!

Gateway API 方法的 ResourceId

Gateway API Rest Id

能够调用 Lambda 函数的 Invoke 角色的 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
谢谢Kevin!URI并不容易理解,因此在这里提供更详细的描述,以帮助其他人:--uri arn:aws:apigateway:aws-region:lambda:path/2015-03-31/functions/arn:aws:lambda:aws-region:aws-acct-id:function:your-lambda-function-name/invocations - John Lee

1

0
您可以将API端点指向Lambda函数。在API Gateway中创建新的HTTP方法时,选择“集成类型”为“Lambda函数”,然后选择需要调用的Lambda函数。
主要挑战是将API输入参数映射到Lambda模型对象,您可以手动定义映射或提供模型架构(使用json-schema)。
例如映射:
{
    "firstname" : "$input.params('firstname')",
    "lastname"  : "$input.params('lastname')"
}

请参考这篇博客,其中有针对Java 8的逐步教程。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接