認証
CLI が送るすべてのリクエストには、プロジェクトの API キーが付きます。status200 login でキーを一度保存する(環境ごとに 1 つのコンテキスト)か、スクリプトのようにフラグや環境変数でコマンドに渡します。このページでは、それぞれの方法と、複数ある場合にコマンドがどれを使うかを説明します。
はじめる前に
プロジェクトの API キーが必要です。プロジェクト設定 → 詳細 → API キー で API キーを作成 から作成し、コマンドに必要なアクセスを与えてください。API キーを作成するを参照してください。キーは権限で許されたことを行います。レコードの読み取りだけが許されたキーは、一覧表示と読み取りはできますが、変更はできません。
Status200 Cloud では、API キーはプロジェクトが Growth プラン以上の間だけ動作します。それ未満では、プロジェクトがアップグレードされるまで、すべてのコマンドがプランを示すメッセージとともに API error (402) を返します。アップグレードすれば同じキーが再び動作します。プラン未満の API キーと SCIMを参照してください。
ログインする
status200 login は API キーと Status200 のアドレスをコンテキストとして保存し、現在のコンテキストにします。
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 という名前のコンテキストの場合:
status200 login <api-key> https://status200.ru --context-name productionLogged in successfully. Context "production" is now active. と応答します。アドレス末尾のスラッシュは取り除かれ、同じ名前でもう一度ログインするとそのコンテキストが置き換わります。
login はキーについて Status200 に問い合わせずに保存します。キーが動作することを確かめるには、status200 incident count などのコマンドを実行してください。コンテキスト
コンテキストとは保存したログインのことで、名前、アドレス、API キーからなります。プロジェクトや環境ごとに 1 つ保存し、その後のすべてのコマンド、または 1 つのコマンドのために 1 つを選びます。
環境ごとにコンテキストを保存する
status200 login <production-api-key> https://status200.ru --context-name production status200 login <staging-api-key> https://status200.example.com --context-name stagingログインするたびにそのコンテキストが現在のコンテキストになるため、今は
stagingが現在のコンテキストです。一覧表示する
status200 context list┌───┬────────────┬───────────────────────────────┐ │ │ Name │ URL │ ├───┼────────────┼───────────────────────────────┤ │ │ production │ https://status200.ru │ ├───┼────────────┼───────────────────────────────┤ │ * │ staging │ https://status200.example.com │ └───┴────────────┴───────────────────────────────┘*は現在のコンテキストを示します。API キーが一覧に表示されることはありません。別のコンテキストに切り替える
status200 context use productionSwitched to context "production".と応答し、その後のコマンドはこのコンテキストを使います。1 つのコマンドだけでコンテキストを使う
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 が必要です。それぞれを、次の場所のうち値を持つ最初の場所から取得します。
コマンドが API キーと URL を見つける場所
つまり組み合わせることができます。たとえば、API キーを環境変数から、URL を現在のコンテキストから取ることができます。環境変数は、保存したコンテキストを持たないスクリプトや CI ジョブに向いています。
Linux
export STATUS200_API_KEY=<api-key>
export STATUS200_URL=https://status200.ru
status200 incident listmacOS
export STATUS200_API_KEY=<api-key>
export STATUS200_URL=https://status200.ru
status200 incident listWindows
$env:STATUS200_API_KEY = "<api-key>"
$env:STATUS200_URL = "https://status200.ru"
status200 incident list1 つのコマンドについては、フラグがほかのすべてより優先されます。
status200 --api-key <api-key> --url https://status200.ru incident listフラグで渡したキーはシェルの履歴に残り、マシンのほかのユーザーはプロセス一覧でそれを見ることができます。共有マシンでは、代わりにコンテキストか環境変数を使ってください。
CLI が使う値を確認する
status200 whoami は、次のコマンドが使う URL と API キー、およびそれらの取得元のコンテキストを表示します。
status200 whoamiURL: https://status200.ru
API Key: 4f1c****0a13
Context: productionキーは先頭の 4 文字と末尾の 4 文字だけが表示されます。Context の行は、URL とキーがそのコンテキスト自身の値であり、フラグや環境変数で置き換えられていない場合にだけ表示されます。whoami は Status200 を呼び出さずに設定を読み取ります。表示するのはコマンドが送る内容であり、Status200 がそれを受け入れるかどうかではありません。何も保存も設定もされていない場合は、次のように応答します。
Not authenticated. Run `status200 login` to authenticate.設定ファイル
status200 login はコンテキストをホームフォルダーの ~/.oneuptime/config.json (Windows では %USERPROFILE%\.oneuptime\config.json)に保存します。CLI は、自分のユーザーだけが読み書きできるようにこのファイルを作成します(モード 0600)。
{
"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 キーがそのまま保存されます。共有フォルダー、バックアップ、リポジトリには入れないでください。1 つのコンテキストからログアウトするには 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」というメッセージ
キーが Status200 の API キーではないか、期限切れか、リセットされています。プロジェクト設定 → 詳細 → 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 に到達できなかったことを意味します。status200 whoami で URL を確認してください。Status200 を開くときのアドレスに https:// を付けたもの(https://status200.ru など)です。