Microsoft Azure

C# で ARM テンプレート関数を使う

C# のプログラムで Azure Resource Manager のテンプレート関数が使いたかった。具体的には guid を。Azure.Deployments.Expression パッケージを使って実現できた。 www.nuget.org guid 関数を呼び出して、deterministic な GUID を生成するサンプルは次の…

C# で Azure SQL Databaseの長期バックアップ保有期間を変更する

Azure.ResourceManager.Sql を使って、SQL Database の長期バックアップも設定できる。 www.nuget.org 毎月 1 回目のフルバックアップを 2 ヶ月保有するように変更するサンプルは次の通り。 using Azure.Identity; using Azure.ResourceManager; using Azure…

C# で Azure SQL Databaseの自動バックアップ保有期間を変更する

Azure.ResourceManager.Sql を使って、SQL Database の PITR を設定できる。 www.nuget.org PITR の保有期間を 14 日間に変更するサンプルは次の通り。 using Azure.Identity; using Azure.ResourceManager; using Azure.ResourceManager.Sql; using Azure.R…

C# で Azure Entra ID に登録されているアプリにロールを割り当てる

Azure.ResourceManager.Authorization を使えばできた。 www.nuget.org リソースの共同作成者を割り当ててみたサンプル。 using Azure; using Azure.Core; using Azure.Identity; using Azure.ResourceManager; using Azure.ResourceManager.Authorization; …

C# で Microsoft Azure の DNS ゾーンに A レコードを登録する

Azure.ResourceManager.Dns パッケージを使って DNS ゾーンを操作できる。 www.nuget.org A レコードを追加するサンプルコードは次の通り。既存のパブリックIPアドレスリソースのエイリアスにしている。 using Azure; using Azure.Identity; using Azure.Res…

C# で Microsoft Azure のパブリックIPアドレスを作成する

Azure.ResourceManager.Network パッケージを使う。 www.nuget.org パブリック IP アドレスが無ければ作成するサンプル。 using Azure; using Azure.Core; using Azure.Identity; using Azure.ResourceManager; using Azure.ResourceManager.Network; using …

C# で Key Vault にシークレットを登録する

Azure.Security.KeyVault.Secrets を使えば、Microsoft Azure Key Vault にシークレットを登録できた。 www.nuget.org 以下サンプルコード。シークレットの取得もやってる。 using Azure.Identity; using Azure.Security.KeyVault.Secrets; var client = new…

C# で Microsoft Entra ID にアプリを登録する方法

Microsoft Graph SDK を使う。Azure SDK ではなかった。 www.nuget.org アプリが既に存在するか検索し、なければ登録するコードは次の通り。 using Azure.Identity; using Microsoft.Graph; using Microsoft.Graph.Applications.Item.AddPassword; using Mic…

Terraform で AKS と Windows ノードプールを作成

