Разверните свой первый Cloudflare Worker

CloudflareBeginner
Практиковаться сейчас

Введение

Endpoint проверки состояния — это небольшой URL, который сообщает, отвечает ли приложение. В этой лабораторной работе вы напишете Cloudflare Worker на JavaScript, протестируете его ответ в формате JSON внутри LabEx, опубликуете тот же код по общедоступному URL workers.dev, изучите журнал одного запроса и удалите тестовое развертывание.

Используйте собственную учебную учетную запись с подтвержденным адресом электронной почты и тарифом Workers Free, подготовленную в лабораторной работе Подготовка учебной учетной записи Cloudflare. Вы должны быть знакомы с процессом авторизации устройства из лабораторной работы Подключение LabEx к учетной записи Cloudflare и знать основы JavaScript. Этой новой виртуальной машине потребуется отдельная авторизация, включая разрешения на развертывание и удаление Workers. Покупать домен, создавать базу данных или переходить на платный тариф не требуется. Тестовый ответ будет общедоступным и будет содержать только демонстрационные данные.

В ходе настройки в /home/labex/project/first-worker были установлены Node.js 22.22.0 и локальный Wrangler 4.131.1 для проекта. Вы изучите сведения об учетной записи с помощью Wrangler и протестируете ответы с помощью curl; эти инструменты работают и за пределами LabEx. Worker и конфигурацию вы создадите самостоятельно и выполните стандартные команды Wrangler. Не закрывайте эту виртуальную машину, пока не убедитесь, что Worker удален и вы вышли из системы.

Напишите Worker для проверки состояния

На этом шаге вы создадите точку входа JavaScript и укажете Wrangler, как ее запускать. Worker экспортирует обработчик fetch: Cloudflare вызывает его для входящего HTTP-запроса, а возвращаемый объект Response становится HTTP-ответом. Этот первый Worker возвращает одно и то же сообщение о состоянии для любого пути; маршрутизация будет рассмотрена в следующей лабораторной работе.

Перейдите в подготовленный проект и проверьте версию CLI:

cd /home/labex/project/first-worker
npx wrangler --version

Версия должна быть 4.131.1. Wrangler является зависимостью проекта, поэтому выполняйте команды из этого каталога. На собственном компьютере устанавливайте зафиксированные зависимости проекта с помощью npm ci, если вместе с проектом предоставлен lock-файл.

Следующая команда использует here-document: cat записывает строки между <<'WORKER' и WORKER в src/index.js. Оператор > заменяет содержимое этого файла. Кавычки вокруг разделителя не позволяют оболочке изменять текст JavaScript. Вставьте весь блок, включая последний разделитель.

cat > src/index.js <<'WORKER'
export default {
  async fetch(request) {
    console.log("health-request", request.method, new URL(request.url).pathname);
    return Response.json({ service: "labex-first-worker", status: "ok" });
  },
};
WORKER

Response.json создает ответ JSON со статусом 200 и типом содержимого JSON. Сообщение в консоли записывает метод и путь, но не заголовки и учетные данные.

Сгенерируйте уникальное имя, чтобы не перезаписать существующий Worker. Встроенный модуль crypto в Node.js генерирует шесть случайных байтов и форматирует их как двенадцать шестнадцатеричных символов. Конструкция $(...) сохраняет этот текст в переменной оболочки:

WORKER_NAME="labex-first-$(node -p "require('node:crypto').randomBytes(6).toString('hex')")"

Создайте конфигурацию. Здесь разделитель не заключен в кавычки, поэтому $WORKER_NAME будет заменен его уникальным значением:

cat > wrangler.jsonc <<CONFIG
{
  "name": "$WORKER_NAME",
  "main": "src/index.js",
  "compatibility_date": "2026-09-14",
  "workers_dev": true,
  "preview_urls": false
}
CONFIG

Параметр main указывает файл JavaScript. compatibility_date выбирает режим совместимости среды выполнения; это не дата развертывания. Параметр workers_dev включает общедоступный тестовый URL, а preview_urls отключает дополнительные URL предварительного просмотра версий. JSON без комментариев является допустимым JSONC; в этой лабораторной работе используйте показанный формат.

cat wrangler.jsonc

