test-sending-tool/main.go (45 lines of code) (raw):
package main
import (
"flag"
"github.com/aws/aws-sdk-go/aws/session"
"github.com/aws/aws-sdk-go/service/kinesis"
"io/ioutil"
"log"
"os"
)
func get_file(filename string) *[]byte {
log.Printf("Reading from %s...", filename)
fp, openErr := os.Open(filename)
if openErr != nil {
log.Fatalf("Could not open %s: %s", filename, openErr)
}
defer fp.Close()
content, readErr := ioutil.ReadAll(fp)
if readErr != nil {
log.Fatalf("Could not read from %s: %s", filename, readErr)
}
return &content
}
func main() {
filenamePtr := flag.String("file", "", "File whose contents will be sent")
streamNamePtr := flag.String("stream", "", "Stream to send the data to")
flag.Parse()
//get credentails from default chain - https://docs.aws.amazon.com/sdk-for-go/api/
sess, sessionErr := session.NewSession()
if sessionErr != nil {
log.Fatal("Could not set up AWS session: ", sessionErr)
}
svc := kinesis.New(sess)
contentPtr := get_file(*filenamePtr)
partKey := "1"
rq := &kinesis.PutRecordInput{
Data: *contentPtr,
PartitionKey: &partKey,
StreamName: streamNamePtr,
}
log.Printf("Sending to %s", *streamNamePtr)
_, sendErr := svc.PutRecord(rq)
if sendErr != nil {
log.Fatal("Could not send to stream: ", sendErr)
}
log.Print("Successfully sent")
}