AWS SSM按标签筛选调用DescribeParameters报ValidationException错误
问题对应报错
errorMessage: "An error occurred (ValidationException) when calling the DescribeParameters operation: An error occurred while calling one AWS dependency service."
错误根因
这个报错是三个高频问题导致的:
- 标签筛选的API参数结构缺失必填字段:使用
tag:前缀作为筛选键调用DescribeParameters时,必须显式指定Option匹配规则,仅传Key和Values时,后端调用标签依赖服务做校验会直接抛出依赖服务异常,不会返回常规的参数格式错误。 - Lambda执行角色权限缺失:按标签筛选SSM参数时,后端会调用资源标签服务做匹配,执行角色除了
ssm:DescribeParameters权限外,还需要tag:GetResources权限,缺权限时同样会触发依赖服务调用失败的报错。 - 次要触发场景:boto3客户端初始化时未指定正确区域,跨区域调用时后端依赖路由失败也会返回同类错误。
修复方案
首先修正API调用参数,补全必填的Option字段,同时建议将SSM客户端初始化移到handler内部,避免Lambda热启动时出现临时凭证过期问题:
import json import boto3 def lambda_handler(event, context): ssm_client = boto3.client('ssm') print("Fetch group A ssm parameter: ") leg_one_parameter = ssm_client.describe_parameters( ParameterFilters=[ { "Key": "tag:group", "Option": "Equals", "Values": ["A"] } ] )['Parameters'] parameter_name = [param['Name'] for param in leg_one_parameter] return parameter_name
如果账号下对应区域的SSM参数数量超过50个,需要额外处理分页逻辑,通过接口返回的NextToken参数循环拉取全量结果,避免漏数。
其次给Lambda执行角色补全所需IAM权限,最小权限参考配置如下:
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": "ssm:DescribeParameters", "Resource": "*" }, { "Effect": "Allow", "Action": "tag:GetResources", "Resource": "*" } ] }
如果需要做权限收敛,可以在tag:GetResources的语句里加Condition限制,仅允许访问对应标签的SSM参数资源。
内容的提问来源于stack exchange,提问作者Y.musa
相关产品推荐
相关产品推荐

