Appwrite 存储满足无限 S3 的需求
Appwrite是一款开源的后端即服务 (BaaS),它通过提供一套 REST API 来满足您的核心后端需求,从而抽象化构建现代应用程序的所有复杂性。Appwrite 可以处理用户身份验证和授权、实时数据库、云函数、Webhook 等等!如果缺少任何功能,您可以轻松地使用您喜欢的后端语言扩展 Appwrite。
Appwrite 的核心功能之一是Appwrite Storage。它允许您上传、查看、下载和查询项目文件。Appwrite Storage 不仅负责加密、压缩和防病毒扫描,还基于 Appwrite 灵活而简单的权限系统构建。Appwrite 允许您存储任何类型的文件,例如文本文档、图标、图像、视频等等。
🚀 Appwrite 0.13 版本新增功能
Appwrite 0.13 版本提供更强大的存储服务!现在您可以将文件分组到存储桶中,以便更好地组织文件,并更有效地控制文件大小和扩展名。您还可以为每个存储桶指定不同的权限,并启用加密和压缩等附加功能。
此外,您现在可以上传无大小限制的文件。此版本支持分块上传,您可以将文件分割成 5MB 的块,逐步上传文件,直至达到存储桶设置允许的最大大小。不用担心,分块上传逻辑已集成在我们的 SDK 中,如果检测到大于 5MB 的文件,分块上传将自动启动。还有一个小秘密!我们的 SDK 现在接受一个onProgress回调函数,每次成功处理新块时都会触发该回调函数。实现进度条从未如此简单 💪
最后,Appwrite Storage 不再受限于硬盘容量!Appwrite 0.13 版本现已支持将存储服务与Amazon S3或DigitalOcean Spaces等云存储提供商连接。有了这些适配器,您再也不用担心空间不足或因 Appwrite Storage 而导致的带宽限制。更多云存储提供商即将上线,敬请期待😎。在本指南中,我们将介绍如何使用 AWS S3 作为存储适配器来设置 Appwrite Storage。
🌊 Amazon S3 设置
在开始使用 Appwrite 之前,我们先来准备一下 Amazon S3 存储桶。登录 AWS 控制台后:
- 使用搜索栏查找
S3带有绿色背景水桶图标的服务,然后点击橙色按钮Create bucket,您将被重定向到该Create bucket页面。 - 接下来,配置 Appwrite 文件存储。大多数选项都由您决定,但请务必启用该
Block all public access开关——您需要阻止所有公共访问。(注意:我不建议启用服务器端加密,因为 Appwrite 支持此功能,您可以从 Appwrite 进行控制。) - 最后,请务必为您的存储桶设置一个唯一的名称。温馨提示:此名称仅存储在
.env您的 Appwrite 实例文件中,用户永远不会看到它。这意味着,您可以根据需要设置一个简单或复杂的名称。
请务必记下这些Bucket name值AWS Region,稍后在将 Appwrite 连接到 Amazon S3 时会用到它们。就我而言,它们是appwrite-project-x-bucket和eu-central-1,如上面的屏幕截图所示。
最后,您需要获取一组访问密钥,以允许 Appwrite 从我们新建的存储桶中读取和写入数据。为此,请点击右上角的用户名,然后选择“获取密钥” Security credentials。打开“获取密钥Access keys”部分,然后点击蓝色按钮Create New Access Key。在弹出的窗口中,点击“获取密钥” Show Access Key,您将看到两个密钥。第一个密钥名为“<密钥名称>” Access Key,第二个密钥名为“<Secret Key密钥名称>”。请记下这两个密钥,但请注意,私钥是非常敏感的信息,AWS 以后不会向您显示。
搞定!我们已经成功设置了 Amazon S3,并且拥有了所有必需的凭证。接下来,让我们看看将 Appwrite 连接到新创建的存储桶有多么简单。
🧰 将 Appwrite 连接到 Amazon S3
开始之前,请确保您的 Appwrite 实例已启动并运行。安装 Appwrite 非常简单,只需运行一条命令即可:
docker run -it --rm \
--volume /var/run/docker.sock:/var/run/docker.sock \
--volume "$(pwd)"/appwrite:/usr/src/code/appwrite:rw \
--entrypoint="install" \
appwrite/appwrite:latest
要了解更多安装过程信息,您可以查看我们的安装指南。
Appwrite 实例启动并运行后,我们就可以配置存储适配器了。为此,我们打开配置.env文件并找到 `<installation_directory> _APP_STORAGE_DEVICE`。目前,它设置为 ` <installation_directory> Local`,但由于我们要使用 Amazon S3,所以将其更改为 ` <installation_directory> S3`。使用新的存储提供商后,我们需要添加新的变量:
_APP_STORAGE_DEVICE=S3
_APP_STORAGE_S3_BUCKET=YOUT_BUCKET
_APP_STORAGE_S3_REGION=YOUR_REGION
_APP_STORAGE_S3_SECRET=YOUR_ACCESS_SECRET
_APP_STORAGE_S3_ACCESS_KEY=YOUR_ACCESS_KEY
我们从哪里获取这些信息?😨 首先,您可以填写访问密钥和秘密密钥,这些密钥是我们之前在 Amazon AWS 控制台中创建安全凭证时获取的。您还应该有存储桶名称和区域信息,这些信息来自存储桶创建过程。
配置好所有这些环境变量后,我们可以保存文件并使用 `docker restart appwrite` 命令重启 appwrite docker-compose up -d。你有没有注意到 Docker 非常智能,它只会重启那些使用了你刚刚修改过的变量的容器?🤯
Appwrite实例重启后,创建一个新账户和一个新项目。在左侧菜单中,选择“存储”,然后创建一个新的存储桶。最后,将文件上传到您的存储桶中。
您可以看到文件已成功上传,现在可以像往常一样开始使用 Appwrite 了!要确认您确实正在连接到 Amazon S3,请访问您的存储空间,您会在那里看到该文件。
恭喜!您已成功将 Appwrite 连接到 Amazon S3 🥳 如果您计划直接使用 Amazon 存储桶中的文件,请注意以下几点:
- 所有文件在存储到 Amazon S3 之前都使用 GZIP 压缩进行压缩。如果您计划使用该文件,则需要在下载后进行解压缩。
- 默认情况下,Appwrite Storage 中新建的存储桶会启用加密。这意味着您必须先解密文件才能查看。如果您计划从 Amazon S3 下载文件,建议您禁用加密。
- 对于大于 20MB 的文件,所有压缩、加密和防病毒处理都将跳过。这些文件将以纯文本文件的形式存储在您的 Amazon S3 中。
👨🎓 结论
每个项目最害怕的就是应用程序的可扩展性差。得益于 Appwrite Storage 服务新推出的提供商系统,您现在可以将 Appwrite 连接到外部存储提供商,而无需将文件存储在系统上。这不仅可以避免硬盘空间和带宽限制,还能让您将自己喜欢的存储提供商与 Appwrite 结合使用。正如您在上面的教程中看到的,只需几个步骤即可轻松将 Appwrite 连接到 Amazon S3!
如果您有项目想要分享、需要帮助,或者只是想成为 Appwrite 社区的一份子,我非常欢迎您加入我们的官方 Appwrite Discord 服务器。我迫不及待地想看看您的作品!
📚了解更多
您可以利用以下资源了解更多信息并获得帮助:
文章来源:https://dev.to/appwrite/appwrite-storage-meets-limitless-s3-1g89



