go-aws-news alternatives and similar packages
Based on the "Third-party APIs" category.
Alternatively, view go-aws-news alternatives based on common mentions on social networks and blogs.
-
go-openai
OpenAI ChatGPT, GPT-3, GPT-4, DALL·E, Whisper API wrapper for Go -
goamz
Popular fork of goamz which adds some missing API calls to certain packages. -
webhooks
:fishing_pole_and_fish: Webhook receiver for GitHub, Bitbucket, GitLab, Gogs -
githubql
Package githubv4 is a client library for accessing GitHub GraphQL API v4 (https://docs.github.com/en/graphql). -
twitter-scraper
Scrape the Twitter frontend API without authentication with Golang. -
geo-golang
Go library to access geocoding and reverse geocoding APIs -
lark
Feishu(飞书)/Lark Open API Go SDK, Support ALL Open API and Event Callback. -
openaigo
OpenAI GPT3/3.5 and GPT4 ChatGPT API Client Library for Go, simple, less dependencies, and well-tested -
hipchat (xmpp)
A golang package to communicate with HipChat over XMPP -
gostorm
GoStorm is a Go library that implements the communications protocol required to write Storm spouts and Bolts in Go that communicate with the Storm shells. -
go-lark
An easy-to-use SDK for Feishu and Lark Open Platform (Instant Messaging API only) -
clarifai
DEPRECATED: please use https://github.com/Clarifai/clarifai-go-grpc -
go-trending
Go library for accessing trending repositories and developers at Github. -
hipchat
This project implements a Go client library for the Hipchat API. -
simples3
Simple no frills AWS S3 Golang Library using REST with V4 Signing (without AWS Go SDK) -
go-tgbot
Golang telegram bot API wrapper, session-based router and middleware -
cachet
Go(lang) client library for Cachet (open source status page system). -
google-play-scraper
Golang scraper to get data from Google Play Store
Clean code begins in your IDE with SonarLint
Do you think we are missing an alternative of go-aws-news or a related project?
README
go-aws-news <!-- omit in toc -->
Fetch what's new from AWS and send out notifications on social sites.
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](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:
- [Discord](providers/discord/README.md)
- [Rocket.Chat](providers/rocketchat/README.md)
- [Slack](providers/slack/README.md)
- [SMTP (email)](providers/smtp/README.md)
- [Yammer](providers/yammer/README.md)
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
at2PM 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
Install As AWS Lambda
Setup provider config in AWS SSM Parameter Store:
aws ssm put-parameter --type SecureString --name go-aws-news-config --value "$(cat config.yaml)"
Note: Overriding the name
go-aws-news-config
will require an environment variable on the lambda function:GO_AWS_NEWS_CONFIG_NAME
.Create the Lambda execution role and add permissions:
aws iam create-role --role-name go-aws-news-lambda-ex --assume-role-policy-document '{"Version": "2012-10-17","Statement": [{ "Effect": "Allow", "Principal": {"Service": "lambda.amazonaws.com"}, "Action": "sts:AssumeRole"}]}' aws iam attach-role-policy --role-name go-aws-news-lambda-ex --policy-arn arn:aws:iam::aws:policy/service-role/AWSLambdaBasicExecutionRole aws iam attach-role-policy --role-name go-aws-news-lambda-ex --policy-arn arn:aws:iam::aws:policy/AmazonSSMReadOnlyAccess
Create the lambda function:
make lambda-package aws lambda create-function --function-name go-aws-news --zip-file fileb://bin/lambda.zip --runtime go1.x --handler awsnews \ --role $(aws iam get-role --role-name go-aws-news-lambda-ex --query Role.Arn --output text)
Create a schedule for the lambda:
aws events put-rule --schedule-expression "cron(0 14 * * ? *)" --name go-aws-news-cron LAMBDA_ARN=$(aws lambda get-function --function-name go-aws-news --query Configuration.FunctionArn) aws events put-targets --rule go-aws-news-cron --targets "Id"="1","Arn"=$LAMBDA_ARN
Allow the lambda function to be invoked by the schedule rule:
EVENT_ARN=$(aws events describe-rule --name go-aws-news-cron --query Arn --output text) aws lambda add-permission --function-name go-aws-news --statement-id eventbridge-cron \ --action 'lambda:InvokeFunction' --principal events.amazonaws.com --source-arn $EVENT_ARN
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 (
awsnews "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
Development
Test
# Unit/Integration tests
make
# Get code coverage
make coverage