Write to /tmp directory in aws lambda with python
extractAll()
will extract files in the current directory, which is /var/task/test-deploy
in your case.
You need to use os.chdir()
to change the current directory:
import os, zipfileos.chdir('/tmp')with zipfile.ZipFile(source, 'r') as archive: archive.extractall()
Even better, you can create a temporary directory and extract the files there, to avoid polluting /tmp
:
import os, tempfile, zipfilewith tempfile.TemporaryDirectory() as tmpdir: os.chdir(tmpdir) with zipfile.ZipFile(source, 'r') as archive: archive.extractall()
If you want to restore the current working directory after extracting the file, consider using this decorator:
import os, tempfile, zipfile, contextlib@contextlib.context_managerdef temporary_work_dir(): old_work_dir = os.getcwd() with tempfile.TemporaryDirectory() as tmp_dir: os.chdir(tmp_dir) try: yield finally: os.chdir(old_work_dir)with temporary_work_dir(): with zipfile.ZipFile(source, 'r') as archive: archive.extractall()