[ Server ] AWS S3


AWS S3



AWSのS 3は、安全で可変なオブジェクト記憶空間を提供するAWS単純記憶サービスの略である.公式ドキュメントの説明では、Webサービスインタフェースを使用してデータを格納および取得できます.
S 3はファイルストアである.ログファイル、画像、ビデオ、圧縮ファイルなどをアップロードできます.HTML、CSS、JSファイルをアップロードしてサイトを管理することもできます.

S 3の構成



S 3はBucketとObjectからなる.
  • Object
    Key、Value、Version ID、Metadata、Cross Origin Resource Sharingなど、さまざまなコンポーネントを含むストレージ・ユニット.
    ->鍵->ファイル名
    ->Value:ファイルのデータ
    ->バージョンID:同じファイルの異なるバージョンのアップロードを支援するID
    ->metadata:アップロード日やファイルのOwnerなどのデータの自動生成
    ->CORS:
  • 機能により、他のBucketが1つのBucketのファイルにアクセスできるようになります.
  • Bucket
    オブジェクトを保存および管理します.Bucketの作成にはOwner権限が付与され、Bucket単位で各種機能を制御できます.
  • S 3整合性モデル


    以下、AWS 3のデータ整合性モデルの特徴を参照する.
    "Amazon S3은 모든 리전의 S3 버킷에 있는 새 객체의 PUT에 대해 한 가지 주의 사항을 제시함으로써 읽기 후 쓰기 일관성을 제공합니다. 주의할 점은 객체를 만들기 전에 (객체가 있는지 찾기 위해) 키 이름에 HEAD 또는 GET 요청을 하는 경우 Amazon S3가 읽기 후 쓰기에 대한 최종 일관성을 제공하는 것입니다.
    
    Amazon S3은 모든 리전의 덮어쓰기 PUT 및 DELETE에 대한 최종 일관성을 제공합니다."
    既存のRDSは同時性を有する.同期性とは、同じ時間にクエリされたデータが常に同じデータであることを保証することに基づいていることを意味します.ただし、分散ノードによるビッグデータの高速処理が主な目的であるNoSQLを使用すると、同期性を確保することは困難である.
    最終コンシステンシとは、データの変更が発生したときに、インスタントコンシステンシではありませんが、最終的にコンシステンシを維持する複数のノードに徐々に伝播することです.上述したS 3の特徴的な説明は、同期性は提供されないが、最終的には一貫性が保たれる.
    これは、オブジェクトが最初に作成された後にインポートされると、一貫性が得られ、オブジェクトが削除された後にインポートされると、一貫性のない結果が返されることを意味します.

    S 3メモリ


    S 3はハードディスクのコンセプトだけでなく、さまざまなタイプがあります.S 3ストレージを選択する場合は、用途や目的に応じて適切なストレージを使用する.
  • 典型S 3
  • S3 - IA
  • S3 - One Zone IA
  • Glacier
  • Intelligent Tiering
  • 一般S 3


    高耐久性と可用性のストレージは、最も一般的なストレージです.耐久性は、データの無損なリカバリであり、可用性はデータアクセスの使いやすさです.

    S3 - IA (Infrequent Access)


    ファイルに頻繁にアクセスする理由がなく、ファイルにアクセスする必要がある場合は、ファイルに迅速にアクセスする必要があります.通常のS 3に比べてコストは低いが、データへのアクセスには追加料金がかかる.マルチAZのサポートにより、可用性が向上します.

    S3 - One Zone IA


    1つのAZのみに依存するため、データへのアクセスに大きな制限が生じる可能性があります.AZサーバに問題が発生した場合、AZは使用できなくなり、パーティションストレージも使用できなくなります.サーバの問題が解決すればアクセスできます.この特徴により、可用性がやや低下します.価格はIAより安い.

    Glacier


    氷河を意味し、データアクセスがほとんど必要ない場合に適しています.データの格納にのみ使用されるため、コストは低くなります.しかし、データへのアクセスには4~5時間かかります.

    Intelligent Tiering


    データのアクセスサイクルを分析し、「頻度レベル」または「要求レベル」のいずれかに選択します.1ヶ月以上のデータ・アクセスがない場合はリクエスト・レイヤに分割し、データ・アクセスが数回発生した場合はFrequentレイヤに分割します.もちろん、Frequent Tierの方が高いです.

    Bucketアクセス


    S 3のBucketを作成すると、Bucketを作成したOwnerのみがアクセスできます.このBucketに外部からアクセスしようとすると、Access Deniedエラーが発生します.特定のユーザーまたは特定のグループBucketのみにアクセス権を付与する場合は、次の方法で付与できます.
  • bucketポリシーの変更
    パケットポリシーを変更すると、パケット内のすべてのファイルに変更が適用されます.パケットポリシーをパブリックに変更すると、そのパケット内のすべてのファイルに外部からアクセスできます.
  • アクセス制御リストの変更
    すべてのファイルを変更するパケットポリシーの変更とは異なり、各ファイルに異なるアクセス権を付与できます.
  • Use


    本人は学校主催の募集イベントで作品を制作する際にS 3を使用した.S 3を用いてユーザがアップロードした画像を記憶する.

    ブラウザjavaスクリプトは、JavaScript SDKを使用してAWS 3パケットと対話することによって画像を格納およびロードする方法である.
    Multierはsrcフォルダのconfigフォルダにあります.jsという名前のファイルを次のように記述します.
    const multer = require('multer');
    const multerS3 = require('multer-s3');
    const aws = require('aws-sdk');
    const s3 = new aws.S3({
      accessKeyId: process.env.S3_ACCESS_KEY,
      secretAccessKey: process.env.S3_PRIVATE_KEY,
      region: process.env.REGION,
    });
    
    const upload = multer({
      storage: multerS3({
        s3: s3,
        bucket: process.env.BUCKET_NAME,
        contentType: multerS3.AUTO_CONTENT_TYPE,
        acl: 'public-read',
        key: (req, file, cb) => {
          cb(null, `${Date.now()}_${file.originalname}`);
        },
      }),
      limits: { fileSize: 1000 * 1000 * 10 },
    });
    module.exports = upload;
    機密データ(例えばKey Value)について.envファイルによる管理は、上記のコードでも同様です.envファイルにアクセスしてkeyvalueを使用することができます.