使用 AWS SDK for JavaScript (v3) 操作 Amazon SNS:主题、订阅与消息发布的实战指南
示例工程教程后端【免费下载链接】aws-doc-sdk-examplesWelcome to the AWS Code Examples Repository. This repo contains code examples used in the AWS documentation, AWS SDK Developer Guides, and more. For more information, see the Readme.md file below.项目地址https://gitcode.com/gh_mirrors/aw/aws-doc-sdk-examples点击查看免费下载本文以aws-doc-sdk-examples仓库中的 javascriptv3/example_code/sns/README.md 为主体系统讲解如何用 AWS SDK for JavaScript (v3) 对接 Amazon Simple Notification ServiceAmazon SNS覆盖从客户端初始化、主题创建/删除、多协议订阅到短信与队列消息发布的完整操作链并深入到 Hello 入门示例与发布消息到队列场景的源码实现。读完本文你将掌握基于 SDK v3 的 SNS 全套单操作调用方式、分页遍历技巧、过滤订阅配置与集成测试方法可直接照搬到自己的 Node.js 项目中。Amazon SNS 与 SDK v3 概览Amazon SNS 是一项云原生消息通知服务让应用程序、终端用户和设备能够即时发送与接收来自云端的事件通知。它的核心抽象是主题Topic——一个逻辑上的发布/订阅通道发布者向主题推送消息订阅者HTTP/S 端点、邮箱、Lambda 函数、SQS 队列、SMS 手机号、移动端应用等通过订阅关系实时接收。在aws-doc-sdk-examples仓库中JavaScript 侧的 SNS 示例统一位于 javascriptv3/example_code/sns 目录全部基于 ECMAScript 6ES6模块语法编写。目录内代码分为三层组织目录/文件职责libs/snsClient.js全局复用的SNSClient客户端实例actions/17 个单操作示例对应一个服务 API 调用tests/11 个 Vitest 集成测试用例hello.js入门示例分页列出账户下所有 SNS 主题从 package.json 可见示例依赖aws-sdk/client-sns^3.370.0测试阶段额外使用aws-sdk/client-sqs与vitest并通过type: module声明整个包采用 ES 模块体系。环境准备SDK v3 前置条件与客户端初始化前置条件运行本目录任何示例前需要先完成 javascriptv3 根 README 中列出的前置准备主要包括Node.js 运行时与 npm 包管理器AWS 账户及具备 SNS 最小权限的 IAM 凭证建议遵循 least privilege 最小权限原则在javascriptv3目录完成依赖安装示例以 workspace 形式统一管理 node_modules。共享客户端libs/snsClient.js目录下几乎所有actions/示例都复用同一个客户端实例它位于 libs/snsClient.jsimport { SNSClient } from aws-sdk/client-sns; // The AWS Region can be provided here using the region property. If you leave it blank // the SDK will default to the region set in your AWS config. export const snsClient new SNSClient({});这里有两个关键点region可选构造时传入空配置对象即可。SDK v3 遵循共享凭证/配置解析链自动从环境变量、共享凭证文件、AWS config 文件等位置读取区域与凭证一处定义、处处复用后续每个 action 文件通过import { snsClient } from ../libs/snsClient.js引入避免重复创建客户端、复用连接池。Hello Amazon SNS分页遍历 ListTopics入门示例 hello.js 展示了 SDK v3 推荐的分页写法——使用命令构造器自带的paginateListTopics分页迭代器而非手动管理NextTokenimport { fileURLToPath } from node:url; import { SNSClient, paginateListTopics } from aws-sdk/client-sns; export const helloSns async () { // The configuration object ({}) is required. If the region and credentials // are omitted, the SDK uses your local configuration if it exists. const client new SNSClient({}); // You can also use ListTopicsCommand, but to use that command you must // handle the pagination yourself. You can do that by sending the ListTopicsCommand // with the NextToken parameter from the previous request. const paginatedTopics paginateListTopics({ client }, {}); const topics []; for await (const page of paginatedTopics) { if (page.Topics?.length) { topics.push(...page.Topics); } } const suffix topics.length 1 ? : s; console.log( Hello, Amazon SNS! You have ${topics.length} topic${suffix} in your account., ); console.log(topics.map((t) * ${t.TopicArn}).join(\n)); }; // Invoke main function if this file was run directly. if (process.argv[1] fileURLToPath(import.meta.url)) { helloSns(); }值得留意的是源码注释中明确的两种等价方案直接发送ListTopicsCommand时需要开发者自行以NextToken循环翻页而paginateListTopics用for await...of语法对开发者完全屏蔽了这一细节。脚本末尾通过fileURLToPath(import.meta.url)判断是否被直接执行保证同一个文件既可以作为模块被导入也可以node ./hello.js直接运行。运行方式node ./hello.js预期输出类似Hello, Amazon SNS! You have 2 topics in your account. * arn:aws:sns:us-east-1:xxxxxxxxxxxx:mytopic单操作示例详解主题生命周期README 的 Single actions 清单列出了 13 个服务 API。这里结合源码逐一展开其中最核心的调用链。创建主题CreateTopicactions/create-topic.js 演示了主题创建返回的响应中带有新主题的 ARNimport { CreateTopicCommand } from aws-sdk/client-sns; import { snsClient } from ../libs/snsClient.js; export const createTopic async (topicName TOPIC_NAME) { const response await snsClient.send( new CreateTopicCommand({ Name: topicName }), ); console.log(response); // { // $metadata: { httpStatusCode: 200, requestId: 087b8ad2-4593-50c4-a496-d7e90b82cf3e, ... }, // TopicArn: arn:aws:sns:us-east-1:xxxxxxxxxxxx:TOPIC_NAME // } return response; };参数只有一个Name主题名。创建标准主题时名称仅需满足 SNS 命名规则字母、数字、连字符与下划线若需创建FIFO 主题可在Attributes中设置FifoTopic: true并追加.fifo后缀的命名详见下方场景章节响应中的TopicArn是后续所有订阅、发布、删除操作的身份标识。列出主题ListTopicsactions/list-topics.js 直接发送ListTopicsCommand({})export const listTopics async () { const response await snsClient.send(new ListTopicsCommand({})); console.log(response); // { // $metadata: { httpStatusCode: 200, requestId: 936bc5ad-83ca-53c2-b0b7-9891167b909e, ... }, // Topics: [ { TopicArn: arn:aws:sns:us-east-1:xxxxxxxxxxxx:mytopic } ] // } return response; };注意ListTopicsCommand默认按页返回Topics数组账户主题较多时应优先使用 Hello 示例中的paginateListTopics分页迭代器。删除主题DeleteTopicactions/delete-topic.js 只需传入待删除主题的 ARNimport { DeleteTopicCommand } from aws-sdk/client-sns; import { snsClient } from ../libs/snsClient.js; export const deleteTopic async (topicArn TOPIC_ARN) { const response await snsClient.send( new DeleteTopicCommand({ TopicArn: topicArn }), ); // 成功时仅返回 $metadatahttpStatusCode: 200 };查询与修改主题属性actions/get-topic-attributes.jsGetTopicAttributesCommand返回主题的完整属性集策略、订阅数、消息保留时长等actions/set-topic-attributes.jsSetTopicAttributesCommand用于修改显示名DisplayName、交付策略等属性。单操作示例详解订阅管理订阅多协议 Subscribeactions/subscribe-email.js 演示最常见的邮箱订阅import { SubscribeCommand } from aws-sdk/client-sns; import { snsClient } from ../libs/snsClient.js; export const subscribeEmail async ( topicArn TOPIC_ARN, emailAddress usernme.com, ) { const response await snsClient.send( new SubscribeCommand({ Protocol: email, TopicArn: topicArn, Endpoint: emailAddress, }), ); // 响应中的 SubscriptionArn 为 pending confirmation待确认状态 };SubscribeCommand的关键参数是Protocol与Endpoint的组合目录内覆盖了多种协议示例文件ProtocolEndpoint 说明subscribe-email.jsemail订阅者邮箱subscribe-app.js移动应用平台平台终端 ARNsubscribe-lambda.jslambdaLambda 函数 ARNsubscribe-queue.jssqsSQS 队列 ARNsubscribe-queue-filtered.jssqsSQS 队列 ARN 订阅过滤器以 subscribe-queue.js 为例SQS 订阅的调用非常直接import { SubscribeCommand, SNSClient } from aws-sdk/client-sns; const client new SNSClient({}); export const subscribeQueue async ( topicArn TOPIC_ARN, queueArn QUEUE_ARN, ) { const command new SubscribeCommand({ TopicArn: topicArn, Protocol: sqs, Endpoint: queueArn, }); const response await client.send(command); // 成功时 SubscriptionArn 为 arn:aws:sns:us-east-1:...:subscribe-queue-test-430895:xxxxxxxx-... return response; };带过滤策略的订阅FilterPolicysubscribe-queue-filtered.js 展示了 SNS消息过滤能力——通过Attributes传入FilterPolicy与FilterPolicyScope让订阅只接收满足条件的事件export const subscribeQueueFiltered async ( topicArn TOPIC_ARN, queueArn QUEUE_ARN, ) { const command new SubscribeCommand({ TopicArn: topicArn, Protocol: sqs, Endpoint: queueArn, Attributes: { // This subscription will only receive messages with the event attribute set to order_placed. FilterPolicyScope: MessageAttributes, FilterPolicy: JSON.stringify({ event: [order_placed], }), }, }); const response await client.send(command); return response; };要点说明FilterPolicyScope取MessageAttributes表示过滤依据是发布消息时携带的消息属性Message AttributesFilterPolicy是 JSON 序列化字符串{ event: [order_placed] }表示仅当消息的event属性值命中order_placed时才投递该机制与下方发布消息到队列场景配套使用发布者先SetSMSAttributes/消息属性订阅队列即可按事件类型选择性接收。确认订阅与退订actions/confirm-subscription.js 使用ConfirmSubscriptionCommand。源码注释明确指出只有非 AWS 服务的端点HTTP/S、邮箱或跨账户订阅才需要显式确认SQS、Lambda 等 AWS 服务端点无需此步。命令携带Token订阅确认令牌与AuthenticateOnUnsubscribe设为false表示允许匿名退订export const confirmSubscription async ( token TOKEN, topicArn TOPIC_ARN, ) { const response await snsClient.send( new ConfirmSubscriptionCommand({ Token: token, TopicArn: topicArn, // If this is true, the subscriber cannot unsubscribe while unauthenticated. AuthenticateOnUnsubscribe: false, }), ); return response; };actions/unsubscribe.jsUnsubscribeCommand传入订阅 ARN 解除订阅关系actions/list-subscriptions-by-topic.jsListSubscriptionsByTopicCommand按主题列出全部订阅者同样支持分页参数。单操作示例详解消息发布与短信向主题发布消息Publishactions/publish-topic.js 通过PublishCommand向主题推送消息import { PublishCommand } from aws-sdk/client-sns; import { snsClient } from ../libs/snsClient.js; export const publish async ( message Hello from SNS!, topicArn TOPIC_ARN, ) { const response await snsClient.send( new PublishCommand({ Message: message, TopicArn: topicArn, }), ); // 响应中包含 MessageId: xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx return response; };Message既可以是普通字符串也可以是对象——当使用json类型的MessageStructure时对象会被按协议分别投递即多协议消息分发若想结合上面订阅的过滤策略可在命令中补充MessageAttributes让过滤器据此匹配。发送短信Publish 到 PhoneNumberactions/publish-sms.js 展示了 SMS 用法。源码注释特意强调了一个约束PhoneNumber、TopicArn、TargetArn三者必须且只能指定一个export const publish async ( message Hello from SNS!, phoneNumber 15555555555, ) { const response await snsClient.send( new PublishCommand({ Message: message, // One of PhoneNumber, TopicArn, or TargetArn must be specified. PhoneNumber: phoneNumber, }), ); return response; };短信属性管理GetSMSAttributes / SetSMSAttributesactions/get-sms-attributes.jsGetSMSAttributesCommand读取账户级 SMS 属性如每月发送限额、默认短信类型、发送者 IDactions/set-sms-attribute-type.jsSetSMSAttributesCommand可配置DefaultSMSTypePromotional/Transactional等参数控制短信的发送策略与限额。其他单操作README 清单中剩余的操作分布在对应 action 文件中actions/confirm-subscription.jsConfirmSubscription见上文actions/list-topics.jsListTopics对CheckIfPhoneNumberIsOptedOut查询号码是否已退订短信等操作的封装同样位于actions/下对应文件。场景示例发布消息到队列Topics QueuesREADME 的场景章节指向跨服务示例 cross-services/wkflw-topics-queues/index.js它串联起 SNS 与 SQS 的典型工作流覆盖四步能力创建主题FIFO 或非 FIFO通过CreateTopicCommand创建标准主题FIFO 主题则需设置FifoTopic属性并以.fifo结尾命名订阅多个队列到主题可选过滤对多个 SQS 队列执行SubscribeCommandProtocol: sqs可叠加本文所述的FilterPolicy过滤策略实现按消息属性路由向主题发布消息通过PublishCommand发布消息使所有符合条件的订阅队列收到副本轮询队列接收消息使用 SQS 客户端ReceiveMessage拉取各队列实际收到的消息验证投递与过滤结果。该场景在 README 中同时给出配套的custom.scenario_prereqs与custom.scenarios占位区块说明在官方文档的代码示例体系中场景代码还配有针对 SQS 的预置说明仓库内 tests/ 下的subscribe-queue.integration.test.js等集成测试即为该场景的自动化验证实现。运行与调试指南运行单个操作README 给出的标准命令格式为node ./actions/fileName例如node ./actions/create-topic.js node ./actions/publish-topic.js node ./actions/subscribe-email.js每个 action 文件都遵循直接运行时自动调用导出函数的模式if (process.argv[1] fileURLToPath(import.meta.url))因此无需额外入口即可执行也可以import其导出的异步函数嵌入自己的业务代码。运行场景node ./scenarios/fileName场景脚本通常依赖多个服务与资源如 SQS 队列运行前请确认对应前置条件。命令行选项部分 action 与场景支持从命令行传入选项node ./scenarios/fileName --option1 --option2选项解析基于 Node.js 内置的 util.parseArgs不同脚本的可用选项需查看对应文件中的parseArgs配置。ES6 与 CommonJS 兼容所有示例均以 ECMAScript 6ES6编写import/export语法。如需转换为 CommonJSrequire/module.exports可参考 SDK for JavaScript (v3) 开发指南中的语法说明。集成测试本目录通过 Vitest 提供 11 个集成测试文件位于 tests/覆盖主题操作create-delete-topic.integration.test.js、list-topics.integration.test.js、get-topic-attributes.integration.test.js、set-topic-attributes.integration.test.js订阅操作subscribe.integration.test.js、subscribe-queue.integration.test.js、list-subscriptions-by-topic.integration.test.js、confirm-subscription.integration.test.js消息发布与短信publish.integration.test.js、get-sms-attributes.integration.test.js、set-sms-attribute-type.integration.test.js。package.json 中预置了测试命令执行时会调用 vitest 并以 JUnit 格式输出测试报告npm run integration-test⚠️ 集成测试会真实调用 AWS 服务运行测试同样可能产生 AWS 账户费用。完整的测试运行说明见 javascriptv3 根 README 的 Tests 章节。注意事项与最佳实践费用提醒运行示例与测试都会产生真实的 AWS 资源调用可能带来账户费用建议优先使用 AWS 免费套餐范围内的小规模资源最小权限原则为运行代码的 IAM 角色/用户仅授予完成任务所需的最小权限如sns:CreateTopic、sns:Publish、sns:Subscribe不要直接附加管理员策略区域可用性SNS 服务与示例代码并非在所有 AWS 区域经过完整测试生产部署前应确认目标区域的服务可用性与 SDK 版本兼容性FIFO 主题命名约束FIFO 主题名必须以.fifo结尾且发布端与订阅端都必须严格遵循 FIFO 的消息去重与顺序语义过滤策略为 JSON 字符串FilterPolicy必须以JSON.stringify序列化后传入Attributes否则订阅请求会被拒绝订阅确认规则只有 HTTP/S、邮箱等非 AWS 服务端点才需要执行ConfirmSubscriptionSQS/Lambda 订阅无需确认。参考资源javascriptv3/example_code/sns/README.md本文所依据的官方示例说明javascriptv3 根 README包含全局前置条件与测试运行说明libs/snsClient.jsSDK v3 客户端初始化范式hello.js分页 API 的标准用法cross-services/wkflw-topics-queues/index.jsSNS SQS 跨服务场景tests/可复用的集成测试示例。Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.SPDX-License-Identifier: Apache-2.0赞分享示例工程教程后端【免费下载链接】aws-doc-sdk-examplesWelcome to the AWS Code Examples Repository. This repo contains code examples used in the AWS documentation, AWS SDK Developer Guides, and more. For more information, see the Readme.md file below.项目地址https://gitcode.com/gh_mirrors/aw/aws-doc-sdk-examples点击查看免费下载相关推荐使用 AWS SDK for C 操作 Amazon SNS从 Hello World 到发布/订阅的完整代码示例实战指南使用 AWS SDK for C 操作 Amazon SNS从 Hello World 到发布/订阅的完整代码示例实战指南 Amazon Simple N示例工程教程后端Wazuh 从 OSquery 迁移到 IT HygieneSyscollector 原生资产清点迁移指南Wazuh 从 OSquery 迁移到 IT HygieneSyscollector 原生资产清点迁移指南 本指南面向仍在 Wazuh 4.x 中使用 OSq示例工程教程后端Linux 内核 BPF_PROG_RUN 详解从用户态执行 eBPF 程序、无副作用测试与 XDP 活帧Live Frames模式Linux 内核 BPF_PROG_RUN 详解从用户态执行 eBPF 程序、无副作用测试与 XDP 活帧Live Frames模式 本文围绕 Linux示例工程教程后端上一篇Jellyfin-Kodi媒体中心革命从零开始的智能观影体验下一篇Cursor Pro无限额度技术指南深入解析机器码重置与自动化解决方案创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

