Artykuł o tym, jak przekazać zmienną do funkcji AWS Lambda za pomocą zdarzenia CloudWatch event. Za pomocą CloudWatch event możesz przekazywać różne zmienne i uruchamiać różny kod. Możesz mięć tylko jedną funkcję Lambda i używając innej wartości zmiennej wywołać zupełnie inne zachowanie.
Co możesz z tym zrobić? Możesz np. przekazać wartość, która co jakiś czas rozgrzeje funkcję AWS lambda i zapobiegnie zimnemu startowi. Więcej na ten temat w innym artykule.
Jedna funkcja lambda może odpowiadać za uruchamianie i zatrzymywanie maszyn ec2, w zależności od tego, jaką wartość zmiennej przekażesz, to funkcja lambda wykona stop lub start maszyn ec2. Nie martw się, wkrótce nagram film i o tym.
Rola IAM
Ja do roli IAM dodam tylko uprawnienia dotyczące logów, Ty możesz pozwolić swojej funkcji na dużo więcej 😉
Funkcja Lambda
Zazwyczaj tworzę funkcje Lambda, używając najnowszej wersji python, aktualnie jest to python 3.11
. Wybieram także rolę IAM, którą utworzyłem wcześniej.
Kod jest bardzo prosty. Jeśli zmienna cloudwatch
przekazana przez CloudWatch event ma wartość option_1
, to wykona się pierwsza część kodu. Jeśli zmienna będzie miała wartość option_2
, to druga część, a jeśli option_3
, to trzecia część.
Dodatkowo, jeśli funkcja zostanie uruchomiona ręcznie i nie zostanie przekazana żadna zmienna, albo zmienna będzie miała inną wartość, to wykona się kod z bloku else
.
Poniżej kod funkcji lambda::
import json
def lambda_handler(event, context):
variable_from_cloudwatch_event = event.get('cloudwatch')
if variable_from_cloudwatch_event == "option_1":
print("You chose option 1, execute code 1...")
if variable_from_cloudwatch_event == "option_2":
print("You chose option 2, execute code 2...")
if variable_from_cloudwatch_event == "option_3":
print("You chose option 3, execute code 3...")
else:
print("Function triggered manually, or variable not read from Cloudwatch event, execute code...")
CloudWatch event
Teraz najważniejsze, czyli dodanie triggera EventBridge (CloudWatch event)
. Możesz to zrobić z poziomu lambdy albo Amazon EventBridge. Jeśli robisz to z poziomu lambdy, to musisz pamiętać o konieczności jego późniejszej konfiguracji.
W tym celu należy przejść do Amazon EventBridge wybrać utworzony wcześniej trigger i go edytować. W kroku trzecim przy wybranym celu należy wejść w dodatkowe ustawienia wybrać constant (JSON text)
i wpisać co potrzeba. Ja wybrałem nazwę zmiennej cloudwatch
o wartości option_2
:
Kod dodany do constant (JSON text)
:
{
"cloudwatch":"option_2"
}
Zachęcam do obejrzenia filmu i sprawdzenia jak to działa w praktyce How to pass variable from CloudWatch event to AWS Lambda function | Tutorial with demo 2023 – YouTube.
Podsumowanie
Jak widzisz, uruchamianie funkcji lambda z różnymi wartościami zmiennej nie jest takie trudne. Zachęcam do eksperymentowania i tworzenia bardziej złożonych rozwiązań. Nie warto kopiować całego kodu i tworzyć kolejnych funkcji, gdy chce się zmienić tylko drobną rzecz w działaniu funkcji.
Zachęcam do zajrzenia na mój kanał YouTube Wojciech Lepczyński – YouTube, zdobywania nowej wiedzy i rozwijania się, to może pozytywnie wpłynąć na Twoje życie i finanse.