Развертывание приложений Go в AWS App Runner: пошаговое руководство

С управляемой средой выполнения для Go

В этом сообщении блога вы узнаете, как запустить приложение Go в AWS App Runner, используя среду выполнения платформы Go. Вы начнете с существующего приложения Go на GitHub и развернете его в AWS App Runner. Приложение основано на Приложении для сокращения URL (с некоторыми изменениями), которое сохраняет данные в DynamoDB.

AWS App Runner может создавать сервисы и управлять ими на основе двух типов источников сервисов:

  • Исходный код (описан в этом сообщении в блоге)
  • Исходное изображение

Исходный код — это не что иное, как код вашего приложения, который создаст и развернет App Runner. Все, что вам нужно сделать, это указать App Runner репозиторий исходного кода и выбрать подходящую среду выполнения, соответствующую версии платформы программирования. App Runner предоставляет управляемые среды выполнения для конкретных платформ (для Python, Node.js, Java, Go и т. д.).

Среда выполнения платформы AWS App Runner Go упрощает создание и запуск контейнеров с веб-приложениями на основе версии Go. Вам не нужно предоставлять конфигурацию контейнера и инструкции по сборке, такие как Dockerfile. Когда вы используете среду выполнения Go, App Runner запускается с управляемого образа среды выполнения Go, основанного на на образе Amazon Linux Docker и содержит пакет среды выполнения для версии Go и некоторые инструменты. App Runner использует этот образ управляемой среды выполнения в качестве базового образа и добавляет код вашего приложения для создания образа Docker. Затем он развертывает этот образ для запуска вашей веб-службы в контейнере.

Давайте начнем….

Убедитесь, что у вас есть учетная запись AWS, и установите AWS CLI.

1. Создайте репозиторий GitHub для приложения для сокращения URL-адресов.

Клонируйте этот репозиторий GitHub, а затем загрузите его в репозиторий GitHub в своей учетной записи (сохраните то же имя репозитория, то есть apprunner-go-runtime-app).

git clone https://github.com/abhirockzz/apprunner-go-runtime-app

2. Создайте таблицу DynamoDB для хранения информации об URL.

Создайте таблицу с именем urls. Выберите следующее:

  • Ключ раздела с именем shortcode (тип данных String)
  • On-Demand режим мощности

3. Создайте роль IAM с определенными разрешениями DynamoDB.

export IAM_ROLE_NAME=apprunner-dynamodb-role
aws iam create-role --role-name $IAM_ROLE_NAME --assume-role-policy-document file://apprunner-trust-policy.json

Перед созданием политики обновите файл dynamodb-access-policy.json, чтобы он отражал имя ARN таблицы DynamoDB.

aws iam put-role-policy --role-name $IAM_ROLE_NAME --policy-name dynamodb-crud-policy --policy-document file://dynamodb-access-policy.json

Разверните приложение в AWS App Runner

Если у вас есть подключение к GitHub AWS App Runner и вы хотите его использовать, перейдите к шагу Выбор репозитория.

1. Создайте подключение к GitHub AWS App Runner

Откройте консоль App Runner и выберите Создать службу.

На странице Источник и развертывание в разделе Источник для типа Репозиторий выберите Репозиторий исходного кода. В разделе Подключиться к GitHub выберите Добавить новый, а затем, если будет предложено, укажите свои учетные данные GitHub.

В диалоговом окне Установить AWS Connector для GitHub при появлении запроса выберите имя своей учетной записи GitHub. Если будет предложено авторизовать коннектор AWS для GitHub, выберите Авторизовать подключения AWS. Выберите Установить.

Имя вашей учетной записи отображается как выбранная учетная запись/организация GitHub. Теперь вы можете выбрать репозиторий в своей учетной записи.

2. Выбор репозитория

В разделе Репозиторий выберите созданный вами репозиторий — apprunner-go-runtime-app. В поле Ветвь выберите имя ветки по умолчанию вашего репозитория (например, main).

Настройте развертывание. В разделе настроек Развертывание выберите Автоматически, а затем нажмите Далее.

3. Настроить сборку приложения

На странице Настроить сборку для файла Configuration выберите здесь Настроить все параметры.

Укажите следующие параметры сборки:

  • Среда выполнения — выберите Перейти 1.
  • Команда сборки — введите go build main.go
  • Команда запуска — введите ./main
  • Порт — введите 8080

Выберите Далее.

4. Настройте службу.

В разделе Переменные среды добавьте переменную среды. В поле Ключ введите TABLE_NAME, а в поле Значение введите имя таблицы DynamoDB (urls), которую вы создали ранее.

В разделе Безопасность › Разрешения выберите роль IAM, которую вы создали ранее (apprunner-dynamodb-role).

Выберите Далее.

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

Проверьте функцию сокращения URL-адресов

Приложение предоставляет две конечные точки:

  1. Чтобы создать короткую ссылку для URL
  2. Доступ к исходному URL-адресу по короткой ссылке

Сначала экспортируйте конечную точку службы App Runner как переменную среды,

export APP_URL=<enter App Runner service URL>
# example
export APP_URL=https://jt6jjprtyi.us-east-1.awsapprunner.com

1. Вызовите его с помощью URL-адреса, к которому вы хотите получить доступ по короткой ссылке.

curl -i -X POST -d 'https://abhirockzz.github.io/' $APP_URL

# output
HTTP/1.1 200 OK
Date: Thu, 21 Jul 2022 11:03:40 GMT
Content-Length: 25
Content-Type: text/plain; charset=utf-8

{"ShortCode":"ae1e31a6"}

Вы должны получить ответ JSON с коротким кодом, а также увидеть элемент в таблице DynamoDB.

Вы можете продолжить тестирование приложения с несколькими другими URL-адресами.

2. Доступ к URL-адресу, связанному с коротким кодом

Введите в браузере следующее http://<enter APP_URL>/<shortcode>

Например, когда вы вводите https://jt6jjprtyi.us-east-1.awsapprunner.com/ae1e31a6, вы будете перенаправлены на исходный URL-адрес.

Вы также можете использовать curl. Вот пример:

export APP_URL=https://jt6jjprtyi.us-east-1.awsapprunner.com

curl -i $APP_URL/ae1e31a6

# output
HTTP/1.1 302 Found
Location: https://abhirockzz.github.io/
Date: Thu, 21 Jul 2022 11:07:58 GMT
Content-Length: 0

Очистить

После завершения этого руководства не забудьте удалить следующее:

  • Таблица DynamoDB
  • Служба запуска приложений

Заключение

В этой записи блога вы узнали, как перейти от приложения Go в репозитории GitHub к полноценному сервису сокращения URL-адресов, развернутому в AWS App Runner!