Начало
Эта глава проводит компонент по пути от исходного кода до ответа на HTTP-запрос. Сначала подготовьте инструменты. Затем соберите компонент и запустите его локально. Платформа понадобится позже — когда компонент будет готов к публикации.
Путь компонента
Компонент проходит три шага.
Сборка. wash build собирает компонент из вашего кода и контракта WIT.
Публикация. Артефакт .wasm уходит в реестр OCI: тег выбирает версию, digest идентифицирует содержимое.
Исполнение. Среда wasmCloud запускает компонент там, где доступны нужные ему интерфейсы WASI.
Дальше работает один цикл. HTTP-запрос — событие или вызов API — приходит в среду. Компонент — ваш код и интерфейсы WASI — обрабатывает его. wasmCloud исполняет компонент и возвращает ответ.
Среда связывает компонент с нужными возможностями. Конфигурация, секреты и разрешения остаются на стороне среды: артефакт .wasm не хранит ни адресов, ни ключей.
Инструменты
Для локальной работы нужны wasmCloud Shell (wash) и тулчейн вашего языка.
Установка wasmCloud Shell
wash — интерфейс командной строки wasmCloud. Он создаёт проекты, собирает компоненты, публикует их в реестр и ведёт цикл разработки. wasmCloud Shell устанавливается официальной командой из документации wasmCloud:
curl -fsSL https://wasmcloud.com/sh | bash
Скрипт печатает следующие шаги: добавить каталог установки в PATH и проверить версию.
wash -V
Тулчейн языка
Компоненты собираются под WebAssembly. Для проекта на Rust добавьте целевую платформу wasm32-wasip2:
rustup target add wasm32-wasip2
Go и TypeScript собираются собственными тулчейнами — wash запускает их по команде из конфигурации проекта.
Проект
wash new создаёт проект из шаблона. Шаблон — Git-репозиторий с готовой структурой; команда принимает ссылку на репозиторий, ветку или тег и имя нового проекта. Шаблоны компонентов перечислены в документации wasmCloud.
В проекте три части:
wit/— контракт компонента: интерфейсы и типы на языке WIT;- исходный код — функции, которые исполняет компонент;
- конфигурация wash — команда сборки и путь к артефакту.
Конфигурация хранится в файле .wash/config.yaml проекта:
build:
command: cargo build --target wasm32-wasip2 --release
component_path: target/wasm32-wasip2/release/hello_world.wasm
Поле command — то, что запускает сборка; component_path — где лежит готовый артефакт.
Локальный цикл
Установите wash (см. выше), затем из корня проекта:
wash build
wash читает контракт, подтягивает WIT-зависимости в каталог wit/deps и запускает команду сборки из конфигурации. Результат — артефакт .wasm: двоичный компонент, соответствующий модели компонентов WebAssembly.
Для разработки запустите сервер:
wash dev
wash dev запускает сервер разработки и исполняет компонент на нём; адрес печатается при старте — проверьте ответ любым HTTP-клиентом. После правок исходников цикл перезапускают: сборка не следит за файлами автоматически. Остановите сервер сочетанием Ctrl+C.
Обе команды работают из любого каталога внутри проекта. Извне проекта укажите путь флагом -C:
wash -C ~/projects/hello build
Артефакты и версии инструментов
Отладочная сборка пишется в target/wasm32-wasip2/debug/, релизная — в target/wasm32-wasip2/release/. Какой файл считать артефактом, решает component_path из конфигурации.
wash обновляется одной командой:
wash update
Проверяйте версию после обновления — контракт и инструменты живут в одной экосистеме, и совпадение версий экономит время отладки.
От запроса к ответу
Компонент отвечает на HTTP-запросы, когда контракт экспортирует интерфейс wasi:http/handler. Среда передаёт запрос компоненту. Компонент возвращает ответ — статус, заголовки и тело.
Запрос приносит метод, путь, заголовки и тело. Ответ собирается из статуса, заголовков и тела — тех же частей, что вы знаете по любому HTTP-сервису. Никакого платформенного API между вами и запросом нет: контракт объявляет стандартный интерфейс, среда его исполняет.
Так рождается функция: один артефакт, один контракт, одна ответственность. Дальше артефакт можно публиковать — реестр и среды исполнения описаны в главе «Платформа».
Что дальше
- «Платформа» — реестр компонентов, среды исполнения и GraphQL.
- «WebAssembly и WASI» — модуль, компонент, контракт WIT и разрешения.
- «Kubernetes» — запуск рабочей нагрузки в кластере.
Команды этой главы сверены с официальной документацией wasmCloud: установка, справочник команд wash, руководство разработчика.