반응형
Terraform을 사용하여 Oracle Cloud Infrastructure(OCI)에서 VM 인스턴스를 생성하려고 할 때 다음과 같은 오류가 발생했다.
Error: 400-CannotParseRequest, Incorrectly formatted request. Please refer to our documentation for help.
Request Target: POST https://iaas.ap-chuncheon-1.oraclecloud.com/20160918/instances
Terraform 코드에서 compartment_id
와 availability_domain
값을 직접 변수에서 가져와 사용하고 있었다.
resource "oci_core_instance" "instance1" {
availability_domain = var.availability_domain
compartment_id = var.compartment_id
shape = "VM.Standard.E2.1.Micro"
create_vnic_details {
subnet_id = var.subnet_id
assign_public_ip = true
}
source_details {
source_type = "image"
source_id = var.image_id
}
}
원인 분석
OCI에서 availability_domain
과 compartment_id
를 올바르게 가져오지 못해 요청이 잘못된 형식(400-CannotParseRequest
)으로 전달된 것이 원인이었다.
해결 방법
Terraform의 data
블록을 활용하여 compartment_id
와 availability_domain
값을 동적으로 가져오도록 수정했다.
수정된 코드
data "oci_identity_compartment" "compartment1" {
id = var.compartment_id
}
data "oci_identity_availability_domain" "availability_domain1" {
compartment_id = var.tenancy_ocid
ad_number = 1
}
resource "oci_core_instance" "instance1" {
availability_domain = data.oci_identity_availability_domain.availability_domain1.name
compartment_id = data.oci_identity_compartment.compartment1.id
shape = "VM.Standard.E2.1.Micro"
create_vnic_details {
subnet_id = var.subnet_id
assign_public_ip = true
}
source_details {
source_type = "image"
source_id = var.image_id
}
}
결론
Terraform에서 OCI 인스턴스를 생성할 때 availability_domain
과 compartment_id
를 직접 변수로 할당하는 대신, data
블록을 사용하여 동적으로 조회해야 한다. 이를 통해 잘못된 요청 형식 오류(400-CannotParseRequest
)를 방지할 수 있다.
반응형
'DevOps' 카테고리의 다른 글
[k8s] 프라이빗 클라우드 구축을 위한 K3s 추천 가이드 (0) | 2025.02.01 |
---|