go-aws-news

command module
v0.4.1 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Mar 14, 2020 License: MIT Imports: 9 Imported by: 0

README

go-aws-news

Fetch what's new from AWS and send out notifications on social sites.

Use the Google assistant integration by saying: “OK Google, talk to cloud computing news”

Build Status Go Doc Go Report Card GitHub release (latest by date)

go-aws-news

App Install

go-aws-news can be executed as an application that sends out notifications to social sites like Discord. To configure providers, modify the config.yaml file to enable a provider.

go-aws-news is designed to be run on a schedule, once a day (displaying the previous day's AWS News). See the install options for examples on how to install and run.

Notification Providers

Currently supported providers:

Install Options
Install With Crontab

The simplest way to run go-aws-news is via crontab.

Type crontab -e on Mac or Linux and add a line:

# Binary
0 2 * * * /path/to/go-aws-news-binary
# Docker
0 14 * * * docker run -d --rm --name aws-news \
  -v your_config.yaml:/config.yaml \
  circa10a/go-aws-news

The above example will execute go-aws-news at 2PM UTC (8AM CST) each day.

Install As Kubernetes CronJob

go-aws-news can be run as a CronJob in a Kubernetes cluster.

Example cronjob.yaml:

apiVersion: batch/v1beta1
kind: CronJob
metadata:
  name: go-aws-news
spec:
  schedule: "0 14 * * *"
  jobTemplate:
    spec:
      template:
        spec:
          containers:
          - name: go-aws-news
            image: circa10a/go-aws-news
            volumeMounts:
            - name: config
              mountPath: /config.yaml
              subPath: config.yaml
          volumes:
          - name: config
            configMap:
              name: awsnews-config
          restartPolicy: OnFailure

The ConfigMap can be created from the config.yaml file itself:

kubectl create configmap awsnews-config --from-file=config.yaml

To apply the cronjob.yaml example above:

kubectl apply -f cronjob.yaml

Module Install

go-aws-news can be installed as a module for use in other Go applications:

go get -u "github.com/circa10a/go-aws-news/news"

Module Usage

Methods return a slice of structs which include the announcement title, a link, and the date it was posted as well an error. This allows you to manipulate the data in whichever way you please, or simply use Print() to print a nice ASCII table to the console.

Get Today's news
package main

import "github.com/circa10a/go-aws-news/news"

func main() {
	news, err := awsnews.Today()
	if err != nil {
		// Handle error
	}
	news.Print()
}
Get Yesterday's news
news, _ := awsnews.Yesterday()
Get all news for the month
news, _ := awsnews.ThisMonth()
Get from a previous month
// Custom timeframe(June 2019)
news, err := awsnews.Fetch(2019, 06)
Get from a previous year
// Custom timeframe(2017)
news, err := awsnews.FetchYear(2017)
Print out announcements
news, _ := awsnews.ThisMonth()
news.Print()
// Console output
// +--------------------------------+--------------+
// |          ANNOUNCEMENT          |     DATE     |
// +--------------------------------+--------------+
// | Amazon Cognito now supports    | Jan 10, 2020 |
// | CloudWatch Usage Metrics       |              |
// +--------------------------------+--------------+
// | Introducing Workload Shares in | Jan 10, 2020 |
// | AWS Well-Architected Tool      |              |
// +--------------------------------+--------------+
//
Loop over news data
// Loop slice of stucts of announcements
// For your own data manipulation
news, _ := awsnews.Fetch(time.Now().Year(), int(time.Now().Month()))
for _, v := range news {
	fmt.Printf("Title: %v\n", v.Title)
	fmt.Printf("Link: %v\n", v.Link)
	fmt.Printf("Date: %v\n", v.PostDate)
}
Limit news results count
news, _ := awsnews.ThisMonth()
// Last 10 news items of the month
news.Last(10).Print()
Get news as JSON
news, _ := awsnews.ThisMonth()
json, jsonErr := news.JSON()
if jsonErr != nil {
	log.Fatal(err)
}
fmt.Println(string(json))
Get news as HTML
news, _ := awsnews.ThisMonth()
html := news.HTML()
fmt.Println(html)
Get news about a specific product
news, err := awsnews.Fetch(2019, 12)
if err != nil {
	fmt.Println(err)
} else {
	news.Filter([]string{"EKS", "ECS"}).Print()
}

Google Assistant

View current AWS news items by saying: “OK Google, talk to cloud computing news”

Development

Test
# Unit/Integration tests
make
# Get code coverage
make coverage

Documentation

The Go Gopher

There is no documentation for this package.

Directories

Path Synopsis

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL