Articles of amazon web services

Lambda函数不执行http.get

我有一个函数,当在本地testing工作正常,但通过AWS Lambda运行似乎并没有执行HTTP get。 代码如下: function makeAPIRequest(path, responseControl, callback) { var responseString = ''; console.log("Executing makeAPIRequest to " + apiSettings.host + " and path " + path); var options = { host: apiSettings.host, path: path, method: 'GET', headers: { 'X-Auth-Token': apiSettings.token } }; http.get(options, function (res) { console.log('Status Code: ' + res.statusCode); if (res.statusCode != 200) […]

叉与亚马逊Lambdajoin

我正在尝试写一个lambda函数来触发许多小的lambdaexpression式 exports.handler = (event, context, callback) => { var AWS = require('aws-sdk'); let noOfPages = 20, currentPage = 1; var message = ''; //let payloadArray = []; while(currentPage <= noOfPages){ message = '{"first_page": '+ currentPage +', "last_page": '+ (currentPage) + ', "file_name" : "something.doc"' +'}'; console.log(message); var params = { FunctionName: 'test', InvocationType: 'Event', LogType: […]

在AWS lambda函数中使用require

我目前正在研究AWS lambda函数,如果我可以在其中使用require语句,我就可以find任何地方,这样我就可以使用其他非lambda函数。 我知道关于压缩节点模块文件夹,但这不帮我在这里,因为我不打算使用节点模块,感谢任何答案!

如何将API调用限制到AWS EC2上的节点应用程序

我有一个在Namecheap上托pipe的Web站点和一个在AWS EC2上的节点应用程序。 节点应用程序只处理几个API调用。 Namecheap上的网站向节点应用程序发送AJAX调用以接收机密信息。 我试图限制访问节点的应用程序只有我的网站上的Namecheap,以便没有其他人可以对节点应用程序的Ajax调用。 我怎样才能做到这一点? 感谢您的关注!

在AWS Lambda中使用JavaScript eval()

我想使用AWS Lambda运行用户通过Web提交的JavaScript代码。 我的Lambda函数会返回返回值stderr和stdout 。 我可以遇到什么问题? 恶意用户是否能够提交导致Lambda函数问题的代码? 执行用户所做的更改,例如对于节点环境或文件系统,是否在整个调用中保持不变? 有什么办法可以防止呢? 而不是eval()我可以将文件写入Lambda文件系统并调用: const userCodeProcess = require('child_process').fork('user_code.js') userCodeProcess.on('message', response.send)

AWS node.js在失败的batchWrite()上自动重试

根据这个aws doc http://docs.aws.amazon.com/general/latest/gr/api-retries.html自动重试function是build立在aws sdk在我的情况node.js aws sdk。 我像这样configuration了DocumentClient对象: var dynamodb = new AWS.DynamoDB.DocumentClient({region: 'us-west-2', retryDelayOptions: {base: 50}, maxRetries: 20}); 但我仍然不能让它自动重试我。 我想要自动重试所有的UnprocessedItems。 你能指出我的错误在哪里吗? 谢谢

将较大的CSV文件加载到DynamoDb中的最佳/最佳方法

我的本地机器上有一个巨大的.csv文件。 我想要在DynamoDB(欧洲西部-1,爱尔兰)中加载这些数据。 你会怎么做? 我的第一个方法是: 在本地迭代CSV文件 通过curl -X POST -d '<row>' …/connector/mydata向AWS发送一行 在lambda中处理以前的调用,并在DynamoDB中写入 我不喜欢这个解决scheme,因为: 有太多的要求 如果我发送没有CSV头信息的数据,我必须对lambda进行硬编码 如果我使用CSV标头发送数据,则stream量太大 我也在考虑把这个文件放到一个S3存储桶中,然后用一个lambda ,但是这个文件很大,lambda的内存和时间限制让我感到恐慌。 我也在考虑在EC2机器上做这个工作,但是我失去了反应(如果我在不使用的时候关掉机器)或者我赔钱(如果我不关机的话)。 我被告知Kinesis可能是一个解决scheme,但我不相信。 请告诉我,如果你是我,那么获得DynamoDB中huge CSV文件的最佳方法是什么。 我想尽量减less“秒”上传的工作量。 我更喜欢使用Node.js或R. Python作为最后的解决scheme可能是可以接受的。

如何在Node中将图片上传到s3

从我的反应前端将文件发布到节点后端。 request .post('/api/upload') .field('fileName', res.body.text) .field('filePath', `/${this.s3DirName}`) // set dynamically .attach('file', data.file) .end((err2, res2) => { if (err2){ console.log('err2', err2); this.setState({ error: true, sending: false, success: true }); }else{ console.log('res2', res2); this.setState({ error: false, sending: false, success: true }); } }); 然后在我的节点后端我想上传到S3。 我使用的是busboy能够获取发布的多部分文件,然后aws sdk发送到我的s3桶。 var AWS = require('aws-sdk'); const s3 = new AWS.S3({ apiVersion: '2006-03-01', […]

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中部署外部库?

我的Node.js应用程序依赖于外部库执行。 是否可以在AWS Lambda中部署Node.js应用程序和外部库? 如果可能的话,请build议使用哪种机制来部署外部库。