我在EC2 Ubuntu实例上运行Flask webserver。 其目的是捕获传入POST的主体,将其写入本地文件,然后将该file upload到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
当我在本地的Flask web服务器实例上运行它,并从Postman发送带有json主体的POST时,它可以正常工作。 但是在EC2实例中,我在'test.json'文件上得到了一个权限错误(根据apache error.log),导致页面加载时出现500错误。
我搜刮谷歌和Stackoverflow( 这是一个类似的问题 ,没有解决scheme)无济于事。 这似乎是一个简单的问题,但我已经尝试了一切,似乎无法得到它的工作:我已经将我的用户添加到www数据组,我已经更改了/ var / www文件夹和文件的权限到root,ubuntu(默认EC2 Ubuntu用户)和www-data我能想到的每一个组合,我已经直接777的目录…似乎没有任何工作。
显然,我有点新手。 有没有一个configuration文件或者需要调整才能使其工作?
您应该确保该程序实际上正在尝试写入您想要写入的目录。 这可能是因为它试图写入Python二进制文件(或其他)的目录,这取决于你的命令和当前的工作目录。 出于测试的目的,你可能会尝试像这样改变路径(确保/ tmp可写入用户,情况应该如此):
with open('/tmp/test.json', 'w') as f: f.write(data)