• Akademia
  • Blog
  • O Serverless
  • O stronie

AWS Lambda wspiera Node.js 14


AWS Lambda
W ubiegłym tygodniu AWS dodało wsparcie w usłudze Lambda dla Node.js w wersji 14 LTS. Po przejściu na nową wersję runtime możemy wykorzystać udostępnione nowości, o czym w dalszej części.

Co nowego?

Silnik V8 został zaktualizowany do wersji 8.1, dzięki czemu dostaliśmy do dyspozycji:

  • Optional Chaining - operator ?. - zwraca wartość lub undefined, gdy zmienna nie istnieje
  • Nullish Coalescing - operator ??, który zwraca prawą stronę, gdy lewa jest niezdefiniowana lub null
  • Intl.DateTimeFormat oraz Intl.DisplayNames - translacje (i18n)

Z powyższych zmian, z utęsknieniem czekałem na optional chaining operator ?. Jego użycie znacznie upraszcza kod i powoduje mniejszą liczbę błędów przy obsłudze danych. Spójrz na poniższy przykład. Posiadając literał person o standardowych parametrach takich jak imię, nazwisko, adres, możemy oczekiwać, że adres będzie miał pola miasto i ulica.

Co jeśli osoba nie ma adresu? Musimy się przed tym zabezpieczyć w ifie.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
const person = {
name: 'Paweł',
// nie ma adresu ustawionego bo takie dane otrzymaliśmy
// address: {
// city: 'Wrocław',
// street: '...'
// }
};

// Po staremu musimy sprawdzać w ten sposób
if (person && person.address && person.address.city) {
console.log('1', person.address.city);
}

// Używając nowego ?. operatora możemy to uprościć
if (person?.address?.city) {
console.log('2', person.address.city);
}
// Lub pomiąć if i bezpośrednio odwołać się do wartości
// Zakładając, że metoda - tutal consol.log - da sobie radę z undefined
console.log('3', person?.address?.city);

Uruchomienie powyższego kodu zwróci na konsolę:

1
3 undefined

To jest naprawdę super sprawa, która znacząco ułatwi pisanie kodu na co dzień. 😃 😃 😃

Otrzymaliśmy też Raporty diagnostyczne - to dane w formacie JSON zawierające informacje o procesach, które obejmują stosy wywołań, informacje o systemie operacyjnym, załadowane moduły i inne kluczowe dane, które zostały sformułowane w celu obsługi istniejącej aplikacji i powiązania ich z określonymi zdarzeniami w aplikacji. Ułatwiają wykrycie problemów i odpowiednie rozwiązanie. Raporty diagnostyczne są w stanie wykryć:

  • Nieprawidłowe zakończenie działania aplikacji
  • Niską wydajność
  • Wycieki pamięci
  • Wysokie użycie procesora.
  • Nieoczekiwane błedy
  • i nieprawidłowe wyjście (output).

Więcej informacji o Node.js w tym artykule: New Features & Improvement In Node Version 14.0.

Podsumowanie runtimeów Node.js

Zwróć uwagę, że jeszcze nie podano daty zakończenie wsparcia (deprecation) Node 12.

Name Identifier AWS SDK for JavaScript Operating System Wsparcie do
Node.js 14 nodejs14.x 2.804.0 Amazon Linux 2 -
Node.js 12 nodejs12.x 2.804.0 Amazon Linux 2 -
Node.js 10 nodejs10.x 2.804.0 Amazon Linux 2 28 maja 2021
Źródło: https://docs.aws.amazon.com/lambda/latest/dg/lambda-nodejs.html,
https://docs.aws.amazon.com/lambda/latest/dg/runtime-support-policy.html

News na stronie AWS Compute Blog Node.js 14.x runtime now available in AWS Lambda.