是否可以使用 AWS API 为 Lambda 函数设置 AWS API 网关端点?
Is it possible to set up an AWS API Gateway endpoint for a Lambda function, using the AWS API?
我通过设置指向它的 AWS API 网关端点将 AWS Lambda 函数暴露给 public HTTP 请求。
这有两部分:
- 创建并上传我的 AWS Lambda 函数
- 设置 API 网关以将 HTTP 端点指向我的 Lambda 函数
我想使用 API 调用而不是 Web 界面来完成这两个部分。我可以使用 AWS 开发工具包和 AWS CLI 在第一部分做到这一点。
然而,对于第二部分,我卡住了。在查看 AWS SDK for node.js, or the AWS CLI
时,我没有发现提到 API 网关
有没有办法使用 AWS API 以编程方式为 Lambda 函数设置 API 网关端点?
是的,可以通过 AWS 的 API 为您的 AWS Lambda 函数设置您的 Amazon API 网关端点。
虽然 Node.js 中 JavaScript 的 AWS SDK 和 AWS CLI 尚未支持 Amazon API 网关,但您可以使用 Amazon API Gateway REST API 设置它们,无需官方开发工具包。在这种情况下,您可能会使用这些 APIs:
- restapi:创建
- 资源:创建
- 方法:输入
- 整合:投入
- 集成响应:输入
- methodresponse:put
您可能希望使用第 3 方库将 Amazon API 网关与 AWS Lambda 集成,例如 jaws-stack/JAWS or r7kamura/fluct。
是的,这是可行的。
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
是的……绝对有可能。下面是一些 node.js 使用 AWS-SDK for node.js 的代码。我在这里做一个 POST 用于方法集成。现在您需要一些东西。希望这对您有所帮助...祝您好运!
The ResourceId of the Method you're using for the Gateway API
The Gateway API Rest Id
The ARN of the Invoke Role that is able to invoke your Lambda Function
The ARN of the Lambda function you want to integrate.
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);
}
});
您可以将 API 端点指向 Lambda 函数。在 API 网关中创建新的 HTTP 方法时,select "Integration type" 为 "Lambda Function",然后 select 您需要调用的 Lambda 函数。
主要挑战是将 API 输入参数映射到 Lambda 模型对象,您可以手动定义映射或提供模型架构(使用 json-schema)。
示例映射:
{
"firstname" : "$input.params('firstname')",
"lastname" : "$input.params('lastname')"
}
参考 this blog post 为 Java 8.
编写的分步教程
我通过设置指向它的 AWS API 网关端点将 AWS Lambda 函数暴露给 public HTTP 请求。
这有两部分:
- 创建并上传我的 AWS Lambda 函数
- 设置 API 网关以将 HTTP 端点指向我的 Lambda 函数
我想使用 API 调用而不是 Web 界面来完成这两个部分。我可以使用 AWS 开发工具包和 AWS CLI 在第一部分做到这一点。
然而,对于第二部分,我卡住了。在查看 AWS SDK for node.js, or the AWS CLI
时,我没有发现提到 API 网关有没有办法使用 AWS API 以编程方式为 Lambda 函数设置 API 网关端点?
是的,可以通过 AWS 的 API 为您的 AWS Lambda 函数设置您的 Amazon API 网关端点。
虽然 Node.js 中 JavaScript 的 AWS SDK 和 AWS CLI 尚未支持 Amazon API 网关,但您可以使用 Amazon API Gateway REST API 设置它们,无需官方开发工具包。在这种情况下,您可能会使用这些 APIs:
- restapi:创建
- 资源:创建
- 方法:输入
- 整合:投入
- 集成响应:输入
- methodresponse:put
您可能希望使用第 3 方库将 Amazon API 网关与 AWS Lambda 集成,例如 jaws-stack/JAWS or r7kamura/fluct。
是的,这是可行的。
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
是的……绝对有可能。下面是一些 node.js 使用 AWS-SDK for node.js 的代码。我在这里做一个 POST 用于方法集成。现在您需要一些东西。希望这对您有所帮助...祝您好运!
The ResourceId of the Method you're using for the Gateway API
The Gateway API Rest Id
The ARN of the Invoke Role that is able to invoke your Lambda Function
The ARN of the Lambda function you want to integrate.
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);
}
});
您可以将 API 端点指向 Lambda 函数。在 API 网关中创建新的 HTTP 方法时,select "Integration type" 为 "Lambda Function",然后 select 您需要调用的 Lambda 函数。
主要挑战是将 API 输入参数映射到 Lambda 模型对象,您可以手动定义映射或提供模型架构(使用 json-schema)。
示例映射:
{
"firstname" : "$input.params('firstname')",
"lastname" : "$input.params('lastname')"
}
参考 this blog post 为 Java 8.
编写的分步教程