Apakah Anda ingin mendapatkan ringkasan berita terkini dari RSS atau feed Atom? Apakah Anda ingin melihatnya dalam format Markdown, di dokumen Microsoft Word, atau di perangkat e-ink? Ini alatnya untuk Anda.
Aplikasi ini diterapkan sebagai fungsi AWS Lambda. Fungsi ini mengunduh entri terbaru dari umpan RSS atau Atom, mengunduh konten tertaut, mengekstrak teks, dan membuat ringkasan. Outputnya ditulis dalam format JSON di bucket S3. Objek S3 memungkinkan pembacaan publik sehingga dapat diunduh dengan mudah di perangkat eksternal.
Lihat petunjuk di bagian akhir tentang cara menjalankan dan menguji fungsi Lambda secara lokal.
Berikut ini contoh struktur file 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... "
},
...
]
}
Secara default, fungsi Lambda dijadwalkan berjalan pada pagi hari, Senin hingga Jumat, untuk memperbarui berita.
URL umpan RSS, jadwal cron untuk menjalankan fungsi, dan instruksi khusus yang dapat ditambahkan ke permintaan ringkasan dapat diedit di file templat AWS SAM ( template.yaml
).
Pertama, edit file template SAM ( template.yaml
):
RSS_LINK
default menunjuk ke pengumuman AWS terbaru.RSS_LINK
dalam satu waktu yang dapat digunakan dalam template.ScheduleExpression
di antara tanda kurung.SPECIAL_INSTRUCTIONS
yang ditambahkan ke perintah yang diteruskan ke model. Anda dapat menggunakan petunjuk khusus ini untuk menyesuaikan ringkasan dengan kebutuhan Anda. Kemudian, di direktori sam-get-news
, buat dan terapkan aplikasi menggunakan perintah ini:
sam build && sam deploy
Konfirmasikan penerapan saat ditanya.
Dapatkan URL Berita dari output perintah sam deploy
.
Anda dapat mengunduh dokumen JSON menggunakan curl
atau wget
di URL Berita. Misalnya:
curl https://BUCKET-NAME.s3.REGION.amazonaws.com/news.json
Di direktori Markdown
, perbarui NEWS_URL
dalam file markdown_news.py
ke output dari perintah sam deploy
.
Kemudian, jalankan skrip run.sh
untuk membuat berita dalam berbagai format.
Skrip run.sh
menggunakan Pandoc untuk mengonversi keluaran Markdown dari skrip markdown_news.py
ke HTML, Microsoft Word, dan PDF. Ikuti petunjuk di situs Pandoc untuk menginstal alat tersebut.
Output PDF dikomentari secara default di run.sh
karena memerlukan instalasi alat PDF tambahan.
Sebagian besar kode MicroPython di folder RaspberryPiPico
khusus untuk model tampilan e-ink. Informasi lebih lanjut mengenai tampilan e-ink dapat ditemukan di sini.
Untuk menerapkan skrip ke mikrokontroler, unduh Thonny Python IDE open source untuk pemula untuk sistem operasi Anda.
Untuk mengizinkan mikrokontroler mengunduh file JSON dari bucket S3, Anda perlu menjadikan file tersebut publik. Untuk melakukannya, Anda perlu memperbarui file `template.yaml``.
Pertama, tambahkan properti berikut ke sumber daya `NewsBucket`` (akun AWS Anda mungkin tidak mengizinkan konfigurasi ini):
Properties :
PublicAccessBlockConfiguration :
BlockPublicPolicy : false
RestrictPublicBuckets : false
Kemudian, tambahkan kebijakan sumber daya berikut (nama dan jalur file harus sama dengan variabel lingkungan 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'
Hubungkan Raspberry Pi Pico melalui USB ke laptop. Kemudian, gunakan editor Thonny untuk menyalin dan menjalankan skrip display_news.py
MycroPython di perangkat. Dalam skrip, perbarui URL file news.json
dan nama serta kata sandi jaringan WiFi yang akan dihubungkan oleh Raspberry Pi Pico W untuk mengunduh file.
Ini adalah keseluruhan alur arsitektur alat ini:
Kode fungsi Lambda dapat dijalankan dari baris perintah untuk menyederhanakan pengujian lokal. Untuk menjalankan fungsi Lambda secara lokal, Anda perlu membuat lingkungan virtual ( venv
) dan menginstal beberapa dependensi.
Di direktori utama proyek, buat lingkungan virtual:
python3 -m venv .venv
Kemudian, aktifkan lingkungan virtual:
source .venv/bin/activate
Di direktori Lambda/sam-get-news/get-news
, instal semua dependensi:
pip install -r requirements.txt
Tentukan variabel lingkungan yang digunakan oleh fungsi Lambda:
export RSS_LINK=https://aws.amazon.com/about-aws/whats-new/recent/feed/
export OUTPUT_BUCKET= < YOUR_BUCKET >
export OUTPUT_FILE=news.txt
Sekarang Anda dapat menjalankan fungsinya secara lokal:
python app.py
Ketika fungsi tersebut dihentikan, Anda dapat melihat output di bucket S3 menggunakan AWS CLI:
aws s3 cp s3:// ${OUTPUT_BUCKET} / ${OUTPUT_FILE} - | more