相关新闻

【Dify】mysql-mcp结合AI大模型智能查询数据库

【Dify】mysql-mcp结合AI大模型智能查询数据库

数据库驱动的智能问答应用需求不断增长,基于Dify集成MCP Server驱动MySQL实现流式查询,为数据库内容实时问答提供了可行的全新方式。此流程适用于需要自动调用数据库、实时返回结构化结果的AI场景。 本文梳理了完整的部署流程,包括环境配置、关键插件选择与工作流设计,适合…

2026/9/25 2:08:55 阅读更多 →
Docker 基础使用

Docker 基础使用

Docker 基础使用1. Docker 安装&卸载1.1 虚拟机安装1.2 环境准备1.3 离线rpm安装docker1.3.1 执行安装1.3.2 启动1.3.3 测试docker1.3.4 配置镜像加速1.4 卸载Docker1.4.1 yum list installed|grep docker1.4.2 yum -y remove1.4.3 再次查看2. 镜像和容器基本操作2.1 docke…

2026/9/25 2:08:55 阅读更多 →
selenium webdriver 开启网页失败,被发现为爬虫,的解决办法

selenium webdriver 开启网页失败,被发现为爬虫,的解决办法

(1)换用火狐浏览器(2)隐藏谷歌浏览器中的特殊变量值from selenium import webdriveroptions webdriver.ChromeOptions()# -- 防止被检测,旧版本用法(1): # chrome在79版之前用这个 …

