将内存中的 HTML 保存到 S3 AWS Python Boto3

2024-01-17

import boto3
from io import StringIO
s3 = boto3.client('s3')

display = # Altair Charting

buff = StringIO(display.save(str_obj, 'html'))

s3.upload_fileobj(buff.read(), BUCKET, 'index.html')

我认为完整的示例会使问题变得复杂,因此我将 Altair 图表注释掉了。

无论如何,我尝试实施大量将对象和文件保存到 AWS S3 存储桶的建议,但我不理解。

保存到磁盘非常简单:

display.save('index.html')

比较起来,将其放到 S3 上似乎极其困难。我不确定我在这里缺少什么。或许是upload_fileobj不是正确的方法,但我一直在努力使这项工作有效。

该方法的具体错误是ValueError: Fileobj must implement read

UPDATE:

buff = StringIO(display.save('str.html'))

s3.put_object(
   Bucket=BUCKET, 
   Key=f'{DASHBOARD}{mkt_type}/{symbol}/index.html',
   Body=buff.read()
   )

结果为 0 字节文件index.html在我的桶上

更新2:

str_obj = StringIO()
display.save(str_obj, 'html')
buff = str_obj.read()

s3.put_object(
    Bucket=BUCKET, 
    Key=f'{DASHBOARD}{mkt_type}/{symbol}/index.html',
    Body=buff
    )

这也是行不通的。我简直不敢相信将文件保存到 S3 会如此复杂。事后注意:我没有getvalue()所需的方法buff

解决方案: 这不是我第一次与 S3 文件作斗争,所以我可能会将其留给我自己的未来参考。也就是说,我仍然不清楚为什么我无法以字符串形式保存“.html”文件。

import boto3
from io import StringIO
s3 = boto3.client('s3')

display = # Altair Charting

str_obj = StringIO() # instantiate in-memory string object
display.save(str_obj, 'html') # saving to memory string object
buf = str_obj.getvalue().encode() # convert in-memory string to bytes

# Upload as bytes
s3.put_object(
    Bucket=BUCKET, 
    Key=f'{DASHBOARD}{mkt_type}/{symbol}/index.html', 
    Body=buf
    )

来自 boto3 文档:放置对象 https://boto3.readthedocs.io/en/latest/reference/services/s3.html#S3.Client.put_object

Body=b'字节'|文件,

这意味着 Body 应该是文件句柄或字节字符串。 所以有(至少)2种可能的上传方式:

通过将文件句柄传递给 Body:

with open('index.hml', 'rb') as f:
    s3.put_object(Bucket=BUCKET, Key=f'{DASHBOARD}{mkt_type}/{symbol}/index.html', Body=f)

通过将字节字符串传递给 Body(假设 display.save() 返回字符串):

buf = display.save('str.html').encode() # converting str to bytes
s3.put_object(Bucket=BUCKET, Key=f'{DASHBOARD}{mkt_type}/{symbol}/index.html', Body=buf)
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

