☁️

Azure Application Gatewayを停止・再起動する方法 3選

2024/02/21に公開

Application Gatewayを停止したいときありませんか? 高価なAzureサービスかつリソースの再作成にも手間がかかるため、一時的に停止できるのであればそうしたいですよね。

実のところAzure Application Gatewayはポータルから停止・再起動できない Azureサービスの1つなのです。※理由は分かりません。

■やりたいこと

  • Azure Application Gateway のリソースを停止・再起動したい人
  • Azureが好きな人
  • ポータル以外でAzureを操作したい人

■結論(3パターンあります)

  • Azure CLI を利用する方法
  • Az PowerShell を利用する方法
  • Azure REST API を利用する方法

※ 本ブログの解説ではPowerShell 7系を利用しています。

■前提条件

# コマンドで使用する必要なパラメータを定義する
$tenantId = '<テナントID>'
$subscriptionId = '<サブスクID>'
$applicationGatewayName = '<アプリケーションゲートウェイ名>'
$resourceGroupName = '<リソースグループ名>'

■(1) Azure CLI を利用する

前提操作
# Microsoft Entra ID(旧:Azure AD テナント)にログインする
az login --tenant $tenantId

# アクティブなサブスクリプションを設定する
az account set --subscription $subscriptionId
Application Gatewayを停止する
az network application-gateway stop `
 --name $applicationGatewayName `
 --resource-group $resourceGroupName
Application Gatewayを再起動する
az network application-gateway start `
 --name $applicationGatewayName `
 --resource-group $resourceGroupName

■(2) Az PowerShell を利用する

前提操作
# ※事前にPowerShell Gallery パッケージをインストールしましょう(既にインストール済みの場合スキップしてください)
Install-Module -Name Az -Scope CurrentUser -Repository PSGallery -AllowClobber

# MEIDへのログインとサブスクリプションを設定する
Connect-AzAccount -TenantId $tenantId -SubscriptionId $subscriptionId
Application Gatewayを停止する
# アプリケーションゲートウェイのリソース情報を$AppGwに格納する(OperationalState = 'Running')
$AppGw = Get-AzApplicationGateway `
 -Name $applicationGatewayName `
 -ResourceGroupName $resourceGroupName

Stop-AzApplicationGateway -ApplicationGateway $AppGw
Application Gatewayを再起動する
# アプリケーションゲートウェイのリソース情報を$AppGwに格納する(OperationalState = 'Stopped')
$AppGw = Get-AzApplicationGateway `
 -Name $applicationGatewayName `
 -ResourceGroupName $resourceGroupName

Start-AzApplicationGateway -ApplicationGateway $AppGw

■(3) Azure REST API を利用する

前提操作
# ※事前にPowerShell Gallery パッケージをインストールしましょう(既にインストール済みの場合スキップしてください)
Install-Module -Name Az -Scope CurrentUser -Repository PSGallery -AllowClobber

# MEIDへのログインとサブスクリプションを設定する
Connect-AzAccount -TenantId $tenantId -SubscriptionId $subscriptionId

# Token情報を$getAccessに格納する(Bearer tokenになります)
$getAccess = Get-AzAccessToken
Application Gatewayを停止するREST APIを定義する
$url = "https://management.azure.com/subscriptions/" + $subscriptionId + "/resourceGroups/" + $resourceGroupName + "/providers/Microsoft.Network/applicationGateways/" + $applicationGatewayName + "/stop?api-version=2023-09-01"
Application Gatewayを再起動するREST APIを定義する
$url = "https://management.azure.com/subscriptions/" + $subscriptionId + "/resourceGroups/" + $resourceGroupName + "/providers/Microsoft.Network/applicationGateways/" + $applicationGatewayName + "/start?api-version=2023-09-01"
REST APIを実行する
$method = "POST"
$authHeader = "Bearer " + $getaccess.Token 
$requestHeader = @{Authorization = $authHeader}
$contenttype = "application/json"

Invoke-WebRequest -Uri $url -Method $method -Headers $requestHeader -ContentType $contenttype

■参考サイト

Discussion