You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

为何AWS Secrets Manager的AWSPENDING令牌调用getSecretValue抛ResourceNotFoundException?

AWS Secrets Manager 密钥自动轮换中AWSPENDING版本的实现逻辑解析

为何getSecretValue会抛出ResourceNotFoundException

Secrets Manager触发轮换时,在create_secret步骤传递的ClientRequestToken并非已存在的AWSPENDING版本标识,而是用于标记待创建新版本的令牌。

核心逻辑:

  • 启动轮换时,Secrets Manager仅初始化流程并生成令牌,不会预先创建AWSPENDING版本的密钥内容。
  • 该令牌的作用是让Lambda调用putSecretValue时,将新生成的密钥与令牌绑定,从而把新版本标记为AWSPENDING状态。
  • 因此在create_secret步骤直接用该令牌调用getSecretValue,会因版本尚未创建而抛出异常——这是流程设计的正常现象,不是bug。

Secrets Manager 自动轮换的完整流程

密钥轮换分为四个核心步骤,create_secret的设计就是让Lambda负责生成并存储新密钥:

  1. create_secret:
    • Secrets Manager生成唯一ClientRequestToken并触发Lambda。
    • Lambda捕获ResourceNotFoundException后,生成新密钥值,调用putSecretValue传入该令牌,此时Secrets Manager将新创建的版本标记为AWSPENDING。
  2. set_secret:
    • Lambda使用AWSPENDING版本的密钥,更新目标服务(如数据库、API)的凭据。
  3. test_secret:
    • Lambda验证新密钥能否正常访问目标服务,确保凭据可用。
  4. finish_secret:
    • Lambda调用updateSecretVersionStage,将AWSPENDING版本升级为AWSCURRENT,同时将旧AWSCURRENT版本标记为AWSPREVIOUS,完成轮换。

为何多数脚本会捕获该异常

这完全符合Secrets Manager的流程设计:create_secret步骤的核心职责是创建新的AWSPENDING版本,而非读取已存在的版本。捕获该异常是确认当前令牌对应的版本未被创建,进而执行生成并存储新密钥逻辑的标准做法。

内容的提问来源于stack exchange,提问作者Anish

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.12 00:21:09