Tag: amazon web services

节点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": […]

从AWS Lambda修改Google表格

我正在开发一个小项目,我对使用Google云端硬盘感兴趣。 该程序的主要前提是将lambda函数激活时插入一个新的行到谷歌表。 我宁愿为这个项目使用Node.js,但是可以使用Java或Python。 从教程网站很容易看到这一切如何运作。 你提出一个请求,你有OAuth,然后程序按照它的要求去做。 不过,我正在寻找一种方法,让我的AWS lambda函数与我的谷歌驱动器中的文件夹交谈,并随意更新工作表。 本教程中的代码如下所示: var fs = require('fs'); var readline = require('readline'); var google = require('googleapis'); var googleAuth = require('google-auth-library'); // If modifying these scopes, delete your previously saved credentials // at ~/.credentials/drive-nodejs-quickstart.json var SCOPES = ['https://www.googleapis.com/auth/drive.metadata.readonly']; var TOKEN_DIR = (process.env.HOME || process.env.HOMEPATH || process.env.USERPROFILE) + '/.credentials/'; var TOKEN_PATH = TOKEN_DIR […]

无法使用Serverless v1.4.0为AWS Lambda设置环境variables

在文档之后,我尝试在provider下的serverless.yml文件中声明环境variables: provider: cfLogs: true name: aws runtime: nodejs4.3 stage: dev region: eu-west-1 profile: serverless-admin environmnent: IS_REMOTE: ${file(./config.yml):IS_REMOTE} REMOTE_ENV: "YES" 尝试使用process.env.IS_REMOTE或process.env.REMOTE_ENV获取这些文件时,这些文件都不可用。 这是尝试console.log他们的日志: 2017-01-01 06:22:57.777 (+02:00) undefined REMOTE_ENV: undefined 2017-01-01 06:22:57.777 (+02:00) undefined IS_REMOTE: undefined 这是在使用serverless invoke (不在本地)时在Lambda内部。 希望有人能帮我弄清楚这一点,因为我似乎在跟踪有关正确的文档。