Azure API の使い方

Ashley Innocent

Ashley Innocent

24 3月 2026

Azure API の使い方

Apidog エンタープライズ

オンプレミスデプロイ

SSO & RBAC

SOC 2 準拠

Apidog Enterpriseを見る

要約

Azure APIを使用すると、Microsoftのクラウドサービス(ストレージ、コンピューティング、データベース、AIなど)にプログラムでアクセスできます。Azure Active Directory(Entra ID)を使用して認証し、アクセストークンを取得し、RESTエンドポイントを呼び出します。テストとドキュメント作成には、Apidogを使用してAPI呼び出しを保存し、スキーマに対して応答を検証し、チームとコレクションを共有できます。

はじめに

Microsoft Azureには200を超えるサービスがあります。それぞれにAPIが備わっています。ほとんどの開発者は、ファイルのAzure Blob Storage、サーバーレスのAzure Functions、LLMのAzure OpenAIなど、少なくともいくつかのサービスに触れるでしょう。

問題は? Azureのドキュメントは膨大で散在しています。適切なエンドポイントを見つけ、認証を理解し、なぜリクエストが401 Unauthorizedを返すのかをデバッグするのに何時間も費やすことがあります。

このガイドでは、実際に使用するAPIに焦点を当てています。200のサービスではなく、ほとんどのアプリケーションを動かす5〜10のAPIです。認証パターン、よくある落とし穴、デプロイ前にAzure統合をテストする方法を学びます。

💡
Azure APIを構築する場合、Apidogはその統合の設計、テスト、ドキュメント作成をサポートします。Azure API呼び出しをコレクションとして保存し、異なるサブスクリプションの環境変数を追加し、応答が期待されるスキーマと一致することを検証できます。本番環境に到達する前に構成エラーを検出します。
ボタン

ApidogでAzure APIをテスト - 無料

このガイドの最後には、次のことができるようになります。

認証の問題(そしてその解決策)

すべてのAzure API呼び出しには認証が必要です。これを間違えると、他のすべてが失敗します。これはほとんどの開発者が行き詰まるポイントです。

Azure Active Directory / Microsoft Entra ID

AzureはAPI認証にOAuth 2.0を使用します。ユーザー名とパスワードを送信するのではなく、自身が誰であり、何ができるかを証明するアクセストークンを送信します。

フローは次のようになります。

  1. Azure AD(Entra ID)にアプリケーションを登録する
  2. クライアントIDとクライアントシークレットを取得する
  3. Azureのトークンエンドポイントからアクセストークンを要求する
  4. そのトークンをAPI呼び出しに含める

ステップ1:アプリケーションの登録

Azure Portal → Microsoft Entra ID → アプリの登録 → 新規登録に進みます。

名前を付け、内部アプリの場合は「この組織のディレクトリ内のアカウントのみ」を選択し、登録します。次のものが得られます。

ステップ2:クライアントシークレットの作成

アプリの登録で、「証明書とシークレット」→「新しいクライアントシークレット」に進みます。シークレットの値をすぐにコピーしてください。再度表示されることはありません。

ステップ3:アクセス許可の割り当て

APIのアクセス許可 → 許可の追加に進みます。Azure Storageの場合は「Azure Storage」→「user_impersonation」を選択します。Azure管理APIの場合は「Azure Service Management」→「user_impersonation」を選択します。

ステップ4:アクセストークンの取得

curl -X POST "https://login.microsoftonline.com/{tenant-id}/oauth2/v2.0/token" \
  -H "Content-Type: application/x-www-form-urlencoded" \
  -d "client_id={client-id}" \
  -d "client_secret={client-secret}" \
  -d "scope=https://storage.azure.com/.default" \
  -d "grant_type=client_credentials"

応答:

{
  "access_token": "eyJ0eXAiOiJKV1QiLCJhbGciOiJSUzI1NiIs...",
  "expires_in": 3599,
  "token_type": "Bearer"
}

ステップ5:トークンの使用

curl -X GET "https://youraccount.blob.core.windows.net/container?restype=container&comp=list" \
  -H "Authorization: Bearer eyJ0eXAiOiJKV1QiLCJhbGciOiJSUzI1NiIs..." \
  -H "x-ms-version: 2023-01-03"

生のHTTPではなくAzure SDKを使用する

本番コードでは、Azure SDKを使用してください。トークンの更新、再試行、シリアル化を処理します。

import { DefaultAzureCredential } from '@azure/identity'
import { BlobServiceClient } from '@azure/storage-blob'

