Azure Cosmos DB は、あらゆる規模に対応する、オープン API を備えた Microsoft の高速 NoSQL データベースです。 Azure Cosmos DB を使用すると、キーと値のデータベース、ドキュメント データベース、グラフ データベースをすばやく作成し、クエリを実行できます。 クレジット カードまたは Azure サブスクリプションがない場合は、無料の Azure Cosmos DB 試用版アカウントをセットアップできます。 このクイックスタートでは、Terraform を使用してデプロイし、Azure Cosmos データベースを作成し、そのデータベース内にコンテナーを作成するプロセスについて説明します。 その後、そのコンテナーにデータを格納することができます。
Prerequisites
Azure サブスクリプションまたは Azure Cosmos DB の無料試用版アカウント
- Azure アカウントをお持ちでない場合は、開始する前に 無料アカウント を作成してください。
Terraform はローカル コンピューターにインストールする必要があります。 インストール手順については、こちらを参照してください。
Terraform ファイルを確認する
このクイック スタートで使用する Terraform ファイルは、terraform サンプル リポジトリにあります。 providers.tf、main.tf、variables.tf の 3 つのファイルを作成します。 変数は、コマンド ラインで設定することも、terraforms.tfvars ファイルを使用して設定することもできます。
主要な Terraform パラメーター
次の表は、このクイック スタートで使用される重要な変数、そのスコープ、制約、および値の例をまとめたものです。
| パラメーター | Scope | 説明と制約 | 値の例 |
|---|---|---|---|
prefix |
名前を付ける | すべてのリソース名に使用されるプレフィックス。 サブスクリプションごとに小文字、英数字、および一意である必要があります。 | cosmosdemo |
location |
リソース グループ | リソース グループの Azure リージョン。 この場所は、Cosmos DB アカウントではなく、リソース グループにのみ適用されます。 | eastus |
cosmosdb_account_location |
Cosmos DB アカウント | Azure Cosmos DB アカウントの Azure リージョン。 これは、リソース グループの場所とは異なる場合があります。 | eastus |
throughput |
データベース (RU/秒) | SQL データベースのプロビジョニング済みスループット (要求ユニット/秒 (RU/s))。 400 ~ 1,000,000 RU/秒である必要があります。 | 400 |
プロバイダー 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 ファイルには、3 つの Cosmos DB リソースが定義されています。
Microsoft.DocumentDB/databaseAccounts: Azure Cosmos アカウントを作成します。
Microsoft.DocumentDB/databaseAccounts/sqlDatabases: データベース レベルのスループット (RU/秒) で Azure Cosmos データベースを作成します。
Microsoft.DocumentDB/databaseAccounts/sqlDatabases/containers: Azure Cosmos コンテナーを作成します。
変数 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 を使用してデプロイする
- terraform ファイルを main.tf、variables.tf、providers.tf としてローカル コンピューターに保存します。
- Azure CLI または PowerShell を使用してターミナルにサインインする
- Terraform コマンドを使用してデプロイする
- terraform 初期化
予想される結果: Terraform が正常に初期化され、azurerm プロバイダーがダウンロードされます。 - Terraform プラン
予想される結果: プランの出力には 、追加する 3、変更する 0、破棄する 0 が表示されます。 - terraform 適用
予想される結果: 最終的な出力には、 適用の完了が含まれます。リソース: 3 が追加され、0 が変更され、0 が破棄されました。
- terraform 初期化
デプロイメントを検証する
Azure portal、Azure CLI、または Azure PowerShell を使用して、リソースグループ内のデプロイ済みリソースをリスト表示します。
az resource list --resource-group "your resource group name"
予想される結果: 出力には、 Microsoft.DocumentDB/databaseAccounts リソースとそのデータベースとコンテナーが一覧表示されます。
リソースをクリーンアップする
後続のクイック スタートおよびチュートリアルを引き続き実行する場合は、これらのリソースをそのまま残しておくことができます。 不要になったら、Azure portal、Azure CLI、または Azure PowerShell を使用して、リソース グループとそのリソースを削除します。
az group delete --name "your resource group name"
予想される結果: Azure CLI では、リソース グループの削除が確認され、サブスクリプションに一覧表示されなくなります。
次のステップ
このクイックスタートでは、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 を使用した要求ユニットの見積もりに関するページを参照してください。