如何将ActiveStorage Blob从生产S3存储桶复制/镜像到本地开发?

问题描述

我有一个生产系统,该系统使用Amazon S3存储桶来存储ActiveStorage Blob(Rails 6.0.3)。

对于开发,我使用Local服务是因为我不想无意间弄乱生产数据。

在本地复制/镜像/同步生产存储区的最佳方法是什么,以便我可以将其用作开发和测试的草稿?

我尝试在本地复制生产数据库并将存储桶直接复制到本地服务目录,但是ActiveStorage看不到带有正确键的blob。 (不确定为什么吗?)

我还看到了一些在云服务之间或从本地到云服务,而不是从云服务到本地的镜像服务的示例。

解决方法

本地存储按子目录组织

$ tree storage
storage
├── ZD # first 2 char
│   └── ou # third and fourth car
│       └── ZDouA9nEzJjWAx71Cmb3WVeY

,而S3以平面格式存储文件(在子目录下没有)。上面的文件将作为直接文件存储在存储桶下

ZDouA9nEzJjWAx71Cmb3WVeY

我不知道它适用于Rails(以及哪个版本)。但是我已经使用上述概念(Spree 4-使用Rails框架6)成功地将开发存储文件传输到S3。