[AWS]置換ファイル格納(S 3)



概要


現在進行中のプロジェクトには、EC 2のファイルストレージとDBが含まれています.MVPは完了しているので、アーキテクチャの構成を変更したい.
まず、サーバに格納されている静的イメージファイルを別のストレージに移動し、サーバとファイルストレージを物理的に分離する必要があります.選択画像リポジトリはS 3である.調味料が一番多いので

なぜファイル・リポジトリを切断しますか?


実際,理論や概念による分離理由は不明である.必要性を感じただけに、リポジトリを分離することにしましたが、開発->導入中にイメージファイルにうっかり触れてしまうことがありました.人々の手から遠ざかることを考慮して、ファイル・リポジトリを分離することにした.

必要なモジュール

  • multer-s3
  • aws-sdk
  • S 3設定


    Bucketの作成


    S 3で作成されたリポジトリをBucketと呼ぶ.アマゾンS 3に移動し、簡単にパケットを作成する.

    Credentials


    https://docs.aws.amazon.com/sdk-for-javascript/v2/developer-guide/setting-credentials-node.html
    aws documentを表示すると、javascriptで認証情報を設定するさまざまな方法が表示されます.
    環境変数を使用する方法を選択します!
    環境変数の方法でnodeモジュールdotnvを使用して設定できます.

    独自のアクセスキー、secretアクセスキーを設定する方法

  • アマゾンawsサービス登録
  • の右上隅にある[My Security Credentials]をクリックし、ドロップダウンメニューの[My Security Credentials]をクリックします.
  • アクセスキータブ
  • 以前にリリースされたAccessキーがあれば、画面で直接確認できます.
  • Secretアクセスキーは、初期アクセスキーの発行時にモードウィンドウに表示されてもよいし、csvファイルにダウンロードされて保存されてもよい.以前に送ったことがありますが、どこかに記録がない場合は、再送をお勧めします...
  • dotv環境変数の設定



    終わります.とても簡単です...

    Multier-s 3ミドルウェア設定

    const multer = require("multer");
    const multerS3 = require("multer-s3");
    const aws = require("aws-sdk");
    const s3 = new aws.S3();
    
    module.exports = {
      uploadAvatarS3: multer({
        storage: multerS3({
          s3,
          bucket: "버킷 이름",
          acl: "public-read",
        }),
      }),
    };
    ACLはアクセス制御リストの略で、ファイルの権限を設定します.公式文書によると、所有者はすべての権限を持ち、外部の人は読書権限しかない.本書の所有者がBucket ownerかNode Serverかは不明ですが、まずpublic-readに設定します.

    テスト


    ルータの作成

    postsRouter
      .route("/posts/s3")
      .post(uploadAvatarS3.single("test"), (req, res) => {
        console.log(req.file);
        return res.send({ message: "하하하" });
      });
    まずS 3にファイルがあるかどうか見てみましょう.req.fileの形態が変化したかどうかを調べるテストapiが作成されました.

    API呼び出し結果


    apiはinsomiaを簡単に呼び出した.ビューの作成が面倒...

    既存のMultierでのreqfile.pathはreqfile.位置が入れ替わりました.