Używanie funkcji Lambda z niestandardowymi aplikacjami użytkownika
Możemy użyć funkcji lambda AWS do przetwarzania wygenerowanych zdarzeń przez aplikację użytkownika na dwa sposoby -
- Korzystanie z konsoli AWS
- Korzystanie z interfejsu wiersza polecenia AWS
Korzystanie z konsoli AWS
Z konsoli AWS będziemy pracować ze zdarzeniami i AWS Lambda. W tym celu przejdź do konsoli AWS i utwórz funkcję lambda.
Następnie dodajmy kod dla AWS Lambda -
exports.handler = (event, context, callback) => {
// TODO implement
console.log("Hello => "+ event.name);
console.log("Address =>"+ event.addr);
callback(null, 'Hello '+event.name +" and address is "+ event.addr);
};
Zwróć uwagę, że w powyższym kodzie drukujemy nazwę i adres za pomocą zdarzenia.
Szczegóły wydarzenia zostaną podane za pomocą zdarzenia testowego utworzonego w następujący sposób -
Teraz zapisz wydarzenie i przetestuj je.
Odpowiednie dane wyjściowe dziennika są pokazane tutaj -
Korzystanie z interfejsu wiersza polecenia AWS
Możemy wywołać powyższą funkcję za pomocą interfejsu wiersza polecenia AWS w następujący sposób -
aws lambda invoke --function-name "lambdauserevent" --log-type Tail --
payload file://C:\clioutput\input.txt C:\clioutput\outputfile.txt
Szczegóły zdarzenia są przekazywane do ładunku, a dane wyjściowe są przechowywane w C:\clioutput\outputfile.txt. w następujący sposób -
input.txt
{"name":"Roy Singh", "addr":"Mumbai"}
Wywołując Lambdę za pomocą interfejsu wiersza polecenia AWS, można zobaczyć następujące dane wyjściowe -
Podobnie, jeśli chcesz przetestować AWS Lambda dla dowolnej innej usługi AWS, możesz to zrobić za pomocą zdarzenia testowego w konsoli AWS i AWS CLI. Przykładowe wydarzenie dla usługi SNS pokazano poniżej -
{
"Records": [{
"EventVersion": "1.0",
"EventSubscriptionArn": "arnid",
"EventSource": "aws:sns",
"Sns": {
"SignatureVersion": "1",
"Timestamp": "1970-01-01T00:00:00.000Z",
"Signature": "EXAMPLE",
"SigningCertUrl": "EXAMPLE",
"MessageId": "95df01b4-ee98-5cb9-9903-4c221d41eb5e",
"Message": "Hello from SNS!",
"MessageAttributes": {
"Test": {
"Type": "String",
"Value": "TestString"
},
"TestBinary": {
"Type": "Binary",
"Value": "TestBinary"
}
},
"Type": "Notification",
"UnsubscribeUrl": "EXAMPLE",
"TopicArn": "topicarn",
"Subject": "TestInvoke"
}
}]
}
Dodajmy przykładowe zdarzenie pokazane powyżej i przetestujmy je, jak pokazano -
W AWS Lambda kod wypisze komunikat SNS, jak pokazano w przykładzie podanym poniżej -
exports.handler = (event, context, callback) => {
// TODO implement
console.log(event.Records[0].Sns.Message);
callback(null, event.Records[0].Sns.Message);};
Wywołajmy to samo za pomocą interfejsu wiersza polecenia AWS. Zapiszmy zdarzenie w pliku i użyjmy go jako ładunku za pomocą pokazanego polecenia -
aws lambda invoke --function-name "lambdauserevent" --log-type Tail --
payload file://C:\clioutput\sns.txt C:\clioutput\snsoutput.txt