S3 REST API を実装する際の推奨事項
StorageGRID で使用するために S3 REST API を実装する場合は、次の推奨事項を考慮してください。
存在しないオブジェクトに対する HEAD の推奨事項
オブジェクトが実際に存在しないと思われるパスにオブジェクトが存在するかどうかをアプリケーションが定期的にチェックする場合は ' 使用可能な整合性制御を使用する必要がありますたとえば ' アプリケーションがその場所に配置する前にその場所に注意する場合は ' 利用可能な整合性制御を使用する必要があります
そうしないと、使用できないストレージノードがある場合に HEAD 処理でオブジェクトが見つからないと、「 500 Internal Server Error 」が大量に返される可能性があります。
PUT Bucket consistency 要求を使用して各バケットに「 available 」整合性制御を設定するか、または個々の API 処理の要求ヘッダーで整合性制御を指定できます。
オブジェクトキーの推奨事項
StorageGRID 11.4 以降で作成されたバケットでは、オブジェクトキー名をパフォーマンスのベストプラクティスに準拠するように制限する必要はなくなりました。たとえば、オブジェクトキー名の最初の 4 文字にランダムな値を使用できるようになりました。
StorageGRID 11.4 より前のリリースで作成されたバケットの場合は、オブジェクトキー名に関する次の推奨事項に進みます。
-
オブジェクトキーの最初の 4 文字に、ランダムな値を使用しないでください。これは、 AWS が以前に推奨していたキープレフィックスの推奨事項とは異なります。代わりに 'image' のような ' 非ランダムで一意でない接頭辞を使用してください
-
AWS の以前の推奨事項に従ってキープレフィックスにランダムな一意の文字を使用する場合は、オブジェクトキーの前にディレクトリ名を指定してください。つまり、次の形式を使用します。
mybucket/mydir/f8e3-image3132.jpg
次の形式は使用しないでください。
mybucket/f8e3-image3132.jpg
「範囲の読み取り」に関する推奨事項
「格納オブジェクトの圧縮」オプション( * configuration * > * System * > * Grid options * )を選択した場合は、 S3 クライアントアプリケーションでバイト範囲を指定した GET Object 処理を実行しないでください。StorageGRID は要求されたバイトにアクセスするためにオブジェクトを圧縮解除する必要があるため ' これらの “range read” 操作は非効率的です非常に大きなオブジェクトから小さい範囲のバイト数を要求する GET Object 処理は特に効率が悪く、たとえば、 50GB の圧縮オブジェクトから 10MB の範囲を読み取る処理は非常に非効率的です。
圧縮オブジェクトから範囲を読み取ると、クライアント要求がタイムアウトする可能性があります。
オブジェクトを圧縮する必要があり、クライアントアプリケーションが範囲読み取りを使用する必要がある場合は、アプリケーションの読み取りタイムアウトを増やしてください。 |