Heroku Dyno中的Node.js应用程序使用什么API来读取/写入存储在Amazon S3上的文件?

时间:2019-04-27 10:25:03

标签: node.js heroku amazon-s3

在云(heroku)上运行的应用程序没有持久的本地文件系统。

Getting Started on Heroku with Node.js说...

  

使用数据库或对象存储,而不是写入本地文件系统

...和Using AWS S3 to Store Static Assets and File Uploads说明了如何配置S3(即创建存储桶)-但没有说明如何使用它!

因此,如果Node.js应用程序要使用存储桶(以便从文件中读写数据),那么它将使用什么API?

  • 它是否可以使用文件系统API(例如fs包)-例如,将S3存储桶安装为文件系统驱动器(对Heroku“ Dyno”中的应用程序的软件可见)作为文件系统驱动器,名为例如\data
  • 或者应用程序必须使用特定于Amazon的API,例如this topic的答案中提到的Node.js的Amazon S3客户端库之一?
  • 还是使用亚马逊的S3 REST API

我主要想知道是否可以通过fs软件包来访问它,即是否将其作为文件系统驱动器安装(名称为/data,以便例如我可以阅读和写/data/hello.txt

如果可以将其作为驱动器进行访问,则可能是最简单或最熟悉的API,而且最容易开发,例如因为当应用程序在开发计算机上运行时,它可以使用本地文件系统(而不是S3),并且与部署到云中的/data驱动器相同。

1 个答案:

答案 0 :(得分:1)

AWS S3是使用基于http的API的对象存储服务。

  

它可以使用文件系统API(例如fs软件包)吗?例如,将S3存储桶安装为文件系统驱动器(对Heroku“ Dyno”中的应用程序的软件可见),例如文件系统驱动器。 \数据?

无法在文件系统中挂载S3存储桶。您仍然可以将文件保存在文件系统中,然后将其异步复制到存储桶中,但是请注意,Heroku使用临时存储,这意味着只能从单个Dyno进行访问,并且如果该Dyno停止,重新启动或移动,则所有文件在本地系统中将会丢失。

您猜到了,推荐的方法是使用S3 http API或aws-sdk。是explained in more details here