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

  • AWS Lambda i idempotentność

    21 marca 2022
  • FaaS w chmurze IBM

    29 stycznia 2019
  • Czym jest dla mnie Cloud Native

    20 listopada 2020
  • Czyścimy Dockera

    12 sierpnia 2017
  • Dane w plikach CSV, JSON i SQL? Tak. AWS Athena

    22 września 2017
  • Apps
  • AWS
  • CloudNative
  • Cookbook
  • Data
  • DEV
  • EN
  • GCP
  • IoT
  • Istio
  • k8s
  • Security
  • Social
  • GitHub
  • LinkedIn
© 2026   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.