package
0.1.1
Repository: https://github.com/svkoh/scs.git
Documentation: pkg.go.dev

# README

dynamostore

godoc

Package dynamostore is a Redis-based storage engine for the SCS session package.

Usage

Installation

Either:

$ go get github.com/alexedwards/scs/engine/dynamostore

Or (recommended) use use gvt to vendor the engine/dynamostore and session sub-packages:

$ gvt fetch github.com/alexedwards/scs/engine/dynamostore
$ gvt fetch github.com/alexedwards/scs/session

Example

The dynamostore package uses the aws-sdk-go DynamoDB client.

package main

import (
    "io"
    "net/http"

    "github.com/alexedwards/scs/session"
    "github.com/alexedwards/scs/engine/dynamostore"
    "github.com/aws/aws-sdk-go/aws"
    "github.com/aws/aws-sdk-go/aws/endpoints"
    awsSession "github.com/aws/aws-sdk-go/aws/session"
    "github.com/aws/aws-sdk-go/service/dynamodb"
)

func main() {
    // Create a DynamoDB client.
    conf := &aws.Config{Region: aws.String(endpoints.UsEast1RegionID)}
    dynamo := dynamodb.New(awsSession.New(), conf)

    // Create a new dynamostore instance using the DynamoDB client.
    engine := dynamostore.New(dynamo)

    sessionManager := session.Manage(engine)
    http.HandleFunc("/put", putHandler)
    http.HandleFunc("/get", getHandler)
    http.ListenAndServe(":4000", sessionManager(http.DefaultServeMux))
}

func putHandler(w http.ResponseWriter, r *http.Request) {
    err := session.PutString(r, "message", "Hello world!")
    if err != nil {
        http.Error(w, err.Error(), 500)
    }
}

func getHandler(w http.ResponseWriter, r *http.Request) {
    msg, err := session.GetString(r, "message")
    if err != nil {
        http.Error(w, err.Error(), 500)
    }
    io.WriteString(w, msg)
}

Cleaning up expired session data

DynamoDB has Time To Live option.

Set TTL to DynamoDB session table, then expired session keys automatically removed.

Notes

Full godoc documentation: https://godoc.org/github.com/alexedwards/scs/engine/dynamostore.

# Functions

New returns a new DynamoStore instance.
NewWithOption returns a new DynamoStore instance.

# Structs

DynamoStore represents the currently configured session storage engine.