Перейти к содержимому
Аутентификация

Аутентификация

Открыть в Markdown

Каждый запрос, который отправляет CLI, несёт API-ключ вашего проекта. Сохраните ключи один раз командой status200 login, по контексту на каждое окружение, или передайте их команде во флагах или переменных окружения, как это делают скрипты. Эта страница показывает каждый способ и то, какой из них команда использует, когда их несколько.

Перед началом

Вам нужен API-ключ вашего проекта. Создайте его в Настройки проекта → Расширенный → Ключи API кнопкой Создать: API-ключ и дайте ему доступ, который нужен вашим командам: см. Создайте API-ключ. Ключ делает то, что разрешают его права: ключ, которому можно только читать записи, может выводить и читать их, но не изменять.

В Status200 Cloud API-ключи работают только пока проект на плане Growth или выше. Ниже него каждая команда отвечает API error (402) с сообщением, которое называет план, пока проект не перейдёт на план выше; тогда тот же ключ снова работает. См. API-ключи и SCIM ниже их плана.

Вход

status200 login сохраняет API-ключ и адрес вашего Status200 как контекст и делает его текущим контекстом:

Bash
status200 login <api-key> <instance-url> [--context-name <name>]
Аргумент или параметрЧто это
<api-key>API-ключ вашего проекта
<instance-url>Адрес вашего Status200: https://status200.ru или адрес вашего собственного сервера, например https://status200.example.com
--context-name <name>Имя, под которым сохраняется контекст. По умолчанию: default

Например, контекст с именем production:

Bash
status200 login <api-key> https://status200.ru --context-name production

Она отвечает Logged in successfully. Context "production" is now active. Косая черта в конце адреса удаляется, а повторный вход под тем же именем заменяет этот контекст.

Примечание
login сохраняет ключ, ничего не спрашивая у Status200. Запустите команду, например status200 incident count, чтобы убедиться, что ключ работает.

Контексты

Контекст — это сохранённый вход: имя, адрес и API-ключ. Сохраните по одному для каждого проекта или окружения, затем выберите один для всех следующих команд или для одной команды.

  1. Сохраните контекст для каждого окружения

    Bash
    status200 login <production-api-key> https://status200.ru --context-name production
    status200 login <staging-api-key> https://status200.example.com --context-name staging

    Каждый вход делает свой контекст текущим, поэтому сейчас текущий — staging.

  2. Выведите их

    Bash
    status200 context list
    ┌───┬────────────┬───────────────────────────────┐
    │   │ Name       │ URL                           │
    ├───┼────────────┼───────────────────────────────┤
    │   │ production │ https://status200.ru          │
    ├───┼────────────┼───────────────────────────────┤
    │ * │ staging    │ https://status200.example.com │
    └───┴────────────┴───────────────────────────────┘

    * отмечает текущий контекст. API-ключи никогда не выводятся.

  3. Переключитесь на другой контекст

    Bash
    status200 context use production

    Она отвечает Switched to context "production"., и следующие команды используют его.

  4. Используйте контекст для одной команды

    Bash
    status200 incident list --context staging

    Текущий контекст остаётся прежним.

КомандаЧто делает
status200 context listВыводит сохранённые контексты; * отмечает текущий. С -o json — name, apiUrl и isCurrent каждого контекста, но никогда не его ключ
status200 context use <name>Делает сохранённый контекст текущим
status200 context currentПоказывает имя, URL и API-ключ текущего контекста, скрывая в ключе всё, кроме первых четырёх и последних четырёх символов
status200 context delete <name>Удаляет сохранённый контекст. Если он был текущим, текущим становится первый оставшийся контекст

Какие учётные данные использует команда

Команде нужны API-ключ и URL. Каждое из двух она берёт из первого из этих мест, где оно есть:

flowchart TB F["1. Флаги команды:<br/>--api-key и --url"] --> E["2. Переменные окружения:<br/>STATUS200_API_KEY<br/>и STATUS200_URL"] E --> N["3. Контекст, названный<br/>через --context"] N --> C["4. Текущий контекст"] C --> X["Нигде не найдено:<br/>команда останавливается"]

Где команда находит свой API-ключ и URL

