NodeJS - 从 S3 读取文件到 Lambda 中的 /tmp 文件夹

Posted

技术标签:

【中文标题】NodeJS - 从 S3 读取文件到 Lambda 中的 /tmp 文件夹【英文标题】:NodeJS - reading file from S3 to /tmp folder in Lambda 【发布时间】:2019-03-30 04:08:26 【问题描述】:

我需要将 *.dbf 文件从 S3 存储桶移动到 Lambda 中的 /tmp 文件夹以进行进一步处理。到目前为止文件正在移动,但文件内容已损坏,我做错了什么?

exports.getS3Object = ( bucket, key ) => 

  return S3Client.getObject( 

    Bucket              : bucket,
    Key                 : key
   )
  .promise( )
  .then( file => 

    console.log( 'File loading ', key );
    if ( ! fs.existsSync( '/tmp' ) ) 

      fs.mkdirSync( '/tmp' );
    
    fs.writeFileSync( '/tmp/' + key, file.Body.toString( 'utf8' ), ( error ) => 

      throw error;  
     ); 
    return '/tmp/' + key;
   )
  .catch( error => 

    // file not found
    return error;
   );
;

【问题讨论】:

【参考方案1】:

您的dbf 文件可能未编码为utf8 字符串。调用file.Body.toString时尝试base64binary编码。

【讨论】:

以上是关于NodeJS - 从 S3 读取文件到 Lambda 中的 /tmp 文件夹的主要内容,如果未能解决你的问题,请参考以下文章

使用 NodeJS 和 AWS S3 将损坏/截断的 mp4 上传到 S3 存储桶

使用 NodeJS 将文件上传到 Amazon S3

将文件从私有 S3 存储桶读取到 pandas 数据帧

从 S3 复制文件时出现 AWS CodeBuild 错误 - COMMAND_EXECUTION_ERROR:原因:退出状态 1 (NodeJS)

使用 pyspark 从 s3 位置读取镶木地板文件的文件夹到 pyspark 数据帧

如何将 s3 数据从一个 EMR 集群读取到另一个 EMR 集群?