#python #dictionary
#python #словарь
Вопрос:
У меня есть этот диктант от AWS:
и я пытаюсь получить ключ Name на:
Проверки работоспособности-> HealthCheckConfig-> AlarmIdentifier-> Name
но, похоже, python останавливается на HealthCheckConfig:
for alarm in alarms['HealthChecks']:
print('Alarm: %s' % alarm )
if unicode('AlarmIdentifier') in alarm['HealthCheckConfig']:
print('Alarm Name: %s' % alarm['AlarmIdentifier'] )
я получаю:
Alarm: {u'HealthCheckConfig': {u'InsufficientDataHealthStatus': '... u'MetricName': 'HTTPCode_Target_5XX_Count'}}
Traceback (most recent call last):
File "lambda_function.py", line 283, in <module>
main()
File "lambda_function.py", line 279, in main
lambda_handler('start', 'test')
File "lambda_function.py", line 263, in lambda_handler
freeSWITCH.setHC(fsNode ' CPU Health', aws_creds, 0)
File "/home/admin/scripts/myscript/myscript.py", line 81, in setHC
print('Alarm Name: %s' % alarm['AlarmIdentifier'] )
KeyError: 'AlarmIdentifier'
Есть идеи?
Комментарии:
1. ключ
AlarmIdentifier
не вalarm
, а вalarm['HealthCheckConfig']
нет?2. Пожалуйста, разместите (хотя бы некоторые) данные вместо ссылки на них.
Ответ №1:
Это то, что сработало, @PRMoureu указал на мою ошибку… Думаю, я сегодня слишком долго этим занимался.
alarms = client.list_health_checks(MaxItems='2')
print('alarms: %s' % alarms)
for alarm in alarms['HealthChecks']:
print('Alarm: %sn==============================' % alarm )
if unicode('AlarmIdentifier') in alarm['HealthCheckConfig']:
print('FOUND')
print('Alarm Name: %s' % alarm['HealthCheckConfig']['AlarmIdentifier']['Name'] )