Ukládání a následná analýza logů je v dnešní době součástí života každého slušného člověka. Někteří ukládají logy do souborů, jiní je posílají do aplikací třetích stran (například logetries).

Podobné služby jsou skvělé, ale nehodí se vždy. Pokud v aplikaci potřebujete logovat mnoho eventů, začne to “lézt do peněz”. Naopak AWS DynamoDB je velmi levné i při velkém množství eventů.

Cena

  množství přenesených dat cena cena za GB
Logentries 30GB $29 ~$1
AWS DynamoDB pay as go 0$ $0



Cena se u DynamoDB počítá složitěji. Skládá ze dvou složek z množství uložených dat a množtsví “read” a “write” units. Cena za úložiště je $0.283 za GB/měsíc (7.15 Kč). Write units stojí ~$0.54 za unit/měsíc. Ale vzhledem k tomu, že každý uživatel AWS dostává 25GB úložiště a 25 RW units zdarma, nezaplatíte ve výsledku nic.

Ukládání dat do DynamoDB

Pro ukázku předpokládejme, že již umíme základy práce s AWS a umíme si vytvořit nového uživatele s potřebnými právy.

Příklad jednoduchého ukládání dat do DynamoDB v Pythonu

import time
import boto.dynamodb2
from boto.dynamodb2.table import Table

# iniciace připojení (základní typ)
conn = boto.dynamodb2.connect_to_region(
    'eu-west-1',
    aws_access_key_id='ACCESS_KEY',
    aws_secret_access_key='SECRET'
)

# zobrazí všechny tabulky v regionu
print(conn.list_tables())

# připojení k dané tabulce
logs = Table("linkomato-app-logs", connection=conn)

# vložení dat do tabulky
logs.put_item(data={
    'user_id': 5,
    'time': time.time(),
    'controler': "account",
    'action': 'passwd_reset',
    'data': {
        "email":{
            'subject': "Linkomato: žádost o změnu hesla"
        }
    },
})

Závěrem

DynamoDB je podle mého názoru dobrým místem pro uchování důležitých logů i po delší dobu. V následujícím článku se budu věnovat vytvoření vlastního log handleru pro Python, aby bylo logování hezké a čisté :)