上传到 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 存储桶的主要内容,如果未能解决你的问题,请参考以下文章

代号一上传图片到S3存储桶权限

如何将图像上传到 s3 存储桶

如何将 pdf 上传到 S3 存储桶?

将多个文件上传到 Terraform 中的多个 S3 存储桶

将 PDF 内容上传到 S3 存储桶

使用aws cli将S3对象上传到存储桶后如何获取它?