在PHP中从本地文件迁移到AWS S3

时间:2017-02-21 22:20:50

标签: php amazon-web-services amazon-s3

我正在迁移一个将Web图片本地存储到AWS S3的PHP Web应用程序,它不能进入​​维护窗口。
S3图片将公开显示。

这是我正在遵循的步骤:

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

2 个答案:

答案 0 :(得分:1)

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

类似于以下tutorial

中解释的内容

当您上传s3对象时,添加user-defined metadata属性以指定数据库主键(可以加密)。

一旦将对象上传到s3,将使用payload触发lambda函数,其中包含连接s3对象url所需的所有信息

答案 1 :(得分:0)

S3对象的公共URL没有改变,因此我对其进行了硬编码。