S3 REST APIを実装する際の推奨事項

StorageGRIDで使用するためにS3 REST APIを実装する場合は、次の推奨事項を考慮してください。

存在しないオブジェクトに対するHEADの推奨事項

オブジェクトが存在しないはずのパスにオブジェクトが存在するかどうかをアプリケーションで定期的にチェックする場合は、Available整合性制御を使用します。たとえば、アプリケーションが特定の場所に対してPUT処理の前にHEAD処理を行う場合は、Available整合性レベルを使用してください。

そうしないと、使用できないストレージ ノードがある場合にHEAD処理でオブジェクトが見つからないと、「500 Internal Server Error」が大量に返される可能性があります。

PUT Bucket整合性要求を使用して各バケットにAvailable整合性制御を設定できます。または、個々のAPI処理の要求ヘッダーで整合性制御を指定することもできます。

オブジェクト キーの推奨事項

StorageGRID 11.4で作成されたバケットについては、オブジェクト キー名をパフォーマンスのベストプラクティスに合わせて制限する必要がなくなりました。たとえば、オブジェクト キー名の最初の4文字にランダムな値を使用できるようになりました。

StorageGRID 11.4より前のリリースで作成されたバケットについては、オブジェクト キー名に関する次の推奨事項に引き続き従ってください。

範囲を指定した読み取りの推奨事項

[Compress Stored Objects]オプション([Configuration] > [Grid Options])を選択した場合は、返されるバイト数の範囲を指定するGET Object処理をS3クライアント アプリケーションで実行しないようにしてください。StorageGRIDでは、要求されたバイトにアクセスするためにオブジェクトの圧縮を解除する必要があるため、このような範囲を指定した読み取り処理は効率的ではありません。非常に大きなオブジェクトから小さい範囲のバイト数を要求するGET Object処理は特に効率が悪く、たとえば、50GBの圧縮オブジェクトから10MBの範囲を読み取る処理は非常に非効率的です。

圧縮オブジェクトから範囲を読み取ると、クライアント要求がタイムアウトになる場合があります。

注: オブジェクトを圧縮する必要があり、クライアント アプリケーションが範囲読み取りを使用する必要がある場合は、そのアプリケーションの読み取りタイムアウトを増やしてください。