Browsed by
Tag: Dev

SAM Accelerate

SAM Accelerate

Praca nad aplikacjami Serverless powoduje zmianę podejścia do testowania. Przynajmniej powinna powodować. Testowanie na lokalnych maszynach, choć czasem możliwe, jest trudne. Emulowanie infrastruktury chmurowej lokalnie jest trudne i czasochłonne. AWS udostępnił własnie wszystkim SAM Accelerate, które znakomicie przyśpiesza testy bezpośrednio w chmurze AWS. Programista może teraz tworzyć kod aplikacji lokalnie na swojej maszynie i szybko testować go w natywnym środowisku w AWS. O sam pisałem juz wielokrotnie. Tutaj na przykład tworzyliśmy customowy runtime dla Golang, a tu filtrowaliśmy wiadomości w kolejce SQS, które…

Read More Read More

Jak utworzyć Lambda Layer w Pythonie

Jak utworzyć Lambda Layer w Pythonie

W krótkim czasie dwa razy pokazywałem jak utworzyć Lambda Layer w Pythonie, postanowiłem więc utworzyć krótki tutorial. Mało tekstu, trochę kodu i mamy działające rozwiązanie. Więcej pisałem o tym już wcześniej. Jak utworzyć Lambda Layer w Pythonie Tym razem nie dane CI/CD, jak najszybciej i najłatwiej dążymy do celu. Na początek tworzymy dwie rzeczy. Pierwszą jest katalog, w którym umieścimy nasze „rzeczy”, które chcemy udostępnić w warstwie. Tworzymy go więc mkdir python Drugą jest plik requirements.txt touch requirements.txt, do którego…

Read More Read More

AWS Lambda i idempotentność

AWS Lambda i idempotentność

Czym jest idempotentność? Według Wikipedii to właściwość pewnych operacji, która pozwala na ich wielokrotne stosowanie bez zmiany wyniku. Jaki to ma związek z nami? W tym artykule pokażę jak mają się do siebie AWS Lambda i idempotentność. W świecie aplikacji, szczególnie tych opartych o mikrosierwisy może wystąpić sytuacja, że np. jakaś wiadomość z kolejki zostanie przekazana do serwisu więcej niż jeden raz. To na nas spoczywa odpowiedzialność, żeby takie wielokrotne wywołanie np. funkcji Lambda poprzez takie samo zdarzenie przynosiło za każdym…

Read More Read More

s3destroyer

s3destroyer

Strasznie denerwuje mnie usuwanie bucketów S3. Jak usunąć bucket S3? Usuń wszystko, wersje, delete markery. Potem usuń sam bucket. Można to sobie oskryptować, ale chciałem mieć narzędzie, które po prostu usunie bucket bez zadawania zbędnych pytań. Szukałem i nie znalazłem. Może źle szukałem, ale w końcu stworzyłem swoje własne. Jako weekendowy projekt. Nazwałem je s3destroyer. Nazwa zobowiązuje 😉 I działa. Bez zbędnych pytań usuwa bucket w usłudze S3. s3destroyer Kod jest oczywiście dostępny na GitHub więc możesz zobaczyć, że nic złego…

Read More Read More

Jak skasować pliki w S3 przy usuwaniu stacka Cloudformation

Jak skasować pliki w S3 przy usuwaniu stacka Cloudformation

Często, a właściwie prawie zawsze, jeżeli tworzymy buckety S3 za pomocą CloudFormation, to przy usuwaniu stacka mamy problem. AWS nie usunie bucketa, jeżeli są w nim jakieś pliki. A przewaznie są, bo po coś go w końcu tworzyliśmy. Dziś pokażę, jak skasować pliki w S3 przy usuwaniu stacka Cloudformation. Jeżeli ktoś nie napotkał jeszcze tego problemu, to szybko go zobrazujemy. Utworzymy bucket za pomocą poniższego template: AWSTemplateFormatVersion: 2010-09-0920 Description: — Resources: Bucket: Type: 'AWS::S3::Bucket’ Properties: LifecycleConfiguration: Rules: – Id: expiration…

Read More Read More