// Azure CLIログインまたは環境変数を自動的に使用します
const credential = new DefaultAzureCredential()
const blobServiceClient = new BlobServiceClient(
  'https://youraccount.blob.core.windows.net',
  credential
)

// コンテナを一覧表示します
for await (const container of blobServiceClient.listContainers()) {
  console.log(container.name)
}

しかし、テスト、デバッグ、ドキュメント作成のためには、生のHTTP呼び出しを理解する必要があります。そこでApidogの出番です。

Azure Storage API

Azure Storageは最もよく使用されるAzureサービスです。含まれるものは以下のとおりです。

Blob Storage API

コンテナの一覧表示:

GET https://{account}.blob.core.windows.net/?comp=list
Authorization: Bearer {token}
x-ms-version: 2023-01-03

コンテナの作成:

PUT https://{account}.blob.core.windows.net/{container}?restype=container
Authorization: Bearer {token}
x-ms-version: 2023-01-03

BLOBのアップロード:

PUT https://{account}.blob.core.windows.net/{container}/{blob}
Authorization: Bearer {token}
x-ms-version: 2023-01-03
Content-Type: text/plain

Hello, Azure Blob Storage!

BLOBのダウンロード:

GET https://{account}.blob.core.windows.net/{container}/{blob}
Authorization: Bearer {token}
x-ms-version: 2023-01-03

Apidogでのテスト

Azure Storage APIには特定のヘッダー(x-ms-version、正しい認証形式)が必要です。Apidogは次のことをサポートします。

  1. これらを再利用可能なリクエストとして保存する
  2. アカウント名とトークンに環境変数を使用する
  3. 応答が期待されるスキーマと一致することを検証する

ApidogでAzure Storage APIを設計およびテスト

Azure Compute API

Azure Computeを使用すると、仮想マシン、コンテナ、サーバーレス関数を管理できます。

Azure Functions API

Azure Functionsには、管理操作用のREST APIがあります。

関数アプリ内の関数を一覧表示:

GET https://management.azure.com/subscriptions/{subscription-id}/resourceGroups/{rg}/providers/Microsoft.Web/sites/{app-name}/functions?api-version=2023-01-01
Authorization: Bearer {management-token}

関数をトリガーする(HTTPトリガー):

POST https://{app-name}.azurewebsites.net/api/{function-name}
Content-Type: application/json

{
  "name": "Azure",
  "message": "Hello from API"
}

関数キーの取得:

POST https://management.azure.com/subscriptions/{subscription-id}/resourceGroups/{rg}/providers/Microsoft.Web/sites/{app-name}/functions/{function-name}/listKeys?api-version=2023-01-01
Authorization: Bearer {management-token}

Virtual Machines API

VMを一覧表示:

GET https://management.azure.com/subscriptions/{subscription-id}/providers/Microsoft.Compute/virtualMachines?api-version=2023-07-01
Authorization: Bearer {management-token}

VMを開始:

POST https://management.azure.com/subscriptions/{subscription-id}/resourceGroups/{rg}/providers/Microsoft.Compute/virtualMachines/{vm-name}/start?api-version=2023-07-01
Authorization: Bearer {management-token}

VMを停止:

POST https://management.azure.com/subscriptions/{subscription-id}/resourceGroups/{rg}/providers/Microsoft.Compute/virtualMachines/{vm-name}/powerOff?api-version=2023-07-01
Authorization: Bearer {management-token}

Azure AIサービスAPI

AzureはOpenAIモデルをホストし、視覚、音声、言語向けのコグニティブサービスを提供します。

Azure OpenAI API

補完の取得:

POST https://{resource-name}.openai.azure.com/openai/deployments/{deployment-id}/chat/completions?api-version=2024-02-15-preview
api-key: {your-api-key}
Content-Type: application/json

{
  "messages": [
    {"role": "system", "content": "You are a helpful assistant."},
    {"role": "user", "content": "What is Azure?"}
  ],
  "max_tokens": 500
}

デプロイを一覧表示:

GET https://{resource-name}.openai.azure.com/openai/deployments?api-version=2024-02-15-preview
api-key: {your-api-key}

Cognitive Services API

テキスト分析 - 感情分析:

POST https://{resource-name}.cognitiveservices.azure.com/text/analytics/v3.1/sentiment
Ocp-Apim-Subscription-Key: {subscription-key}
Content-Type: application/json

{
  "documents": [
    {
      "id": "1",
      "language": "en",
      "text": "I love Azure APIs. They work great!"
    }
  ]
}

