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
时尝试base64
或binary
编码。
【讨论】:
以上是关于NodeJS - 从 S3 读取文件到 Lambda 中的 /tmp 文件夹的主要内容,如果未能解决你的问题,请参考以下文章
使用 NodeJS 和 AWS S3 将损坏/截断的 mp4 上传到 S3 存储桶
从 S3 复制文件时出现 AWS CodeBuild 错误 - COMMAND_EXECUTION_ERROR:原因:退出状态 1 (NodeJS)