使用 AWS SES + S3 发送 HTML 邮件
在营销、通知等场景中,我们经常需要发送格式丰富的 HTML 邮件。本文介绍如何用 Python + boto3,从 S3 读取 HTML 模板并通过 SES 发送邮件。 架构S3 (HTML模板) → Python脚本 → SES → 收件人 前置条件 AWS 账号已开通 SES 服务,且发件地址已验证 S3 Bucket 中已上传 HTML 模板文件 本地已配置 AWS 凭证(aws configure 或 IAM Role) 安装依赖:pip install boto3 核心代码12345678910111213141516171819202122232425262728293031323334#!/usr/bin/env python3"""从 S3 读取 HTML 模板并通过 SES 发送邮件"""import boto3REGION = '<region>'BUCKET = '<your-bucket-name>'TEMPLATE_KEY = &...
一次拿trace把langfuse打挂的修复
用 Langfuse 做 LLM 观测平台,拉 trace 数据时不小心把服务端打挂了。本文记录从发现 502 到定位 Node.js OOM,再到写脚本安全导出标注数据的完整过程。 Langfuse 是一个开源的 LLM 观测平台,用来追踪 LLM 应用的调用链路、记录 input/output、做人工标注评估等. 跑了一段时间,积累了不少 trace 数据和人工标注。某天想通过 API 批量拉取 trace 数据做分析,结果把服务端打挂了。 故障现象第一阶段:502 后端超时请求 /api/public/traces/{id} 接口拉取单个 trace 的完整数据时,先是返回 502 Bad Gateway,Nginx/OpenResty 报后端超时。 第二阶段:整个应用挂了多请求几次之后,不只是 API 超时了,整个 Langfuse Web 界面都打不开了,彻底 503。 根因分析把容器日志扔给 AI 分析,定位到了问题: 因果链12345大 trace 请求 → 服务端序列化 >4MB 的响应体 → Node.js 堆内存爆了(...
懒猫微服实战入门(三十四):方寸之间,自有天地:懒猫微服,男人的网络瑞士军刀
曾几何时,中文互联网圈流行着这样一个段子,叫做中年男人三件套:NAS、软路由、充电头。 我们今天就来聊聊第一个。NAS 似乎是给职业运维人员的福音,而广大的爱好者们通常都是野路子,靠着一腔孤勇或者是兴趣来维护自己的小小世界,能够借鉴参考的,也就是互联网的帖子以及各种群里的答疑而已。 靠着坚持不懈,入门了 Linux 和网络,但是不求甚解,安静的文件存储,只躺在方寸之间。 如果你恰好有一台懒猫微服,那么我们正好可以一起来学习这繁杂的网络,拆解这美丽的网络新世界。 我从事过几年的云行业,在发烧友和职业人员之间横跳,于是心有所感,立志让爱好者可以有专业的技术,让职业人员可以真的产生兴趣。这是网络篇。 首先你一定听说过 IP 地址,这是互联网通信的门牌号。我们的手机、电脑,包括懒猫微服都有一个 IP 地址。当你连上网络的时候,这个地址就被分配给了设备。准确地说,是分配给了网卡,所以懒猫微服可以用转接口来拓展第二张网卡。 连上网线之后,第一步我们习惯在路由器上看 IP 地址,然后 ping 一下确认连通。懒猫微服使用 IPv6,可以用 ping -6 或 ping6。 循迹(ping、te...
懒猫微服进阶心得(十五):超越systemd,不用每次开机都再安装软件~
前言懒猫微服是分层文件系统,所以在之前的文章里前面我们使用用 systemctl --user 在开机时自动安装软件,解决重启丢包的问题。但说实话,每次开机都要跑一遍 apt install,当面对软件包过多以及网络延迟的问题的时候,使用dkpg会卡住,这不够优雅,所以才有了这个方案。 后来我换了个思路:既然懒猫微服天生就是为 Docker 而生的,为什么不直接用容器来跑这些工具呢? 想想看,htop、iotop、glances 这些运维神器,本质上就是读取 /proc 和 /sys 里的系统信息。只要让容器能访问宿主机的这些文件,不就能正常工作了吗? 这篇文章就来聊聊怎么用 Docker 容器跑系统监控工具。不用装软件,不怕重启丢失,一条命令就能用,用完自动清理。这让我们既享受了分层文件系统的优势,也不用再为软件持久化烦恼了。 关于镜像源:本文使用了 docker.1ms.run 作为镜像加速站,仅作示例,不对镜像源的可用性负责。如果某个镜像拉取失败,可以换成其他镜像源,比如 dockerpull.org、docker.xuanyuan.me 等。 进程监控类htop -...
懒猫微服:不只是 NAS,更适合云计算宝宝体质
提到 NAS,大多数人的第一反应是”存储设备”——用来备份照片、存电影、共享文件。但懒猫微服想做的,远不止于此。 在云计算时代,个人和小团队同样需要强大的计算能力、灵活的开发环境和丰富的应用生态。懒猫微服正是为此而生,它不仅能存储数据,更能像云服务器一样运行虚拟机、部署应用、搭建开发环境。从底层的虚拟化基础设施,到中间层的平台服务,再到上层的软件应用,懒猫微服构建了一个完整的私有云生态。 云计算三层架构:IaaS、PaaS、SaaS云计算的核心架构分为三层:IaaS(Infrastructure as a Service,基础设施即服务)提供虚拟化的计算、存储和网络资源;PaaS(Platform as a Service,平台即服务)在 IaaS 之上提供应用运行平台和开发工具;SaaS(Software as a Service,软件即服务)则提供开箱即用的应用软件。 用一个形象的比喻:IaaS 像是租了一块地和建筑材料,你要自己盖房子、装修、买家具;PaaS 像是租了一套毛坯房,你只需要装修和买家具;SaaS 则像是租了一套精装修的酒店房间,拎包入住。 懒猫微服正是基于这一...
Python小抄们
git clone –depth 1 是浅克隆(shallow clone),只拉取最近一次提交的历史记录,而不是整个仓库的完整历史。 主要好处: 下载速度快,节省带宽和磁盘空间适合只想获取最新代码、不关心历史记录的场景比如一个有几千次提交的大仓库,完整克隆可能要几百 MB,用 –depth 1 可能只需要几十 MB。 常见用法: 只拉最新一次提交git clone –depth 1 https://github.com/user/repo.git 拉最近 10 次提交git clone –depth 10 https://github.com/user/repo.git缺点是你看不到完整的 commit 历史,也没法切换到旧的分支或标签。如果后续需要完整历史,可以用 git fetch –unshallow 补全。
装修日记
卫浴能买九牧不要买四季沐歌,毕竟不是做一条产品线起家的。四季沐歌虽然听着耳熟,但是最早是做太阳能的。 厨房的电闸要多留一些冗余,16A不太够用,烧水壶+冰箱+油烟机+饭锅 就小3000W了,如果再有电锅啥的可能直接跳闸。 三个连排的插座额定功率也是10A,所以也没有那么方便,大用电器容器超。
告别 DSL!我用 MCP 让 AI 帮我操作 Easysearch
还在为记不住 Elasticsearch DSL 语法发愁?match 和 term 傻傻分不清?聚合查询写半天还报错? 今天教你用 MCP(Model Context Protocol)封装 Easysearch,让 AI 帮你操作集群。从此告别 DSL,用自然语言就能完成搜索、写入、聚合统计! 效果演示先看看最终效果。以下是我和 Kiro 的真实对话记录: 我:集群健康吗? Kiro: 1234567{ "cluster_name": "infinilabs", "status": "green", "number_of_nodes": 1, "active_shards": 2, "active_shards_percent_as_number": 100.0} 🟢 集群很健康!状态 green,1 个节点,2 个活跃分片,100% 健康。 我:创建一个产品索引,有名称、价格、分类、描述字段 Kiro:...
被天才吧耽误,Apple silicon 死机与恢复的一年
十年的黑苹果玩家终于入手了Apple silicon,且不说买了半年之后就被新产品的pro背刺的感受。这次我们只聊由于性能问题被耽误的这一年。 新电子产品的第一年都很稳,各种满核心编译Java都没有问题。不知道是系统更新还是厂家为了迭代产品,基本都是快过保的时候出问题。 去年冬天突然遇到死机黑屏问题,Typora文档写一半黑屏了,长按电源键无法开机,来回折腾要半个小时以上。去天才吧维修,说硬件测试没问题(其实就是快捷键), 千篇一律的官僚主义(记住这个词后面要考)拒绝返厂,然后拒绝我的各种专业建议,给我的建议就是备份重装,但是,崩溃依然继续。 于是求助群友,我竟然不是个例。 半年后,继续找他们掰扯,理由是过了一段时间无法证明我说的重装系统不能复现问题。给的方案还是重装。继续拒绝返厂检测。 期间也陆陆续续和线上沟通,在这期间对这个品牌的售后彻底失望。行政关系团队的陈先生,带着一种高高在上的口吻来“解决问题”。关于我反馈他们的专员一问三不知,完全有失一个技术人应有的技术储备的时候。他轻描淡写谈写,“我不是技术方向的,所以我不对技术层面的事情做评价,我们的专员是经过专业培训的,所以...
Amazon Bedrock AgentCore 开发实战(一):本地构建 AI Agent
在 AI Agent 开发过程中,快速迭代和即时反馈至关重要。Amazon Bedrock AgentCore 提供了完整的本地开发支持,让开发者能够在本地环境中构建、测试和调试 Agent,然后无缝部署到云端。 本文将带您从零开始,在本地搭建 AgentCore 开发环境,并通过详细的代码解析,帮助您深入理解每一个技术细节。 Amazon Bedrock AgentCore 简介Amazon Bedrock AgentCore 是一套专为 AI Agent 设计的企业级基础设施服务。它解决了 Agent 从原型到生产过程中的核心挑战: AgentCore Runtime:无服务器运行时环境,支持最长 8 小时的任务执行和 100MB 的请求负载 AgentCore Memory:提供短期和长期记忆管理,支持跨会话的上下文保持 AgentCore Gateway:统一的工具网关,支持 MCP 协议的工具发现和调用 AgentCore Identity:安全的身份认证和授权管理 本地开发的优势在于:开发者可以在熟悉的环境中快速验证想法,无需等待云端部署,同时保持与生产环境一致的...
