【问题标题】:Read content of txt file from s3 bucket with Node使用 Node 从 s3 存储桶中读取 txt 文件的内容
【发布时间】: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 对象不包含文件的内容。

你有什么想法吗?

【问题讨论】:

标签: node.js amazon-web-services amazon-s3 aws-lambda


【解决方案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 新手..)
猜你喜欢
  • 2016-07-12
  • 2019-09-19
  • 2019-08-21
  • 1970-01-01
  • 2021-05-14
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-07-04
相关资源
最近更新 更多