¿Quieres obtener un resumen de las noticias más recientes a través de un feed RSS o Atom? ¿Quieres verlos en formato Markdown, en un documento de Microsoft Word o en un dispositivo de tinta electrónica? Aquí tienes la herramienta.
Esta aplicación se implementa como una función de AWS Lambda. La función descarga las entradas más recientes de una fuente RSS o Atom, descarga el contenido vinculado, extrae texto y hace un resumen. La salida está escrita en formato JSON en un depósito de S3. El objeto S3 permite lecturas públicas para que pueda descargarse fácilmente en un dispositivo externo.
Consulte las instrucciones al final sobre cómo ejecutar y probar la función Lambda localmente.
A continuación se muestra un ejemplo de la estructura del archivo 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... "
},
...
]
}
De forma predeterminada, la función Lambda está programada para ejecutarse temprano en el día, de lunes a viernes, para actualizar las noticias.
La URL de la fuente RSS, la programación cron para ejecutar la función y las instrucciones especiales que se pueden agregar al mensaje de resumen se pueden editar en el archivo de plantilla de AWS SAM ( template.yaml
).
Primero, edite el archivo de plantilla SAM ( template.yaml
):
RSS_LINK
predeterminado apunta a los anuncios de AWS más recientes.RSS_LINK
a la vez en la plantilla.ScheduleExpression
entre paréntesis.SPECIAL_INSTRUCTIONS
que se agregan al mensaje pasado al modelo. Puede utilizar estas instrucciones especiales para adaptar el resumen a sus necesidades. Luego, en el directorio sam-get-news
, cree e implemente la aplicación usando este comando:
sam build && sam deploy
Confirme la implementación cuando se le solicite.
Obtenga la URL de noticias del resultado del comando sam deploy
.
Puede descargar los documentos JSON usando curl
o wget
en la URL de noticias. Por ejemplo:
curl https://BUCKET-NAME.s3.REGION.amazonaws.com/news.json
En el directorio Markdown
, actualice NEWS_URL
en el archivo markdown_news.py
a la salida del comando sam deploy
.
Luego, ejecute el script run.sh
para crear noticias en múltiples formatos.
El script run.sh
utiliza Pandoc para convertir la salida de Markdown del script markdown_news.py
a HTML, Microsoft Word y PDF. Siga las instrucciones en el sitio de Pandoc para instalar la herramienta.
La salida PDF está comentada de forma predeterminada en run.sh
porque requiere instalar herramientas PDF adicionales.
La mayor parte del código MicroPython en la carpeta RaspberryPiPico
es específico del modelo de pantalla de tinta electrónica. Puede encontrar más información sobre la pantalla de tinta electrónica aquí.
Para implementar el script en el microcontrolador, descargue el IDE de código abierto Thonny Python para principiantes para su sistema operativo.
Para permitir que el microcontrolador descargue el archivo JSON del depósito S3, debe hacer público ese archivo. Para hacerlo, necesita actualizar el archivo `template.yaml``.
Primero, agregue las siguientes propiedades al recurso `NewsBucket`` (es posible que su cuenta de AWS no permita esta configuración):
Properties :
PublicAccessBlockConfiguration :
BlockPublicPolicy : false
RestrictPublicBuckets : false
Luego, agregue la siguiente política de recursos (el nombre y la ruta del archivo deben ser los mismos que en la variable de entorno 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'
Conecte la Raspberry Pi Pico mediante USB a la computadora portátil. Luego, use el editor Thonny para copiar y ejecutar el script MycroPython display_news.py
en el dispositivo. En el script, actualice la URL del archivo news.json
y el nombre y la contraseña de la red WiFi a la que Raspberry Pi Pico W se conectará para descargar el archivo.
Este es el flujo arquitectónico general de esta herramienta:
El código de la función Lambda se puede ejecutar desde la línea de comandos para simplificar las pruebas locales. Para ejecutar la función Lambda localmente, necesita crear un entorno virtual ( venv
) e instalar algunas dependencias.
En el directorio principal del proyecto, cree un entorno virtual:
python3 -m venv .venv
Luego, active el entorno virtual:
source .venv/bin/activate
En el directorio Lambda/sam-get-news/get-news
, instale todas las dependencias:
pip install -r requirements.txt
Defina la variable de entorno utilizada por la función Lambda:
export RSS_LINK=https://aws.amazon.com/about-aws/whats-new/recent/feed/
export OUTPUT_BUCKET= < YOUR_BUCKET >
export OUTPUT_FILE=news.txt
Ahora puedes ejecutar la función localmente:
python app.py
Cuando la función finaliza, puede ver el resultado en el depósito S3 utilizando la CLI de AWS:
aws s3 cp s3:// ${OUTPUT_BUCKET} / ${OUTPUT_FILE} - | more