将内存中的 HTML 保存到 S3 AWS Python Boto3 的相关文章

  • bs4 `next_sibling` VS `find_next_sibling`

    我在使用时遇到困难next sibling 并且类似地与next element 如果用作属性 我不会得到任何返回 但如果用作find next sibling or find next 然后就可以了 来自doc https www cru
  • 使用 Apache Beam python 创建 Google 云数据流模板时出现 RuntimeValueProviderError

    我无法使用 python 3 7 暂存云数据流模板 它在一个参数化参数上失败了apache beam error RuntimeValueProviderError RuntimeValueProvider option input typ
  • 带表格格式的 Matplotlib 条形图

    我在图的底部添加了一个表格 但它存在许多问题 右边的内边距太多了 左边的填充太少 底部没有填充物 单元格对于其中的文本来说太小 该表距离图的底部太近 属于行名称的单元格的颜色未与条形图的颜色相匹配 我要发疯了 去摆弄这个 有人可以帮我解决这
  • 如何使用 AWS Lambda 安装 Git?

    我在代码提交存储库中有代码 我正在编写一个 lambda 函数来为代码提交存储库的每个签入 事件 构建代码 我无法安装 git 因此无法克隆存储库 我该怎么办呢 正如其他人提到的 在 lambda 上安装 git 要么非常困难 要么完全不可
  • AWS RDS MySql - 如何在设置“公开可用”后允许访问

    刚刚使用默认设置和用户 密码创建了新的 AWS RDS MySql 实例 我也将其设置为publicly available并在此过程中创建新的 VPC 目前无法从我的笔记本电脑连接到此 RDS mysql h endpoint u myu
  • 如何使用 Pandas、Numpy 加速 Python 中的嵌套 for 循环逻辑?

    我想检查一下表的字段是否TestProject包含了Client端传入的参数 嵌套for循环很丑陋 有什么高效简单的方法来实现吗 非常感谢您的任何建议 def test parameter a list parameter b list g
  • FTP 下载冻结整个应用程序

    我正在尝试从 FTP 服务器下载一个大约 100 MB 的文件 这是一个测试 bin 文件 因为我正在测试该应用程序 我猜我将来想要下载的文件会更重 当我想下载文件时 整个应用程序就会冻结 几秒钟后它就会下载文件 该文件已完成 并且已成功下
  • 在 Elastic Beanstalk 中禁用自动安全组命名

    创建新环境时 Beanstalk 往往会使用随机且非常大的字符串 例如 awseb e nhmvcuvtjh stack AWSEBSecurityGroup 1R8CUK434DLPG 来污染我们的安全组命名约定 这些字符串之后无法更改
  • PyCharm 表示 readline 导入未被使用

    我有这个代码 while True cmd input gt if cmd exit break 但我想实现高级文本输入功能 例如命令历史记录 因此我导入了 readline 模块 导入 readline 模块 甚至不使用它 将解锁这些功能
  • Python排序算法[重复]

    这个问题在这里已经有答案了 我在Python中实现了不同的排序算法 以更好地理解它们 我想知道Python的内置排序方法实现什么类型的排序 这是一个叫做Timsort http en wikipedia org wiki Timsort由
  • Python:返回 // 正则表达式之间的字符串[重复]

    这个问题在这里已经有答案了 我仍然不明白正则表达式 我阅读了文档 但是在我想出了正则表达式字符之后 那么如何使用它们呢 例如 我只想返回前两个斜杠之间的任何内容 en lemon peel n ca llimona n is 的输出应该是
  • 在请求中设置端口

    我正在尝试利用cgminer使用 Python 的 API 我对利用requests图书馆 我了解如何做基本的事情requests but cgminer想要更具体一点 我想缩小 import socket import json sock
  • 如何向 boto 中的联合用户授予 s3 存储桶的权限?

    尝试从文档中找出答案 但无法创建可以访问 s3 存储桶的联合用户 首先是进口 gt gt gt from boto s3 connection import S3Connection gt gt gt from boto sts impor
  • 如何同时接受int和float类型的输入?

    我正在制作一个货币转换器 如何让 python 同时接受整数和浮点数 我就是这样做的 def aud brl amount From to ER 0 42108 if amount int if From strip aud and to
  • 重命名 python 子包,将旧名称标记为已弃用

    我有一个 python 包 它具有以下目录结构 package init py subpackage A init py moduleA py moduleB py 现在我想更改名称subpackage A to subpackage B同
  • 我怎样才能更多地了解Python的内部原理? [关闭]

    Closed 这个问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 help closed questions 目前不接受答案 我使用Python编程已经有半年多了 我对Python内部更感兴趣 而不是使用Python开发应用程序
  • 使用 CognitoIdentityServiceProvider 的 adminCreateUser 方法的 AWS Lambda 函数突然失败

    在过去的几天里 我一直在使用 AWS Lambda 函数测试特定流程 并且在 Cognito 用户池中预注册后触发的 lambda 函数工作正常并很好地返回回调函数 但从昨天开始我就看到了以下错误 ntime node modules aw
  • 如何使用 Plotly 中的直方图将所有离群值分入一个分箱?

    所以问题是 我可以在 Plotly 中绘制直方图 其中所有大于某个阈值的值都将被分组到一个箱中吗 所需的输出 但使用标准情节Histogram类我只能得到这个输出 import pandas as pd from plotly import
  • 首先对列表中最长的项目进行排序

    我正在使用 lambda 来修改排序的行为 sorted list key lambda item item lower len item 对包含元素的列表进行排序A1 A2 A3 A B1 B2 B3 B 结果是A A1 A2 A3 B
  • tkinter - 检查文本小部件是否为空

    操作系统 Windows 8 1 Python 3 5 在 Tkinter 中 我发现了很多代码来验证输入框是否为空 但是当我尝试对文本小部件应用相同的方法时 它不起作用 看起来文本小部件有一个 n 字符 这可能就是问题所在 知道如何进行此

