Articles of aws sdk

无法在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方法。 什么是错的,我该如何解决?

我如何检查AWS SDK是否提供凭据?

有许多方法可以向AWS SDK提供凭据来执行操作。 我希望确保任何方法在我尝试对持续部署系统进行操作之前成功地设置了界面。 如何检查AWS SDK是否能够find证书?

通过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 JS SDK来描述所有ec2实例

我已经在node使用了AWS JS SDK ,并且想要描述所有区域中现有的ec2 istances,但是我得到一个空的reservation[] 。 我尝试使用AWS.config.update{}指定一个区域,它按预期工作,并返回实例,但这是我想要的。 我想查询AWS的所有实例,而不指定区域。 有一个简单的方法! (我用我的智能手机问这个问题,我现在无法访问我的电脑)。 感谢您的帮助。

查询没有密钥的数据(AWS DynamoDB SDK Nodejs)

我刚开始使用适用于DynamoDb的AWS Nodejs SDK 我有点困惑,我怎么可以不使用分区键访问特定的数据。 我们假设我的表中只有1个项目,属性“id”设置为我的分区键 表名称:用户 { "full_name": { "S": "John Cena" }, "id": { "S": "ABC123" }, "password": { "S": "youcantseeme" }, "username": { "S": "AndHisNameIs" } } 下面的代码将返回上面的对象,如果我查询使用我的密钥 顺便说一句我正在使用dynamodb.query(params,function(err,data){} 使用键search let params = { TableName : "Users", KeyConditionExpression: "#myid = :id", ExpressionAttributeNames:{ "#myid": "id" }, ExpressionAttributeValues: { ":id": { S: "ABC123" } } […]

直接到s3 /客户端file upload。 用这种方法是否存在将未使用的文件存储在s3存储桶中的问题?

我正在查看由heroku(对于NodeJs应用程序)build议通过服务器签署s3文件的这个教程,然后直接从客户端处理上传: https://devcenter.heroku.com/articles/s3-upload-node 我想知道很多未使用的文件存储在s3存储桶中的可能性。 在heroku教程中,他们运行一个用户编辑场景。 他们指出: 当用户select要上传的图像时,上传到S3的处理将自动与本文前面介绍的过程asynchronous处理。 一旦上传完成并成功,图像预览会随着所选图像而更新。 然后用户点击“提交”button,该button将上传图像的用户名,名称和URL发布到要检查和/或存储的节点应用程序。 如果之前没有用户上传图片,则会发布默认的头像图片url。 那么,如果用户select图像,然后点击另一个页面而没有完成并提交用户configuration文件信息呢? 这只是一个浪费的文件存储在你的s3桶? 我在我的平均应用程序中使用类似的方法,在提交: 我上传文件到S3。 然后,承诺,一旦上传完成,我提交用户的个人资料信息/岗位s3的url到服务器。 我有一个类似的担心,如果用户离开之前承诺调用或有连接问题 – 是否有存储未使用的文件的问题? 这是处理这个问题的典型方式吗?这只是风险的一部分?

用AWS XRAY航行

应该如何在Sails上安装AWS XRAY? 我正试图将安装说明翻译成Sails使用Express中间件的首选方式,但是我正在平躺在我的脸上。 大多数人会立即开始使用“使用config / http.js”来configuration中间件。 那么,在我的情况下,这是行不通的,因为我的API是专门用于Sails.io(套接字),所以http中间件configuration从不使用。 所以现在,合乎逻辑的一步是使用策略。 那么,如果你已经阅读了XRAY指令,你就知道他们正试图捕获所有的请求到应用程序,这需要在启动和停止函数调用之前和之后configuration路由。 所以,政策不起作用。 所以,我的下一步是尝试在app.js和config / bootstrap.js文件中无效,可能是因为我无法轻易获取Sails正在使用的Express实例。 那么,Sails目前的configuration选项有可能吗? 任何人有任何线索如何做到这一点?

错误:configuration文件丢失 – /nodeapp/node_modules/aws-sdk/lib/request.js:31

我从AWS-SDK中使用s3.listObjects()函数拉对象,并且不断收到以下错误: /nodeapp/node_modules/aws-sdk/lib/request.js:31 其次是 Error: Missing credentials in config at IncomingMessage.<anonymous> (/nodeapp/node_modules/aws-sdk/lib/util.js:863:34) at emitNone (events.js:91:20) at IncomingMessage.emit (events.js:186:7) at endReadableNT (_stream_readable.js:974:12) at _combinedTickCallback (internal/process/next_tick.js:74:11) at process._tickDomainCallback (internal/process/next_tick.js:122:9) 这不加起来,因为我有一个不同的路线(downloadParam),从S3中检索一个对象,而不会给我这个错误。 此外,当我注销从downloadResults路由检索到的对象,似乎检索对象没有问题,但我仍然会得到这个错误。 我花了几个小时在这个问题上,我似乎无法弄清楚为什么会发生这种情况。 我已经粘贴了两条路线的代码,一个是有效的,另一个是没有的。 从我在线收集的信息来看,这看起来更像是一个代码问题,而不是AWS-SDK的凭证问题。 downloadParam: function(app, s3){ app.use('/api', apiRoutes) apiRoutes.get('/download-param-file', function(req, res, next){ res.set({'Content-Type':'text/csv'}) s3.getObject({Bucket: 'some-bucket', Key: 'some-key' + req.query.fileName}, function(err, file){ if (err) { console.log(err); return next(err); […]

如何在我的情况下连接到elasticache?

我试图从我的应用程序连接到aws elasticache。 我知道端点和端口,但由于某种原因,我无法连接到它。 我使用了这个npm包: https ://www.npmjs.com/package/node-memcached-client 码: const Memcached = require('node-memcached-client'); const client = new Memcached({ host: 'mycache.aa11c.0001.use2.cache.amazonaws.com', //fake aws cache endpoint port: 11211 }); console.log(client); // I can see it outputs stuff client.connect() .then(c => { console.log('connected'); console.log(c); }).catch(function(err){ console.log('error connecting'); console.log(err); }); 出于某种原因,当我运行代码时,我所看到的就是 [Memcached] INFO: Nothing any connection to mycache.aa11c.0001.use2.cache.amazonaws.com:11211, created sid:1 console.log没有错误或connected消息。 […]

在AWS Lambda中实例化AWS Helper类时是否需要指定区域?

如果我想从AWS Lambda调用AWS SES,那么在实例化AWS Helper类时通常会写下列内容: var ses = new aws.SES({apiVersion: '2010-12-01', region: 'eu-west-1'}); 我想知道,我是否真的需要指定AWS区域? 或者AWS SES帮助程序类将在运行AWS Lambda函数的区域中运行。 这里最好的做法是什么? 如果我忽略这个,可能会遇到问题吗?