4.4. Ceph Object Gateway
AWS CLI を使用したマルチパートアップロードで Ceph Object Gateway がクラッシュしなくなった
以前は、AWS CLI を使用したマルチパートアップロード中に、AWS S3 および AWS SDK で導入されたチェックサムアルゴリズムとレポート動作、具体的には新しい CRC64NVME チェックサムアルゴリズムが原因で RGW がクラッシュしていました。
この修正により、Ceph Object Gateway は不明なチェックサム文字列を安全に処理できるようになりました。その結果、AWS CLI を使用したマルチパートのアップロードによって Ceph Object Gateway がクラッシュすることはなくなりました。
削除されたオブジェクトはバケットリストに表示されなくなる
以前は、CompleteMultipart
と AbortMultipart
のアップロードで競合があり、一貫性のない結果が生じる可能性がありました。その結果、オブジェクトは、存在しなくなった後でもバケットリストに表示される可能性がありました。
この修正により、AbortMultipart
アップロードでシリアライザーが使用されるようになり、適切に削除されたオブジェクトはバケットリストに表示されなくなりました。
Ceph Object Gateway はオブジェクトの削除中にクラッシュしなくなった
以前は、初期化されていない check_objv
パラメーター変数によって、オブジェクト削除パス内の無効なメモリーアドレスにアクセスする場合がありました。その結果、セグメンテーション違反が発生しました。
この修正により、check_objv
パラメーターは常に初期化され、オブジェクトが期待通りに削除されるようになりました。
copy-object
で末尾のオブジェクトが誤って削除されなくなった
以前は、末尾のオブジェクトに参照カウント不変がありましたが、オブジェクトがそれ自身にコピーされたときには維持されませんでした。これが原因で、既存のオブジェクトがコピーされるのではなく、変更されました。その結果、末尾のオブジェクトへの参照が減少していました。末尾オブジェクトの参照カウント (refcount) が 0 になると、それらのオブジェクトが次のガベージコレクション (GC) サイクル中に削除されました。
この修正により、自分自身へのコピーを完了しても、末尾オブジェクトの参照カウントが減少することはなくなりました。
間違ったサムプリントが追加された場合、AssumeRoleWithWebIdentity
操作が期待どおりに失敗するように
以前は、コード内でブールフラグが誤って設定されていたため、CreateOIDCProvider 呼び出しで誤ったサムプリントが登録されていても、AssumeRoleWithWebIdentity
操作は成功していました。その結果、失敗するはずだった AssumeRoleWithWebIdentity
が成功しました。
この修正により、CreateOIDCProvider
呼び出しで正しいサムプリントが登録されていない場合、ブールフラグは設定されなくなります。その結果、エンドユーザーが CreateOIDCProvider
呼び出しで正しいサムプリントを提供しない場合、AssumeRoleWithWebIdentity
操作は期待どおりに失敗するようになりました。
Ceph Object Gateway は、RADOS が最大プール容量に達したときにオブジェクトを削除できるように
以前は、RADOS プールが最大クォータに近づくと、Ceph Object Gateway はオブジェクトを削除できませんでした。
この修正により、Ceph Object Gateway は RADOS が最大プールしきい値に達した場合でもオブジェクトを削除できるようになりました。
コピーされたバケットでユーザーの Put Object
権限が認識されるように
以前は、Put Object
のアクセス権限を持つコピー元バケットのバケットポリシーは、コピーされたバケットでは認識されませんでした。その結果、コピーされたバケットにアクセスすると、Access Denied
エラーが発生していました。
この修正により、Put Object
の権限評価中にコピー元のバケットポリシーが読み込まれ、コピーされたバケットへのユーザーアクセスが期待どおりに認識されるようになりました。
Parquet オブジェクトに対する大規模なクエリーで Out of memory
エラーが発生しなくなりました。
以前は、クエリーが Parquet オブジェクトで処理されるときに、そのオブジェクトが大きなチャンクで読み取られる場合がありました。これが原因で、Ceph Object Gateway はメモリーにより大きいバッファーをロードし、ローエンドマシンではそのサイズが大きすぎました。特に、Ceph Object Gateway が大量のメモリーを消費する OSD プロセスと同じ場所に配置されていた場合、メモリーは影響を受けます。Out of memory
エラーが原因で、OS は Ceph Object Gateway プロセスを強制終了しました。
この修正により、列チャンクを読み取るためのリーダーバッファーサイズの制限が更新されました。デフォルトのサイズは現在 16 MB で、Ceph Object Gateway 設定ファイルを通じてサイズを変更できます。
値が正以外の場合に radosgw-admin
がクラッシュしなくなる
以前は、radosgw-admin bucket reshard
コマンドを実行するときに、ゼロや負の数など、正でない --num-shards
値を使用すると、radosgw-admin
がクラッシュしていました。
この修正により、--num-shards
値がチェックされ、正でない値が指定された場合はエラーメッセージが出されます。その結果、radosgw-admin
reshard コマンドは期待どおりに実行され、クラッシュが発生することはありません。
Ceph Object Gateway は署名検証中に失敗しなくなった
以前は、JSON Web Token (JWT) の署名検証に、最初の x5c 証明書が使用されていない場合、検証は失敗していました。
この修正により、最初の証明書でない場合でも、署名検証に正しい証明書が選択されるようになります。その結果、署名の検証は期待どおりに完了します。
バケットのバージョン管理機能が一時的に停止している場合でも、設定されたライフサイクルルールに従ってオブジェクトが削除されるようになりました
以前は、ライフサイクルコードのエラーにより、バケットのバージョン管理が一時停止状態の場合、ライフサイクルプロセスでオブジェクトが削除されませんでした。その結果、オブジェクトはバケットリストに引き続き表示されました。
この修正により、ライフサイクルコードが修正され、ライフサイクルプロセスでルールセットに従ってオブジェクトが削除され、オブジェクトがバケットリストに表示されなくなりました。
マルチパートアップロードでオブジェクトタグを追加できるように
以前は、Ceph Object Gateway S3 マルチパートアップロードオブジェクトタグは、クライアントから送信されたときに認識されませんでした。その結果、クライアントは、マルチパートアップロード中の初期オブジェクト作成時にオブジェクトタグを正常に適用できませんでした。
この修正により、オブジェクトタグが収集され、保存されるようになりました。その結果、オブジェクトタグを追加できるようになり、マルチパートアップロード中に認識されるようになりました。
STS 実装では 1024 バイトを超える暗号化キーがサポートされるように
以前は、Ceph Object Gateway STS 実装では 1024 バイトを超える暗号化キーをサポートしていませんでした。
この修正により、期待どおりに 1024 バイトを超える暗号化キーがサポートされるようになりました。
バケットログ設定では、同じソースバケットとターゲットバケットを設定できなくなった
以前は、バケットログ設定を指定するときに、ソースバケットとターゲットバケットが異なることを確認するチェックはありませんでした。
この修正により、ソースとターゲットが同じ場合、バケットログ設定は期待どおりに拒否されるようになりました。
Ceph Object Gateway は、kafka
のエラーメッセージの不適切な処理によってクラッシュしなくなった
以前は、kafka
メッセージブローカーのエラー状態が正しく処理されませんでした。その結果、場合によっては Ceph Objet Gateway がクラッシュすることがありました。
この修正により、kafka
エラーメッセージが正しく処理され、Ceph Object Gateway のクラッシュは発生しなくなりました。
Bugzilla:2327774, Bugzilla:2343980
ACL バケット操作が期待どおりに動作するように
以前は、ローカル変数 'uri' が同じ名前のメンバー変数をシャドウしていました。その結果、バケット ACL 操作のサブセットが失敗します。
この修正により、シャドウイングされたローカル重複変数が削除され、ACL バケット操作が期待どおりに動作するようになりました。
ターゲットバケットにユーザーがログを書き込むにはバケットポリシーが必要になった
以前は、バケットロギングのターゲットバケットに対して権限チェックは実行されていませんでした。その結果、特定の権限を必要とせずに、すべてのユーザーがターゲットバケットにログを書き込むことができるようになりました。
この修正により、特定のユーザーがログを書き込めるようにするには、ターゲットにバケットポリシーを追加する必要があります。
認証順序でローカルが外部より前にリストされている場合に S3 リクエストが拒否されなくなった
以前は、リクエストがローカル認証エンジンによって正常に認証されない場合、S3 リクエストは拒否されていました。その結果、OpenStack Keystone EC2 認証情報を使用した S3 リクエストは、認証順序がローカル、外部の順になっている場合、Ceph Object Gateway で認証できませんでした。
この修正により、認証順序でローカルが外部より前にリストされている場合でも、OpenStack Keystone EC2 認証情報を使用して署名された S3 リクエストは Ceph Object Gateway で正常に認証されるようになりました。
Ceph Object Gateway の内部 HTTP ヘッダーは、オブジェクトをクラウドに移行する際に送信されなくなった
以前は、オブジェクトをクラウドに移行するときに、一部の Ceph Object Gateway 内部 HTTP ヘッダー値がクラウドエンドポイントに送信されていました。その結果、一部の S3 クラウドサービスではヘッダーが認識されず、移行に失敗したり、オブジェクトの操作を復元できなかったりしました。
この修正により、内部 HTTP ヘッダーはクラウドに送信されなくなり、クラウドへの移行が期待どおりに機能するようになります。
radosgw-admin bucket logging flush
コマンドが期待通りに動作するように
以前は、radosgw-admin bucket logging flush
コマンドを使用すると、次の LOB オブジェクト名が返されていました。その結果、ログバケットがリストされずにフラッシュされたログオブジェクトの名前がわかりませんでした。
この修正により、フラッシュされたオブジェクトの正しい名前が期待どおりに返されるようになりました。
クラスターをアップグレードすると、notification_v2 トピックが正しく取得されるように
以前は、クラスターをアップグレードすると、バケット通知が notification_v2 にアップグレードされました。その結果、notification_v2 内のトピックは期待どおりに取得されませんでした。
この修正により、クラスターのアップグレード後に notification_v2 トピックが期待どおりに取得されるようになりました。
olh get
が期待通りに完了するように
以前は、バージョン管理関連のバグに対する 2023 修正が原因で、内部コードパスがオブジェクト論理ヘッド (OLH) の誤った属性名を参照していました。その結果、radosgw-admin olh get
コマンドを実行するとエラーが発生していました。
この修正により、内部属性名が修正され、適切に機能するようになりました。
Swift コンテナーのリストにオブジェクトの最終更新時刻が表示されるように
以前は、Ceph Object Gateway Swift コンテナーリストの実装に、last_modified
JSON フィールドを送信するロジックがありませんでした。その結果、Swift コンテナーのリストにはオブジェクトの最終変更時刻が報告されませんでした。
この修正により、Swift コンテナーのリスト応答に last_modified
JSON フィールドが追加され、オブジェクトの変更時刻が正しく報告されるようになりました。
Ceph Object Gateway は、チェックサムタイプ固有のヘッダーとトレーラーから追加のチェックサムを認識するように
以前は、aws-sdk-go-v2
チェックサムの動作は他の SDK とは異なっており、AWS ドキュメントで必要とされているにもかかわらず、x-amz-checksum-algorithm
も x-amz-sdk-checksum
も送信されず、x-amz-decoded-content-length
も含まれていませんでした。その結果、追加のチェックサムは送信時に認識されず、一部の AWS チャンクリクエストはデコードされたコンテンツの長さのアサーションチェックに失敗し、InvalidArgument
エラーが発生していました。
この修正により、Ceph Object Gateway は、チェックサムタイプ固有のヘッダーまたはトレーラーに含まれる追加のチェックサムを認識できるようになりました。Ceph Object Gateway は、チャンク署名の計算によってコンテンツ長の検証が不要になったため、デコードされたコンテンツ長のテストとアサートを行わなくなりました。
AssumeRoleWithWebIdentity
呼び出しのシャドウユーザーが oidc
名前空間内に作成されるように
以前は、バケット統計をロードするために誤った方法が使用されていたため、AssumeRoleWithWebIdentity
呼び出しのシャドウユーザーが oidc
名前空間内に作成されませんでした。その結果、ユーザーはシャドウユーザーとローカル RGW
ユーザーを区別できませんでした。
この修正により、バケット統計が正しく読み込まれ、ユーザーが oidc
名前空間内に正しく作成されるようになりました。AssumeRoleWithWebIdentity
呼び出しを行うフェデレーションユーザーに対応するシャドウユーザーを正しく識別できるようになりました。