如何在Heroku或AWS上部署生成JSON的Python脚本并搭建JSON端点?
嘿,刚接触Heroku和AWS这类云平台的时候确实容易摸不着方向,我当初也是踩了不少坑才搞明白怎么把本地脚本变成可访问的JSON服务。下面给你两个新手友好的方案,一步步来就能搞定~
核心前提:先把脚本包装成Web服务
你现在的Python脚本是本地运行生成JSON,但要让外部通过URL获取数据,得给它加个Web"入口"——用轻量框架把脚本改成HTTP接口就行,我推荐用Flask(最适合新手)。
举个例子,把你的JSON生成逻辑套进这个模板里:
from flask import Flask, jsonify app = Flask(__name__) # 替换成你自己的JSON生成代码 def generate_my_json(): return { "status": "success", "data": {"key1": "value1", "key2": ["item1", "item2"]} } # 定义一个接口路径,访问这个路径就返回JSON @app.route('/get-data') def return_json(): return jsonify(generate_my_json()) if __name__ == '__main__': # 适配云平台的端口设置 import os port = int(os.environ.get('PORT', 5000)) app.run(host='0.0.0.0', port=port)
方案一:部署到Heroku(快速上手,零服务器维护)
步骤1:准备Heroku必需的文件
requirements.txt:告诉Heroku需要安装哪些依赖,比如用Flask的话就写:
(如果你的脚本还有其他依赖,比如Flask==2.3.3pandas,直接加在下面就行)Procfile:告诉Heroku怎么启动你的服务,内容就一行:
(把web: python 你的脚本文件名.py你的脚本文件名.py换成你实际的文件名,比如app.py)
步骤2:部署到Heroku
- 先安装Heroku CLI,打开终端输入
heroku login登录你的Heroku账号(没有的话先注册一个) - 进入脚本所在的文件夹,初始化Git仓库:
git init git add . git commit -m "Initial deploy" - 创建Heroku应用:
(名字随便取,只要没被别人用就行)heroku create 你的应用名字 - 推送代码到Heroku:
git push heroku main - 打开应用:
heroku open,然后在URL后面加上/get-data(就是你刚才定义的接口路径),就能看到你的JSON数据了!
方案二:部署到AWS(用Lambda+API Gateway,无服务器更省钱)
如果不想用Heroku,AWS的无服务器方案也很适合轻量脚本,不用管服务器维护。
步骤1:把脚本改成Lambda函数格式
Lambda函数有固定的入口格式,把你的JSON生成逻辑套进去:
import json def generate_my_json(): # 替换成你自己的JSON生成代码 return { "status": "success", "data": {"key1": "value1", "key2": ["item1", "item2"]} } # Lambda的入口函数,固定格式 def lambda_handler(event, context): return { 'statusCode': 200, 'headers': { 'Content-Type': 'application/json', 'Access-Control-Allow-Origin': '*' # 允许跨域访问 }, 'body': json.dumps(generate_my_json()) }
步骤2:创建Lambda函数
- 登录AWS控制台,找到「Lambda」服务,点击「创建函数」
- 选择「从头开始创建」,输入函数名,运行时选对应版本的Python,点击「创建函数」
- 在代码编辑器里替换默认代码为上面的Lambda代码,点击「部署」
步骤3:配置API Gateway(让外部能访问Lambda)
- 在Lambda函数页面,点击「添加触发器」,选择「API Gateway」
- 选择「创建新API」,类型选「HTTP API」,安全选「打开」(测试用,后续可以改成带认证的),点击「添加」
- 触发器创建后,会生成一个API端点URL,直接访问这个URL就能拿到你的JSON数据了!
小提醒
- 先在本地把Web服务跑通,确认能正常返回JSON再部署,这样排查问题更简单
- 如果你的脚本有非标准库的依赖,Heroku直接加进
requirements.txt就行;AWS Lambda的话,需要把依赖打包成「层」或者用Docker镜像(新手先从无额外依赖的场景开始试)
内容的提问来源于stack exchange,提问作者Monu Kumar
相关产品推荐
相关产品推荐

