我在AWS中有一个Node 4.3 Lambda函数。我希望能够向S3编写一个文本文件,并阅读了许多关于如何与S3集成的教程。然而,所有这些都是关于如何调用lambda函数编写后,S3象下面这样:AWS Lambda函数写入S3
http://docs.aws.amazon.com/lambda/latest/dg/with-s3.html
如何创建在S3从LAMBDA使用节点的文本文件?这可能吗?亚马逊的文件似乎没有涵盖它。
我在AWS中有一个Node 4.3 Lambda函数。我希望能够向S3编写一个文本文件,并阅读了许多关于如何与S3集成的教程。然而,所有这些都是关于如何调用lambda函数编写后,S3象下面这样:AWS Lambda函数写入S3
http://docs.aws.amazon.com/lambda/latest/dg/with-s3.html
如何创建在S3从LAMBDA使用节点的文本文件?这可能吗?亚马逊的文件似乎没有涵盖它。
是的,这是绝对可能的!
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
});
}
确保你给你的lambda函数所需的写入权限目标S3存储/关键路径选择或更新IAM角色的拉姆达下执行。
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
特定的 “将对象” 的详细信息: http://docs.aws.amazon.com/AWSJavaScriptSDK/latest/AWS/S3.html#putObject-property
如果您正在使用IAM用户,那么你必须提供访问密钥和秘密密钥,并确保你提供必要的许可,您可以使用
AWS-SDK
上传在S3上的文件到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访问和测试purposes.for最佳实践密钥参考以下链接。
https://docs.aws.amazon.com/AWSJavaScriptSDK/guide/node-configuring.html
问题中没有任何内容特别要求访问密钥和秘密用于身份验证。以这种方式进行身份验证是非常糟糕的做法,因此我不认为这是一个明智的解决方案。应为Lambda函数配置IAM角色,该角色足以满足Lambda函数执行其功能所需的访问。 –
我知道我只是把秘密密钥和访问密钥硬编码,但这种方法只适用于小型个人脚本或用于测试目的。 –
如果你的lambda函数是一个VPC内执行,你将不得不为它创建一个终结点。在找出之前,s3.putObject的回调从未被调用过。 请参阅关于S3 VPC端点的文章:https://aws.amazon.com/blogs/aws/new-vpc-endpoint-for-amazon-s3/ 请参阅关于从lambda:https:/ /aws.amazon.com/blogs/aws/new-access-resources-in-a-vpc-from-your-lambda-functions/ – vtellier