3回答
- 新しい順
- 投票が多い順
- コメントが多い順
0
APIGatewayからLambda(Python)を使用してCSVのアップロードとダウンロード機能を実装する際、いくつかの制約事項があります:
-
文字コード: 特に文字コードに関する直接的な制限はありませんが、一般的にはUTF-8の使用が推奨されます。Pythonは様々な文字コードを扱えますが、UTF-8が最も広く使用され、互換性が高いです。
-
データ上限:
- APIGatewayのペイロードサイズ制限は10MBです。
- Lambdaの同期呼び出しの場合、レスポンスペイロードの上限は6MBです。
- Lambdaの一時ストレージ(/tmp)は512MB~10GBまで利用可能です。
-
環境の制約:
- Lambdaは様々なPythonランタイムをサポートしています(Python 3.7から3.13まで)。
- 実行環境はAmazon Linux 2またはAmazon Linux 2023です。
- メモリ割り当ては128MB~10240MBの範囲で設定可能です。
- 関数の実行時間は最大900秒(15分)です。
これらの制限を考慮し、大きなCSVファイルを扱う場合は、S3を中間ストレージとして使用するなど、適切なアーキテクチャ設計が必要になる場合があります。また、APIGatewayとLambdaの統合にはAWS Solutions ConstructsのApiGatewayToLambdaパターンを利用すると、セキュリティやベストプラクティスを考慮した実装が容易になります。
Sources
Building Lambda functions with Python - AWS Lambda
create_function - Boto3 1.37.31 documentation
aws-apigateway-lambda - AWS Solutions Constructs
回答済み 1ヶ月前
0
Lambdaでのcsvアップロードとダウンロード機能実装について、 csvの文字コードはSJISでも実施できますでしょうか? また、SJISで実施した場合の、懸念事項がりましたら、教えてください
回答済み 1ヶ月前
0
1. 文字コードの制約
- Lambda自体は文字コードに制限はありません(UTF-8推奨)。
- ただし、API Gateway 経由で送受信する際、Content-Typeの設定や文字コードの指定(例:UTF-8、Shift_JIS)が重要になります。
- 例:Content-Type: text/csv; charset=Shift_JIS
- PythonでShift_JISのCSVを扱う場合、encoding='shift_jis'を指定して読み書きします。
2. データ上限(サイズ制限)
コンポーネント | 制限内容 |
---|---|
API Gateway (REST API) | 最大 10MB(Base64エンコード時) |
Lambda | 最大 6MB の同期応答出力、イベントサイズ 256KB(一部トリガーで異なる) |
S3(活用する場合) | 実質無制限(ただしAPI Gateway経由で扱うときは前述制限に注意) |
大きなCSVファイルは、S3に直接アップロード/ダウンロードさせるのが推奨です。 Lambda経由にせず、署名付きURL(presigned URL)を発行してやり取り。
3. 環境の制約(Lambda)
- ファイルシステム制限:
- /tmpフォルダのみ書き込み可能(最大512MB),
- 一時的にCSVファイルを処理したい場合はここを使う
- メモリ/タイムアウト:
- メモリ:128MB〜10GB,
- タイムアウト:最大15分
- 同時実行制限:
- アカウントごとにデフォルト1,000(必要に応じてリクエスト可能)
回答済み 20日前