Створення магазину погодних даних OpenAPI в S3 бакеті

текст перекладу
pic

Нещодавно я вирушив у захоплюючу подорож із створення погодного OpenAPI магазину в S3 бакеті. Ось детальний опис мого досвіду, включаючи кроки, яких я дотримувався, проблеми, з якими зіткнувся, і цінні уроки, які я отримав.

Крок 1: Налаштування проєкту

Я почав з створення каталогу проєкту під назвою weather-dashboard-demo за допомогою команди: mkdir weather-dashboard-demo

Всередині цього каталогу я створив три підкаталоги:

  • src (для вихідного коду)
  • tests (для юніт-тестів)
  • data (для зберігання файлів даних)

Оскільки я використовував PowerShell, команда touch не працювала. Замість цього я використав команду New-Item, щоб створити необхідні файли:

New-Item -Path src/init.py -ItemType File
New-Item -Path src/weather_dashboard.py -ItemType File
New-Item -Path requirements.txt, README.md, .env -ItemType File

Крок 2: Встановлення Python та налаштування середовища

Спочатку я зіткнувся з помилками, оскільки Python не був встановлений або доданий у PATH.

i)Щоб вирішити цю проблему, я встановив Python і перевірив установку за допомогою:

python — version

ii)Також я перевірив, чи встановлений pip, використовуючи команду:

python -m pip — version

iii)Якщо pip не був встановлений, я використав:

python -m ensurepip — upgrade

iv)Далі я ініціалізував репозиторій Git і створив файл .gitignore, щоб виключити чутливі файли, такі як .env,zip

Крок 3: Встановлення залежностей

i)Я додав необхідні залежності до файлу requirements.txt:

boto3==1.26.137
python-dotenv==1.0.0
requests==2.28.2

ii)Далі я встановив всі залежності за допомогою:

pip install -r requirements.txt

iii)Щоб перевірити встановлення, я виконав:

pip show python-dotenv
pip show requests

Крок 4: Налаштування AWS та OpenWeather API

i) Використовуючи AWS CLI, я налаштував свої облікові дані:

aws configure

ii)Я надав наступні деталі:

  • Access Key ID
  • Secret Access Key
  • Default Region (наприклад, us-east-1)

Далі я зареєструвався на OpenWeather і отримав свій API-ключ. Я зберіг чутливу інформацію у файлі .env:

OPENWEATHERAPIKEY=yourapikey
AWSBUCKETNAME=yourbucketname

pic

pic

(Примітка: не діліться своїми API-ключами або AWS обліковими даними з іншими особами.)

Крок 5: Написання коду для Weather Dashboard

Я написав логіку для отримання погодних даних та завантаження їх у S3 бакет у файлі weather_dashboard.py. Повний код можна знайти в моєму GitHub репозиторії.

Щоб виконати скрипт, я використав:

python src/weather_dashboard.py

Усунення помилок

Незважаючи на те, що API працювало добре в Postman, а S3 бакет було успішно створено, я зіткнувся з проблемою, коли API-ключ не зчитувався з файлу .env. Після перевірки структури файлу я зрозумів, що проблема була викликана відсутністю нового рядка в кінці файлу .env. Додавши один розрив рядка, я вирішив проблему.

pic

pic

pic

pic

Один з моїх колег по команді роз’яснив мої сумніви щодо команд AWS S3 та поділився кількома надзвичайно корисними порадами. Він пояснив, як:

  1. Переглядати вміст бакету за допомогою команди:
  • aws s3 ls s3://bucketname/
  1. Копіювати об’єкти з бакету, і
    2.
    текст перекладу
    Видалити бакет за допомогою команди rb.

Я щиро вдячний за його допомогу та підтримку!

pic

Уроки, які я отримав

Увага до деталей: Маленькі помилки, як відсутній новий рядок, можуть спричинити серйозні проблеми.

Знайомство з інструментами: Важливо розуміти команди та інструменти, якими ви користуєтесь, особливо при переході між середовищами (наприклад, PowerShell і Bash).

Документація: Ведення обліку помилок і їхніх рішень допомагає уникнути повторення одних і тих самих помилок.

Практики безпеки: Завжди приховуйте чутливу інформацію, таку як API-ключі та облікові дані.

Кожна помилка, з якою я зіткнувся, навчила мене чомусь важливому, підкріплюючи ідею, що помилки — це кроки на шляху до розвитку. Цей досвід не тільки покращив мої технічні навички, але й дав мені глибше розуміння тонкощів DevOps-робочих процесів.

Перекладено з: Building a Weather OpenAPI Store in S3 Bucket

Leave a Reply

Your email address will not be published. Required fields are marked *