4.4. Ceph Object Gateway
JSON ステートメントに対する SQL クエリーは、key
を array
または object
と混同しなくなりました。
以前は、JSON 構造の SQL ステートメントの結果が、key
を array
または object
と混同する場合がありました。その結果、`venue オブジェクト内に id
を key
値として持つ定義されたとおりの venue.id
が存在せず、JSON オブジェクト全体をトラバースし続けることになりました。
この修正により、SQL エンジンが修正され、key
が array
または object
と混同することがなくなり、クエリーに従って正しい結果が返されるようになりました。
ローカル認証エンジンのエラーコードが正しく返されるようになる
以前は、ローカル認証エンジンが認証順序の最後に指定され、前の認証エンジンが適用できない場合に、不正なエラーコードが返されていました。その結果、誤ったエラーコードが返されました。
この修正により、以前の外部認証エンジンがリクエストの認証に適用できない場合、コードはローカル認証エンジンのエラーコードを返し、正しいエラーコードが返されるようになります。
"日付" を含むルールでライフサイクル遷移が機能するようになる
以前は、ライフサイクル移行コードのバグにより、"日付" を含むルールが処理されず、条件を満たすオブジェクトが他のストレージクラスに移行されませんでした。
この修正により、"日付" を含むルールに対してライフサイクルの移行が機能するようになります。
ライフサイクルの移行時に通知が送信されるようになる
以前は、移行時にディスパッチするロジック (有効期限とは別) が欠落していました。このため、移行時に通知が表示されませんでした。
この修正により、新しいロジックが追加され、ライフサイクルの移行時に通知が送信されるようになりました。
IAM ポリシー権限によるバッチオブジェクトの削除が許可される
以前は、バッチ削除プロセス (マルチオブジェクト削除とも呼ばれる) 中に、明示的または暗黙的な拒否が存在しない場合は、IAM ポリシーの誤った評価により、AccessDenied
出力が返されていました。許可権限があっても、AccessDenied
が発生しました。その結果、バッチ削除は AccessDenied
エラーで失敗していました。
この修正により、IAM ポリシーが有効になっている場合、ポリシーは期待どおりに評価され、バッチ削除が正常に行われます。
S3 オブジェクトを削除すると、ストレージスペースが適切に解放されるようになる
以前は、CopyObject を削除したときにサイズが 4 MB を超える場合、そのオブジェクトによって使用されていたすべてのストレージ領域が適切に解放されないことがありました。この修正により、ソースハンドルと宛先ハンドルがさまざまな RGWRados 呼び出しパスに明示的に渡され、期待どおりにストレージが解放されます。
一時的な認証情報を使用した S3 要求に対して、assume-role のクォータおよびレート制限設定が適切に適用される
以前は、一時的な認証情報を使用して S3 リクエストを処理する際に、assume-role を使用しているユーザーの情報がバックエンドストアから正常にロードされませんでした。その結果、一時認証情報ではユーザークォータまたはレート制限設定は適用されませんでした。
この修正により、一時認証情報で認証し、すべての設定が正常に適用される場合でも、情報はバックエンドストアからロードされるようになりました。
事前署名された URL が Keystone EC2 認証で受け入れられるようになる
以前は、適切に構築された事前署名された HTTP PUT URL は、403/Access Denied
エラーを表示して予期せず失敗していました。これは、CORS を含む HTTP OPTIONS リクエストの処理で、認証が Keystone EC2 (Swift S3 エミュレーション) 経由であった場合に、一部の事前署名された URL の暗黙的な AWSv4 要求署名の計算を変更していたために発生しました。
この修正により、Keystone EC2 の場合に CORS HTTP OPTIONS の新しいワークフローが導入され、事前に署名された URL が失敗しなくなりました。
radosgw-admin 通知出力の不正な JSON が修正される
以前は、バケット通知がメタデータおよびタグフィルターで設定されている場合、get/list 出力の radosgw-admin
通知の出力は不正な JSON 形式で返されていました。その結果、出力を読み取る jquery などの JSON パーサーが失敗しました。
この修正により、radosgw-admin
の JSON 出力が修正されました。
クラスターが QAT と QAT 以外の Ceph Object Gateway デーモンの両方で設定できるようになる
以前は、QAT は新しいセットアップでのみ設定できました (Greenfield のみ)。そのため、QAT の Ceph Object Gateway デーモンは、非 QAT (通常の) Ceph Object Gateway デーモンと同じクラスターで設定できませんでした。
この修正により、QAT デーモンと非 QAT の Ceph Object Gateway デーモンの両方を同じクラスターに設定できます。
Ceph Object Gateway は、チェックサムおよびその他の仮のトラフィックと共に minio SDK を許容するようになる
以前は、minio クライアント SDK の一部のバージョンに、multipart オブジェクトの追加されたパート番号がありませんでした。これにより、multipart アップロードで予期しないエラーが発生しました。
この修正により、パート番号接尾辞の有無にかかわらずチェックサムが許可されます。この修正により、パートアップロードでチェックサムがアサートされていない場合、チェックサムタイプが init-multipart から推測できるようになります。
空のインスタンスを含む最新バージョン以外のオブジェクトのライフサイクルの移行が失敗しなくなる
以前は、バケットのバージョン管理が有効になっている場合、古いプレーンオブジェクトエントリーは、その raw データのヘッドや古いオブジェクトでインスタンスを "null" に更新することでバージョン管理されるように変換されていました。このため、インスタンスが空の最新バージョン以外のオブジェクトではライフサイクルの移行に失敗します。
この修正により、コードが修正され、バケットインデックスエントリーの更新時にインスタンスを空のままにし、バージョン管理に変換されるすべてのプレーンエントリーに対してライフサイクルの移行が機能するようになりました。
AST 構造 SQL ステートメントがクラッシュしなくなる
以前は、誤ったセマンティックが Parquet フローと組み合わされたため、SQL エンジンによって生成される AST 作成が間違っており、クラッシュが発生する場合がありました。
この修正により、AST 構造に対して安全チェックがより多く行われ、ステートメント処理時間が固定され、クラッシュが回避されます。
バケットポリシーの認可が期待どおりに機能するようになる
以前は、バケットの所有者のみが、バケットからのバケット通知の設定を実行、取得、および削除できました。これは、バケットポリシーがこれらの操作を実行する別のユーザーに承認した場合でも該当します。
この修正により、バケット通知を設定するための承認が期待どおりに機能するようになりました。
バケットポリシー評価が想定どおりに機能し、ポリシーで許可されるアクションのクロステナントアクセスが許可されるようになりました。
以前は、誤った値のバケットテナントが原因で、バケットポリシーの評価中に、S3 操作がバケットポリシーで明示的に許可されていてもアクセスが定義されていました。その結果、バケットポリシーの評価が失敗し、バケットポリシーによって許可済みとマークされた S3 操作は拒否されました。
この修正により、バックエンドストアからバケットポリシーを取得する際に、要求されたバケットテナント名が正しく渡されるようになりました。その後、テナントは S3 オペレーション要求の一部として渡されたバケットテナントと照合され、S3 操作は期待どおりに機能します。
SSL セッションは、複数のオブジェクトをアップロードするために接続を再利用できるようになる
以前は、SSL を使用した連続したオブジェクトのアップロード時に、各オブジェクトに対して暗号ネゴシエーションが発生していました。その結果、1 秒の転送レートごとのオブジェクトのパフォーマンスが低下します。
この修正により、SSL セッションの再利用メカニズムがアクティブになり、サポートするクライアントが既存の SSL 接続を再利用して複数のオブジェクトをアップロードできます。これにより、各オブジェクトごとに SSL 接続を再交渉する際のパフォーマンスのペナルティーを回避できます。