随机推荐

  • 如何向某人发送我的(已生成的)github 公共 rsa 密钥(发送密钥或 .pub 文件?)

    我刚刚设置Github并生成了我的ssh keys 我需要给我的公众rsa给某人 这样他们就可以允许我访问他们的 git 存储库 我要寄给他们吗 a 我的整个 pub file b 的内容 pub文件 或 c 我登录时看到的密钥Github
  • 我如何 CURL www.google.com - 它不断将我重定向到 .co.uk

    我正在使用 CURL 来检查 URL 是否存在 HEAD 请求 但是当我用www google com 它将我重定向到www google co uk 可能是因为我的服务器位于英国 有什么办法可以阻止这种情况发生吗 我不想删除CURLOPT
  • 应用程序启动时 Membership.GetUser() 返回 null

    我已经实现了我自己的账户资料 https stackoverflow com questions 426609 how to assign profile values类是 ASP net MVC 并且它可以工作 但现在我遇到了一个奇怪的问
  • Google Chart getSelection 没有列属性

    当我使用时 chart getChart getSelection 0 在图表上 来自图表包装器 因此首先是 getChart getSelection 函数返回 只有行属性 但没有列属性 即使我的 图表 是一个表格 单击其中的任意位置都应
  • 如何标准化/减少 mongoDB 中的时间数据?

    我将详细的性能数据存储在 MongoDB 中 每个集合都是一种性能报告 每个文档都是阵列上端口在该时间点的测量结果 DateTime ISODate 2012 09 28T15 51 03 671Z array serial 12345 P
  • 测量 MKMapView 中绘制路线的距离(以米为单位)

    如何计算MKMapView中两个坐标之间的路线距离 我不是要求直线距离 而是要求转弯路线的距离 我假设你正在使用MKDirectionsRequest得到一个MKDirectionsResponse您从中获取路线 例如 MKDirectio
  • 如何在 JavaScript 中实现“onVisible”事件?

    是否有任何技术或一组技术可以用来实现实际上的onVisibleJavaScript 中的 事件 我希望我的 JavaScript 能够检测到当用户向下滚动页面时网页中的元素 例如一段文本或图像 何时在浏览器窗口中变得可见 我也想要一个相应的
  • 我无法安装 Docker,因为 containerd.io 没有安装候选

    我尝试在 Kubuntu 19 10 上安装 Docker 我使用以下步骤进行安装 https docs docker com install linux docker ce ubuntu https docs docker com ins
  • 当子div浮动时,父div失去自动高度

    我有一个名为 main 的父 div 它里面有一堆子div 我向左或向右浮动 当我完成最后一个浮动后 主 div 的高度完全消失 破坏了页面的布局 我给它的高度 100 就目前而言 但对于大多数分辨率来说它会过高 如何将其保持在流体高度 仅
  • 使用opencv复制/混合不同尺寸的图像

    我正在尝试混合两个图像 如果它们具有相同的大小 则很容易 但如果其中一张图像较小或较大 则 cv addWeighted 会失败 图A 预计更大 图B 预计较小 我试图创建一个 ROI 尝试创建 A 大小的第三个图像并将 B 复制到里面 我
  • spring data couchbase中的id是如何自动生成的?

    我想在 spring data couchbase 中为我的文档创建 ID 自动生成 Spring 文档对此有步骤 https docs spring io spring data couchbase docs current refere
  • 在 Laravel 查询生成器中进行投射

    我想要castLaravel 查询生成器中的 orderBy 因为我的price is varchar type 所以当它排序时 结果离我想要的很远 我的脚本是这样的 DB table test gt where gt orderBy pr
  • 如何在javascript中组合数组

    您好 我想根据数组中的唯一项合并数组 我拥有的对象 totalCells 在这个totalCells数组中我有几个像这样的对象 totalCells cellwidth 15 552999999999999 lineNumber 1 cel
  • 如何在选项卡关闭时删除 jquery cookie

    我的 cookie 工作正常 我没有提及日期 因此当浏览器窗口关闭时 cookie 就会被删除 但是当我关闭浏览器窗口中的选项卡时 cookie 不会被删除 并且当我打开网站时会打开相同的保留的 cookie 状态页面 当用户关闭浏览器选项
  • Java,循环结果集

    在Java中 我有一个这样的查询 String querystring1 SELECT rlink id COUNT FROM dbo Locate GROUP BY rlink id 表 rlink id 有以下数据 Sid lid 3
  • 迭代WPF Datagrid中的所有单元格[重复]

    这个问题在这里已经有答案了 可能的重复 WPF DataGrid 如何在 DataGrid 中迭代以获取行和列 https stackoverflow com questions 1295023 wpf datagrid how do yo
  • Tailwind css,如何设置默认字体颜色?

    我在我的项目中使用 tailwind css 由于我们的应用程序样式 我们使用默认字体颜色 但是我似乎找不到如何在 tailwind 中执行此操作 文档 https tailwindcss com docs text color页面只讨论了
  • Prolog 是否有像 Common Lisp 一样的条件和重启系统?

    Common Lisp 允许异常处理条件并重新启动 http www gigamonkeys com book beyond exception handling conditions and restarts html 粗略地说 当函数抛
  • 解析线性方程的系数

    在java中 我试图找到线性方程的系数 以在我的计算器应用程序中找到线性方程的解 例如 3x 2 6x 3 2 4x 我渴望得到的是 x 的系数和形式的常数ax b 0 在这个特定的例子中 coefficient 19 constant 8
  • 将内存中的 HTML 保存到 S3 AWS Python Boto3

    import boto3 from io import StringIO s3 boto3 client s3 display Altair Charting buff StringIO display save str obj html