結論から言うと、2026年5月19日にマージされた「Azure SDK documentation update: [Refresh sdk-resourcemanager/relay/armrelay]-generated-from-SDK Generation – Go-6034393」は、Azure RelayをGoから管理するためのAzure SDK、armrelayのリソース管理ライブラリをv2 betaとして再生成する更新です。既存のAzure Relayそのものが自動で変更される更新ではありませんが、Goアプリや運用ツールでgithub.com/Azure/azure-sdk-for-go/sdk/resourcemanager/relay/armrelayを使っている場合は、インポートパス、型、ネットワーク設定まわりの実装確認が必要です。
特に注意すべき点は、/v2付きのモジュールパス、API Version 2024-01-01、SDK Release Type beta、そしてOperation関連の破壊的変更です。Azure Relayの名前空間、Hybrid Connections、WCF Relays、Private Endpoint、Network Rule Setsをコードで作成・更新している管理者や開発者は、単なるドキュメント更新として流さず、移行前にビルド・テスト・ネットワーク設定の差分を確認しておきましょう。
Azure SDK documentation updateの概要
今回の「Azure SDK documentation update: [Refresh sdk-resourcemanager/relay/armrelay]-generated-from-SDK Generation – Go-6034393」は、Azure SDK for GoのAzure Relay向けResource Managerライブラリを、SDK生成パイプラインから更新したPRです。GitHub上ではPR #26316として2026年5月19日にマージされ、設定ファイルはspecification/relay/resource-manager/Microsoft.Relay/Relay/tspconfig.yaml、API Versionは1/1/2024、SDK Release Typeはbeta、SpecRepoのCommitSHAはaa822c9c01b9e83fbc8ad8ec4c308203a3c29287と示されています。(GitHub)
pkg.go.devでも、対象パッケージはgithub.com/Azure/azure-sdk-for-go/sdk/resourcemanager/relay/armrelay/v2、バージョンはv2.0.0-beta.1、公開日は2026年5月19日として確認できます。安定版として扱うのではなく、betaとして検証前提で採用するのが安全です。(Go Packages)
| 確認項目 | 内容 | 実務上の見方 |
|---|---|---|
| 対象SDK | Azure SDK for GoのAzure Relay管理ライブラリ | Azure RelayをGoで管理するコードが対象 |
| パッケージ | sdk/resourcemanager/relay/armrelay/v2 | v1系とはインポートパスが異なる |
| リリース種別 | beta | 本番導入前に非本番環境で検証する |
| 対象API | Azure Relay Resource Manager API 2024-01-01 | Network Rule SetsやPrivate Link関連の設定確認が重要 |
| 主な変更 | 生成コード、モデル、README、サンプル、fake、テスト資産の更新 | ビルドだけでなく単体テスト・統合テストも確認する |
何が変わったのか
モジュールパスが/v2付きになる
今回の更新で、Goのインストール例は次のように/v2付きのモジュールパスへ変わっています。READMEでもgo get github.com/Azure/azure-sdk-for-go/sdk/resourcemanager/relay/armrelay/v2が案内され、クライアント生成例も更新されています。(GitHub)
go get github.com/Azure/azure-sdk-for-go/sdk/resourcemanager/relay/armrelay/[email protected]
既存コードがv1系のパスを使っている場合、依存関係を更新しただけでは自動的にv2へ切り替わりません。Goではメジャーバージョン2以上のモジュールはインポートパスに/v2を含める必要があるため、移行は明示的な作業になります。
| 変更前の例 | 変更後の例 |
|---|---|
github.com/Azure/azure-sdk-for-go/sdk/resourcemanager/relay/armrelay | github.com/Azure/azure-sdk-for-go/sdk/resourcemanager/relay/armrelay/v2 |
API Versionは2024-01-01が前提になる
生成されたSDKはAzure Relay Resource Manager APIの2024-01-01を対象にしています。Microsoft LearnのAzure Relay REST APIサンプルでも、Hybrid Connectionsの取得例でAPI Version 2024-01-01とGoのarmrelay/v2が示されています。(Microsoft Learn)
ここで重要なのは、API Versionが変わっても、既存のAzure Relayリソースが自動的に再作成されるわけではないという点です。ただし、CreateOrUpdate系の処理で送信するプロパティが変わると、ネットワーク公開範囲やPrivate Link関連の設定に影響する可能性があります。SDKの更新とリソース設定の変更は分けて考え、実際に送信されるリクエスト内容を確認してください。
生成対象が広く、テストコードにも影響する
PRの差分では、Goファイル、JSON、Markdown、Go module、YAMLなどが更新対象になっています。CopilotによるPR要約でも、v2 betaクライアント、モデル、fake、サンプル、ドキュメント、ライブテスト資産が再生成されたことが説明されています。(GitHub)
そのため、影響は本番コードだけに限りません。次のようなコードを持っている場合は確認が必要です。
| 対象 | 確認すべきこと |
|---|---|
| 本番アプリ | import path、クライアント生成、モデル型の変更 |
| 管理スクリプト | Network Rule Sets、Private Endpoint、Hybrid Connectionsの更新処理 |
| 単体テスト | fakeパッケージやモックの型差分 |
| 統合テスト | 実Azure環境での作成・更新・削除動作 |
| CI/CD | go.mod、go.sum、依存関係キャッシュ、静的解析 |
破壊的変更で特に確認すべきポイント
今回のCHANGELOGでは、v2.0.0-beta.1の破壊的変更として、Operation.Originの型変更、複数の構造体削除、Operation.Propertiesの削除などが記載されています。また、ActionTypeやOriginなどの列挙型、NetworkRuleSetPropertiesのフィールド、SystemData関連のフィールド追加も含まれています。(GitHub)
| 変更点 | 起きやすい影響 | 対応の考え方 |
|---|---|---|
Operation.Originが*stringから*Originへ変更 | 文字列比較していたコードがコンパイルエラーになる | enum値を使った比較へ修正する |
Operation.Propertiesが削除 | 操作一覧のメタ情報を参照するコードが壊れる | 利用箇所を洗い出し、代替フィールドで足りるか確認する |
ErrorAdditionalInfo、ErrorDetail、ErrorResponseなどが削除 | 独自のエラー処理や型アサーションが失敗する | azcore.ResponseErrorなど実際に返るエラー型を前提に見直す |
ProxyResource、Resource、TrackedResourceなどが削除 | 共通リソース型を直接参照していたコードが壊れる | 生成済みの個別モデル型へ置き換える |
NetworkRuleSetPropertiesにPublicNetworkAccess、TrustedServiceAccessEnabledが追加 | ネットワーク公開範囲をコードから扱いやすくなる | 既存値を取得してから更新する実装にする |
例えば、以前にOperation.Originを文字列として扱っていた場合は、v2では次のような修正が必要になります。
if op.Origin != nil && *op.Origin == armrelay.OriginUser {
// ユーザー起点の操作として扱う
}
この種の変更は、実行時エラーではなくコンパイルエラーとして見つかることが多い一方、削除されたフィールドを使っていたログ出力や監査処理は見落とされがちです。移行時はビルド成功だけで判断せず、「監査ログ」「運用通知」「棚卸しレポート」など周辺コードも確認してください。
影響を受ける人、受けにくい人
この更新はAzure RelayのResource Manager向けSDKに関するものです。Azure Relayの通信そのものを行うデータプレーン処理ではなく、名前空間、Hybrid Connections、WCF Relays、Private Endpoint Connections、Private Link Resources、Operationsなどの管理操作をGoから行う場合に関係します。pkg.go.devのドキュメントでも、これらのクライアントや操作例が公開されています。(Go Packages)
| 立場・利用状況 | 対応優先度 | 理由 |
|---|---|---|
| GoでAzure Relayリソースを作成・更新している | 高 | import pathとモデル変更の影響を受ける |
| Network Rule SetsをコードやIaCで管理している | 高 | 公開ネットワーク、IP制限、信頼済みサービス許可の設定確認が必要 |
| Private EndpointやPrivate Linkを運用している | 中〜高 | SDK更新時に関連プロパティの扱いを確認したい |
| v1系SDKを使い続け、v2へ移行しない | 中 | 直ちに壊れる可能性は低いが、将来移行に備えて差分把握は必要 |
| Azure PortalだけでRelayを管理している | 低 | Go SDKのコード変更による直接影響は小さい |
| Relayの送受信アプリだけを運用している | 低〜中 | 管理SDKを使っていなければ直接影響は限定的 |
管理者が確認すべきAzure Relay設定
Network Rule Setsは最優先で確認する
Azure Relay名前空間は、有効な認証があれば既定でインターネットからアクセス可能です。IP Firewallを使うと、特定のIPv4アドレスまたはCIDR範囲にアクセス元を制限できます。また、ルールは名前空間レベルで適用され、条件に合わないアクセスは拒否されます。(Microsoft Learn)
Microsoft.Relay/namespaces/networkRuleSets@2024-01-01では、defaultAction、ipRules、publicNetworkAccess、trustedServiceAccessEnabledが主要なプロパティとして扱われます。Bicep、ARM JSON、Terraform AzAPIの形式でも同じ考え方で設定できます。(Microsoft Learn)
| 設定 | 主な値・型 | 確認ポイント |
|---|---|---|
defaultAction | Allow / Deny | IP制限を有効にしたい場合、既定許可のままになっていないか |
ipRules | IPv4またはCIDR | 運用端末、NAT Gateway、監視基盤の送信元IPが含まれているか |
publicNetworkAccess | Enabled / Disabled / SecuredByPerimeter | Public accessを許可する設計か、Private Link中心の設計か |
trustedServiceAccessEnabled | true / false | 信頼済みMicrosoftサービスからのアクセスを許可する必要があるか |
注意したいのは、「IP許可リストを設定したから安全」とは限らない点です。Microsoft Learnでは、denyルールを追加するのではなく、制限したい場合はdefaultActionをAllowからDenyへ変更する考え方が示されています。(Microsoft Learn)
SDK移行時にありがちな失敗は、既存のNetwork Rule Setsを取得せず、新しい構造体を最小項目だけで組み立ててCreateOrUpdateすることです。未指定プロパティの扱いはAPIや操作内容によって確認が必要なため、移行時は必ず現在の設定を読み取り、差分を明示してから更新してください。
Private Link利用時はDNSとPublic accessをセットで見る
Azure RelayのPrivate Linkでは、Private Endpointと仮想ネットワークは同じリージョンに配置する必要があり、Relay名前空間は別リージョンでも利用できます。また、Private Endpointを使う場合はPrivate DNS Zoneとの統合が推奨されています。(Microsoft Learn)
Private Link構成で特に確認したいのは、次の3点です。
| 確認項目 | 失敗例 | 確認方法 |
|---|---|---|
| Public network access | Private Endpointを作ったがPublic accessが残っている | publicNetworkAccessの値を確認する |
| DNS解決 | 社内ネットワークからRelay名前空間がPublic IPへ解決される | Private DNS ZoneとVNetリンクを確認する |
| 信頼済みサービス | 意図しないMicrosoftサービス経由のアクセスを許可している | trustedServiceAccessEnabledの利用理由を確認する |
Public accessを無効にすること自体は強力な制御ですが、それだけで通信経路の確認が完了するわけではありません。Private Endpoint、DNS、クライアントの送信元ネットワーク、監視・運用ツールの到達性まで含めてテストする必要があります。
開発者向けの移行手順
まず利用箇所を洗い出す
最初に、対象リポジトリでarmrelayを使っている箇所を洗い出します。特に、複数の管理ツールやバッチが同じAzure Relay名前空間を操作している場合は、アプリ本体だけでなく運用スクリプトも対象にしてください。
go list -m all | grep 'sdk/resourcemanager/relay/armrelay'
grep -R 'sdk/resourcemanager/relay/armrelay' -n .
確認したい観点は次の通りです。
| 観点 | 見る場所 |
|---|---|
| SDK依存 | go.mod、go.sum |
| import path | .goファイル全体 |
| 操作対象 | Namespaces、Hybrid Connections、WCF Relays、Network Rule Sets、Private Endpoint Connections |
| 型依存 | Operation、エラー型、共通Resource型 |
| テスト | fake、モック、録画済みレスポンス、ライブテスト |
v2 betaを明示的に導入する
検証用ブランチで、v2 betaを明示的に追加します。
go get github.com/Azure/azure-sdk-for-go/sdk/resourcemanager/relay/armrelay/[email protected]
go mod tidy
go test ./...
既存のv1系とv2系はインポートパスが異なるため、移行中に両方が一時的に存在することがあります。最終的には、リポジトリ内で利用するバージョンをそろえたほうが保守しやすくなります。
クライアント生成コードを更新する
READMEでは、azidentity.NewDefaultAzureCredentialで認証情報を作り、armrelay.NewClientFactoryから各クライアントを生成する例が示されています。fakeパッケージを使ったユニットテスト用の仕組みもドキュメントに含まれています。(GitHub)
package main
import (
"context"
"log"
"github.com/Azure/azure-sdk-for-go/sdk/azidentity"
"github.com/Azure/azure-sdk-for-go/sdk/resourcemanager/relay/armrelay/v2"
)
func main() {
ctx := context.Background()
subscriptionID := "00000000-0000-0000-0000-000000000000"
cred, err := azidentity.NewDefaultAzureCredential(nil)
if err != nil {
log.Fatal(err)
}
factory, err := armrelay.NewClientFactory(subscriptionID, cred, nil)
if err != nil {
log.Fatal(err)
}
hybridConnectionsClient := factory.NewHybridConnectionsClient()
_ = hybridConnectionsClient
_ = ctx
}
本番では、DefaultAzureCredentialがどの認証方式を使っているかも確認してください。ローカル開発ではAzure CLI認証、CI/CDではサービスプリンシパルやWorkload Identity、本番環境ではManaged Identityなど、環境によって使われる資格情報が変わることがあります。SDK移行と同時に、不要に広い権限を持つ認証情報を使っていないか見直すと安全です。
Network Rule Sets更新コードは既存値を保持する
NetworkRuleSetPropertiesには、TrustedServiceAccessEnabledが含まれます。また、PublicNetworkAccessの定数としてDisabled、Enabled、SecuredByPerimeterが定義され、public network経由のトラフィック可否を扱えるようになっています。(Go Packages)
以下は、考え方を示す最小例です。実運用では、既存設定を取得したうえで必要な差分だけを適用してください。
package main
import (
"context"
"github.com/Azure/azure-sdk-for-go/sdk/azcore/to"
"github.com/Azure/azure-sdk-for-go/sdk/resourcemanager/relay/armrelay/v2"
)
func updateNetworkRuleSet(
ctx context.Context,
factory *armrelay.ClientFactory,
resourceGroupName string,
namespaceName string,
) error {
client := factory.NewNamespacesClient()
_, err := client.CreateOrUpdateNetworkRuleSet(
ctx,
resourceGroupName,
namespaceName,
armrelay.NetworkRuleSet{
Properties: &armrelay.NetworkRuleSetProperties{
DefaultAction: to.Ptr(armrelay.DefaultActionDeny),
PublicNetworkAccess: to.Ptr(armrelay.PublicNetworkAccessEnabled),
TrustedServiceAccessEnabled: to.Ptr(false),
IPRules: []*armrelay.NWRuleSetIPRules{
{
Action: to.Ptr(armrelay.NetworkRuleIPActionAllow),
IPMask: to.Ptr("203.0.113.0/24"),
},
},
},
},
nil,
)
return err
}
この例では203.0.113.0/24を説明用のアドレスとして使っています。実際には、社内出口IP、NAT Gateway、監視基盤、CI/CDエージェントなど、Azure Relayへ管理アクセスする送信元を確認してから設定してください。
展開時の注意点
betaであることを前提に採用判断する
Microsoft LearnのAzure SDK for Goパッケージ一覧では、Azure Relayのリソース管理ライブラリとして1.2.0と2.0.0-beta.1が併記されています。つまり、v2 betaが出たからといって、すべての環境で直ちにv1系を置き換える必要があるわけではありません。(Microsoft Learn)
本番運用で安定性を重視するなら、まず非本番環境でv2 betaを検証し、必要な機能や修正がv2にあるかを確認します。すぐにv2の新機能が必要でなければ、既存のv1系を維持しながら移行計画を作る判断も現実的です。
SDK更新と設定変更を同時にやりすぎない
SDK移行とネットワーク制御の見直しを同時に行うと、障害時に原因を切り分けにくくなります。おすすめは、作業を段階に分けることです。
| 段階 | 作業 | 確認する結果 |
|---|---|---|
| 1 | v1のまま現在の設定を棚卸し | Network Rule Sets、Private Link、DNSの現状が分かる |
| 2 | v2 betaへ移行してビルド・テスト | 型変更や削除フィールドの影響が分かる |
| 3 | 非本番で管理操作を実行 | 作成・更新・削除が想定通り動く |
| 4 | ネットワーク設定を差分適用 | Public accessやIP制限の変更影響を確認できる |
| 5 | 本番へ段階展開 | 障害時に戻しやすい |
特にdefaultAction、publicNetworkAccess、trustedServiceAccessEnabledは、セキュリティ境界に関わる設定です。SDK更新のついでに値を変更する場合は、変更理由、承認者、影響範囲、ロールバック手順を残しておきましょう。
CI/CDではバージョンを固定する
beta版を検証する場合、CI/CDで曖昧にlatestへ追従させるのは避けたほうが安全です。go.modでv2.0.0-beta.1のように具体的なバージョンを固定し、更新時はPRで差分をレビューできる形にしてください。
また、SDKの生成物にはサンプルやfakeも含まれるため、単体テストが通っても実環境での権限、ネットワーク、Azure側の制約で失敗することがあります。少なくとも次のテストは分けて実施すると、問題の切り分けがしやすくなります。
| テスト | 目的 |
|---|---|
go test ./... | コンパイルエラー、型変更、単体テストの検出 |
| fakeを使ったテスト | 分岐やエラーハンドリングの確認 |
| 非本番Azureでの統合テスト | 実際のARM API、RBAC、ネットワーク制御の確認 |
| ロールバックテスト | v1系または旧デプロイへ戻せるか確認 |
よくある疑問
v1系をすぐにやめる必要はある?
すぐにやめる必要があるとは限りません。今回のv2はv2.0.0-beta.1として公開されており、Microsoft Learn上でも既存の1.2.0とbetaの2.0.0-beta.1が確認できます。新しいAPI Versionや追加フィールドを使う必要がある場合はv2検証を進め、安定性を優先する環境では既存版を維持する判断もあります。(Microsoft Learn)
API Version 2024-01-01へ変わるとリソースは再作成される?
API Versionは、Azure Resource Managerへ送るリクエストのスキーマや利用可能なプロパティを決めるものです。API Versionが変わっただけで、既存のAzure Relay名前空間が自動的に再作成されるわけではありません。ただし、CreateOrUpdateや更新処理で送るプロパティが変われば、設定変更は発生します。特にNetwork Rule SetsとPrivate Link関連は、事前に差分を確認してください。
Azure PortalやBicepにも関係する?
関係します。今回のSDKはGo向けですが、扱う対象はAzure RelayのResource Manager APIです。BicepやARM JSONでもMicrosoft.Relay/namespaces/networkRuleSets@2024-01-01として、defaultAction、ipRules、publicNetworkAccess、trustedServiceAccessEnabledを設定できます。IaCとSDKの両方で同じリソースを管理している場合は、どちらが最終的な正とする設定なのかを決めておく必要があります。(Microsoft Learn)
データプレーンのRelay通信にも影響する?
今回の更新は、Azure Relayのリソース管理SDKに関するものです。Hybrid ConnectionsやWCF Relaysのリソース作成・更新には関係しますが、既存の送受信アプリが管理SDKを使っていない場合、コード上の直接影響は限定的です。ただし、管理側のコードでNetwork Rule SetsやPublic accessを変更すると、結果として通信経路に影響する可能性があります。
次にやるべきこと
今回のAzure SDK documentation updateは、Azure RelayをGoで管理しているチームにとって、将来のv2移行に向けた確認ポイントが多い更新です。まずは、armrelayの利用箇所を洗い出し、v2 betaへ移行する必要があるかを判断してください。
移行する場合は、/v2付きのimport pathへ変更し、Operationや削除済みモデルに依存したコードを修正します。そのうえで、Network Rule Sets、Private Link、Public network access、trusted service accessの設定を非本番環境で検証しましょう。
特に管理者は「SDKを更新しただけ」のつもりでネットワーク設定まで変えてしまわないように、既存値の取得、差分確認、段階展開、ロールバック手順をセットで準備することが重要です。

コメント