Убедитесь, что имя начинается с labex-first- и содержит уникальный суффикс. Используйте это имя до конца лабораторной работы: оно будет указано при развертывании и удалении. Идентификатор учетной записи вы добавите после авторизации.

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

Запустите и протестируйте Worker локально

На этом шаге вы запустите Worker внутри виртуальной машины до публикации. Локальная среда выполнения Wrangler запускает ваш обработчик, не создавая облачное развертывание.

Запустите сервер разработки в фоновом режиме, чтобы тот же терминал мог отправлять HTTP-запросы. Параметр --ip 0.0.0.0 делает сервис виртуальной машины доступным веб-интерфейсу LabEx, а --port 8080 задает его порт. Оператор > local.log сохраняет стандартный вывод, 2>&1 направляет ошибки в тот же файл, а & возвращает приглашение терминала, пока сервер продолжает работу.

npx wrangler dev --ip 0.0.0.0 --port 8080 > local.log 2>&1 &
cat local.log

Дождитесь сообщения в журнале о готовности сервера на порту 8080. Если запуск еще продолжается, перед продолжением снова выполните cat local.log. Оставьте сервер запущенным до конца этого шага.

Отправьте запрос с помощью curl. Параметр -i включает заголовки ответа, поэтому вы сможете проверить и статус, и тип содержимого:

curl -i http://127.0.0.1:8080/health

В ответе должны присутствовать следующие стабильные значения; порядок и регистр заголовков могут отличаться:

HTTP/1.1 200 OK
Content-Type: application/json
...
{"service":"labex-first-worker","status":"ok"}

Адрес 127.0.0.1 указывает на эту виртуальную машину. Это не ваш компьютер и не общедоступное развертывание Cloudflare. Перед продолжением проверьте HTTP-статус, тип содержимого JSON и оба поля ответа.

Выполните проверку этого шага, пока сервер разработки еще работает.

Авторизуйтесь и разверните Worker в Cloudflare

На этом шаге вы подключите виртуальную машину к учебной учетной записи и развернете протестированный Worker. Сначала проверьте фоновое задание. Команда jobs показывает задания, запущенные в этом терминале; его запись должна содержать wrangler dev.

jobs

Остановите это задание командой kill %1. Здесь %1 означает задание 1 в этом терминале, а не идентификатор системного процесса. Если в выводе jobs для wrangler dev указан другой номер, используйте его. Команда отправляет заданию сигнал завершения.

kill %1

Запустите авторизацию устройства. Области account:read и user:read позволяют прочитать сведения об учетной записи; workers_scripts:write дает право развертывать и удалять скрипты, а workers_tail:read — просматривать журналы в реальном времени. Параметр --browser=false выводит ссылку, которую нужно открыть в собственном браузере.

npx wrangler login --device --browser=false --scopes account:read user:read workers_scripts:write workers_tail:read

Откройте показанную ссылку, при необходимости войдите в Cloudflare, введите текущий код устройства и просмотрите запрос Wrangler на разрешения. Выберите свою учебную учетную запись, а не все учетные записи. На странице согласия также указано обязательное разрешение Background Access. Нажимайте кнопку подтверждения только после проверки приложения, учетной записи и разрешений; затем вернитесь в терминал и дождитесь завершения авторизации. Если срок действия кода истек, снова выполните команду входа, чтобы получить новый код. Не вставляйте токены в терминал и не передавайте файлы с учетными данными.

Разверните разделы Account & Billing и Developer Platform, чтобы проверить названия разрешений, показанные ниже. Эти разрешения шире, чем в уроке по подключению только для чтения, поскольку эта лабораторная работа развертывает Worker и открывает его журналы в реальном времени.

Список разрешений Wrangler для развертывания Worker и просмотра журналов в реальном времени

Убедитесь, что выбрана ваша учебная учетная запись. Если выбрана неправильная учетная запись или все учетные записи, нажмите Edit и измените выбор; проверьте его перед нажатием Authorize.

Учебная учетная запись, выбранная над кнопкой Authorize

Просмотрите учетные записи, доступные после этого входа:

npx wrangler whoami --json

