2017-10-20 27 views
-4

J'essaye d'écrire ma première fonction Lambda avec RunTime comme 'Python 3.6'. Voici les sélections lors de la création de la fonction: Rôle - Sélectionnez un rôle personnalisé. Rôle Existant - Lambda Basic exécution code Python ci-dessous:Erreur AWS Lambda Handler - Erreur de syntaxe dans le module 'index':

import json 
def index_handler(event, context): 
data = '{"Type": "SubscriptionConfirmation2","MessageId": 
"123","SubscribeURL": "https://www.google.com"}' 
data1 = json.loads(data) 
print (data1['Type']) 
if data1['Type'] == "SubscriptionConfirmation": 
var=data1['SubscribeURL'] 
elif data1['Type'] == "Notification" and data1['SubscribeURL'] == var and 
var != "": 
var=data1['SomeOtherProperty'] 
else: 
return "Invalid JSON input" 
return var 

Pendant l'exécution, je suis, obtenir ci-dessous erreur:

{ 
"errorMessage": "Bad handler 'index_handler'" 
} 

sortie du journal:

START RequestId: 3b263d82-b58c-11e7-aa6f-37f006380a9a Version: $LATEST 
Bad handler 'index_handler': not enough values to unpack (expected 2, got 1) 

END RequestId: 3b263d82-b58c-11e7-aa6f-37f006380a9a 
REPORT RequestId: 3b263d82-b58c-11e7-aa6f-37f006380a9a Duration: 0.58 ms 
Billed Duration: 100 ms  Memory Size: 1280 MB Max Memory Used: 22 MB 

S'il vous plaît laissez-moi savoir comment résoudre cette erreur et exécuter avec succès ma première fonction lambda? Après l'exécution, mon but du code est d'obtenir HTTPrequests puis lire sa valeur JSON (qui actuellement j'ai stocké dans une variable)

est Ci-dessous l'instantané de la fonction AWS lambda: enter image description here

+2

Est-ce que cela vous ressemble à la syntaxe Python? Je vous suggère de lire le tutoriel officiel [Python] (https://docs.python.org/3/tutorial/). En lisant cela, vous découvrirez que Python n'utilise pas '{}' comme ceci, ni n'utilise ';' et que l'indentation est pertinente! –

+0

Le code python précédent a été testé avec succès dans le compilateur python en ligne https://repl.it/Mwpx Mais j'ai maintenant édité le code dans la question principale selon la solution fournie par Unglückspilz. –

Répondre

1

Vous » Re essayant d'utiliser javascript dans une fonction python lambda. Jetez un oeil aux exemples de python disponibles lors de la création de la fonction. La signature du gestionnaire doit être def lambda_handler(event, context) et les résultats sont simplement renvoyés par le gestionnaire (il n'y a pas de rappel).

EDIT: Votre code est toujours plein d'erreurs et son code python est invalide. Voici une version modifiée de ce que vous avez posté qui devrait fonctionner pour un lambda d'exécution Python avec un gestionnaire lambda_function.index_handler.

import json 

def index_handler(event, context): 
    data = '{"Type": "SubscriptionConfirmation2","MessageId": "123","SubscribeURL": "https://www.google.com"}' 
    data1 = json.loads(data) 

    print (data1['Type']) 
    if data1['Type'] == "SubscriptionConfirmation": 
     var=data1['SubscribeURL'] 
    elif data1['Type'] == "Notification" and data1['SubscribeURL'] == var and var != "": 
     var=data1['SomeOtherProperty'] 
    else: 
     return "Invalid JSON input" 

    return var 
+0

Merci pour votre réponse. J'ai fait les changements dans le code selon votre syntaxe et également édité dans le code dans la question principale ci-dessus. Toujours la même erreur - Erreur de syntaxe dans le module 'index': syntaxe invalide (index.py, ligne 1). Aidez s'il vous plaît! –

+1

Votre code est plein d'erreurs. Comme je l'ai dit, utilisez l'un des exemples intégrés qui vous sont fournis lors de la création d'une fonction lambda et commencez à partir de là –

+0

Essayé, pas de chance! Mon code précédent a également été testé en utilisant le compilateur python en ligne https://repl.it/Mwpx. J'ai de toute façon édité le code dans la question principale avec le code fourni par vous encore avec la nouvelle erreur - "errorMessage": "Bad handler 'index_handler'". J'ai également joint l'instantané de l'image de mon portail AWS dans la question principale. Vérifiez s'il vous plaît. –