AWSCloudChallenge

Начинаю свой блог о конкурсе «Облачное резюме». Здесь я подробно описываю каждый шаг, который я предпринял, чтобы выполнить задание.

HTML и CSS

Я начал свой путь с того, что 2 недели пытался сделать свое резюме. Прошло немного времени с тех пор, как я его обновлял, но я его закончил.

Я начал с написания голого html, а затем попытался дополнить его CSS.

Выглядело не очень хорошо, как я хотел, я просто сдался и смирился с реальностью, что в ближайшее время я не стану великим дизайнером веб-сайтов. Я начал просматривать шаблоны и остановился на этом шаблоне от styleshout.

Я переделал все в соответствии со своей эстетикой и сделал то, с чем я могу с гордостью работать.

Внутренняя часть сайта

После того, как фронт-энд сайта был готов, я начал заниматься инфраструктурой бэк-энда сайта. Вот тут-то и началось самое интересное и сложное.

Челлендж предлагал использовать SAM в AWS для развертывания инфраструктуры, IaC (Infrastructure as Code). Я решил попробовать использовать Terraform, так как давно к нему присматривался, но не нашел проекта, с которого можно было бы начать его изучение.

Именно здесь я нашел этот YouTube-канал Уилла Брока.

Он дал мне отличное понимание Terraform и того, как использовать и писать код. Примерно через полдня просмотра его видео я начал использовать документацию Terraform, чтобы начать писать код самостоятельно.

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

DNS БЫЛ ХУДШИМ. Я столько мучился, пытаясь его настроить, хахаха. Устранение неполадок было немного сложным, так как потребовалось 5 минут, чтобы понять, будет ли он подниматься.

НО ПОСЛЕ ЭТОГО Я ВСЕ-ТАКИ ЗАСТАВИЛ ЕГО РАБОТАТЬ! Настройка Route53 (DNS) и CloudFront наградила мой сайт блестящей буквой «S» на моем HTTP.

Я начал доделывать остальной код бэкенда и проводить тесты. Мне удалось закончить его и сделать чистым и легким для возвращения к нему, если мне понадобится внести изменения.

Действия Github (CI/CD Pipeline) и кодинг

Когда все вроде бы заработало идеально, я приступил к реализации своего CI/CD-конвейера. Именно здесь я начал использовать GitHub Actions. Обратите внимание, Terraform statefiles необходим для хранения конфигураций инфраструктуры Terraform. Это необходимо для того, чтобы знать, что Terraform делал раньше. Я настроил Terraform на использование S3 bucket в качестве хранилища для этого statefile, чтобы Terraform мог получить доступ к файлам конфигурации, когда я перемещаю его с локальной машины в репозиторий GitHub.

Я закончил работу над сайтом резюме добавлением подсчета посетителей на главную страницу. Количество посетителей должно храниться в базе данных. Здесь на помощь приходит AWS DynamoDB.

Нам нужно было взаимодействовать с базой данных, поэтому мы использовали AWS Lambda для обновления и получения количества посетителей в базе данных при каждом запуске функции Lambda. Вот код, который я написал на python для этого.

import boto3

table_name = "visitor-count"
dynamodb = boto3.resource("dynamodb")
db_client = boto3.client("dynamodb")
table = dynamodb.Table(table_name)


def increment_visitor():
    response = db_client.update_item(
        TableName=table_name,
        Key = {
            'Primary Key': {
                'N': "0"
            }
        },
        ExpressionAttributeValues = { ":inc": {"N": "1"}},
        UpdateExpression = "ADD visitor :inc"
    )


def retrieve_visitor_count():
    item = table.get_item(
        Key = {
            "Primary Key": 0
        }
    )
    visitcount = (item["Item"])["visitor"]
    return visitcount


def lambda_handler(event, context):
    increment_visitor()
    return retrieve_visitor_count()
Вход в полноэкранный режим Выход из полноэкранного режима

Наконец, нам нужно было что-то для безопасного взаимодействия с кодом. Именно здесь нам на помощь пришел AWS API Gateway.

API открывается в Интернете для взаимодействия с написанным Javascript на сайте.

Заключение

Наконец-то! Я долго откладывал попытку выполнить это задание. Я так рад и счастлив, что смог закончить его и иметь готовый продукт, которым можно похвастаться.

Этот вызов подтолкнул меня к изучению JavaScript, Terraform и использованию облачных ресурсов AWS. Я узнал, что DNS — это все еще боль, когда я устраняю неполадки, будучи специалистом службы поддержки, а также создаю веб-сайт. Я узнал, насколько проще развернуть ресурс с помощью кода, чем используя консоль AWS (гораздо больше кликов).

Пожалуйста, посмотрите сайт по адресу leighiamvirrey.com, исходный код находится на моем GitHub. Вот ссылки на frontend и backend.

Оцените статью
Procodings.ru
Добавить комментарий