Azure Storage documentation update: [AutoPR sdk-resourcemanager/storage/armstorage]-generated-from-SDK Generation - Go-6263779 は、Azure Storage の Go向け管理プレーンSDK を API Version 2025-08-01 に合わせて再生成し、armstorage を stable の v4.0.0 として扱う更新です。結論からいうと、Azure Storage のデータ読み書きそのものよりも、ストレージアカウント、Blob/Queue/Table/Fileサービス設定、Storage Task、Data Share、ConnectorなどをGoコードで管理している開発者・管理者 が影響を受けます。特に、既存コードをそのままSDK更新するとコンパイルエラーになる破壊的変更があるため、本番展開前にAPI呼び出し、認証、IaC、テストの見直しが必要です。PRは2026年5月20日にマージされ、対象APIバージョンは 2025-08-01、SDK Release Type は stable とされています。(GitHub)
Azure Storage documentation updateの位置づけ
今回の更新名には「documentation update」とありますが、実務上は単なる説明文の修正として扱うべきではありません。対象は sdk/resourcemanager/storage/armstorage、つまり Azure Storage の Resource Manager管理ライブラリ です。Azure SDK for Go では、管理プレーンはサブスクリプション内のAzureリソースを管理するために使い、データプレーンは作成済みリソース内のデータを操作するために使います。ストレージアカウント作成や設定変更は管理プレーン、Blobのアップロードやダウンロードはデータプレーン、という切り分けです。(Microsoft Learn)
今回のGo SDK更新で中心となるのは、Azure Storage Resource Provider向けの管理APIです。PR本文には、設定ファイル specification/storage/Storage.Management/tspconfig.yaml、API Version 2025-08-01、SDK Release Type stable、SpecRepoのCommitSHA 7368cdcd5be76911942ac8efd7f7abe060879b42 が示されています。(GitHub)
| 確認項目 | 内容 |
|---|---|
| 対象サービス | Azure Storage |
| 対象SDK | Azure SDK for Go sdk/resourcemanager/storage/armstorage |
| モジュール | github.com/Azure/azure-sdk-for-go/sdk/resourcemanager/storage/armstorage/v4 |
| リリース | v4.0.0 stable |
| 対象API Version | 2025-08-01 |
| 主な影響 | Goコードのコンパイル、管理API呼び出し、テスト、IaCとの整合性、展開前検証 |
| 影響が小さい領域 | Blobデータのアップロード・ダウンロードなど、別SDKで行うデータプレーン処理 |
何が変わるのか
最大の変更点は、armstorage が API Version 2025-08-01 を前提に再生成され、v4.0.0-beta.1 ではなく stable の v4.0.0 として整理されたことです。pkg.go.dev上でも armstorage/v4 は v4.0.0 として公開され、公開日は2026年5月20日と表示されています。(Go Packages)
Azure Resource ManagerテンプレートのMicrosoft.Storageリソース型一覧でも、Microsoft.Storage/storageAccounts などに 2025-08-01 が含まれています。つまり、Go SDK側だけの孤立した変更ではなく、Azure Storage Resource Providerの管理APIバージョンに対応した更新として見るのが適切です。(Microsoft Learn)
Go SDK利用者に影響する破壊的変更
今回の v4.0.0 では、既存コードに直接影響する破壊的変更があります。特に注意すべきなのは、いくつかのメソッドでリクエスト本文を Options 内の Parameters として渡す形から、メソッド引数として直接渡す形に変わった点です。CHANGELOGでは BlobContainersClient.CreateOrUpdateImmutabilityPolicy、TableClient.Create、TableClient.Update の引数変更、TaskAssignment 関連の ProvisioningState 型変更、複数の汎用リソース・エラー構造体の削除が記載されています。(GitHub)
| 変更箇所 | 旧形式で起きやすい問題 | 対応方法 |
|---|---|---|
BlobContainersClient.CreateOrUpdateImmutabilityPolicy | Options.Parameters に設定していたコードが使えない | ImmutabilityPolicy をメソッド引数として渡す |
TableClient.Create | TableClientCreateOptions.Parameters が存在しない | Table をメソッド引数として渡す |
TableClient.Update | TableClientUpdateOptions.Parameters が存在しない | Table をメソッド引数として渡す |
TaskAssignmentProperties.ProvisioningState | 旧 ProvisioningState 前提の分岐が合わない | StorageTaskAssignmentProvisioningState に置き換える |
ErrorResponse などの構造体 | 独自に型参照しているコードがビルドできない | azcore.ResponseError やSDKの戻り値に合わせて扱う |
Resource、TrackedResource など | 汎用構造体を直接参照しているコードが壊れる | 新しいモデル型・埋め込み構造に合わせて修正する |
たとえば、Table作成処理は次のような発想で移行します。
// 旧: ParametersをOptions内に入れる書き方をしていた場合
_, err := tableClient.Create(ctx, resourceGroupName, accountName, tableName, &armstorage.TableClientCreateOptions{
// Parameters: &table
})
// 新: Tableをメソッド引数として渡す
table := armstorage.Table{
// 必要なプロパティをここに設定
}
_, err := tableClient.Create(ctx, resourceGroupName, accountName, tableName, table, nil)
この変更は「実行時に何かが失敗する」より前に、コンパイル時に見つかるケースが多いです。SDK更新後は、まず go test ./... で全パッケージを回し、CIで管理APIを呼ぶ箇所を重点的に確認してください。
追加された主な機能と確認ポイント
今回の更新では、新しい列挙値、クライアント、モデル、フィールドも追加されています。目立つところでは、AccessTierSmart、AllowedCopyScopeAll、TriggerTypeMockRun、ConnectorsClient、DataSharesClient、TaskAssignmentsClient.BeginStopAssignment、StaticWebsite、TagsReplication、AllowSharedKeyAccessForServices、DataCollaborationPolicyProperties などが追加されています。(GitHub)
AccessTierSmartにより固定的な階層判定を見直す
AccessTier には Hot、Cool、Cold、Premium に加えて Smart が追加されています。既存コードで「想定外のAccessTierならエラー」といった固定的な分岐を書いている場合、Smart を未知の値として弾いてしまう可能性があります。SDKの PossibleAccessTierValues() でも AccessTierSmart が含まれる形になっています。(GitHub)
運用上は、次のようなコードを確認してください。
switch tier {
case armstorage.AccessTierHot, armstorage.AccessTierCool, armstorage.AccessTierCold, armstorage.AccessTierPremium:
// 既存処理
default:
// ここでSmartを誤ってエラー扱いしない
}
Smart を実際に使うかどうかは、対象アカウント、リージョン、組織のコスト管理方針に応じて判断する必要があります。ただし、少なくともSDK更新後は「新しい値が返ってきても処理が落ちない」ようにしておくべきです。
共有キーアクセスのサービス別設定を確認する
allowSharedKeyAccessForServices は、Blob、File、Queue、Tableのサービス単位で共有キーアクセスに関する設定を扱うプロパティです。Microsoftのテンプレートリファレンスでも、allowSharedKeyAccess に加えて allowSharedKeyAccessForServices が示されています。(Microsoft Learn)
ここは管理者が特に注意したい部分です。共有キーアクセスを広く許可している環境では、Azure AD認証への移行やSAS運用の見直しと関係します。逆に、既に共有キーを制限している環境では、SDK更新後の自動化コードが意図せず設定を上書きしないように、ストレージアカウント更新時のリクエスト本文を確認してください。
確認すべき観点は次の3つです。
| 確認項目 | 見るべきポイント |
|---|---|
| 現在の認証方式 | 共有キー、SAS、Azure AD認証のどれを使っているか |
| サービス単位の例外 | Blobは制限するがFileは残す、などの例外があるか |
| 更新APIの差分 | SDKでアカウント更新時に未指定プロパティを上書きしていないか |
Data Collaboration、Connectors、Data Sharesは権限設計が先
DataCollaborationPolicyProperties には、クロステナントのデータ共有、Storage Connector、Storage Data Shareに関する許可設定が含まれます。テンプレートリファレンスでは allowCrossTenantDataSharing、allowStorageConnectors、allowStorageDataShares が定義されています。(Microsoft Learn)
また、Microsoft.Storage/storageAccounts/connectors@2025-08-01 と Microsoft.Storage/storageAccounts/dataShares@2025-08-01 のリソース定義も公開されており、ConnectorではDataShare接続やManaged Identity認証、DataShareではアクセスポリシー、共有対象アセット、説明文などを指定します。(Microsoft Learn)
ここで失敗しやすいのは、SDKにクライアントが追加されたことを「すぐに使ってよい機能」と誤解することです。実際の展開前には、少なくとも以下を決めておく必要があります。
| 項目 | 判断基準 |
|---|---|
| クロステナント共有 | 取引先・別テナントとの共有を許可する業務要件があるか |
| Managed Identity | どのIDに読み取り権限を与えるか |
| アセット範囲 | コンテナー全体ではなく、必要なパスだけを共有できているか |
| 監査 | 誰が作成・更新・削除したかをログで追えるか |
| IaC管理 | 手動作成ではなく、Bicep、ARM、Terraform AzAPIなどで再現できるか |
管理者・開発者別の影響範囲
今回の更新は、Azure Storageを使っているすべての利用者に即時対応を迫るものではありません。影響の有無は「Goの管理プレーンSDKを使ってAzure Storage設定を操作しているか」で判断できます。
| 対象者 | 影響度 | 確認すべきこと |
|---|---|---|
Goで armstorage を使う開発者 | 高 | import path、メソッド引数、enum、モデル型、テスト |
| Azure管理者 | 中 | 共有キーアクセス、Data Collaboration、Data Share、Connectorの設定方針 |
| IaC担当者 | 中 | ARM/Bicep/Terraform AzAPIのAPI versionとSDKコードの整合性 |
| CI/CD担当者 | 中 | Goバージョン、go.mod、go.sum、自動テスト、フェイクサーバー |
| Blobデータ操作のみの開発者 | 低 | データプレーンSDKだけを使っているなら直接影響は限定的 |
| 監査・セキュリティ担当者 | 中 | クロステナント共有、Managed Identity、共有キーアクセスの監査 |
特に、社内ツールやバッチで「ストレージアカウントを作成する」「ネットワーク制御を変更する」「TableやQueueの管理設定を作る」「Storage Taskを操作する」といった処理をしている場合は、影響調査の対象に入れてください。
移行時に確認すべき手順
SDK更新は、単に go get を実行して終わりにしないほうが安全です。armstorage/v4 はGo Modulesのセマンティックインポートバージョンに従い、import pathに /v4 を含みます。pkg.go.devの導入例でも、インストールコマンドは go get github.com/Azure/azure-sdk-for-go/sdk/resourcemanager/storage/armstorage/v4 とされています。(Go Packages)
go get github.com/Azure/azure-sdk-for-go/sdk/resourcemanager/storage/armstorage/[email protected]
go mod tidy
go test ./...
移行は次の順序で進めると、失敗を見つけやすくなります。
| 手順 | 作業内容 | 成功条件 |
|---|---|---|
| 依存関係の棚卸し | armstorage の利用箇所を検索する | 管理APIを呼ぶコードが一覧化されている |
| SDK更新 | armstorage/[email protected] に更新する | go.mod と go.sum が更新される |
| import修正 | /v4 のimport pathに統一する | go list ./... が通る |
| 破壊的変更の修正 | Parameters、enum、削除型を直す | go test ./... が通る |
| 実環境に近い検証 | 開発サブスクリプションで作成・更新・削除を試す | 期待するStorage設定だけが変わる |
| 本番展開 | ロールバック手順付きで展開する | 監査ログとCI結果が残る |
展開前に注意したい失敗パターン
docs更新だけだと思って影響調査を省略する
PR名だけ見るとドキュメント更新に見えますが、実際にはSDKの再生成、CHANGELOG更新、examples、fakes、依存関係更新を含む変更です。PR概要でも、クライアント、examples、fakesの再生成や、新しい操作・enum・modelの追加が説明されています。(GitHub)
Options.Parametersのまま移行する
TableClient.Create や TableClient.Update のように、リクエスト本文を引数として渡す形式に変わったメソッドでは、旧コードの Options.Parameters が残っているとビルドできません。これはよくある移行ミスなので、Parameters で全文検索して対象メソッドを洗い出すと効率的です。
enumの固定リストで新しい値を弾く
AccessTierSmart や AllowedCopyScopeAll のような値が追加されると、既存のswitch文、バリデーション、設定ファイルの許可リスト、UIの選択肢が古いままになることがあります。特に社内ポータルやCLIでAzure Storage設定をラップしている場合は、SDKだけでなく入力フォームや設定ファイルも見直してください。
SystemDataやNextLink追加でテストが落ちる
今回の更新では、多くのモデルに SystemData が追加され、リスト結果に NextLink が追加された箇所もあります。レスポンスJSONをスナップショットテストしている場合、実際の機能不具合ではなく、フィールド追加によってテストが失敗することがあります。SystemData のような管理メタデータは、厳密比較ではなく必要な値だけを比較するほうが保守しやすいです。
ソブリンクラウドやAzure StackでAPI versionを確認しない
armstorage のREADMEでは、ClientOptions を使ってパブリッククラウド、ソブリンクラウド、Azure Stack向けのエンドポイントを設定できることが説明されています。(Go Packages) ただし、すべてのクラウド環境で同じタイミングに同じAPI versionが利用できるとは限りません。Azure Government、Azure China、Azure Stack Hubなどを使う場合は、本番と同じクラウド・リージョンで 2025-08-01 の管理APIが通るかを先に検証してください。
IaCや運用設計で見直すべきポイント
Go SDKだけでAzure Storageを管理している環境でも、実際の運用ではBicep、ARMテンプレート、Terraform AzAPI、Azure CLI、Azure Policyが混在しがちです。Goコードだけが 2025-08-01 相当のプロパティを扱い、IaC側が古いAPI versionのままだと、同じストレージアカウントを更新したときに差分の見え方がずれる可能性があります。
特に確認すべき項目は次のとおりです。
| 領域 | 確認ポイント |
|---|---|
| Bicep/ARM | Microsoft.Storage/storageAccounts@2025-08-01 を使う必要があるか |
| Terraform AzAPI | type = "Microsoft.Storage/storageAccounts@2025-08-01" の採用可否 |
| Azure Policy | 新しいプロパティを監査・拒否条件に含めるか |
| 監査ログ | Data Share、Connector、共有キーアクセス変更を追えるか |
| ロール設計 | Managed Identityに過剰な権限を付与していないか |
| テスト環境 | 本番と同じリージョン、同じクラウド種別で検証しているか |
Microsoft.Storageのchange logでは、2025-08-01 に ServiceSharedKeyAccessProperties、StorageAccountSharedKeyAccessProperties、StorageDataCollaborationPolicyProperties が追加され、allowSharedKeyAccessForServices と dataCollaborationPolicyProperties がストレージアカウントのプロパティとして追加されたことが示されています。(Microsoft Learn)
まず実行すべきチェックリスト
最後に、この記事を読んだあとにすぐ実行できる確認項目を整理します。
| 優先度 | チェック項目 | 対象 |
|---|---|---|
| 高 | armstorage の利用箇所を検索する | Go開発者 |
| 高 | go get .../armstorage/[email protected] を検証ブランチで実行する | Go開発者 |
| 高 | TableClient.Create、TableClient.Update、CreateOrUpdateImmutabilityPolicy を修正する | Go開発者 |
| 高 | ProvisioningState の型変更に対応する | Go開発者 |
| 中 | AccessTierSmart を許可リストやUIで扱えるか確認する | 開発者・運用担当 |
| 中 | allowSharedKeyAccessForServices の方針を決める | 管理者・セキュリティ担当 |
| 中 | Data Share、Connector、クロステナント共有の可否を決める | 管理者 |
| 中 | Bicep/ARM/Terraform AzAPIのAPI versionを確認する | IaC担当 |
| 中 | ソブリンクラウドやAzure StackでAPI versionを検証する | インフラ担当 |
| 低 | SystemData や NextLink によるテスト差分を整理する | QA・開発者 |
今回のAzure Storage documentation updateは、Azure Storageの利用者全員が即座に設定変更を迫られる更新ではありません。ただし、GoでAzure Storageの管理プレーンを操作しているチームにとっては、v4.0.0 への移行、API Version 2025-08-01 への対応、共有キーアクセスやData Collaboration関連の設定確認が重要です。まずは影響範囲を検索し、検証ブランチでSDK更新とテストを実行し、本番環境では設定差分とロールバック手順を確認してから展開してください。

コメント