2017-02-21 45 views
1

我正在迁移将Web图片本地存储到AWS S3的PHP Web应用程序,并且无法进入维护时段。
S3图片将公开可见。从本地文件迁移到PHP中的AWS S3

这是我操作如下:

  1. 实现S3 API,因此新的图片存储在S3并没有在本地保存更多的新文件。
  2. 重构图片列表,以便它可以显示本地和s3图片,后者将显示使用公共URL。
  3. 添加数据库标志以确定该图片是存储在本地还是在S3。
  4. 使用AWS CLI将本地文件迁移到S3。总共有近十万张图片,我打算每次只做一个客户端以避免超时。
  5. 问题:迁移后,我可以在S3中获取这些对象,但是我的公共URL没有存储在我的数据库中。
  6. 解决方案:通过每个客户端运行脚本,获取那些没有公用URL的数据库记录,在S3中获取这些URL,然后用URL更新它们的数据库记录,并更改它的标志以指示它现在存储在s3。

有更好的/更流畅的方式吗?

回答

0

S3对象的公共URL不会改变所需的全部信息的payload被触发,所以我硬编码了。

1

您的数据库是否可公开访问,或者如果是RDS实例,您可以创建Lambda函数以便在上载对象后向数据库插入/更新记录。

到当您上传S3对象添加user-defined metadata属性来指定数据库的主键(可加密)什么是在以下tutorial

解释类似。

一旦物体被上传到S3 lambda函数将包含来连接S3对象URL

+0

这将如何给我原始对象的公开URL? –

+1

对不起,我详细阐述了我的答案,以更好地解释它 –