このリポジトリは、Azure Relay (Hybrid Connections) を使用して、Azure 上の Web アプリケーションとオンプレミス環境の Web API を安全に接続するデモ教材です。
このリポジトリは教育・デモ目的のサンプルです。本番環境で使用する場合は、以下の点を必ず考慮してください:
- API キーは環境変数または Azure Key Vault で管理する
- Azure Relay の接続文字列をコードにハードコードしない
- 適切な認証・認可を実装する
- HTTPS を使用する
- ログに機密情報を出力しない
詳細は docs/setup-guide.md の「セキュリティのベストプラクティス」セクションを参照してください。
- Azure Relay の仕組みと使い方を理解する
- オンプレミスの API を Azure から呼び出すパターンを学ぶ
- セキュリティを意識した API 設計の重要性を理解する
┌─────────────────────┐
│ Azure Web App │ Web アプリケーション(Azure 上)
│ (azure-web) │ ・プロセス一覧を表示
└──────────┬──────────┘
│ HTTP Request
│ (via Azure Relay)
↓
┌─────────────────────┐
│ Azure Relay │ 中継サービス
│ (Hybrid Connection) │ ・VPN 不要で安全に接続
└──────────┬──────────┘
│ Relay Connection
↓
┌─────────────────────┐
│ On-Premises API │ Web API(オンプレミス環境)
│ (onprem-api) │ ・ローカルマシンのプロセス一覧を取得
└─────────────────────┘
-
onprem-api (オンプレミス側 Web API)
- ローカルマシンで動作する ASP.NET Core Web API
- ローカルマシンのプロセス一覧を取得する API を提供
- Azure Relay 経由で呼び出される
-
azure-web (Azure 側 Web アプリ) ※次フェーズで実装予定
- Azure App Service で動作する Web アプリケーション
- Azure Relay 経由で onprem-api を呼び出す
- 取得したプロセス一覧を画面に表示
-
Azure Relay (Hybrid Connections)
- Azure 上のマネージドサービス
- VPN やファイアウォール設定なしで、オンプレミスと Azure を接続
- HTTP/HTTPS 通信をリレー(中継)
- 言語: C#
- フレームワーク: .NET 10 / ASP.NET Core
- API 方式: HTTP / REST(WCF は使用しない)
- クラウド: Microsoft Azure
- 中継: Azure Relay (Hybrid Connections)
azure-relay-demo/
├── README.md # このファイル
├── AGENTS.md # Copilot/Agent 向け設計指針
├── azure.yaml # azd 設定
├── .gitignore # Git 除外設定
├── src/
│ ├── onprem-api/ # オンプレミス側 Web API
│ ├── azure-web/ # Azure 側 Web アプリ
│ └── onprem-relay-listener/ # Relay Listener
├── docs/ # ドキュメント
│ ├── architecture.md
│ ├── azure-relay.md
│ ├── setup-guide.md
│ ├── demo-scenario.md
│ └── azd-deployment.md
├── infra/ # Infrastructure as Code (Bicep)
│ ├── main.bicep
│ ├── app-service.bicep
│ ├── relay.bicep
│ └── main.parameters.json
└── scripts/ # スクリプト(将来用)
- .NET 10 SDK
- Azure サブスクリプション(Azure Relay を使用する場合)
- Git
-
リポジトリをクローン
git clone https://github.com/YOUR-USERNAME/azure-relay-demo.git cd azure-relay-demo -
設定ファイルを作成
# ローカル開発用の設定ファイルを作成 cp src/azure-web/appsettings.Development.json.example src/azure-web/appsettings.Development.json cp src/onprem-relay-listener/appsettings.Development.json.example src/onprem-relay-listener/appsettings.Development.json -
Azure Relay をセットアップ(詳細は docs/setup-guide.md 参照)
- Azure Portal または Azure CLI で Relay Namespace と Hybrid Connection を作成
- 接続文字列とキーを取得して設定ファイルに追加
-
アプリケーションを起動
# 1. オンプレミス API の起動 cd src/onprem-api dotnet run # 2. Relay Listener の起動(別ターミナル) cd src/onprem-relay-listener dotnet run # 3. Web アプリの起動(別ターミナル) cd src/azure-web dotnet run
詳細なセットアップ手順は docs/setup-guide.md を参照してください。
- .NET 10 Web API プロジェクトの作成
- プロセス一覧取得 API の実装(
GET /api/processes) - 簡易 API キー認証の実装
- ロジックの分離(Controller / Service / Model)
詳細は src/onprem-api/README.md を参照してください。
- .NET 10 Razor Pages Web App の作成
- オンプレミス API クライアントの実装
- プロセス一覧表示ページの実装
- HttpClient による API 呼び出し
詳細は src/azure-web/README.md を参照してください。
- アーキテクチャ設計ドキュメントの作成
- Azure Relay の仕組み解説の作成
- セットアップガイドの作成
- デモシナリオの作成
- .gitignore の作成
詳細は docs フォルダを参照してください。
- azure.yaml の作成
- Bicep テンプレートの実装
- main.bicep (メインテンプレート)
- app-service.bicep (App Service)
- relay.bicep (Azure Relay)
- azd デプロイガイドの作成
詳細は azd デプロイガイド を参照してください。
- onprem-relay-listener プロジェクトの作成
- HybridConnectionListener の実装
- ローカル API への転送ロジック
- エラーハンドリングと再接続
- 詳細なログ出力
詳細は src/onprem-relay-listener/README.md を参照してください。
- アーキテクチャ設計 - システム全体の設計と構成
- Azure Relay の仕組み - Hybrid Connections の詳細
- セットアップガイド - 詳細なセットアップ手順
- デモシナリオ - デモの実行手順
- Azure Developer CLI デプロイ - azd を使ったデプロイ
MIT License
このプロジェクトはデモ教材として公開されています。改善提案やバグ報告は Issue または Pull Request でお願いします。
- デモ教材として: 初学者が理解しやすい構成
- 可読性最優先: 説明できない実装は入れない
- 最新技術: .NET 10 を使用(WCF は使わない)
- セキュリティ意識: Relay があっても API 認証は必要
このプロジェクトはデモ・教育用途のサンプルコードです。 商用利用する場合は、適切なセキュリティ対策とライセンス確認を行ってください。
詳細なドキュメントは docs フォルダにあります:
- アーキテクチャ設計 - システム全体の設計と構成
- Azure Relay の仕組み - Relay の詳細な動作原理
- セットアップガイド - 環境構築の手順
- デモシナリオ - プレゼンテーション用シナリオ
- azd デプロイガイド - Azure Developer CLI を使ったデプロイ手順
このプロジェクトは Azure Developer CLI (azd) に対応しています。
# Azure にログイン
azd auth login
# デプロイ実行
azd up詳細は azd デプロイガイド を参照してください。