Tag: amazon web services

通过策略和证书即时创buildAWS IoT“事物”

我正在使用NodeJS以及AWS JS SDK和AWS IoT Device JS SDK ,以便在连接到我的服务器后自动创build新事物并为其分配证书和策略。 我正在关注“即时注册”文章 ,以创build,注册和激活我的CA证书。 据我所知,CA证书已成功添加到AWS IoT,已激活并启用了自动注册。 我不明白的是这个步骤是如何执行的(引用文章): 当设备尝试连接AWS IoT未知的,但已通过在AWS IoT中注册的CA签名的X.509证书时,设备证书将由AWS IoT以新的PENDING_ACTIVATION状态自动注册。 我如何做一个“尝试”连接? 由于我使用aws-iot-device-sdk-js SDK和手动创build的证书,所以我通常会像这样连接我的设备: const device = deviceModule.device({ host: 'myendpoint.iot.us-east-1.amazonaws.com', region: 'us-east-1', keyPath: `certs/${deviceID}.key`, certPath: `certs/${deviceID}.pem`, caPath: 'certs/rootCA.pem', clientId: deviceID, baseReconnectTimeMs: 4000, keepalive: 30, protocol: 'mqtts', }); 但是现在我没有在keyPath和certPath包含的证书和密钥,我不能在没有它的情况下实例化我的设备。 我试图自己创build证书,使用AWS SDK中的createKeysAndCertificate() ,将它们保存到磁盘,手动附加策略,手动附加主体,甚至尝试手动将证书标记为“主动”,如下所示: iot.createThing({ thingName: deviceID }, (err, d) => { […]

AWS.DynamoDB.DocumentClient对象的getBatchItem方法是否支持全局二级索引?

我在nodejs程序中使用AWS.DynamoDB.DocumentClient从多个Dynamodb表中获取项目。 为了使代码简单,我select使用BatchGetItem / BatchGet方法。 我面临的挑战是我需要基于全局二级索引 (例如name + age)来获取项目,而不是创build表时生成的初始主键。 我经历了BatchGetItem / BatchGet,但没有看到使用全局二级索引的任何参数。 我用下面的代码运行了一些testing var params = { RequestItems: { 'Table-1': { Keys: [ { name: 'abc', age: 18, }, ] } } }; var docClient = new AWS.DynamoDB.DocumentClient(); docClient.batchGet(params, function(err, data) { if (err) console.log(err); else console.log(data); }); 并得到以下错误。 > ValidationException: The provided key element does […]

如何通过邮递员将图像上传到AWS S3

function uploadPinMedia(req, res, next) { console.log(req.file); var s3 = new AWS.S3({ params: { Bucket: 'mapery-v2' } }) AWS.config.update({ accessKeyId: 'xxxxxxxxxxxxxxxxxxxx', secretAccessKey: 'xxxxxxxxx+xxxxxxxxxxxxxxxxxxxxx/xxxxxxxx', }); var file = req.file; s3.upload({ ACL: 'public-read', Body: fs.createReadStream(req.file), Key: 'upload-v2', }, (err, media_res) => { console.log(err, media_res) }); } 我试图通过邮递员上传图像到S3斗,但它给我一个像TypeError: path must be string or buffer错误TypeError: path must be string or […]

AWS Lambda中的PhantomJS(缺lesslibfontconfig)

我试图让我的lambda函数使用phantomjs,但它一直运行到一个缺less的依赖关系的错误:libfontconfig / fontconfig。 在我的Centos VPS上安装fontconfig(dnf install fontconfig -y)时,我的代码工作正常。 然而,在lambda上运行时,我无法弄清楚如何让这个库运行我的function。 这是我的代码:(试图通过使用phantomjs的AliExpress软件包获得最畅销的产品) const aliExpress = require('aliexpress'); exports.handler = (event, context, callback) => { console.log('Handler ran!'); aliExpress.BestSelling.get().then((goods) => { console.log('Found results!'); const urls = []; for(let index in goods) { const url = goods[index].url; urls.push(url); } console.log('Returning URLs:'); console.log(urls); callback(null, urls); }).catch((err) => { console.log('Error:'); console.log(err); callback(err); }); […]

如何为多个node.js应用程序设置AWS EC2?

我正在尝试从PaaS(nodejitsu)切换到IaaS(AWS)。 我想利用node.js,couchdb,express,npm,git和websockets。 现在这是棘手的部分。 我希望能够在不停机的情况下更新我的应用程序,并且希望能够在不停机的情况下更新节点和couchdb。 有任何想法吗? 有任何node.js PaaSs开源他们的软件? 我知道我在这里要求很多,任何帮助都会摇摆!

在Amazon EC2上使用nohup作为Node.js

我试图让我的Node应用程序可靠地从一个亚马逊ec2实例运行。 我努力了: 永远安装我得到了很多的错误: npm ERR! 错误:ENOENT,… 50行错误… npm ERR! fstream_stack Object.oncomplete(fs.js:96:15) nohup节点server.js& 方法2工作,但它不启动我的应用程序,如果它下降。 有人可以告诉我如何使用nohup也重新启动应用程序,如果它下降? 谢谢!

编译更less的文件并缩小AWS Elastic Beanstalk上的node.js项目中的js文件

我正在使用Eb命令行界面将一个node.js项目部署到AWS Elastic Beanstalk。 我使用git进行版本控制。 所以我运行的命令就是“git aws.push”。 本地,我正在使用grunt从less文件编译css文件,还缩小和cmobine js文件。 我不希望在我的git存储库中包含* .min.css文件或* .min.js文件,而是希望在部署后在AWS上重新编译这些文件。 有没有办法做到这一点? 也许与.ebextensions钩或东西?

AWS opsworks createApp api将无法与提供的密码和用户名一起使用bitbucket

我正在尝试使用aws node.js sdk inorder在OPSWorks中创build一个应用程序。 我的存储库位于bitbucket,它是私人的。 我想用我的帐户密码而不是SSH来使用AWS api。 这是代码: var appParams = { Name: 'Demo app', StackId: userData.Stacks.stackId, Type: 'nodejs', AppSource: { Password: '*******', Type: 'git', Url: 'https://myUserName@bitbucket.org/myUserName/demofresh.git', Username: 'myUserName' } } opsworks.createApp(appParams, function(err, data) { if (err) callback(err); else{ console.log(data); callback(data); } }); 由于某些原因,我在使用这个应用程序运行一个实例的时候总是遇到这个错误。 错误: —- Begin output of git ls-remote https://myUserName@bitbucket.org/myUserName/demofresh.git HEAD —- STDOUT: […]

如何得到aws代码转换器工作状态的通知

我正在用node.js做CMS站点,为了处理用户发布的video,我决定使用亚马逊的Elastic Transcoder服务。 我已经想出了如何创build一个工作,并使用aws-sdk为node.js转码video,但是一个问题仍然困扰着我。 我的网站还处理用户发布的图片,收到post后,我会显示图片的预览,并等待用户的保密。 我可以做到这一点,因为我得到了通知(在callback)后,图片实际上服务器(aws s3),然后回应用户的位置。 就像处理图片一样,我想显示用户发布的video的预览,但是这种情况看起来不同,转码非常耗时,并且在云中发生,我不知道在作业状态改变时如何得到通知。 (进度,完成,错误等我要显示这些信息给用户) 根据aws文档和手册,工作将通过aws SNS发送通知,这是否意味着我必须在创build工作后手动订阅SNS? 我觉得这很复杂。 有没有更好的解决scheme? 谢谢。

SubscriptionConfirmation请求中的Token或SubscribeUrl在哪里?

我正尝试使用node.js接受来自SNS的订阅确认。 我input我的端点到控制台并点击订阅。 文件说 订阅HTTP / HTTPS端点后,Amazon SNS会向HTTP / HTTPS端点发送订阅确认消息。 此消息包含您必须访问以确认订阅的SubscribeURL值(或者,您可以使用带有ConfirmSubscription的令牌值)。 所以我这样做预览请求,所以我可以find我需要的信息。 if(req.headers['x-amz-sns-message-type'] === 'SubscriptionConfirmation'){ console.log('subscription confirmation requested',req.headers); console.log('body:',req.body); var arn = req.headers['x-amz-sns-subscription-arn']; var topic = req.headers['x-amz-sns-topic-arn']; res.send(200); } 我无法在头文件或正文中findSubscribeUrl或Token。 包含req.body的控制台行仅显示body: {}包含req.headers的控制台行不包含SubscriptionUrl或Token 那么它在哪里?