我通过设置指向它的AWS API Gateway端点,将AWS Lambda函数公开给公共HTTP请求。
这有两个部分:
我想使用API调用而不是Web界面来执行这两个部分。我可以使用AWS SDK和AWS CLI为第一部分做到这一点。
然而,对于第二部分,我被卡住了。在查看AWS SDK for node.js或AWS CLI
时,我未发现有关API网关的提及有没有办法为Lambda函数设置API网关端点,以编程方式使用AWS API?
答案 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编写的分步教程。