Введение

Этот проект управления экземплярами EC2 на основе жестов — это простой и удобный для начинающих проект, который позволяет пользователям запускать и завершать работу экземпляров EC2 на AWS☁️ с помощью жесты пальцев✌️🖐️ захвачены веб-камерой компьютера📷.

С помощью этого проекта даже люди с ограниченным опытом могут продемонстрировать свои навыки в области компьютерного зрения, машинного обучения и интеграции с AWS.

Следуя пошаговым инструкциям, вы сможете создать это инновационное приложение и продемонстрировать свою способность создавать интерактивные проекты.

Предпосылки

Прежде чем приступить к работе над проектом, убедитесь, что у вас установлены следующие предварительные компоненты:

  1. Anaconda🐍: Anaconda — это дистрибутив Python, который упрощает управление пакетами и предоставляет среду для запуска проекта.
  2. AWS CLI💻: интерфейс командной строки AWS позволяет вам взаимодействовать с сервисами AWS из командной строки. Установите его, чтобы настроить свою учетную запись AWS и получить доступ к необходимым учетным данным.

Монтаж

Чтобы настроить проект на локальном компьютере, выполните следующие действия:

  1. Клонируйте репозиторий GitHub, содержащий файлы проекта:
git clone [https://github.com/krishabh080/Launching_ec2_instance_with_fingers_using_AI_and_ML.git]

2. Перейдите к загруженному репозиторию на локальном компьютере.

3. Установите необходимые библиотеки Python, выполнив следующую команду:

pip install -r requirements.txt

Эта команда установит необходимые библиотеки, такие как scikit-learn, numpy, pandas, matplotlib, boto3, opencv-python, urllib3, cvzone и mediapipe.

Конфигурация

Перед запуском проекта необходимо выполнить несколько шагов настройки:

Создание пользователя IAM и настройка интерфейса командной строки AWS

Для программного взаимодействия с сервисами AWS необходимо создать пользователя IAM и настроить интерфейс командной строки AWS в своей системе. Вот пошаговое руководство:

  1. Перейдите на панель инструментов IAM в Консоли управления AWS.
  2. Нажмите «Пользователи» в меню боковой панели, а затем нажмите кнопку «Добавить пользователя».
  3. Укажите имя пользователя IAM и выберите программный тип доступа. Нажмите «Далее», чтобы продолжить.
  4. Прикрепите необходимые политики к пользователю. Для этого проекта вы можете подключить политику «AmazonEC2FullAccess», чтобы включить управление экземпляром EC2. Проверьте конфигурацию и нажмите «Далее».
  5. Пропустите раздел тегов и нажмите «Далее».
  6. На странице «Обзор» проверьте данные и нажмите «Создать пользователя».
  7. После создания пользователя перейдите в раздел «Учетные данные безопасности», чтобы создать идентификатор ключа доступа и секретный ключ доступа. Эти учетные данные будут использоваться для настройки интерфейса командной строки AWS на вашем компьютере.

8. Скопируйте ключ доступа и секретный ключ

9. Откройте командную строку или терминал и выполните следующую команду:

aws configure

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

Создание группы безопасности и добавление правил для входящих подключений

Группа безопасности — это виртуальный брандмауэр, контролирующий входящий и исходящий трафик для экземпляров EC2. Выполните следующие действия, чтобы создать группу безопасности и добавить необходимые правила для входящего трафика.

  1. Перейдите в Консоль управления AWS и перейдите к сервису EC2.
  2. Нажмите «Группы безопасности» в боковом меню.
  3. Нажмите на кнопку «Создать группу безопасности».
  4. Укажите имя и описание группы безопасности.
  5. В разделе «Правила для входящего трафика» нажмите «Добавить правило», чтобы определить правила для входящего трафика. Укажите протокол (например, TCP, UDP), диапазон портов и исходный IP-адрес или диапазон CIDR в соответствии с вашими требованиями. Добавьте столько входящих правил, сколько необходимо.
  6. После того, как вы определили все входящие правила, нажмите кнопку «Создать группу безопасности», чтобы создать группу безопасности.
  7. После создания группы безопасности запишите ее идентификатор группы безопасности. Этот идентификатор будет использоваться в коде для разрешения доступа к экземплярам EC2.

Выбор образа машины Amazon (AMI)

  1. Перейдите в Консоль управления AWS и перейдите к сервису EC2.
  2. Нажмите «Экземпляры» в боковом меню.
  3. Нажмите на кнопку «Запустить экземпляр».
  4. В разделе «Шаг 1. Выберите образ машины Amazon (AMI)» выберите образ AMI, соответствующий вашим требованиям. Вы можете выбрать один из предварительно настроенных AMI, предоставляемых AWS, или выбрать AMI сообщества.
  5. Выбрав AMI, запишите его идентификатор AMI. Этот идентификатор будет использоваться в коде для указания AMI для запуска экземпляров EC2.

Объяснение кода

import cv2
cap = cv2.VideoCapture(0)
allOs = []
import boto3
ec2 = boto3.resource("ec2")

Код начинается с импорта необходимых библиотек: cv2 для захвата видеокадров, boto3 для взаимодействия с сервисами AWS EC2 и cvzone.HandTrackingModule для возможностей отслеживания рук с использованием mediapipe.

Объект видеозахвата, `cap`, создается для доступа к каналу веб-камеры. Список allOs инициализируется для отслеживания запущенных экземпляров EC2. Объект ресурса ec2 создается с помощью метода boto3.resource для обеспечения взаимодействия с сервисом AWS EC2.

def myOslaunch():
    instances = ec2.create_instances(
        ImageId="AMI_ID_HERE",
        MinCount=1,
        MaxCount=1,
        InstanceType="t2.micro",
        SecurityGroupIds=["SECURITY_GROUP_ID_HERE"]
    )
    myid = instances[0].id
    allOs.append(myid)
    print(myid)
    print("total os:", len(allOs))

Функция `myOslaunch()` запускает новый экземпляр EC2, используя указанные параметры. Параметр `ImageId` следует заменить на желаемый идентификатор AMI. Параметры `MinCount` и `MaxCount` установлены на 1 для запуска одного экземпляра. Параметр `InstanceType` определяет тип экземпляра, который можно изменить в соответствии с требованиями. Параметр `SecurityGroupIds` должен быть обновлен соответствующим идентификатором группы безопасности. Идентификатор запущенного экземпляра добавляется к списку allOs в целях отслеживания.

def osTerminate():
    if len(allOs) != 0:
        osdelete = allOs.pop()
        ec2.instances.filter(InstanceIds=[osdelete]).terminate()
        print("total os:", len(allOs))

Функция osTerminate() завершает последний запущенный экземпляр EC2. Он проверяет, есть ли какие-либо экземпляры в списке «allOs» перед выполнением процесса завершения. Идентификатор последнего запущенного экземпляра выталкивается из списка, и вызывается метод `terminate()` для завершения соответствующего экземпляра EC2.

detector = HandDetector(maxHands=1)

while True:
    status, photo = cap.read()
    hand = detector.findHands(photo, draw=False)
    cv2.imshow("my photo", photo)
    if cv2.waitKey(100) == 13:
        break
    if hand:
        lmlist = hand[0]
        totalFinger = detector.fingersUp(lmlist)
        if totalFinger == [0, 1, 1, 0, 0]:
            print("launching a new instance")
            myOslaunch()
        elif totalFinger == [0, 1, 0, 0, 0]:
            print("Terminating the instance")
            osTerminate()
        else:
            print("show correct fingers")

cv2.destroyAllWindows()
allOs
cap.release()

Далее код создает экземпляр класса HandDetector из библиотеки cvzone.HandTrackingModule. Этот класс включает возможности отслеживания рук с помощью mediapipe.

Внутри цикла while код захватывает кадры из видеопотока, используя cap.read(). Функция findHands() вызывается для обнаружения рук в захваченном кадре. Полученная информация о руке сохраняется в переменной `hand`.

Текущий кадр отображается с помощью `cv2.imshow

Применение

После завершения шагов по установке и настройке вы можете запустить скрипт основного кода для управления инстансами EC2 с помощью жестов пальцев. Следуй этим шагам:

  1. Откройте файл сценария Python с именем code.py в текстовом редакторе.
  2. Обновите функцию myOslaunch() с соответствующими значениями:
  • Замените "AMI_ID_HERE" идентификатором AMI, который вы выбрали в консоли AWS.
  • Замените "SECURITY_GROUP_ID_HERE" идентификатором группы безопасности, который вы создали.

3. Сохраните изменения и закройте файл.

4. Откройте командную строку или терминал и перейдите в каталог проекта.

5. Запустите следующую команду, чтобы выполнить код:

python code.py

6. Код начнет захват кадров с вашей веб-камеры. Поместите руку перед камерой, и система распознает ваши жесты пальцами.

7. Если вы сделаете жест указательным и средним пальцами вверх, код запустит новый инстанс EC2.

8. Если вы сделаете жест, подняв только указательный палец, код завершит последний запущенный экземпляр EC2.

9. Если жест пальцем не соответствует ни одному из предопределенных жестов, появится сообщение «покажи правильные пальцы».

10. Для выхода из программы нажмите клавишу Enter.

Заключение

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

Попробуйте этот проект и лично убедитесь в мощи управления инстансами EC2 на основе жестов. Начните управлять своими виртуальными серверами одним взмахом руки!

— — — — — — — — — — — — — — — — — — — — — — —

Чтобы получить доступ к полному исходному коду и файлам проекта, вы можете посетить репозиторий GitHub: Ссылка на репозиторий GitHub.

Если у вас есть какие-либо вопросы или вам нужна дополнительная помощь, не стесняйтесь обращаться ко мне по адресу [email protected]. Рад помочь 😄!🫂