2026/9/25 2:08:55 阅读更多 →

最新新闻

UEFI蓝屏排查实战:从引导诊断到启动盘制作全攻略

UEFI蓝屏排查实战:从引导诊断到启动盘制作全攻略

1. UEFI蓝屏问题的本质与诊断思路电脑蓝屏这件事,干了十几年运维和装机,我敢说UEFI环境下的蓝屏跟传统Legacy BIOS时代的蓝屏,排查逻辑完全是两码事。很多人一看到蓝屏就条件反射地重装系统,结果装完没两天又蓝了,问题…

2026/9/25 2:46:19 阅读更多 →
ADC采样的工程哲学:从量化误差到信号还原

ADC采样的工程哲学:从量化误差到信号还原

1. 先纠正一个广为流传的观点:量化误差不是“算错”,而是信息取舍做嵌入式这些年,我见过太多人一提到 ADC 就说“12 位精度比 10 位更准”。这话只对了一半,而且容易让人产生一个错误直觉——ADC 的分辨率越高,采出来的…

2026/9/25 2:46:19 阅读更多 →
灰色模型GM(1,1)电力负荷预测实战指南

灰色模型GM(1,1)电力负荷预测实战指南

简介:本资源是一份面向电力系统分析初学者与能源领域算法实践者的灰色模型(GM)负荷预测代码实现,聚焦小样本、非线性电力负荷序列的建模与预测问题。包内共8个文件,含4个MATLAB核心脚本(gmfun.m、ols_run.m…

2026/9/25 2:46:19 阅读更多 →
Linux+Samba 自建家庭云盘服务器实战指南

Linux+Samba 自建家庭云盘服务器实战指南

1. 整体构思与硬件选型说实在的,我一直觉得现在各家网盘虽然存取方便,但总有几道迈不过去的坎:容量稍微上去就要付费、上传下载速度被限死、文件放在别人服务器上总归不太安心。前段时间家里旧电脑退役,硬盘还好好的,我…

2026/9/25 2:46:19 阅读更多 →
麦克纳姆轮驱动原理与安装调试全指南:从受力分析到PID整定

麦克纳姆轮驱动原理与安装调试全指南:从受力分析到PID整定

1. 麦克纳姆轮到底解决了什么问题第一次见到麦克纳姆轮的人,大概率会盯着它看半天——轮子边缘斜着排了一圈小辊子,看起来像是哪个玩具厂随手拼出来的东西。但只要通电让它转起来,你就会发现这台小车能横着走、斜着走、原地打转,甚…

2026/9/25 2:46:19 阅读更多 →
RazerIOs离线安装全指南:Linux雷蛇外设开箱即用

RazerIOs离线安装全指南:Linux雷蛇外设开箱即用

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/9/25 2:45:19 阅读更多 →

日新闻

AI元人文:从工具使用到思维重构的深度探索

AI元人文:从工具使用到思维重构的深度探索

最近半年我一直在琢磨一件事:AI元人文到底是什么?说白了,就是“用元视角重新审视人与AI的关系”,也在“探索AI如何反向逼着我们发现自己的思考边界”。标题里的“元探索”,在我看就是一层套一层的追问——当你用AI解决…

2026/9/25 0:00:41 阅读更多 →
Python+CNN车牌识别实战:从数据预处理到模型训练与部署

Python+CNN车牌识别实战:从数据预处理到模型训练与部署

简介:基于Python与卷积神经网络的车牌识别项目,面向计算机视觉初学者及智能交通开发者,目标是帮助用户掌握从数据预处理、模型构建到实际部署的完整流程。压缩包共25个文件,包含jpg/png图像样本、py训练脚本、md说明文档、dat数据…

2026/9/25 0:00:41 阅读更多 →
Vim基础操作全攻略:保存退出、模式切换与高频命令实战

Vim基础操作全攻略:保存退出、模式切换与高频命令实战

1. 项目概述1.1 核心需求解析今天聊聊Vim。写这个题目的原因是:几乎每个后端开发者、运维人员、数据工程师某天都会遇到一个场景——深夜加班,服务器登录界面只有黑底白字,编辑器只有vi/vim,你必须在五分钟内完成一次配置修改并保…

2026/9/25 0:00:41 阅读更多 →

周新闻

Flutter for OpenHarmony游戏卡片渐变背景实战:从原理到性能优化

Flutter for OpenHarmony游戏卡片渐变背景实战:从原理到性能优化

直接铺开项目本身吧。这几个月我一直在折腾一件事:用Flutter给OpenHarmony做一款游戏集合类的App,说白了就是把若干小游戏塞进一个壳里,用统一入口分发。这个方向本身不算新鲜,真正让我花了不少心思的,是首页那堆游戏卡…

2026/9/24 14:34:13 阅读更多 →
Word表格编号全攻略:从列表编号到题注交叉引用

Word表格编号全攻略:从列表编号到题注交叉引用

写Word文档,最让人头疼的往往是那些“看起来不起眼”的小问题。比如表格编号这事:今天在表后面多加了两个空白行,明天给客户交稿前发现整个章节的编号全部错位,光是挨个改序号就能耗掉大半个下午。我前阵子帮人整理一份上百页的技…

2026/9/24 9:10:42 阅读更多 →
从第一个站到第二个站:独立开发者的静态网站选型与落地实践

从第一个站到第二个站:独立开发者的静态网站选型与落地实践

1. 项目概述1.1 核心需求解析做独立开发者这几年,说实话,第一个网站上线的那天晚上我兴奋得没睡着。但等它跑了半年,流量惨淡、功能臃肿、代码自己都懒得看第二遍之后,我才慢慢琢磨明白一个道理:第一个网站是练手&…

2026/9/24 14:33:56 阅读更多 →

月新闻

持续集成 流水线自动化与 声明式交付 实践:原型怎样变成可用功能

持续集成 流水线自动化与 声明式交付 实践:原型怎样变成可用功能

持续集成 流水线自动化与 声明式交付 实践:原型怎样变成可用功能分类:[AI/大模型]细分主题:AI 增强型 CI/CD 流水线自动化与 GitOps 实践:Agent 工作流、工具调用与任务拆解:从原型到生产的验收清单很多团队在尝试用大…

2026/9/24 12:50:34 阅读更多 →
容器编排 生产环境运维与排障实战:复盘记录怎样真正派上用场

容器编排 生产环境运维与排障实战:复盘记录怎样真正派上用场

容器编排 生产环境运维与排障实战:复盘记录怎样真正派上用场分类:[工程技术]细分主题:Kubernetes 生产环境运维与排障实战:可复制的项目复盘模板与决策记录大部分团队的事故复盘报告,最后都变成了躺在 Confluence 或钉…

2026/9/24 14:33:48 阅读更多 →
容器 容器化技术与镜像安全管理:核心链路应该先拆哪一步

容器 容器化技术与镜像安全管理:核心链路应该先拆哪一步

容器 容器化技术与镜像安全管理:核心链路应该先拆哪一步分类:[工程技术]细分主题:Docker 容器化技术与镜像安全管理:核心链路的逐步实现与关键代码取舍面对一个积累了五六年历史包袱的单体架构应用(包含 Web 接口、后台…

2026/9/24 12:49:17 阅读更多 →