Skip to content

Instantly share code, notes, and snippets.

@crazyguitar
Last active August 19, 2018 14:12
Show Gist options
  • Save crazyguitar/ccca74eb13c3011d8461ceb47a7ae01e to your computer and use it in GitHub Desktop.
Save crazyguitar/ccca74eb13c3011d8461ceb47a7ae01e to your computer and use it in GitHub Desktop.
Dynamodb Go

Dynamodb (Go)

package main

import (
	"encoding/json"
	"log"
	"net/http"
	"os"

	"github.com/aws/aws-sdk-go/aws"
	"github.com/aws/aws-sdk-go/aws/session"
	"github.com/aws/aws-sdk-go/service/dynamodb"
	"github.com/aws/aws-sdk-go/service/dynamodb/dynamodbattribute"
	"github.com/demo/db"
)

var region, tableName string
var sess *session.Session
var svc *dynamodb.DynamoDB

func handler(w http.ResponseWriter, r *http.Request) {
	param := &dynamodb.ScanInput{
		TableName: aws.String(tableName),
	}

	result, err := svc.Scan(param)
	if err != nil {
		log.Fatal(err)
	}

	items := []db.Item{}
	err = dynamodbattribute.UnmarshalListOfMaps(result.Items, &items)
	if err != nil {
		log.Fatal(err)
	}
	json.NewEncoder(w).Encode(items)

}

func init() {
	region = os.Getenv("AWS_REGION")
	tableName = os.Getenv("TABLE")

	sess, err := session.NewSession(&aws.Config{
		Region: aws.String(region),
	})
	if err != nil {
		log.Fatal(err)
	}
	svc = dynamodb.New(sess)
}

func main() {
	http.HandleFunc("/", handler)
	log.Fatal(http.ListenAndServe(":8080", nil))
}

Reference

  1. aws-sdk-go
  2. aws-sdk-go-doc
  3. Amazon DynamoDB Examples Using the AWS SDK for Go
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment