如何通过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
相关产品推荐
相关产品推荐

