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

如何通过Lambda获取AWS Systems Manager参数存储最新及上一版本参数值

解决方案

完全可以实现,核心思路是先获取LATEST版本参数的元数据(包含版本号),再用版本号减1获取上一版本的值。

具体步骤

  • 调用SSM的get_parameter接口获取LATEST版本的参数,响应结果里会返回该参数的Version字段,这就是最新版本号。
  • 用最新版本号减1,再次调用get_parameter并指定这个版本号,即可获取上一版本的参数值。

Python代码示例(基于boto3)

import boto3
from botocore.exceptions import ClientError

ssm_client = boto3.client('ssm')

def lambda_handler(event, context):
    param_name = "/your/parameter/name"  # 替换为你的参数路径
    try:
        # 获取最新版本参数及版本号
        latest_param = ssm_client.get_parameter(
            Name=param_name,
            WithDecryption=True  # 参数加密时启用,非加密可移除
        )
        latest_version = latest_param['Parameter']['Version']
        latest_value = latest_param['Parameter']['Value']

        # 处理参数只有1个版本的情况
        if latest_version == 1:
            return {
                "message": "参数仅存在1个版本,无历史版本",
                "latest_version": latest_version,
                "latest_value": latest_value
            }

        # 获取上一版本参数
        prev_version = latest_version - 1
        prev_param = ssm_client.get_parameter(
            Name=param_name,
            Version=prev_version,
            WithDecryption=True
        )
        prev_value = prev_param['Parameter']['Value']

        return {
            "latest_version": latest_version,
            "latest_value": latest_value,
            "previous_version": prev_version,
            "previous_value": prev_value
        }
    except ClientError as e:
        return {"error": str(e)}

注意事项

  • Lambda执行角色需要具备ssm:GetParameter权限,权限策略默认允许访问参数的所有保留版本,无需额外指定版本范围。
  • SSM参数存储默认保留最新100个版本,若最新版本号减1超出保留范围(比如版本号为101,上一版本100已被清理),调用会返回ParameterNotFound错误,建议添加异常捕获处理。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.18 09:20:12