Skip to main content
本製品の最新リリースがご利用いただけます。
日本語は機械翻訳による参考訳です。内容に矛盾や不一致があった場合には、英語の内容が優先されます。

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

StorageGRID で使用するための S3 REST API を実装する際には、以下の推奨事項に従ってください。

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

アプリケーションが、オブジェクトが実際には存在しないと想定されるパスにオブジェクトが存在するかどうかを定期的にチェックする場合は、「Available」"一貫性"を使用する必要があります。例えば、アプリケーションがPUTする前にHEADで場所を確認する場合は、「Available」の整合性を使用する必要があります。

それ以外の場合、HEAD操作でオブジェクトが見つからない場合、同じサイトにある2つ以上のストレージノードが利用できない場合、またはリモートサイトにアクセスできない場合は、多数の500 Internal Server Errorが発生する可能性があります。

各バケットの「利用可能」整合性は、"PUT Bucketの一貫性"リクエストを使用して設定するか、個々のAPI操作のリクエストヘッダーで整合性を指定することができます。

オブジェクトキーに関する推奨事項

オブジェクトキー名については、バケットが最初に作成された時期に基づいて、以下の推奨事項に従ってください。

StorageGRID 11.4 以前で作成されたバケット
  • オブジェクトキーの最初の4文字にランダムな値を使用しないでください。これは、以前のAWSのキープレフィックスに関する推奨事項とは対照的です。代わりに、 `image`のような非ランダムで非一意のプレフィックスを使用してください。

  • 以前のAWSの推奨事項に従って、キーのプレフィックスにランダムで一意の文字を使用する場合は、オブジェクトキーのプレフィックスにディレクトリ名を追加してください。つまり、この形式を使用してください:

    mybucket/mydir/f8e3-image3132.jpg

    この形式の代わりに:

    mybucket/f8e3-image3132.jpg

StorageGRID 11.4以降で作成されたバケット

パフォーマンスのベストプラクティスを満たすために、オブジェクトのキー名を制限する必要はありません。ほとんどの場合、オブジェクトキー名の最初の4文字にはランダムな値を使用できます。

ヒント ただし、短時間後にすべてのオブジェクトを継続的に削除するS3ワークロードは例外です。このユースケースにおけるパフォーマンスへの影響を最小限に抑えるため、数千個のオブジェクトごとにキー名の先頭部分を日付などの値で変更してください。例えば、S3クライアントが通常1秒あたり2,000個のオブジェクトを書き込み、ILMまたはバケットライフサイクルポリシーによって3日後にすべてのオブジェクトが削除されるとします。パフォーマンスへの影響を最小限に抑えるには、次のようなパターンを使用してキーに名前を付けます: /mybucket/mydir/yyyymmddhhmmss-random_UUID.jpg

「範囲読み取り」に関する推奨事項

"保存されたオブジェクトを圧縮するグローバルオプション"が有効になっている場合、S3クライアントアプリケーションは、返すバイト範囲を指定するGetObject操作の実行を避ける必要があります。これらの「範囲読み取り」操作は非効率的です。これは、StorageGRIDが要求されたバイトにアクセスするためにオブジェクトを効果的に解凍する必要があるためです。非常に大きなオブジェクトから少数のバイト範囲を要求するGetObject操作は特に非効率的です。たとえば、50 GBの圧縮オブジェクトから10 MBの範囲を読み取ることは非効率的です。

圧縮されたオブジェクトから範囲を読み取る場合、クライアントからのリクエストがタイムアウトする可能性があります。

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