2017-11-13 16 views
7

Amazon AWS S3にファイルを保存し、Postgresのドキュメントテーブルにこれらのファイルへの参照を保存します。私はベストプラクティスを探しています。 Python/Djangoを使用し、現在boto3.s3.key.Key().generate_url(...)から返されたURLを保存しています。しかしそれほど多くの問題:データベース内のAWS S3オブジェクトへの参照を格納するベストプラクティス?

  • URLからバケットとキーを解析する必要があります。
  • キー名をurldecodeする必要があります。
  • object versioningをサポートしていません。
  • ユニコードのサポートは、urlencode/decodeのステップのために、特に簡単になります。

私はバケット、キー、バージョンを3つの別々のフィールドに格納し、DBプライマリキーと安全にエンコードされたファイル名の組み合わせとしてキーを作成することを検討していますが、より良いアプローチがありましたか?

答えて

1

最高のESTアプローチであればわからないが、我々は保存:中(PostgresはネイティブUUIDタイプを持っている)、データベース内の

  • 一意のオブジェクトID(UUIDかもしれません)
  • バケット名とパスコンフィギュレーション(私たちは同じバケツ+パスの下で同じタイプのすべてのオブジェクトを格納するよう)

あなたは、少なくともできる方法:

    あなたの全体のデータベーステーブルを書き換えるhavigせずに別のバケツ/パスへの
  • 移動オブジェクト
  • ローカルストレージにS3からの切り替えあなたはとても
  • を選択した場合、あなたの主キー(例えばを捨てますテーブルを分割しながら)あなたのオブジェクトのトラックを失うことなく
関連する問題