Убедитесь, что "loggedIn": true и "authType": "OAuth Token". В массиве accounts найдите объект с name вашей учебной учетной записи и скопируйте его 32-символьный id. Другие параметры учетной записи для этой лабораторной работы не нужны. Если отображается только одна учетная запись, все равно проверьте ее имя; если отображается несколько, используйте Dashboard, чтобы различить их. Если нужная учетная запись отсутствует, повторите авторизацию, выбрав правильную учетную запись.

Добавьте account_id в конфигурацию. Перед выполнением замените YOUR_ACCOUNT_ID в этом блоке скопированным идентификатором. Команда заново записывает конфигурацию, сохраняя переменную $WORKER_NAME из шага 1. Не закрывайте этот терминал; если переменная потеряна, прочитайте исходное имя с помощью cat wrangler.jsonc и сначала восстановите WORKER_NAME, присвоив ему точно это имя. После развертывания не создавайте другое имя и не меняйте учетную запись.

cat > wrangler.jsonc <<CONFIG
{
  "name": "$WORKER_NAME",
  "main": "src/index.js",
  "compatibility_date": "2026-09-14",
  "workers_dev": true,
  "preview_urls": false,
  "account_id": "YOUR_ACCOUNT_ID"
}
CONFIG
cat wrangler.jsonc

Проверьте уникальное имя Worker и сравните account_id с объектом нужной учетной записи из вывода whoami --json. Этот идентификатор является настройкой, а не паролем. Wrangler использует его при развертывании и удалении. Теперь опубликуйте локальный исходный код:

npx wrangler deploy

Если для этой учетной записи еще не настроен поддомен workers.dev, Wrangler предложит зарегистрировать его. Ответьте yes, выберите доступное имя в нижнем регистре, используя буквы, цифры и дефисы, и подтвердите выбор. Это имя на уровне учетной записи будет общим для будущих Workers и отличается от уникального имени Worker в этой лабораторной работе. Если поддомен уже существует, используйте его повторно; не переименовывайте его. Покупать собственный домен или переходить на другой тариф не нужно.

Дождитесь завершения развертывания. Wrangler выведет URL следующего вида:

https://<your-worker-name>.<your-subdomain>.workers.dev

Сохраните фактический URL, выведенный при развертывании, в переменной оболочки. Замените весь пример URL ниже, сохраните кавычки и не добавляйте завершающий слеш:

WORKER_URL="https://YOUR_WORKER.YOUR_SUBDOMAIN.workers.dev"
curl -i "$WORKER_URL/health"

Ожидайте HTTP 200 и тот же JSON, что и при локальном тестировании. Если новый hostname еще распространяется, немного подождите и повторите запрос; страница с ошибкой не означает успешное развертывание. Можно также открыть фактический URL /health в браузере. Если браузер или сеть блокирует workers.dev, используйте результат curl из виртуальной машины; не отключайте настройки безопасности браузера. Обязательными проверками ответа являются запрос из виртуальной машины и независимая проверка ниже.

Теперь визуально подтвердите то же развертывание в Cloudflare Dashboard. Не закрывайте терминал.

Выберите свою учебную учетную запись в переключателе учетных записей. Ее данные должны совпадать с учетной записью, выбранной выше.

Откройте Compute → Workers & Pages. При необходимости обновите список приложений, затем найдите точное имя labex-first-... из конфигурации. Если приложений много, найдите это полное имя через поиск.

Откройте этот Worker. Убедитесь в его имени и найдите его адрес workers.dev; сравните этот адрес с URL, выведенным командой wrangler deploy.

Развернутый лабораторный Worker в списке приложений Workers and Pages

В сведениях о Worker показаны развернутое приложение и его адрес workers.dev

На этих снимках экрана показан пример развертывания. Ваш случайный суффикс Worker и поддомен учетной записи будут отличаться. Найдите собственные значения, а не копируйте пример. Dashboard — это другое представление ресурса, созданного из терминала; не создавайте здесь второй Worker и не изменяйте его код. Если Worker отсутствует, сначала проверьте выбранную учетную запись, точное имя и завершение команды развертывания.

Список приложений подтверждает существование облачного ресурса, а HTTP-ответ, проверенный с помощью curl, подтверждает работу его кода. Делать или отправлять собственный снимок экрана не требуется.

Нажмите кнопку проверки шага. Независимая серверная проверка читает настройки Worker в выбранной учетной записи и тестирует общедоступный endpoint, поэтому другой веб-сайт с похожим текстом не сможет пройти эту проверку.

