使用AWS Secrets Manager检索密钥遇UnknownServiceError及CLI服务缺失求助
看起来你踩了AWS SDK/CLI版本太旧的坑啦!这个UnknownServiceError: Unknown service: 'secretsmanager'和CLI里提示secretsmanager不是有效服务的问题,本质都是同一个原因:你的AWS开发工具版本太老,还没集成Secrets Manager的支持——毕竟Secrets Manager是2018年才推出的服务,旧版本的SDK/CLI根本不知道它的存在。
下面分两部分给你解决办法:
一、修复SDK的密钥检索错误
先确认当前SDK版本
以Python的boto3为例,运行以下命令查看版本:pip show boto3 pip show botocore要支持Secrets Manager,boto3至少需要1.7.0以上版本,botocore得是1.10.0以上。其他语言的SDK也类似,比如Java SDK需要包含
aws-java-sdk-secretsmanager模块的新版本。升级到最新版SDK
- Python(boto3):
pip install --upgrade boto3 botocore - Node.js(aws-sdk):
npm install aws-sdk@latest - Java(Maven):更新pom.xml里的AWS SDK依赖到最新稳定版,或者单独添加
aws-java-sdk-secretsmanager的最新依赖。
升级完成后,重新运行你的密钥检索代码,应该就能正常识别secretsmanager服务了。
- Python(boto3):
二、修复AWS CLI的服务不可用问题
检查当前CLI版本
运行命令查看:aws --version如果你用的是AWS CLI v1,版本在1.14.x及以前的话,是没有Secrets Manager相关命令的;v2的旧版本也可能存在这个问题。
升级AWS CLI
- 如果你是用pip安装的CLI v1:
pip install --upgrade awscli - 如果你用的是AWS CLI v2:根据你的操作系统下载最新安装包重新安装,比如Linux环境可以用:
curl "https://awscli.amazonaws.com/awscli-exe-linux-x86_64.zip" -o "awscliv2.zip" unzip awscliv2.zip sudo ./aws/install
升级后,运行
aws secretsmanager help,如果能显示完整的命令帮助,就说明已经支持Secrets Manager了,接下来用aws secretsmanager get-secret-value这类命令就能正常查询密钥啦。- 如果你是用pip安装的CLI v1:
额外提醒
等工具版本问题解决后,还要确保你的AWS账号(或EC2实例的IAM角色)有访问Secrets Manager的权限,比如需要secretsmanager:GetSecretValue这类权限,避免后续遇到权限相关的报错。
内容的提问来源于stack exchange,提问作者Neron Joseph

