amazon-web-services - 将 AWS S3 用于后端应用程序的最佳方式
问题描述
为了学习如何将后端连接到 AWS,我正在编写一个简单的记事本应用程序。在前端,它使用 Editor.js 作为传统 WYSIWYG 的替代方案。我想知道如何最好地同步用户上传的图像。
要从磁盘上传图像,我使用以下插件:https ://github.com/editor-js/image
在工具的配置中,我给了服务器的api端点来上传图片。作为响应,服务器必须将 url 发送到保存的文件。我的服务器将数据保存到 s3 并返回链接。
但是,如果有人一遍又一遍地添加和删除同一个文件怎么办?每次,都会有一个新的请求到 aws。
这是问题的主要部分,我应该在实践中以某种方式优化它吗?我正在考虑先将文件临时保存在我的服务器上,并且不时与 aws 进行同步。在实践中如何做到这一点?如果您能与我分享我可能错过的任何提示或资源,我将不胜感激。
我很抱歉我的英语可能出现错误,我会尽力而为。
谢谢你的帮助!
解决方案
我认为您应该在它们可用时立即将它们上传到 S3 。通过这种方式,您可以确保它们的可用性和对实例故障的抵抗力。S3 跨多个可用区 (AZ) 存储文件,确保可靠的长期存储。另一方面,实例仅在一个 AZ 内运行,如果它发生问题,您在实例上的所有数据都会丢失。因此,如果您等待上传,您可能会丢失整批图像。
除此之外,S3 的容量几乎是无限的,因此您不会面临任何存储短缺的风险。当您在实例上批量保存它们时,根据图像大小,可能会出现空间不足的情况。
最后,在 AWS 上开发应用程序的良好做法是使它们成为无状态的。这意味着您的实例应随时被视为一次性且可互换的。这是通过不在实例上存储任何用户数据来实现的。这使您能够自动扩展您的应用程序并使其具有容错性。
推荐阅读
- python - 为自动文档链接的视图代码部分启用突出显示
- javascript - ReferenceError Laravel 和 Javascript
- nativescript - 在 listView NATIVESCRIPT-VUE 之外使用 v-template
- c++ - 如何在 C++ 中重新实现包含 STL 指针容器的类的迭代器
- angular - 如何模拟 Observable 返回角度服务?
- html - 为什么删除边框后默认按钮会改变颜色?
- netcdf - CDO/NCO - 在维度上复制数据集
- ios - 将 CLLocationCoordinate2D 和半径转换为 GMSMapView 的缩放和中心点
- dns - JBOSS EAP 7.2 域无法启动默认服务器(服务器一,服务器二,服务器三)
- excel - 根据几个标准查找总和