Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/amazon-web-services/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 3.x boto3无法在响应时执行if条件_Python 3.x_Amazon Web Services_Boto3_Amazon Cloudwatch - Fatal编程技术网

Python 3.x boto3无法在响应时执行if条件

Python 3.x boto3无法在响应时执行if条件,python-3.x,amazon-web-services,boto3,amazon-cloudwatch,Python 3.x,Amazon Web Services,Boto3,Amazon Cloudwatch,我正在尝试使用boto3 sdk为我的aws帐户描述报警 当我尝试在响应上执行if条件但它不起作用时 代码:- for i in alarm['MetricAlarms']: if i['MetricName] == 'Myalarm': print(i[AlarmName]) print("done") o/p:-完成,而不是相关报警的名称 上面的代码将在下面解析响应 { 'MetricAlarms': [ { 'AlarmName': 'st

我正在尝试使用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'])
然而,在访问之前,我总是检查dict中是否有密钥。如果API发生更改、返回错误等,您的代码将崩溃:

if 'MetricAlarms' in alarm:
  for i in alarm['MetricAlarms']:
    if 'MetricName' in i:
        if i['MetricName] == 'Myalarm':
           print(i['AlarmName'])
           print("done")

谢谢John,printi['AlarmName']已在代码中更正,将试用您提供的代码