AWS Lambda函数写入S3

我在AWS中有一个Node 4.3 Lambda函数。 我希望能够写一个文本文件到S3并阅读了许多关于如何与S3集成的教程。 但是,所有这些都是关于如何在写入S3之后调用Lambda函数的,如下所示:

http://docs.aws.amazon.com/lambda/latest/dg/with-s3.html

如何在S3中使用节点在Lambda中创build文本文件? 这可能吗? 亚马逊的文件似乎并没有涵盖。

是的,这是完全可能的!

var AWS = require('aws-sdk'); function putObjectToS3(bucket, key, data){ var s3 = new AWS.S3(); var params = { Bucket : bucket, Key : key, Body : data } s3.putObject(params, function(err, data) { if (err) console.log(err, err.stack); // an error occurred else console.log(data); // successful response }); } 

确保通过select或更新您的lambda执行的IAMangular色,为您的Lambda函数提供对目标s3存储桶/关键path的所需写权限。

IAM声明补充:

 { "Sid": "Stmt1468366974000", "Effect": "Allow", "Action": "s3:*", "Resource": [ "arn:aws:s3:::my-bucket-name-goes-here/optional-path-before-allow/*" ] } 

进一步阅读:

AWS JavaScript SDK: http : //docs.aws.amazon.com/AWSJavaScriptSDK/latest/AWS/S3.html

具体的“Put Object”细节: http : //docs.aws.amazon.com/AWSJavaScriptSDK/latest/AWS/S3.html#putObject-property

您可以使用s3上传文件

AWS-SDK

如果您使用的是IAM用户,则必须提供访问密钥和密钥,并确保您已向IAM用户提供了必要的权限。

 var AWS = require('aws-sdk'); AWS.config.update({accessKeyId: "ACCESS_KEY",secretAccessKey: 'SECRET_KEY'}); var s3bucket = new AWS.S3({params: {Bucket: 'BUCKET_NAME'}}); function uploadFileOnS3(fileName, fileData){ var params = { Key: fileName, Body: fileData, }; s3bucket.upload(params, function (err, res) { if(err) console.log("Error in uploading file on s3 due to "+ err) else console.log("File successfully uploaded.") }); } 

在这里,我暂时硬编码aws访问和密钥为testing目的。对于最佳做法参考下面的链接。

https://docs.aws.amazon.com/AWSJavaScriptSDK/guide/node-configuring.html