2017-02-21 4 views
1

写真をローカルにAWS S3に保存するPHP Webアプリケーションを移行していて、メンテナンス期間を過ぎることはできません。
S3写真が一般公開されます。ローカルファイルからPHPのAWS S3への移行

  1. を新しい写真はS3に保存され、ローカルに保存され、それ以上の新しいファイルがありませんので、S3 APIを実装:

    これは、私は、次のよのステップです。

  2. 画像をリファクタリングして、ローカル画像とs3画像を表示できるようにします。後者はパブリックURLを使用して表示されます。
  3. データベースフラグを追加して、そのピクチャがローカルに保存されているかS3に保存されているかを判断します。
  4. AWS CLIを使用してローカルファイルをS3に移行します。ほぼ10万枚の写真がありますが、タイムアウトを避けるために1回のクライアントでそれを行うつもりです。
  5. 問題:移行後、S3でそれらのオブジェクトを取得できますが、公開URLはデータベースに保存されません。
  6. ソリューション:各クライアントからスクリプトを実行し、パブリックURLを持たないデータベースレコードをフェッチし、それらのURLをS3でフェッチし、データベースレコードをURLで更新し、フラグを変更して現在格納されていることを示しますs3で。

より良い/よりスムーズな方法がありますか?

答えて

0

S3オブジェクトの公開URLは変更されませんS3オブジェクトのURLを連結するために必要なすべての情報を含んだpayloadでトリガされますので、私はそれをハードコード。

1

データベースが公開されているか、またはRDSインスタンスの場合、オブジェクトがアップロードされるとデータベースにレコードを挿入/更新するラムダ関数を作成できます。あなたはS3オブジェクトはuser-defined metadataは(暗号化することができる)データベースの主キーを指定する属性を追加アップロードすると、次のtutorial

で説明されているものと同様に

オブジェクトは、S3ラムダ関数にアップロードされるとは

+0

元のオブジェクトのURLを公開するにはどうすればよいですか? –

+1

申し訳ありませんが、私はそれをよりよく説明するために私の答えを詳述しました –

関連する問題