Windows ノードプールは自動スケールアウトを有効にしてみた。 resource "azurerm_resource_group" "example" { name = "rg-example-dev" location = "japaneast" } resource "azurerm_kubernetes_cluster" "example" { name = "aks-example-dev" resource_g…

Container Insights で収集されたAKS のコンテナログを検索する

AKS で動かしている Windows コンテナ内では、一応アプリが標準出力にカスタムログを書き込んでいる。 AKS のクラスタを作成したら Container Insights が有効になっていたので、保存場所になっている Log Analytics ワークスペースを見てみたら、ContainerL…

Azure RBAC を使用した Azure AD Authentication を有効にした Azure Kubernetes Service のクラスタを C# で操作する

C# で KubernetesClient を使って AKS のクラスタを操作するとき、認証情報はローカルに保存されたものを使っていたけど、本番ではそうはいかない。 AKS では認可に Azure RBAC が使えるので、例えば Azure AD でアプリを登録し、Azure RBAC で AKS のクラス…

Container Insights が収集した AKS のコンテナのメトリックを取得

Azure SDK for .NET の Azure.Monitor.Query 使えば、Container Insights が収集した AKS のコンテナのメトリックを取得できた。 www.nuget.org LogsQueryClient で Log Analytics ワークスペースに対して Kusto クエリを実行。 using Azure.Identity; using…

C# で Azure SQL Server のファイアウォール規則を操作する

Azure.ResourceManager.Sql を使って、Azure SQL Server のファイアウォール規則を操作できた。 www.nuget.org using Azure; using Azure.Identity; using Azure.ResourceManager; using Azure.ResourceManager.Sql; const string SubscriptionId = "<サブス…

C# で Microsoft Azure のリソースのメトリック取得

Microsoft Azure のリソースのメトリックを取得したかった。Azure SQL Database のとか。 Azure SDK for .NET の Azure.Monitor.Query 使えば、任意のリソースのメトリックを取得できた。 www.nuget.org using Azure.Identity; using Azure.Monitor.Query; u…

Azure Kubernetes Service の Kubernetes クラスタを C# から操作する

はじめに Azure Kubernetes Service(AKS) をプログラムから操作する必要があり、 KubernetesClient を使えばリソースの作成や更新ができそうだったので試してみた。 www.nuget.org github.com 認証情報を取得 操作対象は AKS なので、まずは認証情報を取得し…

C# で Azure 仮想ネットワークゲートウェイのポイント対サイトで使うルート証明書を追加する

Microsoft Azure 仮想ネットワークゲートウェイのポイント対サイトで使うルート証明書を、 C# で Azure SDK を使って登録してみた。 www.nuget.org 公開証明書データを渡すときに使う BinaryData が曲者だった。 公開証明書データの文字列中の改行文字を削除…

AzureRM provider 3.0 以降で App Service マネージド証明書を使う

AzureRM provider 3.0 以降では、Azure App Service の Web Apps(Windows) を作成するときのリソースが azurem_windows_web_app に変わったけど、マネージド証明書を使う方法はさほど変わっていなかった。 provider "azurerm" { features {} } resource "azu…

C# で Azure 仮想マシンのプロパティを取得する

Azure ポータルの仮想マシンの概要ページに表示されているような情報を、C# で SDK 使って取得してみた。 www.nuget.org www.nuget.org といっても全部取得するのは調査に時間がかかるので、ひとまず必要なやつだけ。ズバッと1回の呼び出しで取得できなかっ…

C# で VPN ゲートウェイのアドレスプールを変更する

Microsoft Azure の仮想ネットワークに VPN の P2S で繋ぐとき、クライアントのアドレスプールをあらかじめポータルで設定しておくけど、REST API や SDK でもアドレスプールを変更できる。 www.nuget.org ポータルではアドレスプールなのに対し、REST API …

C# で VPN ゲートウェイの P2S 用 VPN クライアントセットアップをダウンロードする

Microsoft Azure の仮想ネットワークに VPN の P2S で繋ぐとき、Azure VPN Client を使うことになる。Azure VPN Client はポータルでダウンロードすれば事足りるけど、REST API や SDK でもダウンロードできる。 www.nuget.org 実際には、Azure VPN Client …

C# でネットワークインタフェースに関連付けるネットワークセキュリティグループを変更する

ネットワークインタフェースに関連付けているネットワークセキュリティグループの付け替えも、Azure.ResourceManager.Network を使えばできた。 www.nuget.org using Azure; using Azure.Identity; using Azure.ResourceManager; using Azure.ResourceManage…

C# でネットワークセキュリティグループのセキュリティ規則を CRUD する

C# で Microsoft Azure のネットワークセキュリティグループの操作を行うのは、Azure.ResourceManager.Network を使えばできた。 www.nuget.org ネットワークセキュリティグループのセキュリティ規則を CRUD してみたサンプルは次の通り。 using Azure; usin…

C# でスナップショットからマネージドディスクを作成・削除

C# で Azure.ResourceManager.Compute を使って、スナップショットからマネージドディスクを作成できた。あと列挙・更新・削除も。 www.nuget.org 以下、.NET 6 でのサンプル。 using Azure; using Azure.Core; using Azure.Identity; using Azure.ResourceM…

C# で Microsoft Azure のマネージドディスクのスナップショットを CRUD する

C# で Azure.ResourceManager.Compute を使えば、マネージドディスクからスナップショットを作成・取得・更新・削除できた。 www.nuget.org using Azure; using Azure.Core; using Azure.Identity; using Azure.ResourceManager; using Azure.ResourceManage…

C# で Azure 仮想マシンのデータディスクを入れ替える

Azure.ResourceManager.Compute を使って、Azure 仮想マシンのデータディスクもアタッチやデタッチができる。 www.nuget.org OSディスクのときと違って、データディスクは ID の変更ができないので、データディスクのアタッチとでタッチを行うことで、データ…

C# で Azure 仮想マシンの OS ディスクをスワップする

Azure.ResourceManager.Compute を使って、Azure 仮想マシンの OS ディスクをスワップできた。 www.nuget.org using Azure; using Azure.Identity; using Azure.ResourceManager; using Azure.ResourceManager.Compute; using Azure.ResourceManager.Compute…

C# で Azure VM の停止・開始・再起動を行う

Azure.ResourceManager.Compute を使えば、C# で仮想マシンの停止・開始・再起動ができる。 www.nuget.org 認証には Azure.Identity を使う。 www.nuget.org アプリに組み込んで使うことを想定しているので、Azure AD でアプリを登録しておく。 Microsoft Az…

WCF でテレメトリを Azure Application Insights に送信する

Microsoft Azure の仮想マシンで動かしている WCF サービスでも、テレメトリを Azure Application Insights に送りたくて、方法を調べたら次のがヒットした。 github.com ただ、こいつは正式リリースされてないし、そもそも開発終わってだいぶ経過してる。WC…

Azure SQL Database の CREATE DATABASE AS COPY OF の罠

Azure SQL Database で使える CREATE DATABASE AS COPY OF は、裏で geo レプリケーションが行われている。その geo レプリケーションが完了する前に、ソースのデータベースをリネームしようとすると、下記の例外が発生する。 The operation cannot be perfo…

ElasticPool に属するデータベースの一覧を取得する SQL

sys.database_servic_objectives という、Azure SQL Database (の SQL Server)にあるシステムビューを見れば分かる。後は sys.databases と JOIN すれば OK。 SELECT * FROM sys.databases AS d INNER JOIN sys.database_servic_objectives AS o ON d.databa…