このページでは、Workers API または S3 互換 API を使うときに R2 が返すエラーコードと、トラブルシューティング向けの対処方法をまとめます。
Workers API では、R2 の操作は catch できる例外を投げます。エラーコードは message プロパティの末尾に含まれます。
try {
await env.MY_BUCKET.put("my-key", data, { customMetadata: largeMetadata });
} catch (error) {
console.error(error.message);
// "put: Your metadata headers exceed the maximum allowed metadata size. (10012)"
}S3 互換 API では、エラーはレスポンス本文の XML として返ります。
<?xml version="1.0" encoding="UTF-8"?>
<Error>
<Code>NoSuchKey</Code>
<Message>The specified key does not exist.</Message>
</Error>| エラーコード | S3 コード | HTTP ステータス | 詳細 | 対処方法 |
|---|---|---|---|---|
| 10002 | Unauthorized | 401 | 認証情報が欠けているか、無効です。 | API トークン またはアクセスキーが正しく、期限切れでないことを確認します。 |
| 10003 | AccessDenied | 403 | 要求した操作に対する権限が不足しています。 | API トークン に、対象バケットと操作に必要な権限があることを確認します。 |
| 10018 | ExpiredRequest | 403 | 署名付き URL またはリクエスト署名の有効期限が切れています。 | 署名付き URL または署名を再生成します。 |
| 10035 | SignatureDoesNotMatch | 403 | リクエスト署名が計算した署名と一致しません。 | シークレットキーと署名アルゴリズムを確認します。URL エンコードの問題も確認します。 |
| 10042 | NotEntitled | 403 | この機能をアカウントで利用できません。 | アカウントに R2 のサブスクリプション があることを確認します。 |
| エラーコード | S3 コード | HTTP ステータス | 詳細 | 対処方法 |
|---|---|---|---|---|
| 10005 | InvalidBucketName | 400 | バケット名が命名要件を満たしていません。 | バケット名は 3〜63 文字、小文字の英数字とハイフンのみ、先頭と末尾は英数字にしてください。 |
| 10006 | NoSuchBucket | 404 | 指定したバケットが存在しません。 | バケット名が正しく、アカウント内にバケットがあることを確認します。 |
| 10008 | BucketNotEmpty | 409 | オブジェクトが残っているバケットは削除できません。 | バケットを削除する前に、中のオブジェクトをすべて削除します。 |
| 10009 | TooManyBuckets | 400 | アカウントのバケット上限を超えています(デフォルト: 1,000,000 バケット)。 | Limits Increase Request Form ↗ から上限の引き上げを申請します。 |
| 10073 | BucketConflict | 409 | そのバケット名はすでに存在します。 | 別のバケット名を選びます。バケット名はアカウント内で一意である必要があります。 |
| エラーコード | S3 コード | HTTP ステータス | 詳細 | 対処方法 |
|---|---|---|---|---|
| 10007 | NoSuchKey | 404 | 指定したオブジェクトキーが存在しません。Workers API では、get() と head() は例外を投げずに null を返します。 |
オブジェクトキーが正しく、オブジェクトが削除されていないことを確認します。 |
| 10020 | InvalidObjectName | 400 | オブジェクトキーに無効な文字が含まれるか、長すぎます。 | 有効な UTF-8 文字を使います。キーの最大長は 1024 バイトです。 |
| 100100 | EntityTooLarge | 400 | オブジェクトが最大サイズを超えています(単一アップロードは 5 GiB、マルチパートは 5 TiB)。 | 5 GiB より大きいオブジェクトは マルチパートアップロード を使います。オブジェクトの最大サイズは 5 TiB です。 |
| 10012 | MetadataTooLarge | 400 | カスタムメタデータが 8,192 バイトの上限を超えています。 | カスタムメタデータのサイズを減らします。すべてのカスタムメタデータの合計上限は 8,192 バイトです。 |
| 10069 | ObjectLockedByBucketPolicy | 403 | オブジェクトはバケットロックルールで保護されており、変更や削除はできません。 | 保持期間が終わるまで待ちます。バケットロック を参照してください。 |
| エラーコード | S3 コード | HTTP ステータス | 詳細 | 対処方法 |
|---|---|---|---|---|
| 10033 | MissingContentLength | 411 | Content-Length ヘッダーが必要ですが、ありません。 |
PUT/POST リクエストに Content-Length ヘッダーを含めます。 |
| 10013 | IncompleteBody | 400 | 期待した Content-Length より前にリクエスト本文が終了しました。 |
リクエスト本文をすべて送信します。ネットワーク切断やクライアントのタイムアウトも確認します。 |
| 10014 | InvalidDigest | 400 | チェックサムヘッダーの形式が不正です。 | チェックサムが正しくエンコードされていることを確認します(SHA/CRC チェックサムは base64)。 |
| 10037 | BadDigest | 400 | 指定したチェックサムがアップロードした内容と一致しません。 | データの整合性を確認し、アップロードを再試行します。 |
| 10039 | InvalidRange | 416 | 要求したバイト範囲を満たせません。 | 範囲の開始がオブジェクトサイズ未満であることを確認します。Range ヘッダーの形式も確認します。 |
| 10031 | PreconditionFailed | 412 | 条件付きヘッダー(If-Match、If-Unmodified-Since など)が満たされませんでした。 |
オブジェクトの ETag または更新時刻が条件と一致しません。再取得してから再試行します。条件付き操作 を参照してください。 |
| エラーコード | S3 コード | HTTP ステータス | 詳細 | 対処方法 |
|---|---|---|---|---|
| 10011 | EntityTooSmall | 400 | マルチパートのパートが最小サイズ(5 MiB)未満です。最後のパートは例外です。 | 最後のパート以外は、各パートを 5 MiB 以上にします。 |
| 10024 | NoSuchUpload | 404 | マルチパートアップロードが存在しないか、中止されています。 | uploadId が正しいことを確認します。未完了のマルチパートアップロードは、デフォルトで 7 日後に期限切れになります。オブジェクトライフサイクル を参照してください。 |
| 10025 | InvalidPart | 400 | アップロード完了時に、1 つ以上のパートが見つかりませんでした。 | 各パートが正常にアップロードされ、UploadPart が返した ETag をそのまま使っていることを確認します。 |
| 10048 | InvalidPart | 400 | 末尾以外のパートは、すべて同じサイズである必要があります。 | 最後以外のパートは同じサイズにします。R2 のマルチパートアップロードでは、パートサイズを揃える必要があります。 |
| エラーコード | S3 コード | HTTP ステータス | 詳細 | 対処方法 |
|---|---|---|---|---|
| 10001 | InternalError | 500 | 内部エラーが発生しました。 | リクエストを再試行します。続く場合は Cloudflare Status ↗ を確認するか、サポートに連絡します。 |
| 10043 | ServiceUnavailable | 503 | サービスが一時的に利用できません。 | 指数バックオフで再試行します。Cloudflare Status ↗ を確認します。 |
| 10054 | ClientDisconnect | 400 | リクエスト完了前にクライアントが切断しました。 | ネットワーク接続を確認して再試行します。 |
| 10058 | TooManyRequests | 429 | レート制限を超えました。同じオブジェクトキーへの同時リクエストが原因になることが多くあります(上限: キーあたり 1 書き込み/秒)。 | 複数のクライアントが同じオブジェクトキーにアクセスしていないか確認します。R2 の制限 を参照してください。 |