Orbit
共有環境変数グループ
An environment variable group holds values that several Orbit projects need, such as a shared API key or a database credential, in one place. Link the group to the projects that need it and every…
環境変数グループは、複数の Orbit プロジェクトが必要とする値(共有 API キーやデータベース認証情報など)をまとめて一か所に保持します。グループをそれらのプロジェクトにリンクすると、ビルドごとにそれらの変数が取得されるため、キーのローテーションは 6 つではなく 1 つの編集で済みます。
Env Groups はどこにあるか
Orbit を開き、トップレベルナビゲーションから Env groups を選択してください。このページのタイトルは Shared env var groups で、複数の Orbit プロジェクト全体で共有されるアカウントレベルのグループとして説明されています。
グループはプロジェクトの上にあります。プロジェクト独自の変数は Env vars タブに保存されたままです。Environment Variables in Orbit を参照してください。
グループをいつ使うか
テストは簡単です。同じ値が複数のプロジェクトに貼り付けられていますか?
よい候補は以下の通りです:
- すべてのフロントエンドで使用される共有分析またはエラー追跡キー。
- 複数の内部ツールで使用される読み取りレプリカ接続文字列。
- アカウント全体が使用するサードパーティ API キー。
- 共通の機能フラグクライアントトークン。
悪い候補は以下の通りです:
- 1 つのプロジェクトに固有のもの。これはそのプロジェクトに属します。
- 本番環境とプレビュー間で異なるもの。グループは環境ごとではないため、環境によって変わる値はプロジェクト独自の環境変数に属します。
グループの作成
- New group をクリックしてください。
- Group name を付けます。最大 64 文字です。グループの内容、たとえば認証情報が属するサービスにちなんで名前を付けてください。
- オプションの Description を追加します。
- Create group をクリックしてください。
1 つのアカウントは最大 20 個のグループを保持できます。上限に達するとボタンに (limit reached) が表示され、別のグループの作成は拒否されます。
グループの作成、編集、削除にはアカウントの所有者またはアドミン役が必要です。開発者と閲覧者はグループを見ることができますが、変更することはできません。これは意図的なものです。グループの編集は複数のプロジェクトを一度に変更するためです。
変数の追加
グループを開き、Variables セクションを使用します:
- Add variable をクリックしてください。
- キーと値を入力してください。
- 機密情報については Mark as secret にチェックを入れてください。
- Save group をクリックしてください。
シークレットとしてマークされた変数は暗号化されて保存され、その値はその後パネルに返されません。リストはキーと値の代わりに Marked as secret (hidden) インジケーターを表示します。シークレットでない値は表示されたままなので、一目で確認できます。
変数をシークレットとしてマークすることは、パネルからそれを読み取ることができないことを意味します。それがポイントですが、グループはパスワードマネージャーではないことも意味します。認証情報をチームがすでに保持している場所に信頼できるコピーを保管し、グループを配布メカニズムとして扱ってください。
シークレットの値を変更するには、新しい値を入力して保存してください。変数を削除するには、そのの行の Remove をクリックして保存してください。
プロジェクトのリンク
Linked projects セクションには、アカウント内のすべてのプロジェクトがリストされています。プロジェクトをクリックしてリンクまたはリンク解除してください。リンクされたプロジェクトはハイライトされます。グループを保存して適用してください。
プロジェクトがリンクされていないグループは何もしません。セクションはプロジェクトをリンクするまで No projects yet と表示されます。
グループ変数はビルド時に挿入されるため、プロジェクトをリンクすると、現在ライブのデプロイメントではなく、次のビルドに影響します。今すぐ変更が必要な場合は、再デプロイしてください。Deploying Your Project を参照してください。
優先順位
ルールはページに記載されています。グループ変数はビルド時に挿入され、プロジェクトレベルと環境レベルの変数がグループ変数より優先されます。
言い換えれば、最も具体的なものが勝ちます:
- 環境レベルの変数、最優先。
- プロジェクトレベルの変数。
- グループ変数、最優先度が低い。
この順序付けは単なる形式的なことではなく、実用的です。グループに共有デフォルトを設定し、別のプロジェクト(異なる設定が必要)でそれをオーバーライドします。そのプロジェクトをグループから削除する必要はありません。環境レイヤーについては Environment Variables Per Environment を参照してください。
これはグループの最も一般的な混乱も説明しています。グループを編集して再デプロイしても、プロジェクトの同じキーを持つ変数がひっそり勝っているため、何も変わりません。グループ値が無視されているように見える場合は、まずプロジェクト独自の Env vars タブをチェックしてください。
共有認証情報のローテーション
これはグループが存在する理由のワークフローです:
- プロバイダーで新しい認証情報を作成し、古い認証情報はアクティブなままにしてください。
- グループの値を編集して保存してください。
- リンクされている各プロジェクトを再デプロイするか、次のデプロイを待ってください。
- 各プロジェクトが新しい認証情報で機能していることを確認してください。
- プロバイダーで古い認証情報を取り消してください。
ステップ 5 を最初に実行すると、すべてのリンクされたプロジェクトが一度に壊れるウィンドウが表示されます。これは、共有認証情報が集中するリスクとは正確に異なります。
グループの削除
グループで削除をクリックしてください。確認は結果について具体的です。将来のビルドはこれらの変数を失いますが、既に完了したビルドは影響を受けません。
削除するとすべてのプロジェクトもリンク解除されます。つまり、実行中のデプロイメントはそれがビルドされた値で続行され、リンクされた各プロジェクトの次のビルドはそれらがなくなります。それらの変数が必要な場合、そのビルドは失敗するか、アプリはランタイムで不具合が発生します。
削除する前に、プロジェクトを 1 つずつリンク解除して、それぞれを再デプロイしてください。それにより、すべてのプロジェクトがグループを失う前に、どのプロジェクトが実際にグループに依存しているかを知ることができます。
実践的なアドバイス
グループは小さくて目的を持たせてください。 1 つの巨大な「共有」グループより、外部サービスごとに 1 つのグループの方が優れています。各プロジェクトを必要とするプロジェクトに正確にリンクすることができるためです。
キーの名前を同じにしてください。 1 つのプロジェクトが SENTRY_DSN を読み取り、別のプロジェクトが SENTRY_KEY を読み取る場合、共有グループはあなたを支援することはできません。最初に名前を標準化してください。
公開プレビュー付きプロジェクトにリンクされているグループに本番認証情報を入れないでください。 グループ変数はリンクされたプロジェクトのすべてのビルド(プレビューを含む)に到達します。
トラブルシューティング
ビルドが変数を認識しません。 プロジェクトがリンクされて保存されていること、およびリンク後にビルドが実行されたことを確認してください。グループ変数は次のビルドから適用されます。
値がランタイムで間違っています。 同じキーのプロジェクトレベルまたは環境レベルの変数がそれをオーバーライドしています。プロジェクトの Env vars タブをチェックしてください。
グループの作成が利用不可です。 20 グループの上限に達しているか、アカウント役が所有者またはアドミンではありません。
シークレットの値が空白として表示されます。 これは正常です。シークレット値は保存後にパネルに返されません。
グループ編集後、プロジェクトが壊れました。 グループの値をロールバックして再デプロイしてから、どのプロジェクトが異なるかを確認してください。Rolling Back a Deployment は、その間、実行中のサイトを健康な状態に保ちます。
次に移動する場所
- Environment Variables in Orbit プロジェクトレベルの変数の場合。
- Environment Variables Per Environment オーバーライドレイヤーの場合。
- Orbit Project Settings プロジェクトの設定の残りの部分の場合。