Modal
Подключить
Подключите Modal из терминала. Передайте --help, чтобы увидеть флаги, которые принимает Modal, а также --no-browser для окружений без браузера.
polylane cloud connect --provider modalID токена и секрет токена из настроек Modal.
Modal подключается с помощью токена, созданного в настройках Modal. Токен Modal соответствует ровно одному рабочему пространству, поэтому один токен подключает одно рабочее пространство. Токены шифруются перед сохранением, и агент никогда их не видит.
- Откройте Modal, перейдите в Settings → Tokens.
- Нажмите New token и скопируйте как token ID (начинается с
ak-), так и token secret (начинается сas-). - Вставьте оба значения в Polylane.
- Polylane проверяет пару и начинает синхронизацию.
Polylane обнаруживает ваши окружения и внутри каждого из них приложения, функции, включая веб-эндпоинты, запущенные песочницы, тома, секреты, очереди и словари. Секреты сопоставляются только по имени: Modal никогда не раскрывает значения секретов.
В Modal нет варианта токена только для чтения, поэтому токен несёт разрешения создавшего его аккаунта. Polylane только читает из Modal во время синхронизации.
Устранение неполадок
Ошибка «Invalid token»
- Нужны и ID токена, и секрет токена; по отдельности они не проходят аутентификацию.
- Проверьте, что токен не был отозван в настройках Modal.
- Убедитесь, что скопировали значение целиком, включая префиксы
ak-иas-.
Отсутствуют ресурсы
- Функции обнаруживаются через их приложение, поэтому у приложения, которое ни разу не деплоилось, нет функций для отображения.
- Завершённые песочницы пропускаются: отображаются только запущенные.
- Запустите ручную синхронизацию, чтобы обновить данные раньше следующего планового прохода.
Метрики и стоимость
- У приложений есть два графика: строки stderr-логов на интервал и учтённые расходы в час. Для всего остального Modal отдаёт только мгновенные показатели, поэтому у функций, песочниц и томов собственных графиков нет.
- Счётчики stderr считают строки логов, а не сбои: один traceback Python занимает несколько строк.
- Modal хранит логи 24 часа, поэтому график никогда не уходит дальше в прошлое.
- Расходы относятся к приложению, а Modal фиксирует час только после его окончания, поэтому самый свежий час показывает заниженное значение, пока не устоится.
Подключите Modal из CI-задания или любого другого окружения без браузера.
Для подключения Modal браузер не нужен: тот же эндпоинт, который вызывает консоль, помещается в CI-задание. Один аутентифицированный POST создаёт подключение и запускает первую синхронизацию.
Требования
- API-ключ Polylane с областями
cloud_accounts:writeиcloud_accounts:read. См. API-ключи и OAuth. - ID вашего рабочего пространства, который начинается с
ws_. Прочитайте его изGET /v1/workspacesтем же ключом. - Пара токенов Modal из Settings → Tokens: ID токена (начинается с
ak-) и секрет токена (начинается сas-).
Создайте подключение
curl -X POST https://api.polylane.com/v1/cloud_accounts \
-H "x-api-key: $POLYLANE_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"provider": "modal",
"workspaceId": "ws_0abc123",
"tokenId": "ak-...",
"tokenSecret": "as-..."
}'
Токен соответствует ровно одному рабочему пространству Modal, поэтому один вызов подключает одно рабочее пространство.
Ответ перечисляет, что было подключено, с уже запущенной первой синхронизацией. Сокращён до двух полей, которые читает остальная часть процесса:
{
"success": true,
"result": {
"provider": "modal",
"accounts": [{ "id": "acc_34gky74ibc92h8t2efn8csrh", "status": "syncing" }],
"failures": []
}
}
Уже подключённый аккаунт попадает в failures, а не в accounts, поэтому повторный вызов никогда не дублирует подключение.
Дождитесь первой синхронизации
Опрашивайте каждый возвращённый аккаунт по его id, пока status не достигнет ready (new при регистрации, syncing пока ресурсы поступают):
until [ "$(curl -s "https://api.polylane.com/v1/cloud_accounts/$WORKSPACE_ID/$ACCOUNT_ID" \
-H "x-api-key: $POLYLANE_API_KEY" | jq -r '.result.status')" = "ready" ]; do
sleep 15
done
Задайте циклу предельное время, чтобы неудачное подключение проваливало задание, а не подвешивало его. Как только аккаунт в состоянии ready, его ресурсы находятся в топологии, и Polylane начал свою первую проверку.
Отключение через API
Удаление подключения останавливает все синхронизации и проверки и удаляет учётные данные, которые хранил Polylane. Вызову нужна область cloud_accounts:delete:
curl -X DELETE "https://api.polylane.com/v1/cloud_accounts/$WORKSPACE_ID/$ACCOUNT_ID" \
-H "x-api-key: $POLYLANE_API_KEY"
Затем отозовите учётные данные Modal на стороне провайдера, как описано ниже в разделе Отключение.
Отключить
Отключение останавливает все синхронизации и проверки и удаляет учётные данные, которые хранил Polylane. Всё, что Polylane настроил в Modal, также удаляется; ничего не остаётся.
polylane cloud disconnect <id>Инструменты
5Операции, которые агенты могут выполнять в тредах.
Поддерживаемые ресурсы
10Типы ресурсов, которые появляются в графе вашей инфраструктуры.