My python code takes information from other websites and creates a json file. It works fine on the local machine, but when I try to run the code in Lambda, I have an error.
I used various methods to create the file:
file = open('test.json', 'w')
and
oldumask = os.umask(0) fdesc = os.open('test.json', os.O_WRONLY | os.O_CREAT, 0o600) file = os.fdopen(fdesc, "w")
Error message:
{ "stackTrace": [ [ "/var/task/awsewt1.py", 24, "handler", "fdesc = os.open('test.json', os.O_WRONLY | os.O_CREAT, 0o600)" ] ], "errorType": "OSError", "errorMessage": "[Errno 13] Permission denied: 'test.json'" }
code:
from __future__ import print_function import json import urllib import boto3 import os, stat access_key = 'hide' secret_key = 'hide' def loadJSONByURL(url,key): response = urllib.urlopen(url) content = response.read() data = json.loads(content) text = {key:data} return text def handler(event, context): phattha = "hide" phuket = "hide" koSamui = "hide" oldumask = os.umask(0) fdesc = os.open('test.json', os.O_WRONLY | os.O_CREAT, 0o600) file = os.fdopen(fdesc, "w") json.dump(loadJSONByURL(phattha,'phatthaya'), file) json.dump(loadJSONByURL(phuket,'phuket'), file) json.dump(loadJSONByURL(koSamui,'koSamui'), file) file.close() conn = S3Connection(access_key,secret_key) bucket = conn.get_bucket('ewtbucket') key1 = bucket.get_key('test.json') if key1: key1.delete() key = bucket.new_key('/test.json') key.set_contents_from_filename('test.json') key.set_acl('public-read') s3 = boto3.client('s3') def lambda_handler(event, context): handler(event,context)