制限事項
Report Flow Content Service APIの制限事項について説明します。
これらの制限は本番環境(api.re-port-flow.com)に適用されます。
📦 リクエストサイズ制限
最大リクエストサイズ: 50MB
リクエストボディの最大サイズは50MB(Base64エンコード後)です。
実質的なファイルサイズ目安:
- Base64エンコード前: 約37MB
- エンコード後の膨張率: 約1.33倍
帳票出力SaaSとして、大量の高解像度画像を含む帳票にも対応できるよう、十分な容量を確保しています。
超過時の挙動
リクエストサイズが50MBを超えた場合:
{
"statusCode": 413,
"message": "Payload Too Large",
"error": "Request Entity Too Large"
}
大容量ファイルの扱い方
大容量の画像やデータを扱う場合は、以下の方法を検討してください:
-
画像の最適化
- 解像度を下げる(Web表示用は72-150dpi、印刷用は300dpi)
- 圧縮率を調整する(JPEG品質80-85%推奨)
- 不要なメタデータを削除する
-
非同期エンドポイントの使用
- 大量のPDFを生成する場合は非同期エンドポイントを使用
- タイムアウトを気にせず大容量データを処理可能
-
データの分割
- 1リクエストで複数のPDFを生成する場合、リクエストを分割する
⏱️ タイムアウト制限
同期エンドポイント: 120秒
対象エンドポイント:
POST /v1/file/sync/singlePOST /v1/file/sync/multiple
複雑な帳票処理にも対応できるよう、120秒のタイムアウトを設定しています。
タイムアウト時の挙動:
{
"statusCode": 504,
"message": "Gateway Timeout",
"error": "Request timeout"
}
120秒を超える処理の場合:
- 非同期エンドポイント(
/async/single,/async/multiple)を使用 - デザインの複雑さを軽減(画像数、テーブル行数を削減)
- リクエストを分割
非同期エンドポイント: 制限なし
対象エンドポイント:
POST /v1/file/async/singlePOST /v1/file/async/multiple
非同期エンドポイントにはタイムアウト制限がありません。大量のPDF生成や複雑なデザインの処理に適しています。
🚦 Rate Limit
2024年2月より、Rate Limitが実装されています。
Workspace単位の制限
Rate LimitはWorkspace単位で適用されます。同一Workspaceからのリクエストがカウントされるため、他のWorkspaceには影響しません。
| エンドポイント種別 | 制限値 | 対象エンドポイント |
|---|---|---|
| 同期エンドポイント | 30 requests/分 | /sync/single, /sync/multiple |
| 非同期エンドポイント | 100 requests/分 | /async/single, /async/multiple |
| ダウンロード・取得 | 100 requests/分 | /download/*, /design/parameter/* |
Rate Limit超過時の挙動
Rate Limitを超過した場合、以下のレスポンスが返されます:
{
"statusCode": 429,
"message": "Rate limit exceeded for this workspace. Please try again in XX seconds.",
"error": "Too Many Requests"
}
設計根拠
- 同期エンドポイント(30 req/min): 120秒のタイムアウトを考慮し、最大60並列処理に対応。ECSタスク容量に合わせた制限。
- 非同期エンドポイント(100 req/min): バッチ処理や大量生成に対応。サーバーリソースを保護しつつ高スループットを実現。
- ダウンロード(100 req/min): 軽量な操作のため高い制限値を設定。
UI操作での通常利用(2秒に1リクエスト程度)であれば、制限に達することはありません。バッチ処理の場合は非同期エンドポイントをご利用ください。
📝 ファイル名制限
使用不可な文字
以下の文字はファイル名に使用できません:
| 文字 | 名称 |
|---|---|
/ | スラッシュ |
\ | バックスラッシュ |
: | コロン |
* | アスタリスク |
? | クエスチョンマーク |
" | ダブルクォート |
< > | 山括弧 |
| | パイプ |
| 制御文字 | 0x00〜0x1F |
上記以外の文字(英数字、日本語、スペース、各種記号等)はすべて使用可能です。
例
✅ 正しい例:
{
"fileName": "請求書_2024-01.pdf",
"fileName": "invoice-2024-01.pdf",
"fileName": "レポート (1月分).pdf",
"fileName": "report #001.pdf"
}
❌ 間違った例:
{
"fileName": "請求書/2024.pdf", // スラッシュ不可
"fileName": "data:2024.pdf", // コロン不可
"fileName": "report*.pdf" // アスタリスク不可
}
🔐 セキュリティ要件
HTTPS通信必須
本番環境ではHTTPS通信のみを受け付けます。HTTP通信は自動的にHTTPSにリダイレクトされます。
# ✅ 正しい
curl -X POST https://api.re-port-flow.com/v1/file/sync/single \
-H "appkey: your-application-key"
# ❌ 間違い(HTTPは使用不可)
curl -X POST http://api.re-port-flow.com/v1/file/sync/single
TLS バージョン
- 最小バージョン: TLS 1.2
- 推奨バージョン: TLS 1.3
- TLS 1.0/1.1は使用できません
APIキーのローテーション
セキュリティ向上のため、3ヶ月ごとにアプリケーションキーを再生 成することを推奨します。
詳細はAPIキー管理を参照してください。
📊 プラン制限
ワークスペースのプランによって以下の制限があります:
デザインファイル数制限
プランごとにワークスペース内で作成できるデザインファイルの上限が設定されています。
ファイル生成回数制限
プランごとに月間のPDF生成回数の上限が設定されています。
詳細な制限値はプランによって異なります。管理画面で現在の使用状況と上限を確認できます。
プラン制限超過時の挙動
プラン制限に達した場合:
{
"statusCode": 403,
"message": "Plan limit exceeded",
"error": "Forbidden"
}
🌐 ネットワーク制限
CloudFront経由のリクエスト
外部からのリクエストはCloudFront経由で処理されます:
Client → CloudFront → ALB → ECS (content-service)