CI/CD za pomocą AWS Copilot

CI/CD za pomocą AWS Copilot

W poprzednim artykule o AppRunner pokazałem w jaki sposób łatwo wdrożyć w AWS skalowalną aplikację opartą o kontenery. Dziś zajmiemy się zbudowaniem procesu CI/CD za pomocą AWS Copilot. Zakładam, że mamy nasze źródła w repozytorium na GitHubie. Możecie zrobić forka z mojego lub utworzyć nowe. Mamy więc działającą aplikację w AWS App Runner, źródła w repozytorium. Przechodzimy do działania. CI/CD za pomocą AWS Copilot AWS Copilot potrafi utworzyć dla nas proces CI/CD. Cały proces deploymentu aplikacji będzie mógł być dzięki…

Read More Read More

Filtrowanie zdarzeń wyzwalających Lambdę

Filtrowanie zdarzeń wyzwalających Lambdę

Wczoraj AWS umożliwił filtrowanie zdarzeń pochodzących z usług SQS, DynamoDB oraz Kinesis, które wyzwalają wykonanie funkcji Lambda. Szkoda, że nie jakieś dwa tygodnie temu. Przydałoby się w jednym rozwiązaniu wdrożonym u klienta, gdzie filtrowanie zdarzeń wyzwalających Lambdę, a właściwie filtrowanie samych wiadomości, które były procesowane zaimplementowaliśmy wewnątrz funkcji. To bardzo fajna możliwość. Pozwoli, w niektórych przypadkach dość znacząco, zmniejszyć koszty. Ponad to uprości implementację samych funkcji. Będzie w nich mniej warunków. Przetestowałem to sobie, zobaczmy więc jak to wygląda. Filtrowanie…

Read More Read More

AWS Copilot CLI i AWS App Runner

AWS Copilot CLI i AWS App Runner

Pisałem już kilka razy o różnych usługach AWS umożliwiających wdrażanie skonteneryzowanych aplikacji. Było między innymi o tym, jak skalować aplikacje w usłudze ECS. Jednak kontenery można wdrożyć w AWS o wiele łatwiej. W tym artykule pokażę jak za pomocą AWS Copilot CLI i AWS App Runner uruchomić aplikację w chmurze AWS. Co to jest AWS App Runner AWS App Runner to usługa, która umożliwia uruchamianie w AWS skonteneryzowanych aplikacji typu response-request bez konieczności budowania całej infrastruktury pod spodem. Korzystanie z…

Read More Read More

AWS Lambda i kontenery – Cold Start

AWS Lambda i kontenery – Cold Start

Jak pisałem ostatnio AWS umożliwił uruchamianie za pomocą funkcji Lambda skonteneryzowancyh aplikacji. Sprawdziłem jak wygląda czas inicjalizacji takiej funkcji. Czyli tak zwany cold start. A właściwie, jak upomniał mnie Paweł Zubkiewicz, część cold startu. Nie robiłem wielkich badań. Każda funkcja była uruchomiona tylko kilka razy. Nie jest to więc opracowanie naukowe, ale jakieś wnioski można wysnuć. Uruchomiłem też taki sam kod, albo taką samą funkcjonalność, bez użycia Dockera. Próby przeprowadziłem dla Go i .Net Core 3.1. Testowaną aplikacją, w obu…

Read More Read More

Jak dobrać zasoby dla funkcji Lambda

Jak dobrać zasoby dla funkcji Lambda

Często na szkoleniach, które prowadzę, pada pytanie jak dobrać zasoby dla funkcji Lambda. To ważna kwestia. Przydzielona do funkcji pamięć, a wraz z nią, w proporcjonalnej wielkości zasoby CPU, mają wpływ na wydajność naszych aplikacji. Jednak im więcej zasobów wykorzystamy, tym większy będzie nasz rachunek w AWS. Poza ilością uruchomienia naszej funkcji płacimy przecież także za zasoby. Dokładny i aktualny cennik Lambdy znajdziesz tutaj. Korzystając z funkcji Lambda płacimy za okresy czasu w wielkości 100ms. W chwili gdy to piszę,…

Read More Read More