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 샘플 리포지토리에서 찾을 수 있습니다. 아래 3개 파일 providers.tf, main.tf 및 variables.tf를 만듭니다. 변수는 명령줄에서 설정하거나 terraforms.tfvars 파일을 사용하여 설정할 수 있습니다.
주요 Terraform 매개 변수
다음 표에는 이 빠른 시작에서 사용되는 중요한 변수, 해당 범위, 제약 조건 및 예제 값이 요약되어 있습니다.
| 매개 변수 | Scope | 설명 및 제약 조건 | 예제 값 |
|---|---|---|---|
prefix |
이름 지정 | 모든 리소스 이름에 사용되는 접두사입니다. 구독당 소문자, 영숫자 및 고유해야 합니다. | cosmosdemo |
location |
리소스 그룹 | 리소스 그룹에 대한 Azure 지역입니다. 이 위치는 Cosmos DB 계정이 아닌 리소스 그룹에만 적용됩니다. | eastus |
cosmosdb_account_location |
Cosmos DB 계정 | Azure Cosmos DB 계정에 대한 Azure 지역입니다. 리소스 그룹 위치와 다를 수 있습니다. | eastus |
throughput |
데이터베이스(RU/s) | 초당 요청 단위(RU/s)로 SQL 데이터베이스에 대한 프로비전된 처리량입니다. 400~1,000,000RU/s 사이여야 합니다. | 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
}
세 개의 Cosmos DB 리소스가 기본 terraform 파일에 정의되어 있습니다.
Microsoft.DocumentDB/databaseAccounts: Azure Cosmos 계정을 만듭니다.
Microsoft.DocumentDB/databaseAccounts/sqlDatabases: 데이터베이스 수준 처리량(RU/s)을 사용하여 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 init
예상 결과: Terraform이 성공적으로 초기화되고 azurerm 공급자를 다운로드합니다. - terraform plan
예상 결과: 계획 출력에는 추가할 3개, 변경할 0, 삭제할 0이 표시됩니다. - terraform apply
예상 결과: 최종 출력에는 적용 완료가 포함됩니다. 리소스: 3개 추가, 변경 0개, 제거 0개.
- terraform init
배포 유효성 검사
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로 마이그레이션하기 위한 용량 계획을 수행하려고 하시나요? 용량 계획을 위해 기존 데이터베이스 클러스터에 대한 정보를 사용할 수 있습니다.
- 기존 데이터베이스 클러스터의 vCore 및 서버 수만 알고 있는 경우 vCore 또는 vCPU를 사용하여 요청 단위 예측을 참조하세요.
- 현재 데이터베이스 워크로드에 대한 일반적인 요청 비율을 알고 있는 경우 Azure Cosmos DB Capacity Planner를 사용하여 요청 단위 예측에 대해 읽어보세요.