最終確認: 2026年5月
AI-900 試験の対象となる AWS サービスを、プレーンな Terraform を使用して構築します。1 ブロックずつ、それぞれ試験ドメインに関連付けられています。同じコードが OpenTofu でも動作します。
このラボの終了までに、プレーンなTerraformを使って、基盤となるAzure AIサーフェスがプロビジョニングされます。これには、リソースグループ、マルチサービスAzure AI Servicesアカウント(1つのキーで全てのAI APIにアクセス可能:Computer Vision、Language、Speech、Decision)、それらが消費する入力用のストレージアカウント、そして全てのAI API呼び出しをガバナンスレビューのためにLog Analyticsにキャプチャする診断設定が含まれます。
すべてのリソースはプレーンなTerraformです。スニペットを単一の main.tf にドロップし、terraform init を実行した後、terraform apply を段階的に実行してください。
>= 1.5 または OpenTofu >= 1.6。az login)。terraform apply が責任あるAIエラーでAIアカウントの作成に失敗した場合は、Azureポータルを通じて規約に同意し、再実行してください。ほとんど無料または非常に安価です。
スタック全体でアイドル状態では月額1ドル未満です。AI APIの呼び出しには実費がかかります。完了したら破棄してください。
標準的なAzureの開始部分: azurerm ~> 4.0 のピン留め、空の features {} ブロック、そしてグローバルに一意なリソース命名のための random_id (AI ServicesアカウントはそのDNS名に関してAzure全体で一意である必要があります)。
terraform {
required_version = ">= 1.5"
required_providers {
azurerm = {
source = "hashicorp/azurerm"
version = "~> 4.0"
}
random = {
source = "hashicorp/random"
version = "~> 3.6"
}
}
}
provider "azurerm" {
features {}
}
resource "random_id" "suffix" {
byte_length = 2
}
locals {
tags = {
Project = "certlabpro-ai-900"
ManagedBy = "terraform"
}
}
resource "azurerm_resource_group" "main" {
name = "certlabpro-ai-900-rg"
location = "eastus"
tags = local.tags
}ほとんどすべてのAzure AIシナリオでは、Azure Storageから入力データを読み込みます。Computer Vision用の画像、Speech用のオーディオクリップ、Language用のテキストファイル、カスタムモデル用のトレーニングデータなどです。ストレージアカウントは、安全なデフォルト設定(HTTPSのみ、TLS 1.2、パブリックネットワークアクセス無効、パブリックBLOBアクセスなし)で事前にプロビジョニングします。
AI-900の「Azureにおける機械学習の基礎」ドメインでは、このAzure Storageをデータ基盤とする概念が直接問われます。試験でAIトレーニングデータがどこに保存されるかを尋ねられた場合、Azure Storage(または具体的にはAzure Blob Storage)がその答えとなります。
resource "azurerm_storage_account" "ai_data" {
name = "ai900data${random_id.suffix.hex}"
resource_group_name = azurerm_resource_group.main.name
location = azurerm_resource_group.main.location
account_tier = "Standard"
account_replication_type = "LRS"
account_kind = "StorageV2"
https_traffic_only_enabled = true
min_tls_version = "TLS1_2"
public_network_access_enabled = false
allow_nested_items_to_be_public = false
tags = local.tags
}Azure AI Services(ブランド変更されたCognitive Servicesの包括的な名称)は、1つのキー、1つのエンドポイントで、Computer Vision、Language、Speech、Translator、Document Intelligence、Content Safetyなど、あらゆるAI APIへのアクセスを提供します。単一のマルチサービスアカウントは、AI-900の費用に関するアンチパターンの問いです。専用の単一サービスアカウント(Speech、Vision、Languageにはそれぞれ独自の無料F0ティアがあります)よりも呼び出しあたりの費用は高くなりますが、管理ははるかに簡単です。AI-900では両方の形式が問われ、どちらをいつ使用すべきかが試験で問われます。
マルチサービスアカウントには kind = "CognitiveServices" を、標準ティアには sku_name = "S0" を設定します。custom_subdomain_name はVNet統合に必須です(AI-900の「責任あるAI」ドメインでは、プライベートエンドポイントの前提条件としてこれが問われます)。local_auth_enabled = true はAPIキーによる認証フローを機能させます。false にするとEntra ID認証のみが強制されます。
resource "azurerm_cognitive_account" "ai" {
name = "certlabpro-ai-900-${random_id.suffix.hex}"
resource_group_name = azurerm_resource_group.main.name
location = azurerm_resource_group.main.location
kind = "CognitiveServices"
sku_name = "S0"
custom_subdomain_name = "certlabpro-ai-900-${random_id.suffix.hex}"
local_auth_enabled = true
identity {
type = "SystemAssigned"
}
tags = local.tags
}責任あるAIはAI-900の柱(5つの試験ドメインの1つ)であり、インフラストラクチャで実証できる最も具体的な責任あるAIのプラクティスは監査ログです。診断ログの送信先としてLog Analyticsワークスペースを作成します。ステップ5では、AIアカウントの診断設定をここに全て送るように接続します。
Log AnalyticsはAzureの中心的な可観測性サービスです。Azure Monitorはメトリックをここに送信し、Application Insightsはアプリのテレメトリをここに送信し、SentinelはSIEMのためにここから読み取ります。これをAIラボの監査送信先としてプロビジョニングすることは、他のすべてのAzure認定試験が前提とする構成要素としても機能します。
resource "azurerm_log_analytics_workspace" "main" {
name = "certlabpro-ai-900-logs"
resource_group_name = azurerm_resource_group.main.name
location = azurerm_resource_group.main.location
sku = "PerGB2018"
retention_in_days = 30
tags = local.tags
}診断設定はAzureの普遍的な可観測性プリミティブです。すべてのAzureリソースは、分類されたログとメトリックをLog Analyticsワークスペース、Event Hub、またはStorage Accountにストリームできます。AIアカウントのAuditおよびRequestResponseログカテゴリを有効にします。Auditは何が呼び出されたかをキャプチャし、RequestResponseは実際の要求と応答のボディをキャプチャします(インシデント対応に役立ちますが、プロンプトに個人識別情報(PII)が含まれている場合は注意が必要です。AI-900の「責任あるAI」では、このトレードオフの両面が問われます)。
この最後の設定が完了すると、すべてのAI API呼び出しがステップ4のワークスペースに保存され、KQLを通じてクエリ可能になります。これがAI-900における責任あるAIの完結です。単に「コンテンツフィルターがある」だけでなく、「AIが認識したすべての要求の証拠がある」ということになります。
resource "azurerm_monitor_diagnostic_setting" "ai" {
name = "certlabpro-ai-900-diag"
target_resource_id = azurerm_cognitive_account.ai.id
log_analytics_workspace_id = azurerm_log_analytics_workspace.main.id
enabled_log {
category = "Audit"
}
enabled_log {
category = "RequestResponse"
}
metric {
category = "AllMetrics"
enabled = true
}
}標準的な terraform destroy コマンドは、このラボのすべてを削除します。2つの注意点があります。
random_id のサフィックスを使用することで通常は回避できます。AI-900は、このラボでは扱いきれないAzure AIサーフェスもカバーしています。これには、Azure OpenAI Service(AI-102でカバー)、Azure Machine Learning Studio + ワークスペース(DP-100)、Bot Service、Computer Visionカスタムモデル、Custom Visionポータルトレーニング、Language StudioのカスタムQnAおよび会話言語理解、Document Intelligenceカスタムモデル、Azure AI Search、Speechカスタム音声/発音評価、およびML解釈性のための責任あるAIダッシュボードが含まれます。
私たちは、より高度なAzure AIパターンがすべて基づく基盤であるため、マルチサービスアカウント + ストレージ + 監査ログ のプリミティブに焦点を当てています。マルチサービスアカウントが1つのキーで完全なAPIスイートをどのように公開するかを理解すれば、サービスごとの詳細な掘り下げも容易になります。
サービスごとの概念的なカバー範囲については、この認定ページにある 閲覧 および Editorial セクションを参照してください。