概要
AWS Lambdaでpythonコードを実装して動かしていたら以下のエラーに。原因と解決方法を紹介します。
[ERROR] OSError: [Errno 30] Read-only file system: '/var/task/sample/xxx.json'
原因と解決方法
Lambdaのファイルシステムは読み取り専用。
なので書き込みは基本的にできません。
ただし、tmp
ディレクトリだけは書き込みOKというルールがあります。
# 元々のコード
with open('/sample/xxx.json', 'w') as json_file:
json.dump(data, json_file, indent=4)
# /tmpディレクトリにファイルを書き込む
with open('/tmp/xxx.json', 'w') as json_file:
json.dump(data, json_file, indent=4)
上記のようにすることで書き込みができるようになり、エラーがなくなりました。
ちなみに、このtmp
ディレクトリは最大512MBの一時ストレージでしたが、2022年に10GBまで使用できるようになったようです。