Timestream

Example Lambda

import json
import boto3
import time
from datetime import datetime
 
'''
# Sample Event data
{
  "awsAccountId": "12348765",
  "actionType": "NewRequest",
  "status": "Approved"
}
'''
 
def get_current_time_year_month():
    yearmonth = datetime.now().strftime('%Y-%m')
    daytime = datetime.now().strftime('%d-%H:%M:%S')
    return yearmonth, daytime
 
def get_current_time():
    return str(int(round(time.time() * 1000)))
    # this produces an invalid time error from timestream
    #return datetime.now().strftime('%Y-%m-%d_%H:%M:%S')
 
def lambda_handler(event, context):
    print("event is", event)
 
    DATABASE_NAME='BrownBag-AccessRequests'
    TABLE_NAME='Requests'
 
    client = boto3.client('timestream-write')
    region_name='eu-west-1'
    ts_database = DATABASE_NAME
 
    #response = client.list_databases()
    #print("List database:-", response)
 
 
    dimensions = [            
        {'Name': 'actionType', 'Value': event['actionType']},            
        {'Name': 'status', 'Value': event['status']},            
        {'Name': 'account', 'Value': event['awsAccountId']}        
    ]
 
    measure1 = {
        'Dimensions': dimensions,            
        'MeasureName': 'Status',            
        'MeasureValue': event['status'],            
        'MeasureValueType': 'VARCHAR',            
        'Time': get_current_time()       
    } 
 
    records = [measure1]
 
    response = client.write_records(DatabaseName=DATABASE_NAME, TableName=TABLE_NAME,
        Records=records,
        CommonAttributes={}
        )

Schema

DESCRIBE "BrownBag-AccessRequests"."Requests"
Column Type Timestream attribute type
actionType varchar DIMENSION
account varchar DIMENSION
status varchar DIMENSION
measure_name varchar MEASURE_NAME
time timestamp TIMESTAMP
measure_value::varchar varchar MEASURE_VALUE

Example Query

SHOW DATABASES
 
 
SELECT * FROM "BrownBag-AccessRequests"."Requests"
 
SELECT * FROM "BrownBag-AccessRequests"."Requests" WHERE TIME BETWEEN ago(15m) AND now() ORDER BY TIME DESC LIMIT 10

Sample Data

 
aws/timestream.txt · Last modified: 10/02/2023 10:16 by andrew