boto3 无法在响应条件下执行
boto3 not able to perform if condition on response
我正在尝试 describe_alarms 通过 boto3 sdk 为我的 aws 帐户使用。
当我尝试执行 if 条件响应但它不起作用时,
代码:-
for i in alarm['MetricAlarms']:
if i['MetricName] == 'Myalarm':
print(i[AlarmName])
print("done")
o/p :- 完成,而不是关联的警报名称
上面的代码将解析下面的响应
{
'MetricAlarms': [
{
'AlarmName': 'string',
'AlarmArn': 'string',
'AlarmDescription': 'string',
'AlarmConfigurationUpdatedTimestamp': datetime(2015, 1, 1),
'ActionsEnabled': True|False,
'OKActions': [
'string',
],
'AlarmActions': [
'string',
],
'InsufficientDataActions': [
'string',
],
'StateValue': 'OK'|'ALARM'|'INSUFFICIENT_DATA',
'StateReason': 'string',
'StateReasonData': 'string',
'StateUpdatedTimestamp': datetime(2015, 1, 1),
'MetricName': 'string',
'Namespace': 'string',
'Statistic': 'SampleCount'|'Average'|'Sum'|'Minimum'|'Maximum',
'ExtendedStatistic': 'string',
'Dimensions': [
{
'Name': 'string',
'Value': 'string'
},
],
'Period': 123,
'Unit': 'Seconds'|'Microseconds'|'Milliseconds'|'Bytes'|'Kilobytes'|'Megabytes'|'Gigabytes'|'Terabytes'|'Bits'|'Kilobits'|'Megabits'|'Gigabits'|'Terabits'|'Percent'|'Count'|'Bytes/Second'|'Kilobytes/Second'|'Megabytes/Second'|'Gigabytes/Second'|'Terabytes/Second'|'Bits/Second'|'Kilobits/Second'|'Megabits/Second'|'Gigabits/Second'|'Terabits/Second'|'Count/Second'|'None',
'EvaluationPeriods': 123,
'DatapointsToAlarm': 123,
'Threshold': 123.0,
'ComparisonOperator': 'GreaterThanOrEqualToThreshold'|'GreaterThanThreshold'|'LessThanThreshold'|'LessThanOrEqualToThreshold',
'TreatMissingData': 'string',
'EvaluateLowSampleCountPercentile': 'string'
},
],
'NextToken': 'string'
}
你的问题出在这一行:
print(i[AlarmName])
应该是:
print(i['AlarmName'])
但是,我总是在访问之前检查一个键是否在字典中。如果 API 更改、返回错误等,您的代码将崩溃:
if 'MetricAlarms' in alarm:
for i in alarm['MetricAlarms']:
if 'MetricName' in i:
if i['MetricName] == 'Myalarm':
print(i['AlarmName'])
print("done")
我正在尝试 describe_alarms 通过 boto3 sdk 为我的 aws 帐户使用。
当我尝试执行 if 条件响应但它不起作用时,
代码:-
for i in alarm['MetricAlarms']:
if i['MetricName] == 'Myalarm':
print(i[AlarmName])
print("done")
o/p :- 完成,而不是关联的警报名称
上面的代码将解析下面的响应
{
'MetricAlarms': [
{
'AlarmName': 'string',
'AlarmArn': 'string',
'AlarmDescription': 'string',
'AlarmConfigurationUpdatedTimestamp': datetime(2015, 1, 1),
'ActionsEnabled': True|False,
'OKActions': [
'string',
],
'AlarmActions': [
'string',
],
'InsufficientDataActions': [
'string',
],
'StateValue': 'OK'|'ALARM'|'INSUFFICIENT_DATA',
'StateReason': 'string',
'StateReasonData': 'string',
'StateUpdatedTimestamp': datetime(2015, 1, 1),
'MetricName': 'string',
'Namespace': 'string',
'Statistic': 'SampleCount'|'Average'|'Sum'|'Minimum'|'Maximum',
'ExtendedStatistic': 'string',
'Dimensions': [
{
'Name': 'string',
'Value': 'string'
},
],
'Period': 123,
'Unit': 'Seconds'|'Microseconds'|'Milliseconds'|'Bytes'|'Kilobytes'|'Megabytes'|'Gigabytes'|'Terabytes'|'Bits'|'Kilobits'|'Megabits'|'Gigabits'|'Terabits'|'Percent'|'Count'|'Bytes/Second'|'Kilobytes/Second'|'Megabytes/Second'|'Gigabytes/Second'|'Terabytes/Second'|'Bits/Second'|'Kilobits/Second'|'Megabits/Second'|'Gigabits/Second'|'Terabits/Second'|'Count/Second'|'None',
'EvaluationPeriods': 123,
'DatapointsToAlarm': 123,
'Threshold': 123.0,
'ComparisonOperator': 'GreaterThanOrEqualToThreshold'|'GreaterThanThreshold'|'LessThanThreshold'|'LessThanOrEqualToThreshold',
'TreatMissingData': 'string',
'EvaluateLowSampleCountPercentile': 'string'
},
],
'NextToken': 'string'
}
你的问题出在这一行:
print(i[AlarmName])
应该是:
print(i['AlarmName'])
但是,我总是在访问之前检查一个键是否在字典中。如果 API 更改、返回错误等,您的代码将崩溃:
if 'MetricAlarms' in alarm:
for i in alarm['MetricAlarms']:
if 'MetricName' in i:
if i['MetricName] == 'Myalarm':
print(i['AlarmName'])
print("done")