0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

Azure aoutomationでコマンドレットが用意されていない動作を自動化した

Posted at

AzureAutomationを利用して、Azuremediaserviceのストリーミングエンドポイントの起動を自動化しました。
powershellコマンドレットにストリーミングエンドポイントの起動/停止が用意されておらず少し手こずったため備忘録も兼ねて投稿いたします。コマンドレットが用意されていない動作を自動化する際の一助となればと思います。

・課題

Azureリソースに対する操作を自動化する際に、Automationを利用可能ですが、一部の動作はまだpowershellのコマンドレットが用意されいません。(CLIではすでにコマンド化されていたりするなどまちまちです)

・解決策

今回はrestapiを使用しました。Azureのサービスはまずrestapiとしてリリースされます。ポータル上での操作もpowershell/CLIもこのapiをラッピングしたものに過ぎないのでrestapiを利用すれば事実上全ての操作をAutomationで行えます。

1.マネージドIDの作成、ロールの付与

今回の方法ではAutomationアカウントのマネージドIDを使用して認証を行うため、事前にマネージドキー作成しておきます。作成後マネージドIDに対して対象となるリソースを操作するために必要なロールを割り当てる必要があります。詳しくはこちらをご参照ください。

2.powershhellのRUNBOOKを作成する

Connect-AzAccount -IdentityとすることでAutomationアカウントのマネージドIDを使用してログインできます。
try
{
    "Logging in to Azure..."
    Connect-AzAccount -Identity
}
catch {
    Write-Error -Message $_.Exception
    throw $_.Exception
}

※事前にAutomationアカウントに対して対象リソースの操作に必要な権限を付与しておく必要があります。

$accesstoken = Get-AzAccessToken -TenantId "{TenantId}"

するとGet-AzAccessTokenコマンドでアクセトークンを取得できます。テナントIDは Get-AzTenant コマンドで取得できます。詳しくはこちら

tokenが手に入ったので、tokenをAuthorizationヘッダーに渡せばapiを呼び出せます。
必要な項目を埋めた上でinvoke-webrequestコマンドでリクエストを送信します。

$token = "Bearer " + $accesstoken.Token
$header = @{
    "Authorization" = $token;
    "Content-Type" = "application/json"
}
$uri = "https://management.azure.com/subscriptions/{suscriptionkey}/resourceGroups/{resourcegroupNmae}/providers/Microsoft.Media/mediaservices/{AcountName}/streamingEndpoints/default/start?api-version=2022-08-01"
$postRequest = @{
    Uri         = $uri
    Headers     = $header
    Method      = 'POST'
    ContentType = 'application/json'
}
$response = Invoke-WebRequest @postRequest

同様のやり方でAzureリソースに関する全ての操作をオートで実行できると思います。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?