想要创建文件时,Lambda和S3权限被拒绝

时间:2016-03-03 17:28:12

标签: python amazon-web-services amazon-s3 lambda

我的python代码从其他网站获取信息并创建json文件。在本地计算机上它运行良好,但当我尝试在Lambda中运行代码时,我有错误 我使用了不同的方法来创建文件:

file = open('test.json', 'w')

oldumask = os.umask(0)
fdesc = os.open('test.json', os.O_WRONLY | os.O_CREAT, 0o600)
file = os.fdopen(fdesc, "w") 

错误讯息:

{
  "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'"
}

代码:

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)

1 个答案:

答案 0 :(得分:11)

您的Lambda函数在计算机上的所有位置都没有本地文件写入权限。尝试写入/tmp目录:

file = open('/tmp/test.json', 'w')