RSS 또는 Atom 피드에서 최신 뉴스 요약을 원하시나요? Markdown 형식, Microsoft Word 문서 또는 e-잉크 장치에서 보고 싶으십니까? 여기에 당신을 위한 도구가 있습니다.
이 애플리케이션은 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
만 사용할 수 있습니다.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-잉크 디스플레이에 대한 자세한 내용은 여기에서 확인할 수 있습니다.
마이크로컨트롤러에 스크립트를 배포하려면 운영 체제에 맞는 초보자용 오픈 소스 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