AWS CLI调用get-parameter在GitHub Runner中获取旧版本参数问题
AWS Parameter Store 本地与GitHub Runner版本不一致问题排查方案
以下是针对该问题的排查和解决技巧:
核对AWS身份与区域
- 确认GitHub Runner使用的AWS凭证所属账户,必须和本地操作的是同一个AWS账户。跨账户访问时,可能看到的是另一个账户中同名参数的旧版本。
- 检查Runner的AWS区域配置,确保和创建参数的区域完全一致。可以在Runner中执行
aws configure get region查看当前区域,或者直接在命令中显式指定区域测试:aws ssm get-parameter --with-decryption --name "/my/secret/path" --region us-east-1 --output text --query Parameter.Version
检查IAM权限与策略限制
- 验证Runner使用的IAM角色/用户是否具备访问SSM参数所有版本的权限。如果IAM policy中添加了
ssm:Version等于1的条件限制,就会导致只能获取版本1。示例错误策略:
需移除该条件或调整为允许访问所需版本。{ "Effect": "Allow", "Action": "ssm:GetParameter", "Resource": "arn:aws:ssm:us-east-1:123456789012:parameter/my/secret/path", "Condition": {"StringEquals": {"ssm:Version": "1"}} } - 检查参数的资源策略(如果配置了),确认没有阻止Runner身份访问新版本参数。
- 验证Runner使用的IAM角色/用户是否具备访问SSM参数所有版本的权限。如果IAM policy中添加了
修正CLI命令格式
官方推荐通过--version参数指定版本,而非在名称后追加:4。尝试在Runner中执行以下命令测试:aws ssm get-parameter --with-decryption --name "/my/secret/path" --version 4 --output text --query Parameter.Value避免因格式解析差异导致的版本识别失败。
排查缓存与配置问题
- 在Runner中清理AWS CLI缓存,执行
rm -rf ~/.aws/cache后重新测试命令。 - 检查Runner环境中是否存在自定义SSM端点的环境变量(如
AWS_SSM_PARAMETER_STORE_ENDPOINT),这类变量会导致请求指向非官方服务,返回旧数据。
- 在Runner中清理AWS CLI缓存,执行
验证参数存在性与网络连通性
在Runner中执行参数查询命令,确认返回的参数元数据是否和本地一致:aws ssm describe-parameters --parameter-filters "Key=Name,Values=/my/secret/path" --query "Parameters[*].{Name:Name,Version:Version}"如果返回的版本和本地不符,说明Runner访问的是不同的参数资源;如果命令执行超时或报错,需排查网络代理、防火墙对SSM服务的访问限制。
内容的提问来源于stack exchange,提问作者Matt Clark
相关产品推荐
相关产品推荐

