Spec-Zone.ru › Swift

Развертывание на AWS с Amazon Linux 2

Это руководство описывает, как запустить экземпляр AWS с Amazon Linux 2 и настроить его для работы со Swift. Здесь используется пошаговый подход через консоль. Это отличный способ обучения, но для более зрелого подхода мы рекомендуем использовать инструменты инфраструктуры как кода, такие как AWS Cloudformation, а экземпляры создаются и управляются с помощью автоматизированных инструментов, таких как группы автоматического масштабирования. Для одного подхода, использующего эти инструменты, см. эту статью блога: https://aws.amazon.com/blogs/opensource/continuous-delivery-with-server-side-swift-on-amazon-linux-2/

Запуск экземпляра AWS

Используйте меню «Сервис», чтобы выбрать службу EC2.

Select EC2 service

Нажмите на «Экземпляры» в меню «Экземпляры»

Select Instances

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

Launch instance

Выберите образ Amazon Machine Image (AMI). В данном случае руководство предполагает, что мы будем использовать Amazon Linux 2, поэтому выберите этот тип AMI.

Choose AMI

Выберите тип экземпляра. Более крупные типы экземпляров будут иметь больше памяти и ЦП, но будут дороже. Достаточно будет и меньшего типа экземпляра для экспериментов. В данном случае у меня выбран тип экземпляра t2.micro.

Choose Instance type

Настройте детали экземпляра. Если вы хотите получить прямой доступ к этому экземпляру в интернет, убедитесь, что подсеть, которую вы выбираете, автоматически назначает общедоступный IP-адрес. Предполагается, что VPC имеет подключение к интернету, что означает, что ему нужен шлюз интернета (IGW) и правильные правила сети, но это справедливо для стандартной VPC. Если вы хотите настроить этот экземпляр в частной (не доступной через интернет) VPC, вам потребуется настроить башн-хост, AWS Systems Manager Session Manager или какой-либо другой механизм подключения к экземпляру.

Choose Instance details

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

Choose Instance storage

Добавьте теги. Рекомендуется добавить столько тегов, сколько нужно, чтобы правильно идентифицировать этот сервер позже. Особенно, если у вас много серверов, может быть трудно запомнить, какой из них использовался для какой цели. Как минимум, добавьте тег Name с запоминающимся значением.

Add tags

Настройте группу безопасности. Группа безопасности — это управляемый брандмауэр, который ограничивает трафик, принимаемый вашим экземпляром. Рекомендуется максимально ограничить его. В данном случае мы настраиваем его так, чтобы разрешать трафик только по порту 22 (ssh). Рекомендуется также ограничить источник. Чтобы ограничить его текущим IP-адресом вашего рабочего стола, щелкните раскрывающееся меню в поле «Источник» и выберите «Мой IP-адрес».

Configure security group

Запустить экземпляр. Нажмите на «Запустить» и выберите пару ключей, которые вы будете использовать для подключения к экземпляру. Если у вас уже есть пара ключей, которые вы использовали ранее, вы можете повторно использовать её, выбрав «Выбрать существующую пару ключей». В противном случае вы можете создать пару ключей сейчас, выбрав «Создать новую пару ключей».

Launch instance

Подождите, пока экземпляр не запустится. Когда он будет готов, он отобразится как «запущенный» в разделе «Состояние экземпляра» и «2/2 проверки пройдены» в разделе «Проверки статуса». Щёлкните по экземпляру, чтобы просмотреть детали в нижней панели окна и найдите «Общедоступный IP-адрес IPv4».

Wait for instance launch and view details

Подключиться к экземпляру. Используя пару ключей, которую вы использовали или создали на этапе запуска, и IP-адрес на предыдущем шаге, выполните ssh. Убедитесь, что вы используете -A параметр с ssh, чтобы на следующем шаге мы смогли использовать те же ключи для подключения ко второму экземпляру.

Connect to instance

