текст перекладу
Залишатися мотивованим кожного дня є критично важливим для досягнення довгострокових цілей. Цей проект автоматизації призначений для надсилання щоденних нагадувань про цілі разом з мотиваційними цитатами, щоб допомогти вам почати день з позитивним настроєм. Використовуючи AWS Lambda, Amazon EventBridge і Amazon SNS, цей проект допомагає вам залишатися на шляху та отримувати натхнення протягом вашої подорожі.
Огляд проекту
Ця конфігурація автоматизує наступне:
- Щоденний тригер: Автоматично викликає функцію Lambda щодня о 8:00 ранку.
- Обробка цілей: Отримує випадкову ціль із S3 бакету та поєднує її з мотиваційною цитатою.
- Доставка повідомлень: Надсилає ціль і цитату через електронну пошту за допомогою Amazon SNS.
Це щоденне нагадування не лише допомагає зосередитися, але й дає мотиваційний поштовх для початку дня з енергією та метою.
Успішно отримано електронний лист після тестування функції Lambda.
Архітектура
Рішення складається з:
- S3 бакет: Зберігає CSV файл (
2025-goals.csv
) зі списком цілей. - Lambda функція: Обробляє CSV файл, вибирає випадкову ціль, поєднує її з мотиваційною цитатою і надсилає повідомлення.
- Amazon SNS: Доставляє електронні повідомлення.
- Amazon EventBridge: Викликає функцію Lambda щодня о 8:00 ранку.
Кроки реалізації
1. Створіть S3 бакет
- Перейдіть до S3 Console в AWS.
- Клікніть Create Bucket.
- Назвіть свій бакет (наприклад,
2025-goals-project
) та налаштуйте його за потребою. - Завантажте CSV файл (
2025-goals.csv
) у наступному форматі:
Goals
Certified Cloud Practitioner preparation
CICD Topic for DevOps
Jenkins
Github Actions
Terraform
Kubernetes
CloudFormation
Python for Devops and Cloud
Завантажено csv файл у бакет.
2. Налаштування Amazon SNS
- Перейдіть до SNS Console в AWS.
- Створіть тему:
- Назва:
2025-goal-reminder
- Тип: Standard topic.
- Додайте підписку на електронну пошту:
- Протокол: Email.
- Кінцева точка: Ваша електронна адреса.
- Підтвердьте підписку:
- Перевірте свою електронну пошту для підтвердження та активуйте підписку.
Підписано на електронну пошту для отримання повідомлень.
3. Розгортання функції Lambda
- Перейдіть до Lambda Console в AWS.
- Створіть нову функцію Lambda:
- Рuntime: Python 3.12.
- Назва:
2025-Goal-reminder
.
3.
текст перекладу
Важливо залишатися мотивованим щодня, щоб досягти довгострокових цілей. Цей проект автоматизації призначений для надсилання щоденних нагадувань про цілі з мотиваційними цитатами, щоб допомогти вам розпочати день з позитивним настроєм. Використовуючи AWS Lambda, Amazon EventBridge і Amazon SNS, цей проект допоможе вам залишатися на шляху та отримувати натхнення протягом вашої подорожі.
Огляд проекту
Ця конфігурація автоматизує наступне:
- Щоденний тригер: Автоматично викликає функцію Lambda щодня о 8:00 ранку.
- Обробка цілей: Отримує випадкову ціль із S3 бакету та поєднує її з мотиваційною цитатою.
- Доставка повідомлень: Надсилає ціль і цитату через електронну пошту за допомогою Amazon SNS.
Це щоденне нагадування не тільки допомагає залишатися зосередженим, але й дає мотиваційний поштовх для початку дня з енергією та метою.
Успішно отримано електронний лист після тестування функції Lambda.
Архітектура
Рішення складається з:
- S3 бакет: Зберігає CSV файл (
2025-goals.csv
) зі списком цілей. - Lambda функція: Обробляє CSV файл, вибирає випадкову ціль, поєднує її з мотиваційною цитатою та надсилає повідомлення.
- Amazon SNS: Доставляє електронні повідомлення.
- Amazon EventBridge: Викликає функцію Lambda щодня о 8:00 ранку.
Кроки реалізації
1. Створіть S3 бакет
- Перейдіть до S3 Console в AWS.
- Клікніть Create Bucket.
- Назвіть свій бакет (наприклад,
2025-goals-project
) і налаштуйте його за потребою. - Завантажте CSV файл (
2025-goals.csv
) у наступному форматі:
Goals
Certified Cloud Practitioner preparation
CICD Topic for DevOps
Jenkins
Github Actions
Terraform
Kubernetes
CloudFormation
Python for Devops and Cloud
Завантажено csv файл у бакет.
2. Налаштування Amazon SNS
- Перейдіть до SNS Console в AWS.
- Створіть тему:
- Назва:
2025-goal-reminder
- Тип: Standard topic.
- Додайте підписку на електронну пошту:
- Протокол: Email.
- Кінцева точка: Ваша електронна адреса.
- Підтвердьте підписку:
- Перевірте свою електронну пошту для підтвердження та активуйте підписку.
Підписано на електронну пошту для отримання повідомлень.
3. Розгортання функції Lambda
- Перейдіть до Lambda Console в AWS.
- Створіть нову функцію Lambda:
- Рuntime: Python 3.12.
- Назва:
2025-Goal-reminder
.
4. Додайте код:
import boto3
import csv
import random
# AWS clients
s3 = boto3.client('s3')
sns = boto3.client('sns')
# S3 Bucket and File
BUCKET_NAME = '2025-goals-bucket'
FILE_NAME = '2025-goals.csv'
# SNS Topic ARN
SNS_TOPIC_ARN = "arn:aws:sns:us-east-1:590183653672:2025-goal-reminder"
# Predefined Motivational Lines
MOTIVATIONAL_LINES = ["Believe in yourself and take the first step!", "Stay consistent and greatness will follow.", "Small steps every day lead to big results.", "Your hard work today will pay off tomorrow.", "You've got this-one goal at a time!"]
def lambda_handler(event, context):
try:
# Fetch the file from S3
response = s3.get_object(Bucket=BUCKET_NAME, Key=FILE_NAME)
lines = response['Body'].read().decode('utf-8-sig').splitlines()
# Read the goals from the CSV file
csv_reader = csv.DictReader(lines)
goals = [row['Goals'] for row in csv_reader]
# Select a random goal
selected_goal = random.choice(goals)
# Generate a motivational line
motivation = random.choice(MOTIVATIONAL_LINES)
# Publish to SNSnMotivation: {motivation}", Subject="Your Motivational Goal for Today")
return {"statusCode": 200, "body": "Goal and motivation sent successfully!"}
except KeyError as e:
return {"statusCode": 400, "body": f"Error: CSV file header is incorrect. Got {str(e)}"}
except Exception as e:
return {"statusCode": 500, "body": f"An unexpected error occurred: {str(e)}"}
5. Додайте змінні середовища:
BUCKET_NAME
:2025-goals-project
.FILE_NAME
:2025-goals.csv
.SNS_TOPIC_ARN
: ARN вашої SNS теми.
6. Додайте дозволи:
- Прикріпіть AWSLambdaBasicExecutionRole.
- Додайте дозволи
s3:GetObject
таsns:Publish
.
7. Тестуйте функцію:
- Використовуйте приклад події для виклику функції та перевірте, чи надсилається електронна пошта.
Показано, як EventBridge викликає функцію Lambda на основі запланованої події.
4. Автоматизація за допомогою EventBridge
- Перейдіть до EventBridge Console.
- Створіть нове правило:
- Назва:
DailyGoalReminder
. - Тип: Schedule.
- Встановіть вираз для розкладу:
- Використовуйте
cron(0 8 * * ? *)
для запуску щодня о 8:00 ранку UTC.
- Додайте ціль:
- Тип цілі: AWS Lambda function.
- Виберіть вашу Lambda функцію.
- Збережіть правило та протестуйте вручну.
Налаштовано правило EventBridge для планування завдань щодня з 12 січня 2025 року по 21 січня 2025 року.
AWS Оцінка витрат
- Lambda: Безкоштовний рівень включає 1 мільйон запитів та 400,000 GB-секунд на місяць.
- S3: Безкоштовний рівень включає 5 ГБ зберігання та 20,000 GET запитів на місяць.
- SNS: Електронні листи безкоштовні; SMS повідомлення (якщо використовуються) можуть бути платними.
- EventBridge: Безкоштовний рівень включає 1 мільйон подій на місяць.
Для цього проекту використання, ймовірно, залишатиметься в межах безкоштовного рівня AWS.
Висновок
Цей проект демонструє, як служби AWS можуть автоматизувати щоденні нагадування, щоб допомогти вам залишатися мотивованими та досягати своїх цілей. Завдяки мінімальним налаштуванням та ефективному використанню таких служб, як Lambda, S3, SNS і EventBridge, ви можете створити безперебійну систему для управління завданнями та мотивацією.
Перекладено з: Automating Daily Goal Reminders Using AWS Lambda and EventBridge