Как проверить наличие ключа в лямбда-функции события - PullRequest
0 голосов
/ 07 августа 2020

У меня есть событие ниже

event = {'body-json': {}, 'params': {'path': {'match': '%20'}, 'querystring': {}, 'header': {'Accept': '*/*', 'Accept-Encoding': 'gzip, deflate, br', 'Content-Type': 'application/json', 'Host': 'xx.amazonaws.com', 'Postman-Token': '50ae98db-6077-47c4-ac11-bfc53ac78990', 'User-Agent': 'PostmanRuntime/7.26.2', 'X-Amzn-Trace-Id': 'Root=1-5f2cb950-27ff7e6789988bd6b1a74d76', 'X-Forwarded-For': 'xxx.24', 'X-Forwarded-Port': '443', 'X-Forwarded-Proto': 'https'}}, 'stage-variables': {}, 'context': {'account-id': '', 'api-id': 'xx', 'api-key': '', 'authorizer-principal-id': '', 'caller': '', 'cognito-authentication-provider': '', 'cognito-authentication-type': '', 'cognito-identity-id': '', 'cognito-identity-pool-id': '', 'http-method': 'POST', 'stage': 'v1', 'source-ip': 'xx.24', 'user': '', 'user-agent': 'PostmanRuntime/7.26.2', 'user-arn': '', 'request-id': '8d13e523-de12-4527-b58d-b11a7c8d09fb', 'resource-id': 'td4vr4', 'resource-path': '/{match}'}}

Я создал шлюз api в AWS {match} в методе публикации

мой адрес шлюза api - https://3xx.amazonaws.com/v1/Messi, Лев

event['params']['path']['match'] = 'Messi,Leo'

Проблема

  • , если мой URL-адрес apigateway https://3xx.amazonaws.com/v1/, если я поставил пробел после v1 появляется ошибка ключа

  • , если я помещаю специальный символ, например ($ space, dot) https://3xx.amazonaws.com/v1/ $ , я не должен получать ошибку ключа.

  • Прямо сейчас выдает ошибку KeyError, только если поставить пробел после v1. Вы можете видеть в событии для соответствия его '% 20'

  • , если KeyError мне нужно распечатать, есть no result Я пытался использовать try / except, но все еще появляется как ошибка ключа

Код

def lambda_handler(event, context):
    print (event) 
    var = event['params']['path']['match']
    #print (var)
    try :
        if var  == '':
            print ('tried')
    except Exception as e:
            print ('excepted')

1 Ответ

0 голосов
/ 07 августа 2020

При использовании try \ except необходимо заключить код ошибки в try \ except:

def lambda_handler(event, context):
    print (event) 
    try:
        var = event['params']['path']['match']  # error here
        #print (var)
        if var  == '':
            print ('tried')
    except Exception as e:
            print ('excepted')
...