如何将Plotly生成的HTML文件存储到S3存储桶?解决只读文件系统报错
问题分析与解决方案
你遇到的Read-only file system错误,是因为当前运行环境的本地文件系统为只读状态(比如AWS Lambda、云端笔记本这类环境),无法直接生成本地HTML文件。要将Plotly图表的HTML内容存储到S3,可通过直接生成HTML字符串+上传S3的方式解决。
步骤1:生成HTML字符串(跳过本地文件写入)
不用write_html写入本地文件,改用to_html直接获取HTML的字符串内容:
import plotly.express as px # 生成Plotly图表 df = px.data.stocks() fig = px.line(df, x='date', y="GOOG") # 获取HTML格式的字符串内容 html_content = fig.to_html(auto_play=False)
步骤2:使用boto3上传到S3
通过AWS的boto3库直接将HTML字符串上传至S3,无需本地文件中转:
import boto3 # 初始化S3客户端 s3 = boto3.client('s3') # 配置S3参数 bucket_name = '你的S3存储桶名称' s3_file_path = 'charts/google_stock_trend.html' # 自定义S3中的存储路径和文件名 # 执行上传 s3.put_object( Bucket=bucket_name, Key=s3_file_path, Body=html_content, ContentType='text/html' # 指定文件类型,确保浏览器可正确解析 )
额外注意事项
- 若在AWS托管环境(如Lambda)运行,需确保执行角色拥有
s3:PutObject权限; - 本地测试时,需提前配置AWS凭证(可通过
aws configure命令或环境变量设置)。
内容的提问来源于stack exchange,提问作者user20409850
相关产品推荐
相关产品推荐