У нас есть два варианта компиляции бинарника: либо непосредственно на экземпляре, либо с использованием Docker. Мы рассмотрим оба варианта здесь.

Компиляция на экземпляре

Есть два альтернативных способа компиляции кода на экземпляре, либо:

  • скачав и используя инструментарий непосредственно на экземпляре,
  • или с помощью docker и компиляцией внутри контейнера docker

Компиляция с помощью скачанного инструментария

Выполните следующую команду в терминале SSH. Обратите внимание, что может быть более новая версия Swift инструментария. Проверьте https://swift.org/download/#releases на наличие последней доступной ссылки на инструментарий для Amazon Linux 2.

SwiftToolchainUrl="https://swift.org/builds/swift-5.4.1-release/amazonlinux2/swift-5.4.1-RELEASE/swift-5.4.1-RELEASE-amazonlinux2.tar.gz"
sudo yum install ruby binutils gcc git glibc-static gzip libbsd libcurl libedit libicu libsqlite libstdc++-static libuuid libxml2 tar tzdata ruby -y
cd $(mktemp -d)
wget ${SwiftToolchainUrl} -O swift.tar.gz
gunzip < swift.tar.gz | sudo tar -C / -xv --strip-components 1

Наконец, проверьте, что Swift установлен правильно, выполнив Swift REPL: swift.

Invoke REPL

Теперь давайте скачаем и соберем тестовое приложение. Мы воспользуемся --static-swift-stdlib вариантом, чтобы его можно было развернуть на другом сервере без установленного Swift инструментария. Эти примеры будут развертывать пример HTTP-сервера SwiftNIO по адресу example HTTP server, но вы можете протестировать свой проект.

git clone https://github.com/apple/swift-nio.git
cd swift-nio
swift build -v --static-swift-stdlib -c release

Компиляция с Docker

Убедитесь, что Docker и git установлены на экземпляре:

sudo yum install docker git
sudo usermod -a -G docker ec2-user
sudo systemctl start docker

Возможно, вам придется выйти и снова войти в систему, чтобы использовать Docker. Проверьте, выполнив docker ps и убедитесь, что он выполняется без ошибок.

Скачайте и скомпилируйте пример HTTP-сервера SwiftNIO по адресу example HTTP server:

docker run --rm  -v "$PWD:/workspace"  -w /workspace swift:5.4-amazonlinux2   /bin/bash -cl ' \
     swift build -v --static-swift-stdlib -c release

Тестирование бинарника

Используя те же шаги, что и выше, запустите второй экземпляр (но не выполняйте приведенные выше команды bash!). Убедитесь, что вы используете ту же пару ключей SSH.

В консоли управления AWS перейдите к службе EC2 и найдите только что запущенный экземпляр. Щелкните по экземпляру, чтобы увидеть детали, и найдите внутренний IP-адрес. В моем примере внутренний IP-адрес — 172.31.3.29

С исходного экземпляра, создавшего бинарник, скопируйте его на новый серверный экземпляр: scp .build/release/NIOHTTP1Server ec2-user@172.31.3.29

Теперь подключитесь к новому экземпляру: ssh ec2-user@172.31.3.29

На новом экземпляре протестируйте Swift бинарник:

NIOHTTP1Server localhost 8080 &
curl localhost:8080

Дальнейшие варианты безграничны и зависят от вашего приложения Swift. Если вы хотите запустить веб-сервис, убедитесь, что вы открыли группу безопасности для правильного порта и из правильного источника. Когда закончите тестирование Swift, выключите экземпляр, чтобы не платить за ненужные вычисления. В панели EC2 выберите оба экземпляра, выберите «Действия» из меню, затем «Состояние экземпляра», а затем «завершить».

Terminate Instance

The Swift Programming Language, Copyright © 2014-2025 Apple Inc.
Swift and the Swift logo are trademarks of Apple Inc.

Documentation for Swift 6.0.3


https://www.swift.org/documentation/server/guides/deploying/aws.html

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API