Flask文件写入权限

Jar*_*roo 1 python ubuntu amazon-ec2 flask

我在EC2 Ubuntu实例上运行Flask Web服务器.目的是捕获传入POST的主体,将其写入本地文件,然后将该文件上载到S3.

代码基本上是:

@app.route('/', methods=['GET','POST'])
@app.route('/index.html', methods=['GET','POST'])
def index_home():
    data = request.data
    with open('test.json', 'w') as f:
        f.write(data)
## Upload the stuff to S3
Run Code Online (Sandbox Code Playgroud)

当我在本地Flask webserver实例上运行它并从Postman发送带有json主体的POST时,它运行得很好.但是在EC2实例上,我在'test.json'文件中收到权限错误(根据apache error.log),导致页面加载时出现500错误.

我已经搜索谷歌和Stackoverflow(这是一个类似的问题,没有解决方案)无济于事.这似乎是一个简单的问题,但我已经尝试了一切,似乎无法让它工作:我已经将我的用户添加到www-data组,我已经更改了/ var/www文件夹和文件权限对于root,ubuntu(默认的EC2 Ubuntu用户)和我能想到的www数据的每个组合,我直接777目录......似乎没有任何效果.

显然,我是一个新手.是否有配置文件或需要调整才能使其工作的东西?

mat*_*t3o 5

您应该确保程序实际上正在尝试写入您希望它写入的目录.可能是它试图写入Python二进制文件(或其他任何东西)的目录,这取决于您的命令和当前工作目录.出于测试目的,您可能会尝试更改路径(确保/ tmp对用户是可写的,应该是这样):

with open('/tmp/test.json', 'w') as f:
    f.write(data)
Run Code Online (Sandbox Code Playgroud)