Skip to content
malak.cloud
  • Contact
  • Przemek Malak
  • Search Icon

malak.cloud

Cloud-native in everyday life

Lambda context

Lambda context

19 grudnia 2017

Uruchomienie funkcji Lambda powoduje wywołanie handlera, czyli funkcji, która może wywołać inne funkcje lub zająć się obsługą przesłanych do niej danych.

Szkielet takiego handlera w różnych językach wygląda podobnie:

Node.js

exports.handler = (event, context, callback) => {
    callback(null, 'Hello from Lambda');
};

Python

def lambda_handler(event, context):
    return 'Hello from Lambda'

W C# (NET.Core) sprawa jest trochę bardziej skomplikowna, ale wywoływana funkcja wygląda tak

public string FunctionHandler(string event, ILambdaContext context)
{
    return event?.ToUpper();
}

Co łączy wszystkie technologie? Event i context. Event to dane przesłane „z zewnątrz” do funckji Lambda. Context to parametr, który przekazuje handlerowi informacje na temat tzw. runtime, czyli wszystko co trzeba wiedzieć o środowisku, w którym funkcja działa. I właśnie tym zajmiemy się dziś.

Lambda Context

Cześć właściwości kontekstu dostępna jest tylko, gdy funkcja wywoływana jest za pomocą AWS mobile SDK. Należą do nich identity oraz client_context. Pozostałe dostępne są jednak zawsze.
Dostępna jest jedna metoda get_remaining_time_in_millis(), która zwraca pozostały czas, po którym AWS przerwie działanie funkcji. Pozostałe to właściwości:

function_name – nazwa funkcji
function_version – wersja funkcji
invoked_function_arn – arn funkcji
memory_limit_in_mb – ilość pamięci, jaką ma do dyskozycji funkcja
aws_request_id – id wywołania (requestu)
log_group_name – grupa logów CloudWatch
log_stream_name – strumień logów CloudWatch

Poniżej kawałek kodu, który wystarczy wkleić jako kod lambdy (Python 3)

def lambda_handler(event, context):
    print('Nazwa funkcji: ' + context.function_name)
    print('Pozostały czas: {0} ms'.format(context.get_remaining_time_in_millis()))
    print('Pozostały czas: {0} s'.format(context.get_remaining_time_in_millis() / 1000))
    print('Wersja funkcji: ' + context.function_version)
    print('Limit pamięci: ' + context.memory_limit_in_mb + 'MB')
    print('ARN wywoływacza: ' + context.invoked_function_arn)
    return "Hi ;-)"

i powinnśmy dostać wynik podobny do
Lambda log
Jak widać srodowisko uruchomieniowe udostępnia nam sporo danych. Nie musimy z nich korzystać, ale często mogą być przydatne.


AWS, CloudNative, DEV
AWS, serverless

Post navigation

PREVIOUS
AWS Lambda – nowy edytor
NEXT
AWS Step Functions
Comments are closed.
Hi. My name is Przemek Malak. Thanks for visiting. I hope you found what I write about interesting.
If you'd like to chat with me, the easiest way is through LinkedIn.

Losowe wpisy

  • Serverless – drugi poziom wtajemniczenia

    18 czerwca 2019
  • API Gateway – Autoryzacja

    6 października 2017
  • Filtrowanie zdarzeń wyzwalających Lambdę

    27 listopada 2021
  • Amazon Web Services – Kolejki FIFO

    30 lipca 2017
  • AWS Lambda i idempotentność

    21 marca 2022
  • Apps
  • AWS
  • CloudNative
  • Cookbook
  • Data
  • DEV
  • EN
  • GCP
  • IoT
  • Istio
  • k8s
  • Security
  • Social
  • GitHub
  • LinkedIn
© 2025   All Rights Reserved.
Ta strona korzysta z ciasteczek aby świadczyć usługi na najwyższym poziomie. Dalsze korzystanie ze strony oznacza, że zgadzasz się na ich użycie.Zgoda