Cloud Functionsのファイルシステムについては,ここに詳しく書いてありますが,自分なりにまとめます.
基本的にread-only
Cloud Functionsで実行するPythonスクリプトが,ファイルシステムに何らのデータを書き込もうとするとエラーになります.
[Errno 30] Read-only file system
Cloud Functionsでファイルを扱う
ファイルはCloud Storageに保存するべきですが,一時ファイルを扱う場合は,/tmp
ディレクトリを利用します.
ただし,このディレクトリはメモリーに保持されるため,/tmp
にたくさんのファイルを保存すると,その分メモリ使用量が増加します.必要がない一時ファイルは積極的に削除したほうがよさそうです.
次の実行時に保持される場合がある
関数を呼び出すのが2回目移行の場合,前回のインスタンスが再利用される場合があります.詳しくはここに記載がありますが,/tmp
も同様で,前回の呼び出し時に作成された一時ファイルが残っている場合があります.
ただし,常に一時ファイルが残ることが保証されているわけではなく,コールド スタートする時などは,一時ファイルは保持されません.
したがって,関数実行時に作成した一時ファイルが,次回移行の呼び出し時に影響がでないよう,作成した一時ファイルはその都度削除するか,ファイルが存在しても問題なく実行できるように工夫しなければなりません.