AWS LAMBDA "errorMessage": "[Errno 30] Read-only file system: 'drive-python-quickstart.json'"

19,248

Apparently you're trying to write a file where is not permitted. Lambda currently only supports writing files to the /tmp directory.

Share:
19,248
Андрей Ка
Author by

Андрей Ка

Updated on June 03, 2022

Comments

  • Андрей Ка
    Андрей Ка almost 2 years

    i have problem with googledrive credentials in AWS Lambda , after i deploy my .zip file before calling the function on the local machine , all is work , but after i deploy zip in AWS after ~30min i having lambda function error

      "errorMessage": "[Errno 30] Read-only file system: 'drive-python-quickstart.json'",
    "errorType": "OSError",
      "stackTrace": [
        [
          "/var/task/lambda_function.py",
          33,
          "lambda_handler",
          "pageSize=10,fields=\"nextPageToken, files(id, name)\").execute()"
        ],
        [
          "/var/task/oauth2client/_helpers.py",
          133,
          "positional_wrapper",
          "return wrapped(*args, **kwargs)"
        ],
        [
          "/var/task/googleapiclient/http.py",
          835,
          "execute",
          "method=str(self.method), body=self.body, headers=self.headers)"
        ],
        [
          "/var/task/googleapiclient/http.py",
          162,
          "_retry_request",
          "resp, content = http.request(uri, method, *args, **kwargs)"
        ],
        [
          "/var/task/oauth2client/transport.py",
          186,
          "new_request",
          "credentials._refresh(orig_request_method)"
        ],
        [
          "/var/task/oauth2client/client.py",
          761,
          "_refresh",
          "self._do_refresh_request(http)"
        ],
        [
          "/var/task/oauth2client/client.py",
          802,
          "_do_refresh_request",
          "self.store.locked_put(self)"
        ],
        [
          "/var/task/oauth2client/file.py",
          79,
          "locked_put",
          "f = open(self._filename, 'w')"
        ]
      ]
    }
    

    in file file.py i have this code :

     def locked_put(self, credentials):
        """Write Credentials to file.
        Args:
            credentials: Credentials, the credentials to store.
        Raises:
            IOError if the file is a symbolic link.
        """
        self._create_file_if_needed()
        _helpers.validate_file(self._filename)
        f = open(self._filename, 'w')
        f.write(credentials.to_json())
        f.close()
    
    def locked_delete(self):
        """Delete Credentials file.
        Args:
            credentials: Credentials, the credentials to store.
        """
        os.unlink(self._filename)
    

    i try to set f = open(self._filename, 'w') set to 'r', but it doesn't help , maybe whom know how can i fix it ? Please suggest.

  • Geetha Ponnusamy
    Geetha Ponnusamy over 6 years
    could you please share how you fixed it! I'm facing this issue now - @Andrej
  • Андрей Ка
    Андрей Ка over 6 years
    I just put all credents files on .zip ant set target to project dir.
  • Geetha Ponnusamy
    Geetha Ponnusamy over 6 years
    I did the same, put all files inside .zip and uploaded in s3 and used that s3 link in lambda. In this case, I'm getting "errorType": "IOError", "errorMessage": "[Errno 30] Read-only file system: 'drive-python-quickstart.json'".. Any suggestion how to resolve this! Thanks in advance
  • Vikramsinh Gaikwad
    Vikramsinh Gaikwad about 4 years
    how yo fixed it? I still get that error- [Errno 30] Read-only file system: '1587472029.zip' when I create a file in /tmp folder and tries to upload it to EC2?
  • yudhiesh
    yudhiesh about 3 years
    If anyone is facing this, in your lambda function directory just create a folder tmp and then just change the file path that you want to write to, to /tmp/FILE.