Tag: aws api gateway

使用节点MySQ的无服务器框架,错误PROTOCOL_INCORRECT_PACKET_SEQUENCE

在AWS Lambda NodeJS(使用无服务器框架)上实施简单查询时遇到困难。 在本地运行它,但是当我将它上传到AWS,然后尝试使用API​​网关端点运行它时,出现此错误: { "code": "PROTOCOL_INCORRECT_PACKET_SEQUENCE", "fatal": true } 我无法find任何反应在谷歌,stackoverflow或git关于这个错误的问题。 而我无法弄清楚我做错了什么。 这就是我想要的。 var mysql = require('mysql'); var connection = mysql.createConnection({ host : '', user : '', password : '', database : '' }); function getLists (client_id,api_key,callback){ connection.query("SELECT * FROM list WHERE client_id = ?", [ client_id],function(error, results){ connection.end(); callback(error,results); } ); }; module.exports.run = […]

AWS Lambda,API网关返回格式错误的Lambda代理响应502错误

经过大量的谷歌search和几个小时的试错,我找不到为什么我得到这个错误消息: 由于configuration错误,执行失败:Lambda代理响应格式错误 当我使用testinglambdafunction运行lambda时,它工作正常。 对这个状态的类似问题的答案,来自lambda的响应需要符合这种格式: { "isBase64Encoded": true|false, "statusCode": httpStatusCode, "headers": { "headerName": "headerValue", … }, "body": "…" } 下面是我使用的lambda(遵守这种格式): 'use strict'; var aws = require('aws-sdk'); var ses = new aws.SES(); var RECEIVER = "XXXX@XXXX.com"; var SENDER = "XXXX@XXXX.com"; const response_success = { 'isBase64Encoded': false, 'statusCode': 200, 'headers': { 'Content-Type': 'application/json', }, body: JSON.stringify({ message: 'ok' […]

AWS Lambda返回PDF文件

我创build了一个使用无服务器的lambda函数。 这个函数是通过GET请求的API网关触发的,并且应该从缓冲区中返回一个pdf文件。 我正在使用html-pdf创build缓冲区,并尝试使用以下命令返回PDF文件 let response = { statusCode: 200, headers: {'Content-type' : 'application/pdf'}, body: buffer.toString('base64'), isBase64Encoded : true, }; return callback(null, response); 但浏览器只是无法加载PDF,所以我不知道如何将PDF文件直接返回到浏览器。 无法find解决scheme。

离子内容只有在点击SideMenu后才显示出来

我有一个离子的应用程序工作正常,但现在它显示有点怪异的行为,当我运行该应用程序它不显示数据,但是当我点击侧面菜单一次或两次,然后加载并显示数据。 我有一个nodejs api从数据来到我的应用程序和相同的api已被放在aws api网关,我注意到这种行为,因为我实现了aws sdk绑定数据在我的APP。 什么可能是相同的根本原因? 我可以分享代码,但我不确定问题出在控制器还是视图中?

如何在无服务器框架中为POST端点添加请求模型

如何为POST端点添加请求模型,以便在导出API for iOS时显示在API网关中? 我可以在AWS中手动添加请求模型,但是由于这是通过服务器部署的,所以我需要在那里。 我看到有一个responseModels定义端点,但我看不到一个requestModels? 我的s-functions.json有这个 "endpoints": [ { "path": "blog/graphql", "method": "POST", "type": "AWS", "authorizationType": "AWS_IAM", "authorizerFunction": false, "apiKeyRequired": false, "requestParameters": {}, "requestTemplates": { "application/json": "{\"query\" : $input.json(\"$\")}" }, "responses": { "400": { "statusCode": "400" }, "default": { "statusCode": "200", "responseParameters": {}, "responseModels": {}, "responseTemplates": {}, "application/json": "" } } } ] 在AWS APIGateway中,我需要手动添加请求模型 […]

以编程方式创buildaws API密钥并将其添加到单一function的使用计划?

我需要: 创buildAPI密钥 将新创build的API密钥添加到使用计划 在文档之后 ,我可以通过调用apigateway.createApiKey()来生成API key ,然后通过调用另一个函数来为该生成的api密钥添加使用计划。 apigateway.createUsagePlanKey()对于以后的情况似乎是最合适的function。 我可以在单个函数中执行这两个function吗,而不是象任何生成一个新的API密钥的函数那样分别调用两个函数并添加一个使用计划?

根据Swagger API定义来检查JSON负载是否有效

我正在使用swagger来定义我的API和API网关来承载这个API。 我发现下面的lib( 请参阅这里 )将我的API定义导入到AWS,并自动创buildAPI(模型,端点等)。 这个很酷。 但是,它无法validation基于模型的请求(在Swagger定义中定义)。 这意味着您可以发送没有必填字段的JSON负载。 我不想编写node.JS代码来检查格式,因为模式更新不会太简单。 我想知道是否有可能检查JSON有效载荷是否与在swagger(在“definitions”部分中定义的对象)中定义的特定types的对象兼容。 如果可能的话,它将允许我只更新我的大摇大摆的定义。 谢谢,罗曼。

AWS Api网关:如何处理授权,身份validation,SSO等

我正在评论几种使用微服务结合api网关重新开发node.js restful单片应用程序的方法。 在使用aws api网关看来,虽然似乎有一些项目,我一直没能find很多的文件。 首先,我devise的应用程序必须能够支持SSO,我希望用户能够通过创build本地login或使用其当前的Facebook,Twitter等社交帐户进行注册。 这个过程如何被aws api网关处理,尤其是因为我需要使用自定义的数据库来写和读,更不用说授权用户了。 另外,例如,我的微服务有以下有限的上下文: 帐户(login,注册,档案pipe理), 计费(由于运行时间可能不适合无服务器,可能会selectdocker + ec2), 朋友(build立朋友关系), 文件(用户可以上传图片和video到他们的时间线 – 似乎是另一个docker+ ec2候选人); 我想使用api网关来保护所有的微服务端点,除了那些特定于login和注册的微端服务端点,应该怎么做呢? Node.js包含一个包,似乎通过Facebook,Twitter,本地等称为护照处理jwt和authentication用户,我可以使用这个与api网关authentication? 另外,如果api网关正在保护微服务,请求对象和响应对象如何在网关和微服务之间传递以满足各种请求? 此外,如果我决定构build一个自定义api网关,其中的网关正在监听另一个端口并包含在单独的docker容器中,它应该如何调整其他docker容器中侦听其他端口的微服务的权限? 简而言之,任何真正遍历这个过程并回答上面列出的问题的文档都是非常有用的。 此外,如果我以错误的方式看待这个问题或者提出错误的问题,那么在这方面的build议也会有所帮助。

Angular SPA与API Gateway的任何访问控制允许方法不一致

我们目前正在为我们的API使用无服务器部署模型,并使用NodeJS快速代码库。 所有这一切都很好,直到我们遇到了无服务器创build的CloudFormation堆栈的硬性限制,其创build的资源限制为200。 尝试解决这个问题的同时,无服务器团队正在进行嵌套堆栈集成,是用ANYreplaceGET,PUT,POST,DELETE一个单一的路由,在CloudFormation资源中大约节省了75%。 API网关看起来很好,OPTIONS路由的集成响应返回了Access-Control-Allow-Methods: 'OPTIONS,ANY' 。 用邮差testing这个工作就像一个魅力,能够使用所有以前提到的方法,而不是一帆风顺。 从我们的Angular前端执行此操作似乎不起作用。 XMLHttpRequest无法加载。 预检响应中的访问控制 – 允许 – 方法不允许方法PUT。 在Angular的眼里,POST,PUT,DELETE,…都不符合ANY,而邮递员却是这样。 任何input为什么这可能会发生将不胜感激。 UPDATE 一个POST请求通过Angular应用程序工作,只是PUT和DELETE请求抛出'访问控制允许的方法不允许的'错误。

从AWS Lambda函数的S3中获取对象并发送到Api Gateway

我正在试图从一个桶中获取.jpg文件并将其发送回api网关。 我相信我有正确的设置,因为我看到东西被logging。 它从s3抓取文件,而gm是graphicsmagick库。 不知道我是否正确使用它。 在lambda函数中,我这样做(很多代码来自aws示例): async.waterfall([ function download(next) { console.log(srcKey); console.log(srcBucket); // Download the image from S3 into a buffer. s3.getObject({ Bucket: srcBucket, Key: srcKey }, next); }, function transform(response, next) { console.log(response); next(null, 'image/jpeg', gm(response.Body).quality(85)); }, function sendData(contentType, data, next){ console.log(contentType); console.log(data); imageBuffer = data.sourceBuffer; context.succeed(imageBuffer); } ] ); 响应头有内容长度:85948,这似乎不正确,因为原始文件只有36kb。 任何人都知道我在做什么错了?