您想從 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