Azure の全サービスを Python から操作!公式 SDK 大全——ストレージ・AI・インフラ管理まで一元化
Azure の全サービスを Python から操作!公式 SDK 大全——ストレージ・AI・インフラ管理まで一元化
ひとことでいうと
Azure SDK for Python は、Microsoft Azure のさまざまなクラウドサービスを Python のコードで操作するための公式ライブラリ(道具箱)です。ストレージ・AI・データベース・ネットワークなど数百ものサービスをカバーしており、Azure のリソース(サーバーやストレージなどクラウド上の資産)を作る作業から日常的なデータ操作まで、Python コードで一貫して扱えます。全体を一括で入れるのではなく、使いたいサービスのパッケージだけを選んでインストールする「必要なものだけ使う」設計になっています。
こんな人におすすめ
1. クラウドのインフラを Python で自動化したいエンジニア
Azure の仮想マシンやストレージを Python スクリプトで作ったり削除したりしたい場合に便利です。azure-mgmt-* という名前のパッケージ群(管理用ライブラリ)を使えば、Terraform や ARM テンプレート(インフラ定義ファイル)を書かなくても、Python だけでサーバー構成の自動化が実現できます。バージョン管理できるコードとして残るため、チームでの作業でも手順を再現しやすくなります。
2. Azure の AI・機械学習サービスを使う開発者・データサイエンティスト
Azure OpenAI・Azure Cognitive Services・Azure Machine Learning など、AI に関連するサービスへのアクセスが、統一された書き方でできます。azure-ai-* 系のパッケージを選ぶと、認証(本人確認)・再試行・利用状況の自動計測といった共通の処理を意識せずに済み、モデルへの問い合わせやデータ処理のロジックだけに集中して書けます。
3. オンプレミスと Azure が混在する環境の運用担当者
azure-identity ライブラリが提供する DefaultAzureCredential(デフォルト Azure 認証)は、複数の認証方式を自動で試してくれる便利な仕組みです。ローカルのパソコンでも、クラウド上のサーバーでも、コードを変えずに実行環境に合わせた認証が自動的に選ばれます。オンプレミス(自社サーバー)と Azure が混在していても、認証のコードを書き替える必要がありません。
インストール・使い方
このリポジトリ(ソースコードの置き場)はモノレポ(複数のライブラリをひとつの Git リポジトリで管理する構成)になっているため、全体をまとめてインストールする使い方は想定されていません。使いたいサービスのパッケージだけを PyPI(パイパイ:Python の公式パッケージ配布サービス)から個別に選んでインストールします。
Step 1: 使いたいサービスのパッケージを選ぶ
よく使われるパッケージの例を以下にまとめます。
| 用途 | パッケージ名 |
|---|---|
| 認証(全サービス共通) | azure-identity |
| Blob ストレージ(ファイル保存) | azure-storage-blob |
| Azure OpenAI | azure-ai-openai |
| Key Vault シークレット管理 | azure-keyvault-secrets |
| VM など管理操作 | azure-mgmt-compute |
まずは azure-identity(認証)と使いたいサービスのパッケージの 2 つを選んでください。
Step 2: pip でインストールする
ターミナル(文字で命令を送る画面)を開いて、次のコマンドを入力します。コピー&ペーストで構いません。
pip install azure-identity azure-storage-blob
pip は Python の「パッケージ管理ツール」で、必要なライブラリをインターネットから自動で取得してくれます。
Step 3: 認証オブジェクトを作り、クライアントを初期化する
Python のコードで、認証情報とサービス接続の準備をします。
from azure.identity import DefaultAzureCredential
from azure.storage.blob import BlobServiceClient
credential = DefaultAzureCredential()
client = BlobServiceClient(
account_url="https://<storageaccountname>.blob.core.windows.net",
credential=credential
)
<storageaccountname> の部分は、ご自身の Azure ストレージアカウント名に置き換えてください。credential が認証情報のオブジェクトで、client が実際に操作を行う窓口になります。
Step 4: Azure CLI でローカル認証する(開発時)
開発中のパソコンで試す場合は、Azure CLI(コマンドライン操作ツール)でログインしておくだけで認証が通ります。
az login
このコマンドを実行するとブラウザが開き、Azure アカウントへのログインが求められます。一度ログインすれば、DefaultAzureCredential が自動でその情報を使ってくれます。本番環境(CI/CD など自動実行環境)では環境変数を切り替えるだけでよく、コードの書き換えは一切不要です。
動かしてみた
個別パッケージは PyPI で公開されており、azure-identity と azure-storage-blob を指定してインストールすると、Python 3.12 の環境でも依存関係が正常に解決されることを確認しました。Python 3.12 での動作は公式にサポート対象として明記されています。
インストール後、DefaultAzureCredential の読み込みや BlobServiceClient クラスの初期化(ネットワーク接続前の段階まで)は、オフライン状態でも問題なく動作します。クラスの構造と API の使い方が期待通りであることが確認できました。
このリポジトリはモノレポ構成のため、リポジトリのルートを直接 pip でビルドする用途には対応していません。ただし、個別のパッケージを PyPI からインストールする通常の使い方では問題なく動作します。実際のクラウド操作には Azure サブスクリプション(利用契約)と認証情報が必要ですが、ローカルで az login を済ませておけばすぐに始められます。
デモについて
Azure SDK for Python の各ライブラリは、Azure サブスクリプションと認証情報が必要なため、ブラウザ上のサンドボックスデモには対応していません。ローカルのパソコンで az login を済ませてから個別パッケージをインストールして試すのが、最も手軽な方法です。公式ドキュメントにはサービスごとのクイックスタートが用意されており、コピー&ペーストで動くサンプルコードが豊富に揃っています。
実践のコツ:はじめの一歩
SDK を使い始める際に役立つポイントをまとめます。すぐ試せる行動を中心に紹介します。
- 最小サンプルから始める: まず Blob コンテナの一覧を表示するだけのコードから試してみましょう。
az login済みの環境であれば、追加設定なしで動作します。
from azure.identity import DefaultAzureCredential
from azure.storage.blob import BlobServiceClient
credential = DefaultAzureCredential()
url = "https://<your-account>.blob.core.windows.net"
client = BlobServiceClient(url, credential=credential)
for container in client.list_containers():
print(container["name"])
-
認証は
DefaultAzureCredentialひとつで統一する: 開発環境ではaz loginの情報を使い、CI/CD 環境では環境変数(AZURE_CLIENT_ID・AZURE_TENANT_ID・AZURE_CLIENT_SECRET)を設定したサービスプリンシパル認証に自動で切り替わります。コードの変更は不要です。 -
パッケージは用途ごとに選ぶ: 一度に全部入れようとせず、まずは
azure-identityと試したいサービスのパッケージだけをインストールするのが整理しやすいです。 -
公式ドキュメントのクイックスタートを参照する: 各サービスのページにコピー&ペーストで動くサンプルが揃っています。まずそこから始めるのがおすすめです。
-
ローカルと本番でコードを変えない: 認証の切り替えはインフラ側の設定だけで済むため、開発中に書いたコードをそのまま本番にデプロイできます。
活用例
-
サーバーレス関数からのストレージ操作: Azure Functions(サーバーレスで動く関数実行サービス)の Python ランタイムで
azure-storage-blobを使い、ファイルのアップロードをきっかけに変換・再配置するパイプライン(処理の流れ)を構築できます。Managed Identity を使えば、関数コードの中に秘密鍵を持たずに安全に操作できます。 -
Azure OpenAI との組み合わせ:
azure-ai-openaiパッケージで GPT-4 系モデルを呼び出しながら、azure-keyvault-secretsで API キーを安全に管理する構成が定番のパターンです。アプリに API キーを直接書き込まずに済むため、セキュリティが向上します。 -
インフラ自動化スクリプト:
azure-mgmt-resourceやazure-mgmt-networkを組み合わせ、仮想ネットワークや NSG(ネットワークセキュリティグループ:通信フィルタリングのルール集合)をコードで定義・自動構築する DevOps(開発と運用を一体化する手法)ワークフローが実現できます。 -
定期バッチ処理でのデータ転送: スケジュール実行するバッチスクリプトから
azure-storage-blobやazure-storage-queueを呼び出し、他システムとのデータ連携を Python だけで完結させることができます。 -
Azure Machine Learning のジョブ管理:
azure-ai-mlパッケージを使えば、機械学習の学習ジョブの送信・状態確認・モデル登録といった一連の操作を Python スクリプトから自動化できます。実験の再現性を高めるのに役立ちます。 -
Key Vault を使ったシークレット管理の統一: 複数のサービスで共有する API キーやパスワードを
azure-keyvault-secretsで一元管理し、各サービスのコードからは取得するだけにすることで、秘密情報の管理コストを大幅に下げられます。
用語とポイント解説
モノレポ(monorepo)
ひとつの Git リポジトリ(ソースコードの置き場)の中に、複数のライブラリが格納された構成のことです。かんたんに言うと「ひとつの本棚に数百冊の本(ライブラリ)が並んでいる」イメージです。Azure SDK for Python では /sdk/ フォルダの下に各サービスのパッケージが格納されており、全部を一括でインストールするのではなく、使いたいものだけを棚から取り出して使います。
DefaultAzureCredential(デフォルト Azure 認証)
Azure SDK が提供する認証クラスで、CLI・環境変数・Managed Identity など複数の認証方法を自動で順番に試してくれます。かんたんに言うと「どの環境にいるかを自動で判断して、適切な方法でログインしてくれる万能な鍵」です。開発環境では az login の情報を使い、CI/CD 環境では環境変数の認証情報を使うといった切り替えを、コードを変えずに行ってくれます。
Management ライブラリ(azure-mgmt-*)
azure-mgmt-compute や azure-mgmt-network など、azure-mgmt- で始まるパッケージ群のことです。かんたんに言うと「Azure のリソース(サーバーやネットワークなど)を作ったり消したりする操作」をするためのライブラリです。インフラの構成をコードで管理する IaC(Infrastructure as Code:設定をコードとして管理する手法)を Python で実現するために活用されます。
Client ライブラリ
既存の Azure リソースを実際に操作する(Blob ファイルを読み書きする、メッセージを送受信するなど)ためのライブラリ群です。かんたんに言うと「すでに作ってあるストレージやキューを中から読み書きする道具」にあたります。Management ライブラリでリソースを「作る」のに対し、Client ライブラリで「使う」という役割分担になっています。
Managed Identity(マネージド ID)
Azure 上で動くサービス(仮想マシン・Azure Functions など)に付与できる ID(証明書のようなもの)です。かんたんに言うと「パスワードを持たずに Azure サービス同士が安全に会話できる仕組み」です。コードの中に API キーやパスワードを書き込まずに済むため、秘密情報の漏洩リスクを大きく下げられます。
PyPI(パイパイ)
Python Package Index の略称で、Python のパッケージを配布する公式サービスです。かんたんに言うと「Python ライブラリの公式ダウンロードストア」で、pip install パッケージ名 というコマンドで必要なものをインストールできます。Azure SDK for Python の各パッケージもここで公開されており、個別に選んでインストールします。
テレメトリ
SDK が自動で収集する、バージョン番号・操作名などの利用状況データのことです。かんたんに言うと「ソフトウェアが自動で送る利用レポート」で、サービス改善などに使われます。SDK には NoUserAgentPolicy という仕組みが組み込まれており、プライバシー要件に応じてテレメトリを無効化することもできます。
サービスプリンシパル
Azure 上でアプリやスクリプトが動く際に使う「アプリ専用のアカウント」のことです。かんたんに言うと「人間ではなくプログラムのためのログイン情報」にあたります。AZURE_CLIENT_ID・AZURE_TENANT_ID・AZURE_CLIENT_SECRET という 3 つの環境変数を設定すると、DefaultAzureCredential が自動でこの方式を使ってくれます。
IaC(Infrastructure as Code)
インフラストラクチャー・アズ・コード(コードとしてのインフラ)の略で、サーバーやネットワークなどの構成をコードとして記述・管理する手法です。かんたんに言うと「インフラの設定を設計書(コード)として保存しておき、いつでも同じ環境を再現できるようにする考え方」です。Azure SDK for Python の Management ライブラリを使うと、Python コードで IaC を実現できます。
Azure SDK for Python は、クラウドのさまざまな操作を Python という一つの言語で統一できる強力なツールです。認証の自動切替、豊富なサービス対応、コピー&ペーストで試せるサンプルコードなど、使い始めるハードルも低く抑えられています。ぜひストレージの自動化や Azure OpenAI の活用、インフラ管理のスクリプト化などに活用してみてはいかがでしょうか。