使用 Node 从 s3 存储桶中读取 txt 文件的内容
Posted
技术标签:
【中文标题】使用 Node 从 s3 存储桶中读取 txt 文件的内容【英文标题】:Read content of txt file from s3 bucket with Node 【发布时间】:2020-08-29 16:18:48 【问题描述】:我想读取存储在 s3 存储桶中的 .txt 文件的内容。
我试过了:
var s3 = new AWS.S3(apiVersion: '2006-03-01');
var params = Bucket: 'My-Bucket', Key: 'MyFile.txt';
var s3file = s3.getObject(params)
但是我得到的 s3file 对象不包含文件的内容。
你有什么想法吗?
【问题讨论】:
这能回答你的问题吗? Read file from aws s3 bucket using node fs 【参考方案1】:同意zishone,这里是异常处理的代码:
var s3 = new AWS.S3(apiVersion: '2006-03-01');
var params = Bucket: 'My-Bucket', Key: 'MyFile.txt';
s3.getObject(params , function (err, data)
if (err)
console.log(err);
else
console.log(data.Body.toString());
)
【讨论】:
谢谢,它不会引发错误,但不会在控制台中打印某些内容。为什么 ?如何得到结果? 这东西对我来说非常有效。发布您的 lambda 和您正在使用的角色,以及存储桶策略(如果有)。这是我的 lmbda var AWS = require('aws-sdk'); var s3 = 新 AWS.S3(); export.handler = (事件、上下文、回调) => var s3 = new AWS.S3(apiVersion: '2006-03-01'); var params = Bucket: 'bucket-name', Key: 'test.txt'; s3.getObject(params, function (err, data) if (err) console.log(err); else console.log("TEXT FROM FILE:" + data.Body.toString()); ) ; 我使用 lambda 完全访问角色,以及您发送的代码。它不会在控制台中打印任何内容。【参考方案2】:根据docs,您的文件内容将在结果的Body
字段中,它将是Buffer
。
还有一个问题是s3.getObject(
应该有一个回调。
s3.getObject(params, (err, s3file) =>
const text = s3file.Body.toString();
)
【讨论】:
Thx,但是,如何返回 str 变量中的内容? (我是 Node 新手..)以上是关于使用 Node 从 s3 存储桶中读取 txt 文件的内容的主要内容,如果未能解决你的问题,请参考以下文章
使用带有 Node.js 的 AWS Lambda 函数从 S3 存储桶中提取 zip 文件并上传到另一个存储桶