Skip to content
malak.cloud
  • Kontakt
  • O mnie
  • Search Icon

malak.cloud

Cloud Native na co dzień

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.
Cześć. Nazywam się Przemek Malak. Dzięki za wizytę. Mam nadzieję, że to o czym piszę Cię zainteresowało. Jeżeli chcesz ze mną pogadać, najłatwiej będzie przez LinkedIn.

Losowe wpisy

  • AWS Lambda – Golang – Custom Runtime

    22 maja 2022
  • AWS UG Roadshow Katowice

    12 marca 2019
  • AWS API Gateway

    29 czerwca 2017
  • AWS Lambda – nowy edytor

    1 grudnia 2017
  • Jak utworzyć Lambda Layer w Pythonie

    9 czerwca 2022
  • Apps
  • AWS
  • CloudNative
  • Cookbook
  • Data
  • DEV
  • GCP
  • IoT
  • Istio
  • k8s
  • Security
  • Social
  • GitHub
  • LinkedIn
© 2023   All Rights Reserved.