Просмотрите журнал запроса в реальном времени

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

Запустите tail Wrangler в фоновом режиме. Параметр --format json создает структурированные события. На этот раз стандартный вывод и ошибки направляются в разные файлы, поэтому диагностический текст не смешивается с данными событий:

npx wrangler tail --format json > requests.json 2> tail-errors.log &

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

curl -i "$WORKER_URL/health"

Файл событий также содержит подробные метаданные запроса. Команда head -n 32 выводит первые 32 строки, чтобы вы могли сосредоточиться на первом событии и сообщении приложения:

head -n 32 requests.json

Найдите событие, в котором outcome равно ok, запрос GET заканчивается на /health, а сообщение консоли содержит health-request. Другие поля, временные метки и заголовки запроса могут отличаться. Если файл пуст, проверьте tail-errors.log, дождитесь подключения, снова отправьте запрос и перечитайте файл.

Остановите tail перед проверкой всех сохраненных событий. Просмотрите jobs и используйте номер, указанный для wrangler tail (обычно 1 после остановки предыдущего задания):

jobs
kill %1

Нажмите кнопку проверки шага, чтобы сопоставить сохраненное событие с развернутым Worker.

Файл может содержать метаданные запроса. Храните его в этой виртуальной машине; не публикуйте его в виде снимка экрана и не отправляйте в общедоступный репозиторий.

Удалите тестовый Worker

На этом шаге вы удалите только тестовый Worker и проверите результат, пока авторизация управления еще активна. Удаление виртуальной машины не удаляет развернутый Worker.

Снова проверьте конфигурацию проекта и убедитесь, что в поле name указано уникальное имя labex-first-..., использованное в этой лабораторной работе:

cat wrangler.jsonc

Удалите этот Worker с помощью конфигурации проекта:

npx wrangler delete

Прочитайте запрос подтверждения, проверьте точное имя и нажмите y для подтверждения. Не используйте принудительное удаление и не удаляйте другой проект. Обычно Wrangler сообщает, что Worker удален. При зафиксированной версии и этих ограниченных разрешениях Wrangler может вместо этого вывести ошибку аутентификации для /storage/kv/namespaces после удаления Worker: Wrangler также проверяет хранилище Workers Sites прежнего типа во время очистки. В этой лабораторной работе пространства KV не создаются. Не выдавайте все предлагаемые разрешения и не повторяйте развертывание, чтобы исправить это диагностическое сообщение; воспользуйтесь кнопкой проверки шага, чтобы узнать, действительно ли Worker удален. Любая другая ошибка требует отдельного расследования.

В Cloudflare Dashboard откройте Workers & Pages в своей учебной учетной записи и обновите список. Убедитесь, что точное имя Worker отсутствует. Затем нажмите кнопку проверки шага для независимой проверки через API.

Для проверки требуется успешный аутентифицированный ответ со списком ресурсов; неудачный сетевой запрос или истекшая сессия не считаются удалением. Ваша учебная учетная запись и ее поддомен workers.dev на уровне учетной записи останутся доступными для следующих лабораторных работ. Выполните проверку этого шага до выхода из системы.

Отключите виртуальную машину

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

npx wrangler logout
npx wrangler whoami --json

Найдите "loggedIn": false. Эта версия Wrangler завершает работу с ненулевым кодом, если пользователь вышел из системы; это ожидаемо. Сетевая ошибка без явно указанного состояния не доказывает выход из системы. Нажмите кнопку проверки шага для независимого подтверждения.

В браузере можно продолжать вход в Cloudflare Dashboard. Вход в браузере и авторизация Wrangler на этой виртуальной машине — разные механизмы. Следующая лабораторная работа начнется с новой виртуальной машины и запросит отдельную авторизацию.

Итоги

Вы написали обработчик fetch и конфигурацию Worker, локально протестировали его ответ JSON, развернули его в собственной учебной учетной записи и изучили журнал запроса в реальном времени. Вы независимо проверили общедоступный ответ и принадлежность ресурса, удалили тестовый Worker с активной авторизацией и вышли из системы на виртуальной машине.

Дополнительные сведения см. в документации Cloudflare: команды Wrangler, обработчик fetch и конфигурация workers.dev.