上传到 S3 存储桶
Posted
技术标签:
【中文标题】上传到 S3 存储桶【英文标题】:upload to S3 bucket 【发布时间】:2017-04-19 04:35:09 【问题描述】:我是 Elastic Beanstalk 的新手,刚刚上传了一个 NodeJs 应用程序。 我想知道是否可以将文件夹“链接”(如 unix 符号链接)到 S3 存储桶?
将“/recordings”指向 S3:
var filename = 'recordings/' + match[1] + '.wav';
var file = fs.createWriteStream(filename);
var request = https.get(url, function(response)
response.pipe(file);
file.on('finish', function()
file.close();
).on('error', function(err)
fs.unlink(file);
console.log('error downloading recording');
);
【问题讨论】:
不,这是不可能的,因为 S3 不是文件存储,而是对象存储(亚马逊称其为 Internet 存储),它的目的是通过其 REST API(或 SDK在后台使用 REST API),因此它没有文件系统功能。 【参考方案1】:您可以使用 s3fs-fuse 之类的工具将 S3 存储桶挂载到您的文件系统。但是,通常不建议这样做,因为 S3 并非旨在用作块存储设备。
作为 s3fs 自述文件:
通常 S3 无法提供与本地相同的性能或语义 文件系统。更具体地说:
随机写入或附加到文件需要重写整个文件 列出目录等元数据操作性能不佳 由于网络延迟 最终一致性可以暂时产生 陈旧数据没有文件或目录的原子重命名 没有协调 安装同一个存储桶的多个客户端之间 没有硬链接
在您的 Node 应用程序中使用 S3 的最佳方式是使用 AWS SDK for javascript in Node.js。
【讨论】:
以上是关于上传到 S3 存储桶的主要内容,如果未能解决你的问题,请参考以下文章