boto3 не может выполнить, если условие на ответ - PullRequest
0 голосов
/ 14 сентября 2018

Я пытаюсь использовать description_alarms, используя boto3 sdk, для моей учетной записи aws.

, когда я пытаюсь выполнить условие условия ответа, но оно не работает,

код: -

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'

}

1 Ответ

0 голосов
/ 14 сентября 2018

Ваша проблема с этой строкой:

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")
...