Contents
Azure アカウント作成とサブスクリプション確認
このセクションでは、無料試用アカウントの取得手順と、リソースを作成するために最低限必要なロール(所有者または共同作成者)およびサブスクリプション ID の確認方法を解説します。
目的 は「すぐに Azure Portal にログインできる状態」を作り、以降の手順で権限エラーが発生しないようにすることです。
手順概要
-
Microsoft アカウントでサインイン
https://portal.azure.comにアクセスし、既存の Microsoft アカウントでログインします。 -
無料試用アカウントを作成
- 「Free account」ボタンをクリック。
- 必要情報(電話番号・クレジットカード)を入力して登録完了。
-
無料クレジットは 200 USD、30 日間有効です。
-
サブスクリプション ID の取得
ポータル左メニュー → 「サブスクリプション」 を選択し、作成された Free Trial の名前横に表示される GUID(例:xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx)をコピーします。 -
ロールの確認
- 対象サブスクリプション → 「アクセス制御 (IAM)」 を開く。
- 自分のアカウントに Owner もしくは Contributor が付与されていることを確認します。
ポイント:ロールが不足している場合は、サブスクリプション管理者に「所有者」または「共同作成者」の割り当てを依頼してください。
Azure OpenAI Service のリソース作成とモデルデプロイ
この章では、Azure Portal・CLI・Bicep(ARM)を用いたリソース作成手順と、モデル(例:GPT‑4)のデプロイ方法をまとめます。
重要ポイント は「リージョンとクオータの確認 → デプロイ設定 → インフラコード化」の流れです。
1. サポート対象リージョンとクオータの事前確認
| 項目 | 内容 |
|---|---|
| サポートリージョン | 2026 年時点で公式にサポートされているのは 12 カ国・地域(例:East US、West Europe、Japan East 等)。最新一覧は https://learn.microsoft.com/azure/cognitive-services/openai/regions を参照。 |
| 必要クオータ | 標準 SKU Standard S0(1 インスタンス)をデプロイするには、同リージョンで OpenAI Service のクオータが少なくとも 1 必要です。 |
| クオータ増加手順 | ポータル → 対象リソース グループ → 「サポート + トラブルシューティング」 → 「クォータのリクエスト」 から申請できます。直接リンク: https://learn.microsoft.com/azure/azure-resource-manager/resource-manager-supportability#quota |
2. ポータルでの作成手順
- Azure Portal の検索バーに 「Azure OpenAI」 と入力し、「リソースの作成」 を選択。
- 必要情報を入力(サブスクリプション、リソースグループ、リージョン)。
- 「SKU」欄で
Standard S0を選び、クオータが足りない場合は「クォータのリクエスト」リンクから増加申請。 - 「確認と作成」 → デプロイ完了後に 「モデルデプロイ」 タブで GPT‑4(バージョン
0613例)を選択し、インスタンス数 (capacity) を1に設定。
3. CLI と Bicep での自動化
Azure CLI
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 |
# 必要変数 RG=myResourceGroup NAME=myOpenAI LOCATION=eastus # サポートリージョンを選択 az group create -n $RG -l $LOCATION # OpenAI アカウント作成 + GPT‑4 デプロイ az cognitiveservices account create \ --name $NAME \ --resource-group $RG \ --kind OpenAI \ --sku S0 \ --location $LOCATION \ --yes az cognitiveservices account deployment create \ --name $NAME \ --resource-group $RG \ --deployment-name gpt4-deploy \ --model-format GPT-4 \ --model-version "0613" \ --scale-settings capacity=1 |
Bicep(ARM テンプレート)
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 |
param name string = 'myOpenAI' param location string = 'eastus' resource openaiAccount 'Microsoft.CognitiveServices/accounts@2023-05-01' = { name: name location: location kind: 'OpenAI' sku: { name: 'S0' } properties: {} } resource modelDeploy 'Microsoft.CognitiveServices/accounts/modelDeployments@2023-05-01' = { parent: openaiAccount name: 'gpt4-deploy' properties: { model: { format: 'GPT-4' version: '0613' } scaleSettings: { capacity: 1 } } } |
4. モデル・スケーリング設定のベストプラクティス
| 項目 | 推奨設定 | 補足 |
|---|---|---|
| モデル | GPT‑4(最新バージョン) |
テスト段階は最小インスタンスでコスト抑制。 |
| キャパシティ | capacity: 1(テスト) → 本番では負荷に応じて 2~5 程度へスケールアウト |
スケーリングは手動または Azure Autoscale の対象外です。 |
| レートリミット | デフォルト 60 RPM(リクエスト/分) | 超過時は 429 エラーが返るので、指数的バックオフを実装してください。 |
| トラフィック制御 | 必要に応じて Azure Support にレート上限引き上げ依頼 | 申請リンク: https://learn.microsoft.com/azure/cognitive-services/openai/how-to/request-increase |
認証とネットワーク構成のベストプラクティス
このセクションでは、API キーの安全な保管方法、最小権限での Azure AD ロール付与、そして VNet 連携によるプライベート通信設定を解説します。目的 は「認証情報漏洩リスクの低減」と「ネットワーク境界での防御層追加」です。
API キーの安全な管理
- Azure Portal の 「Azure OpenAI」→「キーとエンドポイント」 からキーを生成。
- 取得したキーは Azure Key Vault にシークレットとして保存します。
|
1 2 3 4 5 |
az keyvault secret set \ --vault-name MyKV \ --name openai-key-prod \ --value <YOUR_API_KEY> |
ポイント:Key Vault のアクセスポリシーで Get 権限だけを付与し、不要なロールは除外します。
Azure AD RBAC 設定例
| ロール | 主な権限 |
|---|---|
| Reader | リソースの閲覧のみ(開発者がステータス確認) |
| Contributor | デプロイ・スケーリング操作(CI/CD パイプライン向け) |
| Owner | サブスクリプション全体管理(管理者) |
|
1 2 3 4 5 |
az role assignment create \ --assignee <userObjectId> \ --role "Azure OpenAI Contributor" \ --scope /subscriptions/<sub-id>/resourceGroups/<rg>/providers/Microsoft.CognitiveServices/accounts/<name> |
VNet 統合とプライベートエンドポイント
- VNet とサブネット作成(例:
vnet-openai、sub-openai)。 - ポータル → 「プライベートエンドポイント」 → + 作成。
- リソース: Azure OpenAI アカウント
- サブネット:
sub-openai - DNS 設定で Private Link の FQDN(例:
<resource>.openai.azure.com)を内部 DNS に登録し、インターネットからの直接アクセスを遮断します。
ポイント:プライベートエンドポイントは同一リージョン内でのみ有効です。別リージョンへデプロイする場合は、再度エンドポイント設定が必要です。
サンプルコードで API 呼び出し実装
ここでは、Python と Node.js の公式 SDK を使った最小構成サンプルを示します。注目点 は「Key Vault からシークレット取得」「SDK が自動的に認証ヘッダー生成」を活用することです。
Python 実装例
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 |
import os, json, openai from azure.identity import DefaultAzureCredential from azure.keyvault.secrets import SecretClient # ---------- Key Vault から API キー取得 ---------- kv_url = "https://mykv.vault.azure.net" credential = DefaultAzureCredential() secret_client = SecretClient(vault_url=kv_url, credential=credential) api_key = secret_client.get_secret("openai-key-prod").value # ---------- OpenAI SDK 設定 ---------- openai.api_type = "azure" openai.api_base = "https://<your-resource>.openai.azure.com/" openai.api_version = "2023-08-01-preview" openai.api_key = api_key # ---------- Chat Completion の呼び出し ---------- try: response = openai.ChatCompletion.create( engine="gpt4-deploy", messages=[{"role": "user", "content": "Azure OpenAI の導入手順を教えて"}], temperature=0.7, ) print(json.dumps(response, indent=2)) except openai.error.OpenAIError as e: print(f"OpenAI API error: {e}") |
主なポイント
DefaultAzureCredentialはローカル開発環境でも Azure 上の実行環境でも同一コードで認証可能。- エラーハンドリングは SDK が提供する
OpenAIError系統で捕捉すると詳細情報が取得できる。
Node.js 実装例(修正版)
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 |
// 必要パッケージのインポート const { DefaultAzureCredential } = require("@azure/identity"); const { SecretClient } = require("@azure/keyvault-secrets"); const { OpenAIClient, AzureKeyCredential } = require("@azure/openai"); // ---------- Key Vault からシークレット取得 ---------- const kvUrl = "https://mykv.vault.azure.net"; const credential = new DefaultAzureCredential(); const secretClient = new SecretClient(kvUrl, credential); async function main() { const apiKeySecret = await secretClient.getSecret("openai-key-prod"); const endpoint = "https://<your-resource>.openai.azure.com/"; // AzureKeyCredential に取得したキーを渡す const client = new OpenAIClient(endpoint, new AzureKeyCredential(apiKeySecret.value)); try { const result = await client.getChatCompletions( "gpt4-deploy", [{ role: "user", content: "Azure OpenAI のベストプラクティスは?" }], { temperature: 0.7 } ); console.log(JSON.stringify(result, null, 2)); } catch (err) { console.error("OpenAI request failed:", err); } } main().catch((e) => console.error("Unexpected error:", e)); |
主なポイント
AzureKeyCredentialのインポート忘れを解消。try / catchによる例外処理でネットワーク障害やレートリミット超過時のリトライ実装がしやすくなる。
コスト管理・モニタリングとセキュリティ対策
この章では、料金シミュレーションの根拠、予算アラート設定、使用量モニタリング手順、およびシークレット・ログ監査のベストプラクティスをまとめます。コストは トークン数 × 単価 で計算されるため、事前に見積もりと警告ルールを作っておくことが重要です。
1. 価格シミュレーションの計算根拠
| 項目 | 計算式 | 例(2026‑04) |
|---|---|---|
| トークン単価 (Standard S0) | $0.0004 / 1,000 tokens | Azure Pricing Calculator に記載 |
| 月間利用想定トークン数 | リクエスト数 × 平均トークン/リクエスト |
10,000 リクエスト × 1,000 トークン = 10 M tokens |
| 月額費用 | (月間トークン数 / 1,000) × 単価 |
(10 M / 1 k) × $0.0004 = $4 |
注意:実際の単価はリージョンや SKU により変動します。必ず最新の Pricing Calculator を参照してください。
Pricing Calculator URL: https://azure.microsoft.com/pricing/calculator/
2. 予算アラートと使用量モニタリング設定
- Cost Management → 「予算」 → + 追加
- 名前:
OpenAI‑Monthly - 金額上限:
$20(例) -
通知閾値:
50%,80%,100%にメールまたは Teams 通知を設定。 -
Azure Monitor でカスタムメトリクスを作成
kusto
AzureDiagnostics
| where ResourceProvider == "MICROSOFT.COGNITIVESERVICES"
| summarize Requests = count(), Tokens = sum(todouble(split(Properties_s, ',')[0]))
by bin(TimeGenerated, 1h), OperationName -
ダッシュボードに 「OpenAIRequests」 と 「TokenCount」 をピン留め。
-
アラートルール
- 条件:
TokenCount > 5,000,000(1時間あたり) - アクション: Slack Webhook または Azure Function で自動スロットリング。
3. シークレットとログ監査の推奨構成
| コンポーネント | 推奨設定 |
|---|---|
| Key Vault | ローテーションポリシー(30 日)+ Soft‑Delete と Purge Protection 有効化 |
| Azure AD Activity Log | すべてのロール割り当て・変更をログに残し、Log Analytics に転送 |
| OpenAI 診断設定 | 「Requests」+「Responses」→Log Analytics ワークスペースへ送信。機密情報は除外(masking オプション) |
| SIEM 連携 | Azure Sentinel または既存の SOC にデータを流し、異常検知ルールを作成 |
ポイント:診断設定はリソース作成時に「Enable diagnostic logs」チェックを入れ忘れないこと。
トラブルシューティングと次のステップ
導入段階で頻出するエラーとその対処法、そして今後の学習ロードマップを示します。目的 は「エラーが起きたらすぐに解決策へ辿り着く」ことです。
1. よくあるエラーと対処法
| エラー種別 | 主なメッセージ | 推奨対処手順 |
|---|---|---|
| クオータ不足 | QuotaExceeded: The requested quota for resource ... is not available. |
1) ポータルの 「サポート + トラブルシューティング」 → 「クォータ増加リクエスト」 から申請 2) 必要に応じて別リージョンへデプロイ変更 |
| 認証失敗 | AuthenticationFailed: Invalid API key or token. |
1) Key Vault のシークレットが最新か確認 2) Azure AD トークンの有効期限をチェック( az account get-access-token --resource https://cognitiveservices.azure.com/)3) 必要ロール Azure OpenAI Contributor が付与されているか検証 |
| レートリミット超過 | 429 Too Many Requests: Rate limit exceeded. |
1) SDK の自動リトライ設定を有効化(Python: openai.retry、Node.js: RetryPolicyOptions)2) 必要に応じて Azure Support にレート上限引き上げ依頼 3) バックオフアルゴリズム(指数的遅延)を実装 |
| ネットワーク接続エラー | Error: getaddrinfo ENOTFOUND |
プライベートエンドポイントの DNS 設定が正しいか、VNet の名前解決が機能しているか確認 |
2. 次のステップ:運用自動化と高度活用
| フェーズ | 推奨アクション |
|---|---|
| CI/CD パイプライン | GitHub Actions / Azure DevOps に Bicep デプロイジョブを追加し、PR ごとに環境構築テストを実施。 |
| スケーリング自動化 | Azure Logic Apps と Azure Monitor アラートで capacity を自動増減させる仕組みを作成。 |
| プロンプト管理 | Prompt Flow(Azure AI Studio)や GitOps でプロンプトバージョン管理し、レビューフローに組み込む。 |
| セキュリティ強化 | Managed Identity + Key Vault のローテーションを Azure Policy で強制、Audit Logs を Sentinel へ送信して異常検知ルールを追加。 |
最終的な目標は「コードベースとインフラが同一リポジトリに収まり、プッシュだけで安全・コスト可視化された Azure OpenAI 環境が構築できる」ことです。
まとめ
- 無料試用アカウント → 所有者ロールの付与 → 準備完了。
- リージョンとクオータを事前確認し、Portal/CLI/Bicep のいずれかで OpenAI アカウント + GPT‑4 デプロイ を実施。
- 認証は Key Vault + Azure AD RBAC、通信は プライベートエンドポイント で保護。
- SDK(Python / Node.js)を用いたサンプルコードでは AzureKeyCredential のインポート忘れ に注意し、例外処理とリトライロジックを実装。
- コストは トークン数 × 単価 で見積もり、予算アラート・モニタリングで超過防止。
- エラーは「クオータ」「認証」「レートリミット」の3点に絞って対処し、必要なサポートリンクを事前にブックマーク。
以上の手順とベストプラクティスに従えば、安全・低コストかつスケーラブルな Azure OpenAI 環境 をすぐに構築できます。次回は「Prompt Flow と評価指標を組み込んだ本番運用パイプライン」の具体例をご紹介します。