我使用简单的boto3脚本从我的aws帐户中的SSM param商店中检索参数。 python脚本如下所示:
client = get_boto3_client('ssm', 'us-east-1')
try:
response = client.get_parameter(Name='my_param_name',WithDecryption=True)
except Exception as e:
logging.error("retrieve param error: {0}".format(e))
raise e
return response
如果给定的参数不可用,我会在响应中收到一般错误,如下所示:
An error occurred (ParameterNotFound) when calling the GetParameter operation: Parameter my_param_name not found.
我已经验证了来自boto3 ssm docs的方法签名。相关AWS API Docs确认在param存储中不存在参数时返回400响应。
我的问题是如何验证响应中捕获的异常是否实际上是400状态代码,以便我可以相应地处理它。
答案 0 :(得分:2)
您可以尝试捕获client.exceptions.ParameterNotFound
:
client = get_boto3_client('ssm', 'us-east-1')
try:
response = client.get_parameter(Name='my_param_name',WithDecryption=True)
except client.exceptions.ParameterNotFound:
logging.error("not found")
答案 1 :(得分:0)
您可以通过回复['错误'] ['代码']来查看状态,但由于400有多种原因,我建议采用更好的方法:
response = client.get_parameter(Name='my_param_name',WithDecryption=True)
if 'Parameters' not in response:
raise ValueError('Response did not contain parameters key')
else:
return response