1. ホーム
  2. amazon-web-services

[解決済み] S3 - プリフィックスとは何ですか?そして、どのようなRatelimitsが適用されますか?

2022-12-02 20:54:10

質問

s3 prefix とはいったい何なのか、また、amazon の s3レート制限の公開 :

Amazon S3は、高いリクエストレートに対して自動的にスケーリングします。例えば アプリケーションは、バケツ1つにつき1秒間に少なくとも3,500のPUT/POST/DELETEおよび5,500のGETリクエストを達成することができます。 GETリクエストを1秒間にバケット内のプレフィックスごとに達成できます。バケット内のプレフィックス数には制限がありません。 バケット内のプレフィックス数には制限はありません。

プレフィックスとは何ですか?

プレフィックスにはデリミタが必要ですか?

すべてのファイルを "ルート" レベルで保存するバケットがある場合(プレフィックス/デリミターなしの完全にフラット)、それは単一の "prefix" とみなされ、上記のレート制限の対象となりますか?

私が解釈している方法は amazon のドキュメントでは を読む限り、このケースに該当し、フラット構造は単一の "prefix"と見なされるように思われます。(つまり、上記の公表された料金制限の対象となります)

あなたのバケット(管理者が作成したもの)が、次のようなオブジェクトキーを持つ4つのオブジェクトを持っているとします。 以下のオブジェクトキーを持っているとします。

開発/プロジェクト1.xls

財務/計算書1.pdf

プライベート/タックスドキュメント.pdf

s3-dg.pdf

s3-dg.pdf のキーはプレフィックスを持たないので、そのオブジェクトはバケツのルートレベルに直接表示されます。 バケツのルート レベルに直接表示されます。Development/ フォルダを開くと、Projects.xlsx が表示されます。 フォルダを開くと、その中に Projects.xlsx オブジェクトが表示されます。

上記の例では、s3-dg.pdfは他の接頭辞(Development/Finance/Private)のそれぞれと異なるレート制限(5500 GET requests /second)を受けるのでしょうか?


さらに混乱するのは、amazon が最初の N バイトをパーティション キーとして使用し、高カーディナリティ プレフィックスを使用することを奨励しているというブログをいくつか読みましたが、それが "flat file structure" を持つバケットとどのように相互作用するかがわからないのです。

どのように解決するのですか?

確かに、告知が矛盾しているように見えますね。正しく書かれていないだけで、情報は正しいのです。要するに

  1. 各プレフィックスは 1 秒間に最大 3,500/5,500 リクエストを達成できるため、多くの目的では 仮定 は、複数のプレフィックスを使う必要はないだろうということです。
  2. プレフィックスはオブジェクトの場所の全パス (最後の '/' まで) とみなされ、最初の 6-8 文字だけではハッシュされなくなりました。したがって、1秒間に最大2回のリクエストを達成するためには、データを任意の2つの"フォルダ"に分割するだけで十分です。(要求が 2 つの間で均等に分割される場合)

参考までに、私の説明要求に対するAWSサポートからの回答は以下の通りです。

Orenさん、こんにちは。

AWSサポートにご連絡いただきありがとうございます。

S3リクエストレートのパフォーマンス向上に関するAWSの投稿をお読みになったとのことですが に関するAWSの投稿をお読みになり、この発表に関して追加のご質問をお持ちのようですね。 ご質問をいただきました。

このアップグレードの前に、S3は100 PUT/LIST/DELETEリクエスト/秒、300 GETリクエスト/秒をサポートしていました。 秒、300 GET リクエストをサポートしていました。より高いパフォーマンスを実現するために ランダムハッシュ/プレフィックススキーマを実装する必要がありました。昨年から リクエストレートの上限は、PUT/POST/DELETEが3,500件/秒、GETが5,500件/秒に増加しました。 GETリクエスト/秒に増加しました。この増加は、多くの場合、アプリケーションにとって十分なものです。 プレフィックスをランダム化することなく、503SlowDown エラーを軽減することができます。 プレフィックスをランダム化することなく

しかし、新しい制限値で十分でない場合は、プレフィックスを使用する必要があります。 を使用する必要があります。プレフィックスには決まった文字数はありません。それは、バケツ名とオブジェクト名の間にある任意の文字列 バケツ名とオブジェクト名の間にある任意の文字列です。

  • バケット/フォルダ1/サブ1/ファイル
  • バケツ/フォルダ1/サブ2/ファイル
  • バケット/1/ファイル
  • バケット/2/ファイル

オブジェクト 'file' の接頭辞は次のようになります。 /folder1/sub1/ , /folder1/sub2/ , /1/ , /2/ . この例では、4 つの接頭辞に均等に読み込みを分散させると この例では、4 つのプレフィックスすべてに読み込みを均等に分散させると、22,000 リクエスト/秒を達成できます。 秒に達成できる。