Articles of amazon web services

AWS Elastic Beanstalk自定义静态文件夹403错误页面

我用: AWS Elastic Beanstalk并具有我的资源的静态public文件夹,在弹性beanstalk .ebextensions定义 nodejs并处理那里的错误 当我打开我的网站,并去example.com/public我看到丑陋的403页面,似乎不由nodejs服务器处理。 我想服务器以某种方式处理这个请求,看到没有权限,并扔到nodejs服务器之前403。 我怀疑,如果我决定从.ebextensionsconfiguration中删除这个方法,并将其定义为nodejs静态文件夹,它将按我的预期工作。 但有没有一些方法来使用我的自定义403页面是我使用.ebextensionsconfiguration?

Amazon Web Services DynamoDB错误

我正在使用Dynamoose来处理Node.js中的DynamoDB请求和操作。 当我尝试获得一个logging时,我得到这个错误。 (电子邮件是前面定义的variables) User.get({ 'email' : email }, function(err, user) { // if there are any errors, return the error if (err) return done(err); } err正在返回 ValidationException:无法将参数转换为数值:[object Object] 任何想法,为什么我会得到这个错误?

节点js中的AWS SDK javascript返回访问被拒绝

当我试图列出所有的桶时,它会按预期工作。 那么我可以确保我的设置是正确的。 问题是当我尝试列出存储桶的内容时: 我有节点js中的路由/:bucket app.get('/:bucket', function (req, res) { var bucket = req.params.bucket; var s3 = new AWS.S3(); var params = { Bucket: 'bucket' }; s3.listObjects(params, function (err, data) { if (err) console.log(err, err.stack); // an error occurred else console.log(data); // successful response }); }); 这不起作用,它返回访问被拒绝。 这是桶政策: { "Id": "Policy……………", "Version": "2012-10-17", "Statement": [ { […]

Ffmpeg无法访问aws labmda上的文件

我正在使用ffmpeg在AWS Lambda上创buildvideo缩略图。 我在/ tmp目录中下载了这个文件,但是ffmpeg无法访问它并给出错误 [错误:元数据不包含持续时间,中止截图创build] 当我使用ffmpeg检查媒体信息时,它将输出结果 { ffmpegversion: 0, title: '', artist: '', album: '', track: '', date: '', durationraw: '', durationsec: 0, synched: false, major_brand: undefined, video: { container: '', bitrate: 0, codec: '', resolution: { w: 0, h: 0 }, resolutionSquare: { w: 0, h: NaN }, rotate: 0, fps: 0, stream: 0, […]

JSON模式validationaws lambda

我需要validation我的aws lambda事件模式。 我用vandium进行validation。 我有两个不同的情况。 lambda函数仅支持一种types的事件。 喜欢这个 var vandium = require('vandium'); vandium.validation({ name: vandium.types.string().required() }); exports.handler = vandium(function (event, context, callback) { console.log('hello: ' + event.name); callback(null, 'Hello from Lambda'); }); 在这种情况下,只有密钥存在或不存在时, vandium才会生效。 但我需要检查是否有任何额外的密钥存在或不。 lambda函数支持多种types的事件。 喜欢这个 var vandium = require('vandium'); vandium.validation({ operation: vandium.types.string().required(), name: vandium.types.string().required(), }); exports.handler = vandium(function (event, context, callback) { const operation = […]

AWS 504网关超时 – 快速中间件的早期响应

在AWS上运行我的服务时,我看到504网关超时。 根据我的服务日志,看起来像中间件提前返回一个空白的响应,但对3rdPartyService的请求确实成功。 我无法在本地重现此问题。 以下是详细信息: MyService <—> 3rdPartyService 3rdPartyService需要2分钟才能做出响应,但最终成功。 MyService在nodeJS上使用express,并使用docker容器部署到AWS上。 在设置为5分钟的AWS ELB超时后,MyService被设置为超时。 根据下面的日志片段,请参见第16行,其中返回状态为200的空白响应。 3rdPartyService请求在最后一行成功。 MyService日志片段: {"name":"adapters/demo_adapter","hostname":"4658d629c774","pid":19,"level":30,"status":"PENDING","msg":"","time":"2016-09-19T21:10:09.973Z","v":0} {"name":"adapters/demo_adapter","hostname":"4658d629c774","pid":19,"level":30,"msg":"retrying function getLocation in 5000 ms : attempts: 1","time":"2016-09-19T21:10:09.975Z","v":0} {"name":"adapters/demo_adapter","hostname":"4658d629c774","pid":19,"level":30,"serviceRequestId":"da7fae85-f624-4338-adbe-4fc8674cd1","msg":"","time":"2016-09-19T21:10:46.037Z","v":0} {"name":"adapters/demo_adapter","hostname":"4658d629c774","pid":19,"level":30,"status":"PENDING","msg":"","time":"2016-09-19T21:10:48.354Z","v":0} {"name":"adapters/demo_adapter","hostname":"4658d629c774","pid":19,"level":30,"msg":"retrying function getLocation in 5000 ms : attempts: 2","time":"2016-09-19T21:10:48.354Z","v":0} {"name":"adapters/demo_adapter","hostname":"4658d629c774","pid":19,"level":30,"serviceRequestId":"da7fae85-f624-4338-adbe-4fc8674cd1","msg":"","time":"2016-09-19T21:10:56.424Z","v":0} {"name":"adapters/demo_adapter","hostname":"4658d629c774","pid":19,"level":30,"status":"PENDING","msg":"","time":"2016-09-19T21:11:00.365Z","v":0} {"name":"adapters/demo_adapter","hostname":"4658d629c774","pid":19,"level":30,"msg":"retrying function getLocation in 5000 ms : attempts: 3","time":"2016-09-19T21:11:00.365Z","v":0} {"name":"adapters/demo_adapter","hostname":"4658d629c774","pid":19,"level":30,"serviceRequestId":"da7fae85-f624-4338-adbe-4fc8674cd1","msg":"","time":"2016-09-19T21:11:07.049Z","v":0} {"name":"adapters/demo_adapter","hostname":"4658d629c774","pid":19,"level":30,"status":"PENDING","msg":"","time":"2016-09-19T21:11:08.508Z","v":0} {"name":"adapters/demo_adapter","hostname":"4658d629c774","pid":19,"level":30,"msg":"retrying function getLocation in 5000 ms : […]

如何从部署在AWS Elastic Beanstalk上的node.js express应用程序获取客户端ip?

我正在使用ngnix代理服务器的弹性beanstalk 。 我的应用程序代码是在node.jsexpression式框架上。 我想通过下面的代码访问客户端IP var ip = event.headers['x-forwarded-for'] || event.connection.remoteAddress || event.socket.remoteAddress || event.connection.socket.remoteAddress; 但我总是得到相同的客户端IP所有传入的请求。 我认为这将是代理服务器的IP地址。 如何从我的应用程序访问真正的客户端地址?

SQS到Lambda + SES

我是Lambda & SQS新手,我尝试创build一个函数来发送SQS服务中排队的邮件,但我不明白如何调用包含send + delete queue方法的进程函数。 在这里,我粘贴我的代码: 'use strict'; const AWS = require('aws-sdk'); const SQS = new AWS.SQS({ apiVersion: '2012-11-05' }); const Lambda = new AWS.Lambda({ apiVersion: '2015-03-31' }); const ses = new AWS.SES({ accessKeyId: "xxxxxxxx", secretAccesskey: "xxxxxxx/xxxxxxxxx" }); const s3 = new AWS.S3({ apiVersion: "2006-03-01", region: "us-west-2" }); const QUEUE_URL = 'https://sqs.us-west-2.amazonaws.com/xxxxxxx/queue'; const PROCESS_MESSAGE […]

如何在AWS Lambda中使用rpath构build节点本机模块?

我试图在aws lambda函数中使用node-phash ,但是很快就会出现。 我已经在这里和在github上find了关于node-canvas库的指令,但仍然有一些麻烦。 我已经采取的步骤: 在Amazon Linux ec2实例上,我克隆了node-phash回购 我设置了一个env var来使用一个rpath ,如node-canvas演练所示: export LDFLAGS=-Wl,-rpath=/var/task/ 我确定了共同的代表: $ readelf -d pHashBinding.node | grep NEEDED 0x0000000000000001 (NEEDED) Shared library: [libstdc++.so.6] 0x0000000000000001 (NEEDED) Shared library: [libm.so.6] 0x0000000000000001 (NEEDED) Shared library: [libgcc_s.so.1] 0x0000000000000001 (NEEDED) Shared library: [libpthread.so.0] 0x0000000000000001 (NEEDED) Shared library: [libc.so.6] 然后,我复制并下载列出的文件,以包含在我的lambda zip文件中 我跑npm install ,表面上看起来很好 我确认了.node将会看到aws lambda根的代表: $ objdump […]

AWS S3 NodeJS禁止或连接rest

我的本地机器上有一个NodeJS应用程序。 我正尝试使用Amazon S3服务进行设置,但不幸的是,它不起作用。 我能够获得签名的URL,但是当上传文件时,AWS返回Forbidden 403(几次它断开连接,但在从CORS中删除超时选项后停止) 我到目前为止所做的: 创build新的用户休闲政策: { "Statement": [ { "Action": "s3:*", "Effect": "Allow", "Resource": [ "arn:aws:s3:::my-bucket", "arn:aws:s3:::my-bucket/*" ] } ] } 为此用户创build了新的访问密钥 更新了桶的CORS <?xml version="1.0" encoding="UTF-8"?> <CORSConfiguration xmlns="http://s3.amazonaws.com/doc/2006-03-01/"> <CORSRule> <AllowedOrigin>*</AllowedOrigin> <AllowedMethod>GET</AllowedMethod> <AllowedMethod>PUT</AllowedMethod> <AllowedMethod>POST</AllowedMethod> <AllowedHeader>*</AllowedHeader> </CORSRule> </CORSConfiguration> 更新了桶策略 { "Version": "2012-10-17", "Statement": [ { "Sid": "111", "Effect": "Allow", "Principal": { "AWS": "my-user-id-number" }, "Action": […]