この記事は、開発者が Azure を使い始めるのに役立つ 7 つの記事シリーズのパート 5 です。
- パート1: 開発者向けの Azure の概要
- パート 2: 開発者向けの主要な Azure サービス
- パート 3: Azure でアプリケーションをホストする
- パート 4: アプリを Azure サービスに接続する
- パート 5: Azure でリソースを作成および管理する方法
- パート 6: Azure アプリを構築するための主要な概念
- パート 7: 請求方法
Azure には、アプリケーションが使用するリソースを作成および管理するためのさまざまなツールが用意されています。
さまざまなツールでさまざまなユース ケースがサポートされ、ほとんどの Azure 開発者はジョブに応じてツールの組み合わせを使用します。 たとえば、次のような場合が考えられます。
新しいアプリケーションの Azure リソースのプロトタイプを作成するときは、Azure portal や VS Code 用の Azure Tools 拡張機能を使用します。 GUI ツールは、新しいサービスを作成するプロセスを導き、ドロップダウン メニューやその他のグラフィカル要素を使用してサービスのオプションを確認して選択できるようにします。
Azure CLI またはAzure PowerShell を使用してスクリプトを記述して、一般的なタスクを自動化します。 たとえば、Azure App Service、データベース、BLOB ストレージで構成される新しい Web アプリの基本的な開発環境を作成するスクリプトを作成できます。 スクリプトを記述すると、一貫性のあるリソースの作成が保証され、UI を使用するよりも高速になります。
コードとしてのインフラストラクチャ (IaC) ツールを使用して、Azure リソースを宣言的にデプロイおよび管理します。 Terraform、Ansible、Bicep などのツールを使用すると、宣言構文で Azure リソースを体系化し、環境間で一貫したデプロイを確保し、環境のずれを防ぐことができます。
Azure portal
Azure portal は、Azure リソースを管理するために設計された Web ベースのインターフェイスです。 Azure porta の機能:
- Azure リソースを作成および管理するための使いやすい Web ベースの UI
- 構成可能なダッシュボードを作成する
- サブスクリプションの設定と課金情報にアクセスする
VS Code Azure Tools 拡張機能パック
Visual Studio Code を使用する開発者は、VS Code 用 Azure Tools Extension Pack を使用して、VS Code で Azure リソースを直接管理します。 Azure Tools Extension Pack を使用すると、次のことができます。
- Azure App Service を使用して Web サイトにコードを作成、管理、デプロイする
- Azure データベースを作成、参照、およびクエリする
- VS Code で Azure Functions を直接作成、デバッグ、デプロイする
- VS Code でコンテナー化されたアプリケーションをデプロイする
機能の完全な一覧については、拡張機能のダウンロード ページを参照してください。
コマンド ライン ツール
コマンド ライン ツールでは、効率、再現性、および定期的なタスクをスクリプト化する機能が提供されます。 Azure には、Azure CLI と Azure PowerShell という 2 つのコマンド ライン ツールが用意されています。 どちらのツールも機能的に同等であるため、ワークフローに適したものを選択します。
Azure CLI
Azure CLI は、Windows、Linux、macOS で実行されるクロスプラットフォーム のコマンド ライン ツールです。 Azure CLI:
- Azure リソースを管理するための簡潔で効率的な構文を備えています
- 結果を JSON として出力します (既定)。 結果は、YAML、ASCII テーブル、またはキーのないタブ区切りの値として書式設定することもできます
- JMESPath クエリを使用して出力を照会および整形する機能を提供します
Azure CLI コマンドは 、Bash などの一般的なスクリプト言語に簡単に統合され、一般的なタスクをスクリプト化できます。
LOCATION='eastus'
RESOURCE_GROUP_NAME='msdocs-expressjs-mongodb-tutorial'
WEB_APP_NAME='msdocs-expressjs-mongodb-123'
APP_SERVICE_PLAN_NAME='msdocs-expressjs-mongodb-plan-123'
RUNTIME='NODE|14-lts'
# Create a resource group
az group create \
--___location $LOCATION \
--name $RESOURCE_GROUP_NAME
# Create an app service plan
az appservice plan create \
--name $APP_SERVICE_PLAN_NAME \
--resource-group $RESOURCE_GROUP_NAME \
--sku B1 \
--is-linux
# Create the web app in the app service
az webapp create \
--name $WEB_APP_NAME \
--runtime $RUNTIME \
--plan $APP_SERVICE_PLAN_NAME \
--resource-group $RESOURCE_GROUP_NAME
Azure PowerShell
Azure PowerShell は、PowerShell から Azure リソースを直接管理するためのコマンドレットのセットです。 Azure PowerShell は PowerShell モジュールとしてインストールされ、Windows、macOS、Linux を含むすべてのプラットフォームで PowerShell 7.0.6 LTS および PowerShell 7.1.3 以降で動作します。 また Windows PowerShell 5.1 と互換性があります
Azure PowerShell は、PowerShell 言語と緊密に統合されます。 コマンドは動詞名詞形式を使用し、データは PowerShell オブジェクトとして返されます。 PowerShell スクリプトに既に慣れている場合は、Azure PowerShell が自然な選択です。
$___location = 'eastus'
$resourceGroupName = 'msdocs-blob-storage-demo-azps'
$storageAccountName = 'stblobstoragedemo999'
# Create a resource group
New-AzResourceGroup `
-Location $___location `
-Name $resourceGroupName
# Create the storage account
New-AzStorageAccount `
-Name $storageAccountName `
-ResourceGroupName $resourceGroupName `
-Location $___location `
-SkuName Standard_LRS
Azure CLI または Azure PowerShell の選択方法の詳細については、「適切なコマンド ライン ツールを選択する」の記事を参照してください。
コード ツールとしてのインフラストラクチャ
コードとしてのインフラストラクチャ は、宣言型構成ファイルを使用してリソースを管理およびプロビジョニングするプロセスです。 コードとしてのインフラストラクチャ ツールでは、宣言型の終了状態仕様を使用して、リソースのセットが毎回同じ方法で作成および構成されるように保証します。 コード ツールとしてのほとんどのインフラストラクチャでは、リソースを監視して、目的の状態で構成されたままであることを確認します。
Azure では、自動化された、繰り返し、信頼性の高いデプロイ用のコード ツールとして、さまざまなインフラストラクチャがサポートされています。
Bicep
Bicep は、宣言型の構文を使用して Azure リソースをデプロイするドメイン固有言語 (DSL) です。 簡潔な構文、信頼性の高いタイプ セーフ、およびコードの再利用のサポートが提供されます。
param ___location string = resourceGroup().___location
param storageAccountName string = 'toylaunch${uniqueString(resourceGroup().id)}'
resource storageAccount 'Microsoft.Storage/storageAccounts@2021-06-01' = {
name: storageAccountName
___location: ___location
sku: {
name: 'Standard_LRS'
}
kind: 'StorageV2'
properties: {
accessTier: 'Hot'
}
}
Terraform
Hashicorp Terraform は、クラウド インフラストラクチャのプロビジョニングおよび管理を行うためのオープン ソース ツールです。 クラウド リソースのトポロジを説明する構成ファイルでインフラストラクチャを体系化します。 Terraform CLI は、Azure に構成ファイルをデプロイし、そのバージョンを管理するための簡単なメカニズムを提供します。
provider "azurerm" {
features {}
}
resource "azurerm_resource_group" "main" {
name = "${var.prefix}-resources"
___location = var.___location
}
resource "azurerm_app_service_plan" "main" {
name = "${var.prefix}-asp"
___location = azurerm_resource_group.main.___location
resource_group_name = azurerm_resource_group.main.name
kind = "Linux"
reserved = true
sku {
tier = "Standard"
size = "S1"
}
}
resource "azurerm_app_service" "main" {
name = "${var.prefix}-appservice"
___location = azurerm_resource_group.main.___location
resource_group_name = azurerm_resource_group.main.name
app_service_plan_id = azurerm_app_service_plan.main.id
site_config {
linux_fx_version = "NODE|10.14"
}
}
Ansible
Ansible は、クラウド プロビジョニング、構成管理、およびアプリケーションのデプロイを自動化するオープンソース製品です。 Ansible を使用すると、仮想マシン、コンテナー、ネットワーク、および完全なクラウド インフラストラクチャをプロビジョニングできます。 Ansible を使用すると、環境内のリソースのデプロイと構成を自動化することもできます。
- hosts: localhost
connection: local
vars:
resource_group: myResourceGroup
webapp_name: myfirstWebApp
plan_name: myAppServicePlan
___location: eastus
tasks:
- name: Create a resource group
azure_rm_resourcegroup:
name: "{{ resource_group }}"
___location: "{{ ___location }}"
- name: Create App Service on Linux with Java Runtime
azure_rm_webapp:
resource_group: "{{ resource_group }}"
name: "{{ webapp_name }}"
plan:
resource_group: "{{ resource_group }}"
name: "{{ plan_name }}"
is_linux: true
sku: S1
number_of_workers: 1
frameworks:
- name: "java"
version: "8"
settings:
java_container: tomcat
java_container_version: 8.5
Azure SDK と REST API
Azure リソースは、コードからプログラムで作成できます。 これにより、ユーザーの要求に応じて Azure リソースを動的にプロビジョニングするアプリケーションを作成できます。 Azure SDK には、.NET、Go、Java、JavaScript、Python のリソース管理パッケージが用意されており、コード内で Azure リソースを直接作成および管理できます。 または、Azure REST API を使用すると、RESTful エンドポイントへの HTTP 要求を使用して Azure リソースを管理できます。