SST项目部署中遇到的无效证书问题分析与解决
问题背景
在使用SST框架部署Next.js应用时,开发者在GitHub Actions工作流中遇到了一个奇怪的证书验证问题。具体表现为:在dev分支部署成功,但在main分支部署时出现CloudFront证书无效的错误提示。
错误现象
部署过程中系统报错显示:
InvalidViewerCertificate: The specified SSL certificate doesn't exist, isn't in us-east-1 region, isn't valid, or doesn't include a valid certificate chain.
问题分析
-
证书区域验证:错误提示明确指出证书需要在us-east-1区域,这是CloudFront分发证书的硬性要求。初步检查确认证书确实创建在该区域。
-
环境差异:
dev分支部署成功而main失败,表明问题与环境配置相关而非证书本身。 -
AWS账户隔离:进一步排查发现,问题根源在于AWS OIDC(OpenID Connect)配置。开发环境配置了正确的OIDC,但生产环境缺少相应配置。
根本原因
当使用GitHub Actions部署到不同AWS账户时,每个账户都需要独立的OIDC身份提供商配置。生产环境账户缺少OIDC配置导致:
- GitHub Actions无法正确认证
- 部署流程无法访问目标账户的证书资源
- 系统误判为证书不存在或无效
解决方案
-
为每个环境配置独立OIDC:为生产环境账户创建专用的OIDC身份提供商,确保GitHub Actions有正确的访问权限。
-
验证证书可见性:确保部署角色有权限查看和使用目标账户中的ACM证书。
-
环境隔离检查:确认dev和prod环境的AWS账户完全隔离,避免配置混淆。
最佳实践建议
-
基础设施即代码:将OIDC配置纳入基础设施管理,确保环境一致性。
-
权限最小化:为CI/CD流程配置精确的IAM权限,仅授予必要的证书访问权限。
-
环境一致性检查:建立部署前的环境验证流程,确保各环境配置同步。
-
错误处理改进:在部署脚本中添加证书预检查逻辑,提前发现配置问题。
总结
这个案例展示了多云账户环境下基础设施部署的典型挑战。通过为每个目标环境配置独立的OIDC身份提供商,不仅解决了证书验证问题,也为团队建立了更健壮的持续交付基础。开发者在处理类似跨账户部署问题时,应当特别注意权限和身份验证机制的完整配置。
Kimi-K2.5Kimi K2.5 是一款开源的原生多模态智能体模型,它在 Kimi-K2-Base 的基础上,通过对约 15 万亿混合视觉和文本 tokens 进行持续预训练构建而成。该模型将视觉与语言理解、高级智能体能力、即时模式与思考模式,以及对话式与智能体范式无缝融合。Python00
GLM-4.7-FlashGLM-4.7-Flash 是一款 30B-A3B MoE 模型。作为 30B 级别中的佼佼者,GLM-4.7-Flash 为追求性能与效率平衡的轻量化部署提供了全新选择。Jinja00
VLOOKVLOOK™ 是优雅好用的 Typora/Markdown 主题包和增强插件。 VLOOK™ is an elegant and practical THEME PACKAGE × ENHANCEMENT PLUGIN for Typora/Markdown.Less00
PaddleOCR-VL-1.5PaddleOCR-VL-1.5 是 PaddleOCR-VL 的新一代进阶模型,在 OmniDocBench v1.5 上实现了 94.5% 的全新 state-of-the-art 准确率。 为了严格评估模型在真实物理畸变下的鲁棒性——包括扫描伪影、倾斜、扭曲、屏幕拍摄和光照变化——我们提出了 Real5-OmniDocBench 基准测试集。实验结果表明,该增强模型在新构建的基准测试集上达到了 SOTA 性能。此外,我们通过整合印章识别和文本检测识别(text spotting)任务扩展了模型的能力,同时保持 0.9B 的超紧凑 VLM 规模,具备高效率特性。Python00
KuiklyUI基于KMP技术的高性能、全平台开发框架,具备统一代码库、极致易用性和动态灵活性。 Provide a high-performance, full-platform development framework with unified codebase, ultimate ease of use, and dynamic flexibility. 注意:本仓库为Github仓库镜像,PR或Issue请移步至Github发起,感谢支持!Kotlin07
compass-metrics-modelMetrics model project for the OSS CompassPython00