
circa10a/go-aws-news从AWS获取最新动态并发送到社交媒体平台的工具。
!Build Status  ,以跟踪前一天的AWS新闻。支持作为独立应用执行或作为Go模块集成到其他Go应用中。
go-aws-news可作为独立应用执行,向社交媒体平台发送通知。需通过config.yaml配置文件启用通知提供商。
当前支持的通知提供商:
通过Crontab安装
最简单的运行方式是通过Crontab定时执行:
shell# 二进制方式 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
上述示例将在每天UTC时间14:00(CST时间8:00)执行
go-aws-news。
作为Kubernetes CronJob安装
可在Kubernetes集群中作为CronJob运行:
示例cronjob.yaml:
yamlapiVersion: 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
通过以下命令创建ConfigMap:
shellkubectl create configmap awsnews-config --from-file=config.yaml
应用CronJob配置:
shellkubectl apply -f cronjob.yaml
作为AWS Lambda安装
在AWS SSM Parameter Store中设置配置:
shellaws ssm put-parameter --type SecureString --name go-aws-news-config --value "$(cat config.yaml)"
注意:如需自定义参数名称,需设置Lambda环境变量
GO_AWS_NEWS_CONFIG_NAME。
创建Lambda执行角色并附加权限:
shellaws 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
创建Lambda函数:
shellmake 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)
创建Lambda调度规则:
shellaws 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
允许事件规则触发Lambda:
shellEVENT_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
go-aws-news可作为Go模块集成到其他Go应用中:
shellgo get -u "github.com/circa10a/go-aws-news/news"
模块方法返回包含公告标题、链接、发布日期的结构体切片及错误信息,支持自定义数据处理或使用Print()方法输出ASCII表格。
gopackage main import ( awsnews "github.com/circa10a/go-aws-news/news" ) func main() { news, err := awsnews.Today() if err != nil { // 错误处理 } news.Print() }
gonews, _ := awsnews.Yesterday()
gonews, _ := awsnews.ThisMonth()
go// 自定义时间范围(2019年6月) news, err := awsnews.Fetch(2019, 06)
go// 自定义时间范围(2017年) news, err := awsnews.FetchYear(2017)
gonews, _ := awsnews.ThisMonth() news.Print() // 控制台输出示例: // +--------------------------------+--------------+ // | ANNOUNCEMENT | DATE | // +--------------------------------+--------------+ // | Amazon Cognito now supports | Jan 10, 2020 | // | CloudWatch Usage Metrics | | // +--------------------------------+--------------+
go// 遍历公告结构体切片 // 用于自定义数据处理 news, _ := awsnews.Fetch(time.Now().Year(), int(time.Now().Month())) for _, v := range news { fmt.Printf("标题: %v\n", v.Title) fmt.Printf("链接: %v\n", v.Link) fmt.Printf("日期: %v\n", v.PostDate) }
gonews, _ := awsnews.ThisMonth() // 获取当月最后10条新闻 news.Last(10).Print()
gonews, _ := awsnews.ThisMonth() json, jsonErr := news.JSON() if jsonErr != nil { log.Fatal(err) } fmt.Println(string(json))
gonews, _ := awsnews.ThisMonth() html := news.HTML() fmt.Println(html)
gonews, err := awsnews.Fetch(2019, 12) if err != nil { fmt.Println(err) } else { // 筛选包含"EKS"或"ECS"的新闻 news.Filter([]string{"EKS", "ECS"}).Print() }
shell# 单元/集成测试 make # 获取代码覆盖率 make coverage

探索更多轩辕镜像的使用方法,找到最适合您系统的配置方式
通过 Docker 登录认证访问私有仓库
无需登录使用专属域名
Kubernetes 集群配置 Containerd
K3s 轻量级 Kubernetes 镜像加速
VS Code Dev Containers 配置
Podman 容器引擎配置
HPC 科学计算容器配置
ghcr、Quay、nvcr 等镜像仓库
Harbor Proxy Repository 对接专属域名
Portainer Registries 加速拉取
Nexus3 Docker Proxy 内网缓存
需要其他帮助?请查看我们的 常见问题Docker 镜像访问常见问题解答 或 提交工单
manifest unknown 错误
TLS 证书验证失败
DNS 解析超时
410 错误:版本过低
402 错误:流量耗尽
身份认证失败错误
429 限流错误
凭证保存错误
来自真实用户的反馈,见证轩辕镜像的优质服务