RSS または Atom フィードから最新ニュースの概要を取得したいですか?マークダウン形式、Microsoft Word ドキュメント、または電子インク デバイスで表示したいですか?ここにそのツールがあります。
このアプリケーションは AWS Lambda 関数としてデプロイされます。この関数は、RSS または Atom フィードから最新のエントリをダウンロードし、リンクされたコンテンツをダウンロードし、テキストを抽出して要約を作成します。出力は S3 バケットに JSON 形式で書き込まれます。 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
1 つだけです。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 サイトの指示に従ってツールをインストールします。
追加の PDF ツールをインストールする必要があるため、PDF 出力はrun.sh
でデフォルトでコメントアウトされます。
RaspberryPiPico
フォルダー内の MicroPython コードのほとんどは、e-ink ディスプレイ モデルに固有です。 e-ink ディスプレイの詳細については、こちらをご覧ください。
スクリプトをマイクロコントローラーにデプロイするには、使用しているオペレーティング システムに対応する初心者向けのオープン ソースの 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'
Raspberry Pi Pico を USB 経由でラップトップに接続します。次に、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