8

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

这有两个部分:

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

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

但是,对于第二部分,我被卡住了。在查看适用于 node.js 的 AWS 开发工具包AWS CLI时,我没有发现 API 网关

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

4

4 回答 4

8

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

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

  1. restapi:创建
  2. 资源:创建
  3. 方法:放
  4. 整合:放
  5. 集成响应:放置
  6. 方法响应:put

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

于 2015-08-16T15:33:19.407 回答
3

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

您用于网关 API 的方法的 ResourceId

网关 API 休息 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);
    }
});
于 2016-02-20T01:30:04.207 回答
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

于 2015-11-29T05:57:12.833 回答
0

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

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

示例映射:

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

有关为 Java 8 编写的分步教程,请参阅此博客文章。

于 2016-02-25T14:48:26.833 回答