Boto3 AWS API 对 SSM 的错误响应
Boto3 AWS API error responses for SSM
我正在使用一个简单的 boto3 脚本从我的 aws 帐户中的 SSM 参数存储中检索一个参数。 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. Related AWS API Docs 的方法签名确认 return 当参数存储中不存在参数时的 400 响应。
我的问题是如何验证响应中捕获的异常是否实际上是 400 状态码,以便我可以相应地处理它。
你可以试试抓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")
您可以通过 response['Error']['Code'] 查看状态,但由于出现 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
我正在使用一个简单的 boto3 脚本从我的 aws 帐户中的 SSM 参数存储中检索一个参数。 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. Related AWS API Docs 的方法签名确认 return 当参数存储中不存在参数时的 400 响应。
我的问题是如何验证响应中捕获的异常是否实际上是 400 状态码,以便我可以相应地处理它。
你可以试试抓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")
您可以通过 response['Error']['Code'] 查看状态,但由于出现 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