アドレスとアクセス
各アプリには公開アドレス、バージョンごとのプレビューアドレス、内部アドレスがあります。公開のままにするか、パスワードで保護できます。
3 種類のアドレス#
アドレスはアドレスラベルと組織名で構成され、すべて HTTPS です。
| アドレス | 開ける人 | 例 |
|---|---|---|
| 公開アドレス | 誰でも。非公開アプリはパスワードが必要 | https://order-api--acme.hosting.agentlab.run |
| バージョンのプレビューアドレス | アドレスを知っている人。非公開アプリはパスワードが必要 | バージョンごとに 1 つ。バージョンの横に表示 |
| 内部アドレス | 同じ組織のアプリだけ。ブラウザでは開けません | https://order-api--acme.internal-hosting.agentlab.run |
アドレスラベル#
アドレスラベルはアプリの作成時に決めます。小文字の英字、数字、ハイフンが使えます。一度使ったラベルは組織に保持され、アプリを完全に削除しても他の誰かに割り当てられることはありません。
公開か非公開か#
アプリの「設定」でアクセスを選びます。
| 選択肢 | 動作 |
|---|---|
| 公開 | アドレスを知っている人なら誰でも閲覧できます。 |
| 非公開 | アプリのすべてのアドレス(公開アドレスと各バージョンのプレビューアドレス)で、まずパスワードページが表示されます。 |
パスワードはコンソールで生成され、一度だけ表示されます。紛失した場合は再生成してください。
非公開アプリは CDN を経由しません
少人数のレビューには十分ですが、大量のトラフィックには向きません。
別のアプリから呼び出す#
同じ組織のアプリどうしは、内部アドレスで呼び出します。
- 呼び出せるのは、プラットフォーム内にある自組織のアプリだけです。他の組織、ビルド、インターネットからは呼び出せません。
- 証明書は公的に信頼されたものなので、標準の HTTP クライアントで追加設定なしに使えます。
- 呼び出しは公開中のバージョンに届きます。
- 内部アドレスにはパスワードページがありません。保護が必要なエンドポイントはコード側で確認してください。
内部アドレスに届いたリクエストには、送信元アプリのアドレスラベルを示す X-Franky-Caller-App ヘッダーが付きます。Host が内部ドメインのときだけ信頼してください。
const internal = req.headers.host?.endsWith(".internal-hosting.agentlab.run");
const caller = internal ? req.headers["x-franky-caller-app"] : undefined;
if (req.url.startsWith("/admin") && caller !== "billing-worker") {
res.writeHead(403).end();
return;
}