この記事では、 [ Azure にデプロイ] ボタンを使用して、GitHub リポジトリまたは Azure ストレージ アカウントからリモート ARM JSON テンプレートをデプロイする方法について説明します。 このボタンは、GitHub リポジトリの README.md ファイルに直接追加できます。 または、リポジトリを参照する Web ページにボタンを追加することもできます。 この方法では、リモート Bicep ファイルのデプロイはサポートされていません。
デプロイのスコープは、テンプレート スキーマによって決まります。 詳細については、以下を参照してください。
必要なアクセス許可
Bicep ファイルまたは ARM テンプレートをデプロイするには、デプロイ対象のリソースに対する書き込みアクセス権が必要であり、さらに、Microsoft.Resources/deployments リソース タイプでのすべての操作に対するアクセス権が必要です。 たとえば、仮想マシンをデプロイするには、Microsoft.Compute/virtualMachines/write
および Microsoft.Resources/deployments/*
アクセス許可が必要です。 What-If 操作のアクセス許可要件も同じです。
ロールとアクセス許可の一覧については、Azure の組み込みロールに関するページを参照してください。
一般的な画像を使用する
ボタンを Web ページまたはリポジトリに追加するには、次のイメージを使用します。

<img src="https://aka.ms/deploytoazurebutton"/>
イメージは次のように表示されます。
テンプレートをデプロイするためのURLを作成する
このセクションでは、GitHub と Azure ストレージ アカウントに格納されているテンプレートの URL を取得する方法と、URL を書式設定する方法を示します。
GitHubに保存されたテンプレート
テンプレートの URL を作成するには、GitHub リポジトリ内のテンプレートの未加工の URL から始めます。 未加工の URL を表示するには、「 未加工」を選択します。
URL の形式は次のとおりです。
https://raw.githubusercontent.com/Azure/azure-quickstart-templates/master/quickstarts/microsoft.storage/storage-account-create/azuredeploy.json
注
プライベート GitHub リポジトリに格納されているテンプレートをデプロイするか、リンクされたテンプレートを参照するには、「 カスタムおよびセキュリティで保護された Azure Portal オファリングの作成」に記載されているカスタム ソリューションを参照してください。 GitHub トークンを Azure Key Vault からプルする Azure 関数を作成できます。
GitHub リポジトリではなく Azure Repos で Git を使用している場合でも、 [ Azure へのデプロイ ] ボタンを使用できます。 リポジトリが公開されていることを確認してください。 Items 操作を使用してテンプレートを取得します。 リクエストは次の形式で指定する必要があります。
https://dev.azure.com/{organization-name}/{project-name}/_apis/git/repositories/{repository-name}/items?scopePath={url-encoded-path}&api-version=6.0
Azure ストレージ アカウントに格納されたテンプレート
パブリックコンテナに格納されるテンプレートのURLの形式は次のとおりです。
https://{storage-account-name}.blob.core.windows.net/{container-name}/{template-file-name}
例えば次が挙げられます。
https://demostorage0215.blob.core.windows.net/democontainer/azuredeploy.json
テンプレートは SAS トークンで保護できます。 詳細については、「 SAS トークンを使用してプライベート ARM テンプレートをデプロイする方法」を参照してください。 次の URL は、SAS トークンを使用した例です。
https://demostorage0215.blob.core.windows.net/privatecontainer/azuredeploy.json?sv=2019-07-07&sr=b&sig=rnI8%2FvKoCHmvmP7XvfspfyzdHjtN4GPsSqB8qMI9FAo%3D&se=2022-02-16T17%3A47%3A46Z&sp=r
URLのフォーマット
URLを取得したら、URLをURLエンコードされた値に変換する必要があります。 オンライン エンコーダーを使用するか、コマンドを実行できます。 次の PowerShell の例は、値を URL エンコードする方法を示しています。
$url = "https://raw.githubusercontent.com/Azure/azure-quickstart-templates/master/quickstarts/microsoft.storage/storage-account-create/azuredeploy.json"
[uri]::EscapeDataString($url)
例の URL は、URL エンコード時に次の値を持ちます。
https%3A%2F%2Fraw.githubusercontent.com%2FAzure%2Fazure-quickstart-templates%2Fmaster%2Fquickstarts%2Fmicrosoft.storage%2Fstorage-account-create%2Fazuredeploy.json
各リンクは同じベースURLで始まります。
https://portal.azure.com/#create/Microsoft.Template/uri/
URL エンコードされたテンプレート リンクをベース URL の末尾に追加します。
https://portal.azure.com/#create/Microsoft.Template/uri/https%3A%2F%2Fraw.githubusercontent.com%2FAzure%2Fazure-quickstart-templates%2Fmaster%2Fquickstarts%2Fmicrosoft.storage%2Fstorage-account-create%2Fazuredeploy.json
リンクの完全なURLがあります。
[Azure へのデプロイを作成] ボタン
最後に、リンクと画像をまとめます。
GitHub リポジトリまたは Web ページの README.md ファイルに Markdown のボタンを追加するには、次を使用します。
[](https://portal.azure.com/#create/Microsoft.Template/uri/https%3A%2F%2Fraw.githubusercontent.com%2FAzure%2Fazure-quickstart-templates%2Fmaster%2Fquickstarts%2Fmicrosoft.storage%2Fstorage-account-create%2Fazuredeploy.json)
HTML の場合は、次を使用します。
<a href="https://portal.azure.com/#create/Microsoft.Template/uri/https%3A%2F%2Fraw.githubusercontent.com%2FAzure%2Fazure-quickstart-templates%2Fmaster%2Fquickstarts%2Fmicrosoft.storage%2Fstorage-account-create%2Fazuredeploy.json" target="_blank">
<img src="https://aka.ms/deploytoazurebutton"/>
</a>
Git と Azure リポジトリの場合、ボタンの形式は次のとおりです。
[](https://portal.azure.com/#create/Microsoft.Template/uri/https%3A%2F%2Fdev.azure.com%2Forgname%2Fprojectname%2F_apis%2Fgit%2Frepositories%2Freponame%2Fitems%3FscopePath%3D%2freponame%2fazuredeploy.json%26api-version%3D6.0)
テンプレートをデプロイする
完全なソリューションをテストするには、次のボタンを選択します。
ポータルには、パラメーター値を簡単に指定できるウィンドウが表示されます。 パラメーターには、テンプレートのデフォルト値が事前に入力されています。 テンプレートで定義されているキャメルケースのパラメーター名 storageAccountType は、ポータルに表示されるときにスペース区切りの文字列に変換されます。
次のステップ
- テンプレートの詳細については、「 ARM テンプレートの構造と構文を理解する」を参照してください。