Поэтому их можно сочетать: например, API-ключ из переменной окружения с URL текущего контекста. Переменные окружения подходят для скриптов и заданий CI, у которых нет сохранённых контекстов:

Linux

Bash
export STATUS200_API_KEY=<api-key>
export STATUS200_URL=https://status200.ru
status200 incident list

macOS

Bash
export STATUS200_API_KEY=<api-key>
export STATUS200_URL=https://status200.ru
status200 incident list

Windows

PowerShell
$env:STATUS200_API_KEY = "<api-key>"
$env:STATUS200_URL = "https://status200.ru"
status200 incident list

Флаги важнее всего остального, для одной команды:

Bash
status200 --api-key <api-key> --url https://status200.ru incident list
Предупреждение

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

Проверьте, что будет использовать CLI

status200 whoami показывает URL и API-ключ, которые использует следующая команда, и контекст, из которого они взяты:

Bash
status200 whoami
URL:     https://status200.ru
API Key: 4f1c****0a13
Context: production

Показываются только первые четыре и последние четыре символа ключа. Строка Context появляется, только когда URL и ключ принадлежат самому контексту, а не заменены флагом или переменной окружения. whoami читает ваши настройки, не обращаясь к Status200: она показывает, что отправит команда, а не примет ли это Status200. Если ничего не сохранено и не задано, она отвечает:

Not authenticated. Run `status200 login` to authenticate.

Файл конфигурации

status200 login сохраняет контексты в ~/.oneuptime/config.json, в вашей домашней папке (%USERPROFILE%\.oneuptime\config.json в Windows). CLI создаёт его так, чтобы читать и записывать его мог только ваш пользователь (режим 0600):

~/.oneuptime/config.jsonJSON
{
  "currentContext": "production",
  "contexts": {
    "production": {
      "name": "production",
      "apiUrl": "https://status200.ru",
      "apiKey": "<api-key>"
    },
    "staging": {
      "name": "staging",
      "apiUrl": "https://status200.example.com",
      "apiKey": "<api-key>"
    }
  }
}

Файл хранит API-ключи как есть: держите его вне общих папок, резервных копий и репозиториев. Чтобы выйти из одного контекста, удалите его командой status200 context delete <name>; чтобы выйти из всех, удалите файл. Ключ, который мог утечь, остаётся действительным, пока вы не удалите его в Status200, в Настройки проекта → Расширенный → Ключи API.

Форматы вывода и размеры списков здесь не сохраняются: передавайте -o и --limit каждой команде.

Устранение неполадок

Сообщение «No credentials found»

Authentication error: No credentials found. означает, что ни флаг, ни переменная окружения, ни сохранённый контекст не дали команде её API-ключ и URL. Запустите status200 login или задайте и STATUS200_API_KEY, и STATUS200_URL. Команда завершается с кодом 2.

Сообщение «API error (400): Invalid API Key»

Ключ не является API-ключом Status200, истёк или был сброшен. Скопируйте его снова со страницы ключа в Настройки проекта → Расширенный → Ключи API, где в поле Истекает указана и его дата, и войдите снова под тем же именем контекста. Команда завершается с кодом 2.

Сообщение «API error (402): API keys need the Growth plan»

В Status200 Cloud проект находится ниже плана Growth, поэтому его API-ключи перестали работать. Переведите проект на план выше, и тот же ключ снова заработает: в CLI ничего менять не нужно.

Сообщение «API error (422): You do not have permissions»

Права ключа не покрывают то, что запрашивает команда. Дайте ключу роль или право на его странице в Настройки проекта → Расширенный → Ключи API: сообщение называет права, которые пропустили бы запрос.

Сообщение «Context "staging" does not exist»

Контекст с таким именем не сохранён. status200 context list показывает имена, которые есть.

whoami показывает не тот URL или ключ, что в контексте

Переменная окружения или флаг заменяет значение контекста. env | grep ONEUPTIME показывает заданные переменные, а unset STATUS200_API_KEY STATUS200_URL возвращает вас к вашим контекстам.

Запрос к адресу не проходит

Error: Request failed to https://... означает, что CLI не смогла достучаться до Status200 по этому адресу. Проверьте URL командой status200 whoami: это адрес, по которому вы открываете Status200, с https://, например https://status200.ru.

Дальнейшие шаги