오픈소스 url : https://github.com/NaverCloudPlatform/terraform-provider-ncloud
네이버 클라우드 API 문서 : https://api.ncloud-docs.com/docs
GetOk( ) 란?
GetOk("ParameterName") 함수는 사용자가 리소스에 입력한 값들을 읽어오는 함수입니다. 입력된 파라미터 이름으로 값을 읽어온 후, Value와 ok를 반환합니다.
GetOk 함수를 사용할 때의 문제
사용자가 아래와 같이 Zero-Value(0, false)를 값으로 입력할 경우, GetOk의 ok는 false로 받게 됩니다.
resource "resource" "name" {
...
cnt = 0
...
}
v, ok := GetOk("cnt")
// v = 0
// ok = false, 입력했지만, true가 아닌 false가 나옴
그런데 GetOk 함수는 보통 사용자의 값 입력 유무에 따라, 분기를 나눠 아래와 같이 사용합니다.
if v, ok := GetOk("paramName"); ok {
// 해당 param이 입력되었을 때, 로직
}
따라서, 사용자가 0값을 입력해도, 입력이 안된것으로 처리되어 문제가 발생하게 됩니다.
예를 들어, 아래의 코드에서는 사용자가 0을 입력해도, nil로 입력이 됩니다.
params{
...
reqParam: Int32PtrOrNil(GetOk("ParamName"))
...
}
해결법
Get 함수는 입력한 값이 있으면, 해당 값을 반환하고, 입력 값이 없다면 default 값으로 반환합니다.
따라서 GetOk 함수 대신 Get 함수로 변경해주고, default 값을 설정해줍니다.
schema {
...
"paramName": {
default : 100 // default 추가
},
...
}
params{
...
reqParam:int32(Get("paramName").(int))
...
}
'활동들~' 카테고리의 다른 글
429(Too Many Request) 에러 해결하기 (1) | 2024.05.13 |
---|---|
Pob Build Cost 프로젝트 (0) | 2024.04.20 |
[오픈소스] NCP 테라폼 validation 검증하기 (0) | 2024.02.21 |