您想从 RSS 或 Atom 源获取最新新闻的摘要吗?您想以 Markdown 格式、Microsoft Word 文档或电子墨水设备查看它们吗?这是适合您的工具。
该应用程序部署为 AWS Lambda 函数。该函数从 RSS 或 Atom 源下载最新条目、下载链接内容、提取文本并进行摘要。输出以 JSON 格式写入 S3 存储桶中。 S3 对象允许公共读取,以便可以轻松地将其下载到外部设备上。
请参阅末尾的说明,了解如何在本地运行和测试 Lambda 函数。
以下是 JSON 文件结构的示例:
{
"title" : " Recent Announcements " ,
"entries" : [
{
"title" : " Amazon SageMaker Model Registry announces support for private model repositories " ,
"link" : " https://... " ,
"summary" : " Amazon SageMaker Model Registry now supports... "
},
{
"title" : " Announcing memory optimized Amazon EC2 R7a bare metal instances " ,
"link" : " https://... " ,
"summary" : " Amazon announces general availability... "
},
...
]
}
默认情况下,Lambda 函数计划在周一至周五的早些时候运行,以更新新闻。
RSS 源的 URL、运行该函数的 cron 计划以及可添加到摘要提示的特殊指令可以在 AWS SAM 模板文件 ( template.yaml
) 中进行编辑。
首先,编辑 SAM 模板文件 ( template.yaml
):
RSS_LINK
指向最新的 AWS 公告。RSS_LINK
。ScheduleExpression
cron 语法。SPECIAL_INSTRUCTIONS
。您可以使用这些特殊说明来根据您的需要定制摘要。然后,在sam-get-news
目录中,使用以下命令构建和部署应用程序:
sam build && sam deploy
当询问时确认部署。
从sam deploy
命令的输出中获取新闻 URL。
您可以在新闻 URL 上使用curl
或wget
下载 JSON 文档。例如:
curl https://BUCKET-NAME.s3.REGION.amazonaws.com/news.json
在Markdown
目录中,将markdown_news.py
文件中的NEWS_URL
更新为sam deploy
命令的输出。
然后,运行run.sh
脚本以创建多种格式的新闻。
run.sh
脚本使用 Pandoc 将markdown_news.py
脚本的 Markdown 输出转换为 HTML、Microsoft Word 和 PDF。按照 Pandoc 站点上的说明安装该工具。
默认情况下, run.sh
中的 PDF 输出被注释掉,因为它需要安装额外的 PDF 工具。
RaspberryPiPico
文件夹中的大部分 MicroPython 代码特定于电子墨水显示模型。有关电子墨水显示屏的更多信息可以在此处找到。
要将脚本部署到微控制器,请下载适用于您的操作系统的面向初学者的开源 Thonny Python IDE。
要允许微控制器从 S3 存储桶下载 JSON 文件,您需要公开该文件。为此,您需要更新“template.yaml”文件。
首先,将以下属性添加到“NewsBucket”资源(您的 AWS 账户可能不允许此配置):
Properties :
PublicAccessBlockConfiguration :
BlockPublicPolicy : false
RestrictPublicBuckets : false
然后,添加以下资源策略(文件的名称和路径应与OUTPUT_FILE
环境变量中的相同):
NewsBucketPolicy :
Type : AWS::S3::BucketPolicy
Properties :
Bucket : !Ref NewsBucket
PolicyDocument :
Statement :
- Effect : Allow
Principal : ' * '
Action : s3:GetObject
Resource : !Sub 'arn:aws:s3:::${NewsBucket}/news.json'
通过 USB 将 Raspberry Pi Pico 连接到笔记本电脑。然后,使用 Thonny 编辑器复制并在设备上运行display_news.py
MycroPython 脚本。在脚本中,更新news.json
文件的 URL 以及 Raspberry Pi Pico W 将连接以下载文件的 WiFi 网络的名称和密码。
这是该工具的整体架构流程:
Lambda函数的代码可以从命令行运行,以简化本地测试。要在本地运行 Lambda 函数,您需要创建一个虚拟环境 ( venv
) 并安装一些依赖项。
在项目的主目录中,创建一个虚拟环境:
python3 -m venv .venv
然后,激活虚拟环境:
source .venv/bin/activate
在Lambda/sam-get-news/get-news
目录中,安装所有依赖项:
pip install -r requirements.txt
定义 Lambda 函数使用的环境变量:
export RSS_LINK=https://aws.amazon.com/about-aws/whats-new/recent/feed/
export OUTPUT_BUCKET= < YOUR_BUCKET >
export OUTPUT_FILE=news.txt
现在您可以在本地运行该函数:
python app.py
当函数终止时,您可以使用 AWS CLI 在 S3 存储桶中查看输出:
aws s3 cp s3:// ${OUTPUT_BUCKET} / ${OUTPUT_FILE} - | more