web-dev-qa-db-ja.com

AWS LAMBDA "errorMessage": "[Errno 30]読み取り専用ファイルシステム: 'drive-python-quickstart.json'"

aWS Lambdaのgoogledrive資格情報に問題があります。ローカルマシンで関数を呼び出す前に.Zipファイルをデプロイした後、すべてが機能しますが、AWSにZipをデプロイした後、約30分後にラムダ関数エラーが発生します

  "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')"
    ]
  ]
}

ファイルfile.pyに私はこのコードを持っています:

 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)

f = open(self._filename、 'w')を 'r'に設定しようとしましたが、役に立たないので、どうすれば修正できますか?提案してください。

6

どうやらあなたは許可されていない場所にファイルを書き込もうとしています。 Lambdaは現在、/ tmpディレクトリへのファイルの書き込みのみをサポートしています。

14
Tom Melo