Azure Cosmos DB は、あらゆる規模に対応する、オープン API を備えた Microsoft の高速 NoSQL データベースです。 Azure Cosmos DB を使用すると、キーと値のデータベース、ドキュメント データベース、グラフ データベースをすばやく作成し、クエリを実行できます。 クレジット カードまたは Azure サブスクリプションがない場合は、無料の Azure Cosmos DB 試用版アカウントをセットアップできます。 このクイックスタートでは、Terraform を使用してデプロイし、Azure Cosmos データベースを作成し、そのデータベース内にコンテナーを作成するプロセスについて説明します。 その後、そのコンテナーにデータを格納することができます。
[前提条件]
Azure サブスクリプションまたは Azure Cosmos DB の無料試用版アカウント
- Azure アカウントをお持ちでない場合は、開始する前に 無料アカウント を作成してください。
Terraform はローカル コンピューターにインストールする必要があります。 インストール手順については、こちらを参照してください。
Terraform ファイルを確認する
このクイック スタートで使用する Terraform ファイルは、terraform サンプル リポジトリにあります。 providers.tf、main.tf、variables.tf の 3 つのファイルを作成します。 変数は、コマンド ラインで設定することも、terraforms.tfvars ファイルを使用して設定することもできます。
プロバイダー Terraform ファイル
terraform {
required_version = ">= 1.0"
required_providers {
azurerm = {
source = "hashicorp/azurerm"
version = ">= 3.0, < 4.0"
}
random = {
source = "hashicorp/random"
version = ">= 3.0"
}
}
}
provider "azurerm" {
features {
resource_group {
prevent_deletion_if_contains_resources = false
}
}
}
メイン Terraform ファイル
resource "azurerm_resource_group" "example" {
name = "${random_pet.prefix.id}-rg"
location = var.location
}
resource "azurerm_cosmosdb_account" "example" {
name = "${random_pet.prefix.id}-cosmosdb"
location = var.cosmosdb_account_location
resource_group_name = azurerm_resource_group.example.name
offer_type = "Standard"
kind = "GlobalDocumentDB"
enable_automatic_failover = false
geo_location {
location = var.location
failover_priority = 0
}
consistency_policy {
consistency_level = "BoundedStaleness"
max_interval_in_seconds = 300
max_staleness_prefix = 100000
}
depends_on = [
azurerm_resource_group.example
]
}
resource "azurerm_cosmosdb_sql_database" "main" {
name = "${random_pet.prefix.id}-sqldb"
resource_group_name = azurerm_resource_group.example.name
account_name = azurerm_cosmosdb_account.example.name
throughput = var.throughput
}
resource "azurerm_cosmosdb_sql_container" "example" {
name = "${random_pet.prefix.id}-sql-container"
resource_group_name = azurerm_resource_group.example.name
account_name = azurerm_cosmosdb_account.example.name
database_name = azurerm_cosmosdb_sql_database.main.name
partition_key_path = "/definition/id"
partition_key_version = 1
throughput = var.throughput
indexing_policy {
indexing_mode = "consistent"
included_path {
path = "/*"
}
included_path {
path = "/included/?"
}
excluded_path {
path = "/excluded/?"
}
}
unique_key {
paths = ["/definition/idlong", "/definition/idshort"]
}
}
resource "random_pet" "prefix" {
prefix = var.prefix
length = 1
}
変数 Terraform ファイル
variable "prefix" {
type = string
default = "cosmosdb-manualscale"
description = "Prefix of the resource name"
}
variable "location" {
type = string
default = "Canada Central"
description = "Resource group location"
}
variable "cosmosdb_account_location" {
type = string
default = "Canada Central"
description = "Cosmos db account location"
}
variable "throughput" {
type = number
default = 400
description = "Cosmos db database throughput"
validation {
condition = var.throughput >= 400 && var.throughput <= 1000000
error_message = "Cosmos db manual throughput should be equal to or greater than 400 and less than or equal to 1000000."
}
validation {
condition = var.throughput % 100 == 0
error_message = "Cosmos db throughput should be in increments of 100."
}
}
メインの Terraform ファイルには、3 つの Cosmos DB リソースが定義されています。
Microsoft.DocumentDB/databaseAccounts: Azure Cosmos アカウントを作成します。
Microsoft.DocumentDB/databaseAccounts/sqlDatabases: Azure Cosmos データベースを作成します。
Microsoft.DocumentDB/databaseAccounts/sqlDatabases/containers: Azure Cosmos コンテナーを作成します。
terraform を使用してデプロイする
- terraform ファイルを main.tf、variables.tf、providers.tf としてローカル コンピューターに保存します。
- Azure CLI または PowerShell を使用してターミナルにサインインする
- Terraform コマンドを使用してデプロイする
- terraform 初期化
- Terraform プラン
- terraform 適用
デプロイメントを検証する
Azure portal、Azure CLI、または Azure PowerShell を使用して、リソースグループ内のデプロイ済みリソースをリスト表示します。
az resource list --resource-group "your resource group name"
リソースをクリーンアップする
後続のクイック スタートおよびチュートリアルを引き続き実行する場合は、これらのリソースをそのまま残しておくことができます。 不要になったら、Azure portal、Azure CLI、または Azure PowerShell を使用して、リソース グループとそのリソースを削除します。
az group delete --name "your resource group name"
次のステップ
このクイックスタートでは、terraform で Azure Cosmos アカウント、データベース、コンテナーを作成し、デプロイを検証しました。 Azure Cosmos DB と terraform について詳しくは、引き続き以下の記事をご覧ください。
- Azure Cosmos DB の概要を確認する。
- Terraform に関する詳細情報。
- Azure Terraform プロバイダーに関する詳細情報。
- Terraform を使用して Cosmos DB を管理する
- Azure Cosmos DB への移行のための容量計画を実行しようとしていますか? 容量計画のために、既存のデータベース クラスターに関する情報を使用できます。
- 既存のデータベース クラスター内の仮想コアとサーバーの数のみがわかっている場合は、仮想コアまたは vCPU を使用した要求ユニットの見積もりに関するページを参照してください。
- 現在のデータベース ワークロードの標準的な要求レートがわかっている場合は、Azure Cosmos DB Capacity Planner を使用した要求ユニットの見積もりに関するページを参照してください。