Computer Vision - 画像分析:

POST https://{resource-name}.cognitiveservices.azure.com/vision/v3.2/analyze?visualFeatures=Description,Tags
Ocp-Apim-Subscription-Key: {subscription-key}
Content-Type: application/octet-stream

[binary image data]

ApidogでAzure APIをテストする

Azure APIは複雑な認証と正確なヘッダーを必要とします。手動でcurlを使用してテストすると、すぐにエラーが発生しやすくなります。Apidogは次の方法でこれを解決します。

1. 環境管理

Azure APIは複数のエンドポイントにわたります。

それぞれに対してApidogで環境を作成します。

# 開発
MANAGEMENT_TOKEN: eyJ0eXAiOiJKV1Qi...
STORAGE_ACCOUNT: devstorage
OPENAI_RESOURCE: dev-openai

# 本番
MANAGEMENT_TOKEN: eyJ0eXAiOiJKV1Qi...
STORAGE_ACCOUNT: prodstorage
OPENAI_RESOURCE: prod-openai

2. トークン更新のための事前リクエストスクリプト

Azureトークンは1時間後に期限切れになります。事前リクエストスクリプトを追加します。

// トークンが期限切れかどうかを確認する
const tokenExpiry = pm.environment.get('token_expiry')
const now = Date.now() / 1000

if (!tokenExpiry || now >= tokenExpiry) {
  // 新しいトークンを要求する
  const response = await pm.sendRequest({
    url: 'https://login.microsoftonline.com/' + pm.environment.get('tenant_id') + '/oauth2/v2.0/token',
    method: 'POST',
    header: { 'Content-Type': 'application/x-www-form-urlencoded' },
    body: {
      mode: 'urlencoded',
      urlencoded: [
        { key: 'client_id', value: pm.environment.get('client_id') },
        { key: 'client_secret', value: pm.environment.get('client_secret') },
        { key: 'scope', value: 'https://management.azure.com/.default' },
        { key: 'grant_type', value: 'client_credentials' }
      ]
    }
  })
  
  const data = response.json()
  pm.environment.set('management_token', data.access_token)
  pm.environment.set('token_expiry', now + data.expires_in)
}

3. 応答の検証

Azureの応答が期待されるスキーマと一致することを検証します。

// BLOBリストが期待される構造を返すことをテストする
pm.test('Response has containers', () => {
  const xml = pm.response.text()
  pm.expect(xml).to.include('<Containers>')
  pm.expect(xml).to.include('<Container>')
})

pm.test('Response is valid XML', () => {
  pm.response.to.be.ok
  pm.response.to.have.header('Content-Type', 'application/xml')
})

ApidogでAzure APIのテストを開始 - 無料

よくあるエラーとその修正方法

401 Unauthorized

原因: 無効なトークンまたは期限切れのトークン。

修正方法:

  1. トークンが期限切れになっていないか確認する(expires_inは通常3600秒)
  2. スコープが呼び出しているAPIと一致することを確認する
  3. アプリの登録に正しいアクセス許可があることを確認する

403 Forbidden

原因: トークンは有効だが、アクセス許可が不足している。

修正方法:

  1. Azure Portalでリソースに移動する
  2. アクセス制御(IAM)を確認する
  3. アプリのサービスプリンシパルにロールの割り当てを追加する

404 Not Found

原因: エンドポイントが間違っているか、リソースが存在しない。

修正方法:

  1. URL内のリソース名を確認する
  2. クエリ文字列内のAPIバージョンを確認する
  3. リソースが正しいリソースグループに存在することを確認する

429 Too Many Requests

原因: Azureのレート制限に達した。

修正方法:

  1. 指数バックオフを実装する
  2. x-ms-ratelimit-remainingヘッダーを確認する
  3. リクエストのバッチ処理を検討する
async function callWithRetry(fn, maxRetries = 3) {
  for (let i = 0; i < maxRetries; i++) {
    try {
      return await fn()
    } catch (error) {
      if (error.statusCode === 429) {
        const delay = Math.pow(2, i) * 1000
        await new Promise(resolve => setTimeout(resolve, delay))
      } else {
        throw error
      }
    }
  }
}

代替案と比較

機能 Azure API AWS API GCP API
認証 Azure AD (OAuth 2.0) IAM (Sig v4) OAuth 2.0
SDKの品質 優れている 優れている 優れている
ドキュメント 包括的だが散在している サービス固有 サービス固有
レート制限 サブスクリプションごと サービスごと プロジェクトごと
無料枠 12ヶ月 + 常に無料 12ヶ月 常に無料 + クレジット

