Vous souhaitez obtenir un résumé des actualités les plus récentes à partir d’un flux RSS ou Atom ? Voulez-vous les voir au format Markdown, dans un document Microsoft Word ou sur un appareil e-ink ? Voici l'outil qu'il vous faut.
Cette application est déployée en tant que fonction AWS Lambda. La fonction télécharge les entrées les plus récentes à partir d'un flux RSS ou Atom, télécharge le contenu lié, extrait le texte et réalise un résumé. La sortie est écrite au format JSON dans un compartiment S3. L'objet S3 autorise les lectures publiques afin qu'il puisse être facilement téléchargé sur un appareil externe.
Consultez les instructions à la fin pour savoir comment exécuter et tester la fonction Lambda localement.
Voici un exemple de la structure du fichier 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... "
},
...
]
}
Par défaut, la fonction Lambda est programmée pour s'exécuter en début de journée, du lundi au vendredi, pour mettre à jour les actualités.
L'URL du flux RSS, la planification cron pour exécuter la fonction et les instructions spéciales qui peuvent être ajoutées à l'invite de résumé peuvent être modifiées dans le fichier modèle AWS SAM ( template.yaml
).
Tout d’abord, modifiez le fichier de modèle SAM ( template.yaml
) :
RSS_LINK
par défaut pointe vers les annonces AWS les plus récentes.RSS_LINK
à la fois peut être utilisé dans le modèle.ScheduleExpression
entre parenthèses.SPECIAL_INSTRUCTIONS
qui sont ajoutées à l'invite transmise au modèle. Vous pouvez utiliser ces instructions spéciales pour adapter le résumé à vos besoins. Ensuite, dans le répertoire sam-get-news
, créez et déployez l'application à l'aide de cette commande :
sam build && sam deploy
Confirmez le déploiement lorsque cela vous est demandé.
Obtenez l'URL des actualités à partir de la sortie de la commande sam deploy
.
Vous pouvez télécharger les documents JSON en utilisant curl
ou wget
sur l'URL des actualités. Par exemple:
curl https://BUCKET-NAME.s3.REGION.amazonaws.com/news.json
Dans le répertoire Markdown
, mettez à jour l' NEWS_URL
dans le fichier markdown_news.py
avec la sortie de la commande sam deploy
.
Ensuite, exécutez le script run.sh
pour créer des actualités dans plusieurs formats.
Le script run.sh
utilise Pandoc pour convertir la sortie Markdown du script markdown_news.py
en HTML, Microsoft Word et PDF. Suivez les instructions sur le site Pandoc pour installer l'outil.
La sortie PDF est commentée par défaut dans run.sh
car elle nécessite l'installation d'outils PDF supplémentaires.
La plupart du code MicroPython dans le dossier RaspberryPiPico
est spécifique au modèle d'affichage e-ink. Plus d’informations sur l’écran e-ink peuvent être trouvées ici.
Pour déployer le script sur le microcontrôleur, téléchargez l'IDE Thonny Python open source pour les débutants pour votre système d'exploitation.
Pour permettre au microcontrôleur de télécharger le fichier JSON à partir du compartiment S3, vous devez rendre ce fichier public. Pour ce faire, vous devez mettre à jour le fichier `template.yaml``.
Tout d'abord, ajoutez les propriétés suivantes à la ressource « NewsBucket » (votre compte AWS pourrait ne pas autoriser cette configuration) :
Properties :
PublicAccessBlockConfiguration :
BlockPublicPolicy : false
RestrictPublicBuckets : false
Ensuite, ajoutez la stratégie de ressources suivante (le nom et le chemin du fichier doivent être les mêmes que dans la variable d'environnement 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'
Connectez le Raspberry Pi Pico via USB à l'ordinateur portable. Ensuite, utilisez l'éditeur Thonny pour copier et exécuter le script display_news.py
MycroPython sur l'appareil. Dans le script, mettez à jour l'URL du fichier news.json
ainsi que le nom et le mot de passe du réseau WiFi auquel le Raspberry Pi Pico W va se connecter pour télécharger le fichier.
Voici le flux architectural global de cet outil :
Le code de la fonction Lambda peut être exécuté depuis la ligne de commande pour simplifier les tests locaux. Pour exécuter la fonction Lambda localement, vous devez créer un environnement virtuel ( venv
) et installer quelques dépendances.
Dans le répertoire principal du projet, créez un environnement virtuel :
python3 -m venv .venv
Ensuite, activez l'environnement virtuel :
source .venv/bin/activate
Dans le répertoire Lambda/sam-get-news/get-news
, installez toutes les dépendances :
pip install -r requirements.txt
Définissez la variable d'environnement utilisée par la fonction Lambda :
export RSS_LINK=https://aws.amazon.com/about-aws/whats-new/recent/feed/
export OUTPUT_BUCKET= < YOUR_BUCKET >
export OUTPUT_FILE=news.txt
Vous pouvez maintenant exécuter la fonction localement :
python app.py
Lorsque la fonction se termine, vous pouvez voir le résultat dans le compartiment S3 à l'aide de l'AWS CLI :
aws s3 cp s3:// ${OUTPUT_BUCKET} / ${OUTPUT_FILE} - | more