Tag: amazon web services

获取Amazon Echo设备的位置/地址

我正在做一个Alexa技能,它需要发送我的Lambda函数中使用的API的位置。 https://www.amazon.com/gp/help/customer/display.html?nodeId=201601980表示我们可以访问有关Echo的许多详细信息,例如设备位置,但在我的技能中,我没有看到这是在会议中可用: exports.handler = function (event, context) { try { console.log("event.session: " + event.session); 我怎样才能得到这些数据? 关键是,虽然我们的用户地址来自我的应用程序API,但他们可能已经设置了他们目前不在的地址(也就是说,他们已经从Echo下了一个不同于他们的地址的地址)。 谢谢!

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

从Amazon S3存储中删除图像

我正尝试从Amazon S3 Storage中删除一个映像,但不会删除。 我正在使用以下代码: var s3 = AWS.S3(awsCredentials); s3.deleteObject({ Bucket: MY_BUCKET, Key: myKey },function (err,data){}) 但我想删除的图像仍然存在。 我甚至使用s3.deleteObjects函数,它返回删除的对象名称,但是当我检查存储时,图像仍然存在。

自动获取Docker容器中的主机名

我们在托pipe在Amazon EC2实例上的Docker容器中运行NodeJS应用程序。 至 为了使用Datadog监控Node.js应用程序,我们使用datadog-metrics库并将其与我们的应用程序集成。 我们基本上需要将下面的Javascript代码保存到一个名为example_app.js的文件中 var metrics = require('datadog-metrics'); metrics.init({ **host: 'myhost', prefix: 'myapp.'** }); function collectMemoryStats() { var memUsage = process.memoryUsage(); metrics.gauge('memory.rss', memUsage.rss); metrics.gauge('memory.heapTotal', memUsage.heapTotal); metrics.gauge('memory.heapUsed', memUsage.heapUsed); metrics.increment('memory.statsReported'); } setInterval(collectMemoryStats, 5000); 虽然,我们能够成功发布度量标准,但是我们想知道这是否可以自动化。 我们希望将其构build到Docker镜像中,因此需要自动获取主机名,至less可以使用Docker主机名。因为直到现在我们手动指定“myhost”和“myapp “值手动。 将AWS实例主机名值读取到%myhost中的更好方法?

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

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

Amazon Web服务DynamoDB请求缓慢

我目前正在使用库dynamoose来处理Node.js中的DynamoDB。 我一直在做一些testing,说明为什么我的快速请求在某些情况下需要超过1000毫秒的时间,并将其指向dynamicfunction。 进行扫描或保存时,每个请求需要约240ms的时间。 所以如果我不得不在一个function上做一些function,它可能会变长。 根据AWS,我的FAR低于我configuration的读写容量。 另外我的一个表格显示10-40毫秒的扫描和延迟。 这似乎并不坏,但仍然似乎稍高(可能是完全正常的寿)。 任何想法如何提高所有这一切的速度,所以我的数据库请求不需要240ms?

Couchbase多服务器设置问题

我们有三个EC2实例的couchbase服务器设置,第一个实例只有数据库服务运行,第二个实例有索引服务运行,第三个实例有查询服务运行。 索引和查询服务器使用couchbase web控制台添加到数据服务器,该控制台可以select本文引用的“服务器节点”选项下的“添加服务器”。 现在,例如,如果我必须使用Nodejs SDK,Ottoman连接驻留在服务器上的存储桶并创build一个新用户,则可以连接到存储桶,但是无法将文档保存在存储桶中,我一个“分段错误(核心转储)”的错误。 请让我们知道,如果我们需要改变服务器设置的方式,或者我们应该如何继续前面的例子,以便我们能够创build用户。 软件版本:Couchbase:4.5 Couchbase Nodejs SDK:2.2奥斯曼:1.0.3 此函数使用Nodejs ver-4.3从AWS Lambda运行。 我得到的错误是“分段错误(核心转储)”。 以下是我试过的AWS Lambda函数: var couchbase=require('couchbase'); var ottoman=require('ottoman'); var config = require("./config"); var myCluster = new couchbase.Cluster(config.couchbase.server); // here tried connecting to either data / index / query server ottoman.bucket = myCluster.openBucket(config.couchbase.bucket); require('./models/users'); ottoman.ensureIndices(function(err) { if (err) { console.log('failed to created neccessary indices', […]

通过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秘密访问密钥和签名方法。 详细信息请参阅服务文档。 还有什么我需要做的,以妥善签署请求?

Dynamoose / DynamoDB更新将空数组保存为空

我正在使用Node.js包Dynamoose处理我的Web应用程序中的DynamoDB请求。 问题是当我尝试更新该项目,每当JSON对象包含一个空的数组Dynamoose似乎将其设置为null。 或者对于我所知道的,它可以是DynamoDB。 下面是我用于这个表的模式的一部分。 var NoteSchema = new dynamoose.Schema({ _id: String, details: Array }); 在下面的代码中,variablesbody被设置为{details: []} 。 我已经通过运行console.log(body);确认了这一点console.log(body); 。 Note.update({ _id: searchid }, body, function(err, note) { if (err) { console.log(err); } else { console.log(note); } }); 问题是在运行console.log(note);callback函数里面console.log(note); details甚至不显示。 所以它是空的或未定义的。 在amazon web services中,对于该条目再次不存在details 。 有什么奇怪的是,当创build一个新的注意,设置details = [] ,并保存,细节是一个空的数组,完美的作品。 所以对我来说,更新logging并将该属性设置为空数组似乎就像一个特定的问题,因为创build一个logging并将该属性设置为一个空数组是完美的。 如何更新logging并将详细信息设置为空数组?

为什么Elasticsearch批量API不能parsing我的JSON?

我将这个类似JSON的数据通过HTTP请求发送到Elasticsearch API / _bulk端点: {"update":{"_id":1,"_type":"myType","_index":"myIndex"}} {"doc":{"id":1,"name":"Foo"},"doc_as_upsert":true} {"update":{"_id":2,"_type":"myType","_index":"myIndex"}} {"doc":{"id":2,"name":"Bar"},"doc_as_upsert":true} 当我通过邮递员(一个谷歌浏览器应用程序)的数据,它成功的工作。 当我通过我的Node.js脚本( request()调用)的PUT数据,我得到这个错误: { "error" : { "root_cause" : [ { "type" : "parse_exception", "reason" : "Failed to derive xcontent" } ], "type" : "parse_exception", "reason" : "Failed to derive xcontent" }, "status" : 400 } 我发送(我认为是)两种方式完全相同的数据,但只有邮递员正在工作。 我用\ n字符(包括最后一个)结尾每一行,我相信我的格式是正确的。 有什么我做错了吗? 编辑:节点代码(简体): var sourceData = JSON.parse(fs.readFileSync('test-data.json', 'utf8')), sourceData.forEach(function(data) […]