Azureの認証は、AWSの署名ベースのアプローチよりも複雑ですが、エンタープライズのIDシステムとの統合性に優れています。

実世界のユースケース

Eコマースプラットフォーム。 Shopifyの代替サービスは、商品画像にAzure Blob Storageを、注文処理ウェブフックにAzure Functionsを、商品説明にAzure OpenAIを使用しています。変更をデプロイする前に、すべてのAPI呼び出しをApidogでテストします。

ヘルスケアSaaS。 医療記録システムは、患者データにAzure Cosmos DBを、HL7メッセージ処理にAzure Functionsを、シークレットにAzure Key Vaultを使用しています。APIテストは、すべての応答スキーマを検証することでHIPAAコンプライアンスを保証します。

AIスタートアップ。 AIエージェントを構築する企業は、LLM呼び出しにAzure OpenAIを、トレーニングデータにAzure Storageを、デプロイにAzure Container Appsを使用しています。ローカル開発中にApidogを使用してAzure APIをモックしています。

まとめ

以下に、あなたが学んだことをまとめます。

次のステップ:

  1. Azure ADにアプリを登録し、資格情報を取得する
  2. クライアント資格情報フローを使用してアクセストークンを要求する
  3. 最初のAzure Storage API呼び出しを行う
  4. その呼び出しを再利用可能なリクエストとしてApidogに保存する
  5. プロジェクトのAzure APIのコレクションを構築する

ApidogでAzure APIをテスト - 無料

FAQ

Azure ADとMicrosoft Entra IDの違いは何ですか?両者は同じものです。Microsoftは2023年にAzure Active DirectoryをMicrosoft Entra IDにブランド変更しました。ドキュメントには両方の名前が表示されます。新しいドキュメントを作成する際はEntra IDを使用しますが、古い記事やコードではAzure ADが依然として一般的であることを知っておいてください。

Azure OpenAIのAPIキーはどうすれば取得できますか?Azure Portal → Azure OpenAI → ご利用のリソース → キーとエンドポイントに移動します。2つのキーが表示されますが、どちらでも機能します。セキュリティのために定期的に再生成してください。OpenAIのパブリックAPIとは異なり、Azure OpenAIを使用するにはまずAzureサブスクリプションとリソースのデプロイが必要です。

management.azure.comとサービス固有のエンドポイントの違いは何ですか?management.azure.comはAzure Resource Managerのエンドポイントです。これはAzureリソース自体のCRUD操作(VMの作成、ストレージアカウントの削除など)に使用されます。サービス固有のエンドポイント({account}.blob.core.windows.net{resource}.openai.azure.com)は、それらのリソースを使用する(ファイルのアップロード、テキストの生成など)ためのものです。それぞれに異なるトークンが必要です。

Azureアクセストークンの有効期間はどのくらいですか?通常1時間(3600秒)です。古いトークンが期限切れになる前に新しいトークンを要求できます。トークン応答のexpires_inフィールドを使用して、いつ更新する必要があるかを知ることができます。API呼び出しごとに新しいトークンを要求しないでください。それは非効率的です。

クライアントシークレットの代わりにマネージドIDを使用できますか?はい、可能です。Azureで実行される本番ワークロードでは使用すべきです。マネージドIDはクライアントシークレットを保存する必要がなくなります。Azure VM、Functions、Container Apps、AKSで機能します。ローカル開発では、Azure CLI(az login)またはクライアントシークレットを含む環境変数を使用してください。

PostmanではAPI呼び出しが機能するのに、コードでは失敗するのはなぜですか?ヘッダーを確認してください。Azure APIはヘッダー名で大文字と小文字を区別します。Postmanが気づかないうちにヘッダーを追加している可能性があります。FiddlerやApidogのリクエスト検査ツールを使用して、Postmanからの生のリクエストとコードを比較してください。

AzureサブスクリプションなしでAzure APIをローカルでテストするにはどうすればよいですか?サブスクリプションなしで完全にテストすることはできませんが、Azureのローカルエミュレーターを使用できます。

Azure APIエラーを処理する最善の方法は何ですか?Azureは詳細なエラーJSONを返します。error.codeerror.messageフィールドを解析してください。一般的なコードは次のとおりです。

ApidogでAPIデザイン中心のアプローチを取る

APIの開発と利用をよりシンプルなことにする方法を発見できる