Dokumentacja i skutki ślepej wiary w nią

21 kwietnia 2021 roku, 00:40, minęła właśnie chyba druga godzina jak ja probuję zmusić funkcję lambda do wykonania się przez notyfikację topica SNSa. Niby trywialne zadanie i dokumentacja Serverlessa ma opisany ten use case:

functions:
  dispatcher:
    handler: dispatcher.dispatch
    events:
      - sns:
          arn: !Ref SuperTopic
          topicName: MyCustomTopic

resources:
  Resources:
    SuperTopic:
      Type: AWS::SNS::Topic
      Properties:
        TopicName: MyCustomTopic

Ale, niestety to nie dzialą. Metodą prób i błędów doszedłem do wniosku, że owszem ten events - sns działa, ale tylko jeśli zdefiniujemy tam nowy topic SNS. Jak wskazujemy jeszcze nieistniejący topic, to Serverless wypluwa do CloudFormation następujące instrukcje:

Czytaj dalej

Kiedy wybieram AWS DynamoDB, zaczynam liczyć bajty

Tak jest. Maksymalny rozmiar wpisu w tabeli DynamoDB wynosi 400KB, jak wskazuje oficjalna dokumentacja. Natomiast, oficjalna dokumentacja nie wspomina o metodzie wyliczania rozmiaru wpisu.

Otóż, na końcowy rozmiar wpisu w tabeli DynamoDB składa się: rozmiar nazwy atrybutu zakodowane w utf-8 (w większości przypadków będzie to 1 bajt per symbol) oraz rozmiar wartości atrybutu. Rozmiar wartości atrybutu zależy od typu danych wykorzystanych, np. jeśli jest to zwykły string to rozmiarem wartości będzie wartość zakodowana w UTF-8 (od 1 do 4 bajtów na symbol). Jeśli natomiast będzie to Map (objekt w plain JSON), to trzeba doliczyć jeszcze 3 bajty (const) oraz po 1 bajcie na każdą parę klucz-wartość, no i rozmar samych par klucz-wartość też trzeba policzyć – w wyniku tego, nawet pusta mapa będzie miała co najmniej 3 bajty.

400KB to jest wystarczajćo dla mniejszych dokumentów, natomiast kiedy dokumenty przechowywane w DynamoDB są generowane na podstawie danych wprowadzonych przez użytkowników, to trzeba liczyć się z tym, że prędziej czy później dostaniemy błąd

An error occurred (ValidationException) when calling the PutItem operation: Item size has exceeded the maximum allowed size
Czytaj dalej