Skip to content

hihigash/azure-relay-demo

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

2 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Azure Relay デモアプリケーション

概要

このリポジトリは、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)      │  ・ローカルマシンのプロセス一覧を取得
└─────────────────────┘

構成要素

  1. onprem-api (オンプレミス側 Web API)

    • ローカルマシンで動作する ASP.NET Core Web API
    • ローカルマシンのプロセス一覧を取得する API を提供
    • Azure Relay 経由で呼び出される
  2. azure-web (Azure 側 Web アプリ) ※次フェーズで実装予定

    • Azure App Service で動作する Web アプリケーション
    • Azure Relay 経由で onprem-api を呼び出す
    • 取得したプロセス一覧を画面に表示
  3. 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

セットアップ

  1. リポジトリをクローン

    git clone https://github.com/YOUR-USERNAME/azure-relay-demo.git
    cd azure-relay-demo
  2. 設定ファイルを作成

    # ローカル開発用の設定ファイルを作成
    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
  3. Azure Relay をセットアップ(詳細は docs/setup-guide.md 参照)

    • Azure Portal または Azure CLI で Relay Namespace と Hybrid Connection を作成
    • 接続文字列とキーを取得して設定ファイルに追加
  4. アプリケーションを起動

    # 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 を参照してください。

現在の進捗

✅ フェーズ1: onprem-api の実装(完了)

  • .NET 10 Web API プロジェクトの作成
  • プロセス一覧取得 API の実装(GET /api/processes
  • 簡易 API キー認証の実装
  • ロジックの分離(Controller / Service / Model)

詳細は src/onprem-api/README.md を参照してください。

✅ フェーズ2: azure-web の実装(完了)

  • .NET 10 Razor Pages Web App の作成
  • オンプレミス API クライアントの実装
  • プロセス一覧表示ページの実装
  • HttpClient による API 呼び出し

詳細は src/azure-web/README.md を参照してください。

✅ フェーズ3: ドキュメント整備(完了)

  • アーキテクチャ設計ドキュメントの作成
  • Azure Relay の仕組み解説の作成
  • セットアップガイドの作成
  • デモシナリオの作成
  • .gitignore の作成

詳細は docs フォルダを参照してください。

✅ フェーズ4: Azure Developer CLI 対応(完了)

  • azure.yaml の作成
  • Bicep テンプレートの実装
    • main.bicep (メインテンプレート)
    • app-service.bicep (App Service)
    • relay.bicep (Azure Relay)
  • azd デプロイガイドの作成

詳細は azd デプロイガイド を参照してください。

✅ フェーズ5: Relay Listener の実装(完了)

  • onprem-relay-listener プロジェクトの作成
  • HybridConnectionListener の実装
  • ローカル API への転送ロジック
  • エラーハンドリングと再接続
  • 詳細なログ出力

詳細は src/onprem-relay-listener/README.md を参照してください。

ドキュメント

ライセンス

MIT License

貢献

このプロジェクトはデモ教材として公開されています。改善提案やバグ報告は Issue または Pull Request でお願いします。

参考資料

設計方針

  • デモ教材として: 初学者が理解しやすい構成
  • 可読性最優先: 説明できない実装は入れない
  • 最新技術: .NET 10 を使用(WCF は使わない)
  • セキュリティ意識: Relay があっても API 認証は必要

ライセンス

このプロジェクトはデモ・教育用途のサンプルコードです。 商用利用する場合は、適切なセキュリティ対策とライセンス確認を行ってください。

参考資料

ドキュメント

詳細なドキュメントは docs フォルダにあります:

Azure へのデプロイ

このプロジェクトは Azure Developer CLI (azd) に対応しています。

クイックデプロイ

# Azure にログイン
azd auth login

# デプロイ実行
azd up

詳細は azd デプロイガイド を参照してください。

About

No description, website, or topics provided.

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors