Tag: aws sdk

使用AWS-SDK的Sinon.Stub节点

我正在尝试为使用aws-sdk NPM模块的应用程序编写一些testing报告,将aws-sdk模块推到SQS队列,但我不确定如何正确地模拟事情。 到目前为止,我的testing是: var request = require('superagent'), expect = require('chai').expect, assert = require('chai').assert, sinon = require('sinon'), AWS = require('aws-sdk'), app = require("../../../../app"); describe("Activities", function () { describe("POST /activities", function () { beforeEach(function(done) { sinon.stub(AWS.SQS.prototype, 'sendMessage'); done(); }); afterEach(function(done) { AWS.SQS.prototype.sendMessage.restore(); done(); }); it("should call SQS successfully", function (done) { var body = { "custom_activity_node_id" : […]

在dynamodb Local查询全球二级指数

我正在使用这些参数在发电机中创build一个表格和GSI,如下所示: configId是表的主键,我使用publisherId作为GSI的主键(为了简洁,我删除了一些不必要的configuration参数) var params = { TableName: 'Configs', KeySchema: [ { AttributeName: 'configId', KeyType: 'HASH', } ], AttributeDefinitions: [ { AttributeName: 'configId', AttributeType: 'S', }, { AttributeName: 'publisherId', AttributeType: 'S', } ], GlobalSecondaryIndexes: [ { IndexName: 'publisher_index', KeySchema: [ { AttributeName: 'publisherId', KeyType: 'HASH', } ] } ] }; 我使用这个查询这个表: { TableName: 'Configs', IndexName: 'publisher_index', […]

获取AWS SMS的交付状态

我通过节点SDK从AWS发送短信。 短信发送情况良好,我正在尝试收到发送信息。 显然不是那么容易,而且必须设置SNS才能将日志发送到Cloudwatch,并parsingCloudWatch以获取查找MessageId的传递信息: https ://stackoverflow.com/a/40327061/2054629 如果我通过SNSnetworking界面发送短信,日志中会看到cloudwatch中的日志,而不是通过节点SDK发送日志。 在从节点发送消息之前,我无法获取有关如何设置消息的信息。 理想情况下,我想达到这样的东西: const sendSMS = async (message, number) => { // send the SMS // wait to get delivery info // resolve with delivery info, or reject if failed } 目前我有: import AWS from 'aws-sdk'; AWS.config.update({ accessKeyId: accessKey, secretAccessKey: secretKey, region: 'us-east-1', }); const sns = new AWS.SNS(); const […]

使用Express从S3stream文件,包括长度和文件types的信息

使用aws-sdk模块和Express 4.13,可以通过多种方式从S3中代理一个文件。 这个callback版本将返回文件正文作为缓冲区,加上其他相关的标题,如Content-Length : function(req,res){ var s3 = new AWS.S3(); s3.getObject({Bucket: myBucket, Key: myFile},function(err,data){ if (err) { return res.status(500).send("Error!"); } // Headers res.set("Content-Length",data.ContentLength) .set("Content-Type",data.ContentType); res.send(data.Body); // data.Body is a buffer }); } 这个版本的问题是你必须在发送之前得到整个文件,这并不是很好,特别是如果它像video一样大。 这个版本将直接传输文件: function(req,res){ var s3 = new AWS.S3(); s3.getObject({Bucket: myBucket, Key: myFile}) .createReadStream() .pipe(res); } 但不像第一个,它不会做任何关于头文件,浏览器可能需要正确处理文件。 有没有办法获得两个世界的最好的,从S3传递正确的标题,但发送文件作为stream? 这可以通过首先向S3发送HEAD请求来获取元数据,但是可以通过一个API调用完成吗?

如何使用AWS SDK for Node.js将Amazon S3中的所有对象从一个前缀复制/移动到另一个前缀

如何将所有对象从一个前缀复制到另一个前缀? 我已经尝试了所有可能的方法将一个镜头中的所有对象从一个前缀复制到另一个镜头,但似乎工作的唯一方法是循环一个对象列表并逐一复制它们。 这实在是效率低下。 如果我有一个文件夹中的数百个文件,我将不得不打100个电话? var params = { Bucket: bucket, CopySource: bucket+'/'+oldDirName+'/filename.txt', Key: newDirName+'/filename.txt', }; s3.copyObject(params, function(err, data) { if (err) { callback.apply(this, [{ type: "error", message: "Error while renaming Directory", data: err }]); } else { callback.apply(this, [{ type: "success", message: "Directory renamed successfully", data: data }]); } });

使用aws-sdk和Node / Express将简单的file upload到S3

我错过了我所做的一切,下面是我所拥有的: HTML <html> <body> <form method="POST" action="/upload" enctype="multipart/form-data"> <div class="field"> <label for="image">Image Upload</label> <input type="file" name="image" id="image"> </div> <input type="submit" class="btn" value="Save"> </form> </body> </html> Port 5000是我的Node.js服务器的端口。 在这个例子中,我正在使用POST /upload ,而且工作正常。 module.exports = function(app, models) { var fs = require('fs'); var AWS = require('aws-sdk'); var accessKeyId = process.env.AWS_ACCESS_KEY || "xxxxxx"; var secretAccessKey = process.env.AWS_SECRET_KEY || "+xxxxxx+B+xxxxxxx"; […]

我如何提交AWS JavaScript SDK?

我想用promise来使用JavaScript中的aws-sdk。 而不是默认的callback风格: dynamodb.getItem(params, function(err, data) { if (err) console.log(err, err.stack); // an error occurred else console.log(data); // successful response }); 我反而想用一个承诺风格: dynamoDb.putItemAsync(params).then(function(data) { console.log(data); // successful response }).catch(function(error) { console.log(err, err.stack); // an error occurred });

Nodejs – 从另一个lambda函数中调用AWS.Lambda函数

我有以下函数,我用它来调用我的代码中的Lambda函数。 但是,当我尝试在Lambda函数内使用它时,出现以下错误: AWS lambda undefined 0.27s 3 retries] invoke({ FunctionName: 'my-function-name', InvocationType: 'RequestResponse', LogType: 'Tail', Payload: <Buffer > }) 我如何从Lambda函数中调用Lambda函数? 我的function: 'use strict'; var AWS = require("aws-sdk"); var lambda = new AWS.Lambda({ apiVersion: '2015-03-31', endpoint: 'https://lambda.' + process.env.DYNAMODB_REGION + '.amazonaws.com', logger: console }); var lambdaHandler = {}; // @var payload – type:string // @var functionName […]

在AWS Lambda函数中通过AWS SES发送电子邮件

我在AWS Lambda上创build了一个非常基本的简单函数,用于接受表单提交。 部分function将是发送电子邮件给一个特定的人,非常简单。 我正在尝试使用AWS SES来执行此操作。 我已经设置了SES服务等,并validation了我想发送的账户,并且能够发送testing邮件。 所有的作品! 现在,当我在AWS Lambda中尝试并使用aws sdk时,它不会发送电子邮件。 我没有得到一个错误或任何东西。 以下是我用于AWS Lambda函数的代码。 有没有人有任何经验使用lambda和通过ses,通过lambda函数发送电子邮件? 甚至只是使用node.js aws sdk可能会有所帮助。 var aws = require('aws-sdk'); var ses = new aws.SES({ accessKeyId: 'myAccessKey', secretAccesskey: 'mySecretKey', region: 'eu-west-1' }); exports.handler = function(event, context) { console.log("Incoming: ", event); var output = querystring.parse(event); var eParams = { Destination: { ToAddresses: ["toAddress@email.com"] }, Message: […]