Как я могу сохранить строковую литеральную переменную в файле JSON на основе события для папки AWS Lambda / tmp? - PullRequest
0 голосов
/ 12 января 2019

Я пытаюсь определить, что я делаю неправильно в своем коде. Я не высокого уровня с файловой системой Linux. Я пытаюсь сохранить свой JSON-файл в каталоге "/ tmp", чтобы я мог записать его в Lambda, после того, как я его сохранил, я пытаюсь написать свой код для передачи переменной в строковый литерал на основе события. Я не уверен, что я делаю неправильно.

Ошибка указывает, что она не доступна для записи даже после использования функции загрузки для сохранения внутри / tmp.

До сих пор я пытался переключить путь для "/ var / task" на /var/tmp.

def lambda_handler(event, context):
s3 = boto3.client('s3')
Bucketname = event['requestParameters']['bucketName']
PolicyEvent = event['requestParameters']['bucketPolicy']['Statement'][0]['Effect'] 
print(PolicyEvent)
JSON_Policy = open("JSON_Policy.JSON",'r')
# Save JSON_Policy to path to this on Linux/Unix based filesystem for Lambda and change current directory to /var/tmp
os.chdir("/var/tmp")
Dir = os.getcwd()
print(Dir)    
save_path = "/var/task"
full_name = os.path.join(save_path,"JSON_Policy.JSON")
with open(full_name,"r") as JSONfile:
    JSONDoc = json.load(JSONfile)
pprint(JSONDoc)
return JSONDoc

Вот моя политика хранения, хранящаяся в JSON в корневой папке среды Lambda.

{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Sid": "VisualEditor0",
            "Effect": "Deny",
            "Principal": "*",
            "Action": "s3:GetObject",
            "Resource": "arn:aws:s3:::%s/*" % Bucketname
        }
    ]
}
...