Tag: aws lambda

Lambda AWS不调用节点mysqlcallback

我试图通过AWS的简单通知服务vi和Lambda来处理从亚马逊简单电子邮件服务发送的反弹。 我正在运行以下脚本: var aws = require('aws-sdk'); var mysql = require('mysql'); Processor = {}; Processor.initializeConnection = function() { console.log('Connecting to database'); Processor.connection = mysql.createConnection({ host : 'MYHOST', user : 'MYUSER', password : 'PASSWORD', database : 'DATABASE' }); console.log('Connection configured'); Processor.connection.connect(function(err) { console.log('****'); console.log(err); if (err != null) { console.log('Could not connect to database'); return false; } […]

AWS DynamoDB node.js放入请求不会将数据放入Dynamo表中

我正在使用以下代码将数据提取到DynamoDB。 从Kinesis读取的代码 var AWS = require("aws-sdk"), DOC = require("dynamodb-doc"); docClient = new DOC.DynamoDB(); function upsert(result) { var info = new Info(result); console.log('Within upsert :', info.AcctNo); docClient.putItem({ TableName: "test_lamda_dynamo_table", Item: info }, function(err, data) { if (err) { console.error('error', err); context.done('error', err); } else { console.log('success', data); context.done('success', event.Records); } }); } 我无法在cloudwatch日志中看到error handling程序sysouts,也无法看到DynamoDB中的数据。 下面是来自cloudwatch的示例日志 "Within […]

在节点js中parsing反序列化的应用程序/ vnd.ms-excel

我在内存中有application / vnd.ms-excel(xls)对象。 没有选项将其保存到磁盘。 我需要parsing它,但我find的所有库都将文件path作为参数。 任何经验/想法如何处理xls的内容? 谢谢

基于标签lambda函数closures/启动ec2实例不起作用

我想基于一个标签和价值通过使用lambda函数来启动/停止ec2实例。 我正在尝试调整一些代码: https : //github.com/SamVerschueren/aws-lambda-stop-server 到目前为止,我已经能够指定我想运行lambda函数的区域,但不能锻炼如何过滤实例。 即过滤标签为“schedule”的实例,然后对该值执行分割string,并检查其中一个分割值是否匹配“stop6pmdaily”。 例如:schedule = start8amdaily | stop6pmdaily if (instance.State.Code === 16) { // 0: pending, 16: running, 32: shutting-down, 48: terminated, 64: stopping, 80: stopped values = instance.Tags["schedule"].Value.Split("|") for (v of values) { if (v == 'stop6pmdaily'){ stopParams.InstanceIds.push(instance.InstanceId); } } } 所以全function代码如下: 'use strict'; /** * AWS Lambda function that […]

Moment.js – 将UTC转换为东部时间

我正在使用moment-timezone.js为了通过node.js将UTC时间转换为America/New_York 。 我这样做是这样的: var moment = require('moment-timezone'); moment.tz.add('America/New_York|EST EDT|50 40|0101|1Lz50 1zb0 Op0'); var now = new Date().toISOString(); now = moment(now).tz("America/New_York").toDate(); 这似乎在我的本地机器上正常工作,但是当我在AWS Lambda上运行它时, now时间仍然被输出为UTC。 我在这里做错了什么? 我真的不想用API来获得准确的纽约时间。 夏令时是这里最大的挑战。 谢谢!

当我试图在cloudsearch上传一个文档时,我无法处理这个错误

我正在尝试使用Aws lambda函数对cloudsearch进行上传testing。 该函数应该上传一个dynamodb表格作为JSON文件到cloudsearch当dynamodb更新被触发,但我得到一个错误,我想弄清楚是什么意思,如何摆脱。 目前,我正在configurationtesting事件 这里是lambda函数: var aws = require('aws-sdk'); exports.handler = function(event,context){ var cloudsearchdomain = new aws.CloudSearchDomain({endpoint: 'doc-xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx.cloudsearch.amazonaws.com'}); var documents = {id : event.Records[0].dynamodb.Keys.Id.N}; documents.type = "add"; documents.fields = { "message" : "Hello", "id" : "100", "name" : "name" } var params = {contentType: 'application/json', documents : JSON.stringify(documents) }; console.log('uploading documents to cloudsearch domain', params); […]

无法在AWS Lambda函数中运行ec2方法

我正在调用下面的lambda函数来描述一个实例信息: 'use strict' var aws = require('aws-sdk'); exports.handler = function(event, context) { var instanceID = JSON.parse(event.Records[0].Sns.Message).Trigger.Dimensions[0].value; aws.config.region = 'us-east-1'; var ec2 = new aws.EC2; var params = {InstanceIds: [instanceID]}; ec2.describeInstances(params, function(e, data) { if (e) console.log(e, e.stack); else console.log(data); } }; 在CloudWatch Logs中,我可以看到该函数运行到结束,但ec2.describeInstances方法中没有logging任何内容: END RequestId:xxxxxxxxxxxxxx REPORT RequestId:xxxxxxxxxxxxxx持续时间:xx ms计费时间:xx ms内存大小:xx MB使用的最大内存:xx MB 我的lambda函数具有VPC访问权限和AdministratorAccess的IAMangular色(完全访问权限)。 由于某些原因,它无法运行ec2.describeInstances方法。 什么是错的,我该如何解决?

通过http正确签署对aws资源的请求

我有一个lambda函数,正在写一些数据到我也通过AWS设置的Elasticsearch域。 目前我的域名上的访问策略只是允许我自己的IP地址与域名一起工作 {"Version": "2012-10-17", "Statement": [{ "Effect": "Allow", "Principal": {"AWS": "*"}, "Action": "es:*", "Resource": "arn:aws:es:us-east-1:$ACCOUNT:domain/DOMAIN/*", "Condition": { "IpAddress": { "aws:SourceIp": $MYIP } } }]} 我find了用于签署http请求的aws4库 。 我正在使用它: axios(aws4.sign({ host: process.env.ES_ENDPOINT, method: "post", url: `https://${process.env.ES_ENDPOINT}/foobot/foobot`, data, })) 这实际上是没有aws4.sign作品,因为我有ES域完全打开,但现在我已经应用了上面的IP地址策略。 现在,我不断得到这样的错误,作为回应: 我们计算的请求签名与您提供的签名不符。 检查您的AWS秘密访问密钥和签名方法。 详细信息请参阅服务文档。 还有什么我需要做的,以妥善签署请求?

AWS Lambda函数 – 将PDF转换为图像

我正在开发应用程序,用户可以上传一些PDF格式的图纸。 上传的文件存储在S3上。 上传后,文件必须转换为图像。 为此,我创build了lambda函数,它将文件从S3下载到lambda执行环境中的/ tmp文件夹,然后从imagemagick调用“convert”命令。 convert sourceFile.pdf targetFile.png Lambda运行时环境是nodejs 4.3。 内存设置为128MB,超时30秒。 现在的问题是,有些文件转换成功,而其他人失败,出现以下错误: {[错误:命令失败:/ bin / sh -c转换/tmp/sourceFile.pdf /tmp/targetFile.png转换: %s' (%d) "gs" -q -dQUIET -dSAFER -dBATCH -dNOPAUSE -dNOPROMPT -dMaxBitmap=500000000 -dAlignToPixels=0 -dGridFitTT=2 "-sDEVICE=pngalpha" -dTextAlphaBits=4 -dGraphicsAlphaBits=4 "-r72x72" "-sOutputFile=/tmp/magick-QRH6nVLV–0000001" "-f/tmp/magick-B610L5uo" "-f/tmp/magick-tIe1MjeR" @ error/utility.c/SystemCommand/1890. convert: Postscript delegate failed %s' (%d) "gs" -q -dQUIET -dSAFER -dBATCH -dNOPAUSE -dNOPROMPT -dMaxBitmap=500000000 -dAlignToPixels=0 -dGridFitTT=2 […]

AWS Lambda查询二级索引

以下是DynamoDB JSON对象上的AWS lambda中的node.js查询。 用户ID是没有sorting键的主键。 GeoHash是一个辅助键,索引名称为“GeoHash-index”。 调用成功没有错误,但不会导致返回任何内容。 有可能下面的testing数据是错误的,因为它没有提供与索引名称的任何连接,但是我是AWS / noSQL的新手,有点失落。 var AWS = require('aws-sdk'); var docClient = new AWS.DynamoDB({apiVersion: '2012-08-10'}); exports.handler = function(event,context,callback) { console.log(JSON.stringify(event, null, ' ')); var tableName = "table1"; // getItem docClient.getItem({ TableName: tableName, IndexName: "GeoHash-index", KeyConditionExpression: "GeoHash = :geohash", ExpressionAttributeValues: {":geohash": "dpz886gb0tb0"} }), function(err,data){ if(err){ callback(err); } else { callback(null,data); } } […]