Articles of aws api gateway

使用API​​网关和Lamda从S3服务PDF文件

我有nodejs lamda函数读取从s3桶s3文件,并由api网关使用Lamda代理服务 function readS3(bucket,objectName){ return new Promise((resolve, reject) => { AWS.S3.getObject({ Bucket: bucket, Key: objectName }, function (err, data) { if (err) { console.log('cannot read s3'); console.log(err, err.stack); reject(err); } else { resolve(data); } }); }); } readS3(bucket,objName).then((data)=>{ let response = { statusCode:200, headers: { "Access-Control-Allow-Origin": "*", "Access-Control-Allow-Credentials": true, "Content-Type": 'application/pdf', "Content-Disposition": 'filename=test.pdf' }, body: […]

AWS + API网关+ Lambda + Node.js操作对谷歌ApiAiApp

我想在API网关调用的Lambda函数中使用action-on-google包和ApiAiApp类。 所有的pipe道工作正常,我可以返回一个手动构build的响应罚款,但我真的更喜欢在我的Node.js Lambda函数中使用ApiAiApp对象。 我也可以使用Firebase来正常工作。 请原谅我对这种发展的无知,但是没有一种search方式似乎给了我需要的解决scheme。 Firebase的入口点是 exports.myTip = functions.https.onRequest((request, response) => { 我可以将请求+响应传递给ApiAiApp构造函数,而且都很好 就像在Lambda中一样 exports.handler = function(event, context, callback) 如何将事件转换为请求+响应,以便在lambda函数中调用相同的ApiAppApp构造函数? TL:DR – 我如何在Lambda函数中调用对ApiAiApp构造函数的操作?

性能API来处理许多请求

我正在开发一个iOS应用程序来显示来自MongoDB数据库的消息。 该应用程序有大约50,000活跃用户,所以它是相当沉重的服务器上。 我正试图重新考虑应该如何构buildAPI。 我刚刚了解了一些关于AWS API网关,Google Cloud Functions,Firebase等的内容 如果我只需要一些function来提取新闻列表,用户列表等,那么到2017年为止,构build此API的最佳方法是什么? 我一直以为我应该简单地用一些端点创build一个Node.js服务器。 但现在看来,创build单独的terminal节点的performance似乎更好,例如,AWS API网关(每个节点都指向AWS Lambda函数)。 但是什么是最可扩展的select?

如何在AWS API网关中debugging“Missing Authentication Token”?

我有一个代理AWS Lambda函数的API网关资源。 这工作得很好,通过尾随path参数( /periodicals/{tail+} ),但因为我想这些参数是可选的,我还添加了一个ANY方法到更高的资源( /periodicals ): 当从AWS控制台内testing该方法时,此工作正常。 但是,直接从我的浏览器对该资源执行请求会导致以下响应: {"message":"Missing Authentication Token"} 有了这个标题: x-amzn-errortype: MissingAuthenticationTokenException 它还有一个x-cache标头,其中的值Error from cloudfront ,所以我想这可能与CloudFront有关。 我虽然没有明确地设置CloudFront,但真的不知道如何检查? 我想我读了这个错误消息的每一个线程,但他们似乎没有适用于我: 我的方法不需要授权: 我很确定url是正确的。 当我在浏览器中访问/periodicals/whatever (即{tail+}资源)时,它工作正常,但不是/periodicals 。 CORS已启用,因为两个资源都指向处理CORS的相同Lambda函数,并且适用于子path。 HTTP动词应该不重要,因为它正在监听ANY 。 结果是相同的,无论我是否添加尾随斜线。 该API已部署。 我认为API资源对我的Lambda函数具有足够的权限,因为我可以从AWS Console成功执行它: 感谢@Lakindu,一个有趣的观察是,阶段视图中的资源下面没有列出任何方法: 还有什么我可以做的,以找出哪里出了问题?

HTTP请求问题内部服务器错误

我有一个HTTP响应问题给我一个状态代码:502,并出现错误消息:内部服务器错误。 我的设置是用NodeJS编写的AWS Lambda,向与其他Lambda集成的AWS API网关发出HTTPS POST请求作为其后端。 奇怪的部分是作为API后端的Lambda收到所有的POST请求,并且能够完美地执行它的function,但是它的callback响应了另一个Lambda错误。 以下是API网关端的lambdacallback const done = (err, res) => callback(err, { statusCode: err ? JSON.stringify(err.code) : '200', body: err ? JSON.stringify(err.message) : JSON.stringify(res), headers: { 'Content-Type': 'application/json', } }); 这里是其他lambda发出https POST请求的代码 const req = https.request(options, (res) => { console.log('statusCode:', res.statusCode); console.log('headers:', res.headers); res.on('data', (d) => { process.stdout.write(d); }); res.on('end', function () […]

如何将requestId和调用者移动到HTTP标头?

我们正在尝试encryption我们的有效载荷并移动任何不应该encryption的东西。 到目前为止,这些是我们确定不encryption的属性。 – event.requestContext.requestId – event.requestContext.requestId.identity.caller 那么,如何将这些项目移动到HTTP头?

如何访问AWS API网关的path参数?

我在API网关中创build了一个基本的GET url; 用名为“name”的path参数。 我怎样才能访问这个名字参数? 我没有看到它在任何事件或背景下。 我错误的参数path的目的? 让我用我的游戏应用程序为例: GET /api/v1/person @controllers.PersonController.list(limit: Int ?= 50, offset: Long ?= 0) GET /api/v1/person/$id<[0-9]+> @controllers.PersonController.getById(id: Long) GET /api/v1/person/$id<[0-9]+>/email @controllers.PersonController.getEmailByPersonId(id: Long) 这是使用AWS API网关实现的吗?

使用AWS Lambda和API网关来提供静态JavaScript?

我正在写一个第三方小部件,执行JavaScript客户端端添加一个button到用户的网站。 从本质上讲,用户将在他们的网站上包含一个标签,其中包含我的小部件的path。 该path的URL将包含调用该窗口小部件的特定用户的app_id。 例如 <script src="www.widget.com/widget/{USER_ID}"> 我希望能够使用AWS Lambda和API Gateway进行一些快速authentication,允许用户下载该小部件并提供javascript内容。 这在Express.js中很像res.sendFile,但API Gateway似乎不支持发送文件。 有没有什么方法可以使用API​​网关快速提供JavaScript,而不必将整个文件串联起来?

如何通过GET方法将API网关与Lambda集成

我非常困惑,试图将AWS API Gateway与AWS Lambda集成,因为我试图通过GET方法执行lambda函数,而且我的函数总是返回无效参数。 {“errorMessage”:“错误 – 无效的组ID – undefined – alexa id:undefined”} | 这是因为参数没有到达函数,而idgrupovariables<=0 。 我试图执行一个带有这个表单的URL的lambda函数: domain.execute-api.us-east-1.amazonaws.com/prod/chkneopairtoken?idgrupo=3823&clientId={321356-6666-4745}&keypair=90809276 在我的Lambda函数中,我正在这样做: var idgrupo = event.idgrupo; var alexaClientId = event.clientId; var keypair = event.keypair; if (idgrupo > 0){ } else{ console.log("Error – Invalid Group ID – " + idgrupo + " – alexa id: " + alexaClientId + " […]

“制作”Lambda和API网关

我最近一直在教自己如何使用NodeJS + Express构buildAPI。 我仍然是一个新手,但他们在我的开发环境中出色地工作,真的很兴奋。 但是,我努力想知道怎样configuration我的服务器和代码库来进行生产。 有很多信息可以用来像Helmet那样把NGINX作为代理,但是在这个阶段,其中一些东西是超出我的。 因此,我开始将“无服务器”视为部署它们的可能选项,并将我的数据迁移到AWS RDS PostgreSQL,并设置一个采用查询参数并查询数据库的Lambda函数。 我还设法configuration了AWS API网关,该API网关需要API密钥来触发Lambda函数。 我的RDS和Lambda函数是VPC的限制,我正在使用API​​密钥和API网关默认为HTTPS。 所以我就任何build议或帮助,我现在需要考虑的其他事情,因为大多数传统的生产挑战已被删除了“无服务器”。