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
  • EventBridge i API Destinations

    14 marca 2021
  • AWS SNS i NET.Core

    13 października 2017
  • AWS IoT ExpressLink

    22 sierpnia 2022
  • Serverless API – Jak postawić API bez serwera

    13 sierpnia 2017
  • 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.