내장 함수

내장 함수 (Built-in Functions)

Terraform 언어에는 표현식 안에서 호출해서 값을 변환하고 결합할 수 있는 여러 내장 함수가 있어요. 이 문서는 함수 호출의 기본 문법과 함께, Terraform이 제공하는 모든 내장 함수의 종류를 카테고리별로 정리한 목차 페이지예요.

출처: 문서

본문

Terraform 언어에는 표현식 내부에서 호출해 값을 변환하고 결합할 수 있는 여러 개의 내장 함수가 포함되어 있어요. 함수 호출의 일반적인 문법은 함수 이름 뒤에 괄호 안에 쉼표로 구분한 인자들을 넣는 형태예요.

max(5, 12, 9)

문법에 대한 더 자세한 내용은 Expressions 섹션의 Function Calls 문서를 참고해요.

프로바이더 정의 함수 (Provider-defined Functions)

Terraform 구성 언어에서는 직접 함수를 정의할 수 없지만, 함수를 노출하는 자체 프로바이더를 개발할 수 있어요. 사용자 정의 프로바이더에서 함수를 정의하는 방법은 Provider-defined functions 문서를 참고해요.

프로바이더 전용 함수를 사용할 때는 provider::<local-name>:: 접두어를 붙여요. 여기서 <local-name>required_providers 블록의 항목과 대응돼요. 다음 예시는 terraform 프로바이더의 encode_tfvars 함수를 호출해요.

provider::terraform::encode_tfvars({
  example = "Hello!"
})

이 문서는 내장 함수와 내장 프로바이더 정의 함수만 다뤄요. 외부 프로바이더가 정의한 함수는 해당 프로바이더가 Terraform Registry에 문서화해요.

함수 실험하기 (Experimenting with Functions)

terraform console 명령으로 Terraform 표현식 콘솔을 실행하면 내장 함수의 동작을 직접 실험해 볼 수 있어요.

> max(5, 12, 9)
12

각 함수 문서의 예시들은 콘솔 출력을 사용해서 다른 파라미터로 함수를 호출한 결과를 보여줘요.

구성 파일 유형별 함수 지원

표준 Terraform 구성 파일은 모든 함수를 지원하지만, Terraform Stacks 같은 다른 구성 유형은 배포 구성과 컴포넌트 구성에서 일부 함수만 지원해요. 다음 표들은 Terraform 구성 유형별 함수 지원을 정리한 것이에요.

숫자 함수 (Numeric functions)

함수 구성 유형 설명
ceil .hcl, .tfcomponent.hcl, .tfdeploy.hcl 주어진 값(분수일 수 있음)보다 크거나 같은 가장 가까운 정수를 반환해요.
floor .hcl, .tfcomponent.hcl, .tfdeploy.hcl 주어진 값(분수일 수 있음)보다 작거나 같은 가장 가까운 정수를 반환해요.
log .hcl, .tfcomponent.hcl, .tfdeploy.hcl 주어진 밑에서 주어진 숫자의 로그를 반환해요.
max .hcl, .tfcomponent.hcl, .tfdeploy.hcl 하나 이상의 숫자 집합에서 가장 큰 숫자를 반환해요.
min .hcl, .tfcomponent.hcl, .tfdeploy.hcl 하나 이상의 숫자 집합에서 가장 작은 숫자를 반환해요.
parseint .hcl, .tfcomponent.hcl, .tfdeploy.hcl 주어진 문자열을 지정된 밑의 정수 표현으로 해석해 결과 숫자를 반환해요.
pow .hcl, .tfcomponent.hcl, .tfdeploy.hcl 첫 번째 인자를 두 번째 인자의 거듭제곱으로 올려 지수를 계산해요.
signum .hcl 숫자의 부호를 판별해 -1, 0, 1 중 하나를 반환해요.

문자열 함수 (String functions)

함수 구성 유형 설명
chomp .hcl, .tfcomponent.hcl, .tfdeploy.hcl 문자열 끝의 개행 문자를 제거해요.
endswith .hcl 주어진 문자열이 주어진 접미사로 끝나면 true, 아니면 false를 반환해요.
format .hcl, .tfcomponent.hcl, .tfdeploy.hcl 사양 문자열에 따라 여러 값을 포맷해 문자열을 생성해요.
formatlist .hcl, .tfcomponent.hcl, .tfdeploy.hcl 사양 문자열에 따라 여러 값을 포맷해 문자열 리스트를 생성해요.
indent .hcl, .tfcomponent.hcl, .tfdeploy.hcl 여러 줄 문자열의 첫 줄을 제외한 각 줄 앞에 지정된 수의 공백을 추가해요.
join .hcl, .tfcomponent.hcl, .tfdeploy.hcl 지정된 구분자로 문자열 리스트의 모든 요소를 연결해 문자열을 생성해요.
lower .hcl, .tfcomponent.hcl, .tfdeploy.hcl 주어진 문자열의 모든 대문자를 소문자로 변환해요.
regex .hcl, .tfcomponent.hcl, .tfdeploy.hcl 문자열에 정규식을 적용해 일치하는 하위 문자열을 반환해요.
regexall .hcl, .tfcomponent.hcl, .tfdeploy.hcl 문자열에 정규식을 적용해 모든 일치 항목의 리스트를 반환해요.
replace .hcl 주어진 문자열에서 다른 하위 문자열을 검색하고 각 항목을 주어진 대체 문자열로 바꿔요.
split .hcl, .tfcomponent.hcl, .tfdeploy.hcl 주어진 문자열을 구분자가 나타나는 모든 위치에서 나눠 리스트를 생성해요.
startswith .hcl 주어진 문자열이 주어진 접두사로 시작하면 true를 반환해요.
strcontains .hcl 첫 번째 문자열이 두 번째 문자열을 포함하면 true를 반환해요.
strrev .hcl, .tfcomponent.hcl, .tfdeploy.hcl 문자열의 문자 순서를 뒤집어요.
substr .hcl, .tfcomponent.hcl, .tfdeploy.hcl 오프셋과 길이로 주어진 문자열에서 하위 문자열을 추출해요.
templatestring .hcl 변수 집합을 사용해 문자열을 템플릿으로 렌더링해요.
title .hcl, .tfcomponent.hcl, .tfdeploy.hcl 주어진 문자열의 각 단어 첫 글자를 대문자로 변환해요.
trim .hcl, .tfcomponent.hcl, .tfdeploy.hcl 주어진 문자열의 시작과 끝에서 지정된 문자 집합을 제거해요.
trimprefix .hcl, .tfcomponent.hcl, .tfdeploy.hcl 주어진 문자열의 시작에서 지정된 접두사를 제거해요.
trimsuffix .hcl, .tfcomponent.hcl, .tfdeploy.hcl 주어진 문자열의 끝에서 지정된 접미사를 제거해요.
trimspace .hcl, .tfcomponent.hcl, .tfdeploy.hcl 주어진 문자열의 시작과 끝에서 모든 공백 문자를 제거해요.
upper .hcl, .tfcomponent.hcl, .tfdeploy.hcl 주어진 문자열의 모든 소문자를 대문자로 변환해요.

컬렉션 함수 (Collection functions)

함수 구성 유형 설명
alltrue .hcl 주어진 컬렉션의 모든 요소가 true이거나 "true"이면, 또는 컬렉션이 비어 있으면 true를 반환해요.
anytrue .hcl 주어진 컬렉션의 어떤 요소든 true이거나 "true"이면, 또는 비어 있으면 true를 반환해요.
chunklist .hcl 단일 리스트를 고정 크기 청크로 나눠 리스트의 리스트를 반환해요.
coalesce .hcl 여러 인자를 받아 null이나 빈 문자열이 아닌 첫 번째 값을 반환해요.
coalescelist .hcl, .tfcomponent.hcl, .tfdeploy.hcl 여러 리스트 인자를 받아 비어 있지 않은 첫 번째 값을 반환해요.
compact .hcl, .tfcomponent.hcl, .tfdeploy.hcl 문자열 리스트를 받아 null이나 빈 문자열 요소를 제거한 새 리스트를 반환해요.
concat .hcl, .tfcomponent.hcl, .tfdeploy.hcl 두 개 이상의 리스트를 받아 하나의 리스트로 결합해요.
contains .hcl, .tfcomponent.hcl, .tfdeploy.hcl 첫 번째 인자의 리스트/튜플/집합이 두 번째 인자의 값과 같은 요소를 하나 이상 포함하는지 판별해요.
distinct .hcl, .tfcomponent.hcl, .tfdeploy.hcl 리스트를 받아 중복 요소를 제거한 새 리스트를 반환해요.
element .hcl, .tfcomponent.hcl, .tfdeploy.hcl 리스트에서 단일 요소를 가져와요.
flatten .hcl, .tfcomponent.hcl, .tfdeploy.hcl 리스트를 받아 리스트인 요소를 내용의 평평한 시퀀스로 대체해요.
index .hcl 리스트에서 주어진 값의 첫 번째 요소를 찾아요.
keys .hcl, .tfcomponent.hcl, .tfdeploy.hcl 맵을 받아 그 맵의 키를 담은 리스트를 반환해요.
length .hcl 주어진 리스트, 맵, 문자열의 길이를 반환해요.
list Terraform 0.12 이후 폐기 tolist를 사용해요.
lookup .hcl 키가 주어지면 맵에서 단일 요소의 값을 가져와요.
map Terraform 0.12 이후 폐기 tomap을 사용해요.
matchkeys .hcl 다른 리스트의 값 인덱스와 일치하는 인덱스의 요소 부분 집합을 한 리스트에서 가져와 새 리스트를 구성해요.
merge .hcl, .tfcomponent.hcl, .tfdeploy.hcl 임의 개수의 맵이나 객체를 받아 모든 인자의 요소를 병합한 단일 맵/객체를 반환해요.
one .hcl 주어진 리스트/집합/튜플에서 유일한 요소를 반환하고, 비어 있으면 null, 값이 둘 이상이면 오류를 발생해요.
range .hcl, .tfcomponent.hcl, .tfdeploy.hcl 시작값, 한계값, 간격값을 사용해 숫자 리스트를 생성해요.
reverse .hcl, .tfcomponent.hcl, .tfdeploy.hcl 시퀀스를 받아 같은 길이로 요소 순서만 뒤집은 새 시퀀스를 생성해요.
setintersection .hcl, .tfcomponent.hcl, .tfdeploy.hcl 여러 집합을 받아 모든 집합이 공통으로 가진 요소만 담은 단일 집합을 생성해요.
setproduct .hcl, .tfcomponent.hcl, .tfdeploy.hcl 모든 집합에서 요소의 가능한 조합을 데카르트 곱으로 계산해요.
setsubtract .hcl, .tfcomponent.hcl, .tfdeploy.hcl 첫 번째 집합에 있지만 두 번째 집합에는 없는 요소를 담은 새 집합을 반환해요.
setunion .hcl, .tfcomponent.hcl, .tfdeploy.hcl 여러 집합을 받아 모든 집합의 요소를 담은 단일 집합을 생성해요.
slice .hcl, .tfcomponent.hcl, .tfdeploy.hcl 리스트 안에서 연속된 일부 요소를 추출해요.
sort .hcl, .tfcomponent.hcl, .tfdeploy.hcl 문자열 리스트를 받아 사전순으로 정렬한 새 리스트를 반환해요.
sum .hcl 숫자 리스트나 집합을 받아 그 숫자들의 합을 반환해요.
transpose .hcl 문자열 리스트의 맵을 받아 키와 값을 바꿔 문자열 리스트의 새 맵을 생성해요.
values .hcl, .tfcomponent.hcl, .tfdeploy.hcl 맵을 받아 그 맵 요소의 값들을 담은 리스트를 반환해요.
zipmap .hcl, .tfcomponent.hcl, .tfdeploy.hcl 키 리스트와 대응하는 값 리스트로 맵을 구성해요.

인코딩 함수 (Encoding functions)

함수 구성 유형 설명
base64decode .hcl Base64 문자 시퀀스를 포함한 문자열을 받아 원래 문자열을 반환해요.
base64encode .hcl 문자열에 Base64 인코딩을 적용해 인코딩된 문자열을 반환해요.
base64gzip .hcl gzip으로 HCL 문자열을 압축한 뒤 Base64 인코딩으로 문자열을 인코딩해요.
csvdecode .hcl, .tfcomponent.hcl, .tfdeploy.hcl CSV 형식 데이터를 포함한 문자열을 디코딩해 그 데이터를 나타내는 맵 리스트를 생성해요.
jsondecode .hcl, .tfcomponent.hcl, .tfdeploy.hcl 주어진 문자열을 JSON으로 해석해 그 문자열을 디코딩한 결과를 반환해요.
jsonencode .hcl, .tfcomponent.hcl, .tfdeploy.hcl 주어진 값을 JSON 문법을 사용해 문자열로 인코딩해요.
textdecodebase64 .hcl 이전에 Base64로 인코딩된 문자열을 디코딩한 뒤 결과를 지정된 문자 인코딩의 문자로 해석해요.
textencodebase64 .hcl 주어진 문자열의 유니코드 문자를 지정된 문자 인코딩으로 인코딩하고 그 결과를 base64로 반환해요.
urlencode .hcl 주어진 문자열에 URL 인코딩을 적용해요.
yamldecode .hcl, .tfcomponent.hcl, .tfdeploy.hcl 문자열을 YAML의 일부로 파싱해 그 값의 표현을 생성해요.
yamlencode .hcl, .tfcomponent.hcl, .tfdeploy.hcl 주어진 값을 YAML 1.2 블록 문법을 사용해 문자열로 인코딩해요.

파일시스템 함수 (Filesystem functions)

함수 구성 유형 설명
abspath .hcl 파일시스템 경로를 담은 문자열을 받아 절대 경로로 변환해요.
dirname .hcl 파일시스템 경로를 담은 문자열을 받아 마지막 부분을 제거해요.
pathexpand .hcl ~ 세그먼트로 시작할 수 있는 파일시스템 경로를 받아 그 세그먼트를 현재 사용자의 홈 디렉터리 경로로 바꿔요.
basename .hcl 파일시스템 경로를 담은 문자열을 받아 마지막 부분만 남기고 나머지를 제거해요.
file .hcl 주어진 경로의 파일 내용을 읽어 문자열로 반환해요.
fileexists .hcl 주어진 경로에 파일이 존재하는지 판별해요.
fileset .hcl 경로와 패턴이 주어지면 일반 파일 이름 집합을 열거해요.
filebase64 .hcl 주어진 경로의 파일 내용을 읽어 base64로 인코딩된 문자열로 반환해요.
templatefile .hcl 주어진 경로의 파일을 읽고 제공된 템플릿 변수 집합을 사용해 내용을 템플릿으로 렌더링해요.

날짜·시간 함수 (Date and time functions)

함수 구성 유형 설명
formatdate .hcl, .tfcomponent.hcl, .tfdeploy.hcl 타임스탬프를 다른 시간 형식으로 변환해요.
plantimestamp .hcl Terraform이 플랜을 만드는 시점의 UTC 타임스탬프를 RFC 3339 형식으로 반환해요.
timeadd .hcl, .tfcomponent.hcl, .tfdeploy.hcl 타임스탬프에 기간을 더해 새 타임스탬프를 반환해요.
timecmp .hcl 두 타임스탬프를 비교해 그 시점들의 순서를 나타내는 숫자를 반환해요.
timestamp .hcl 현재 시각의 UTC 타임스탬프를 RFC 3339 형식으로 반환해요.

해시·암호 함수 (Hash and crypto functions)

함수 구성 유형 설명
base64sha256 .hcl 주어진 문자열의 SHA256 해시를 계산하고 Base64로 인코딩해요.
base64sha512 .hcl 주어진 문자열의 SHA512 해시를 계산하고 Base64로 인코딩해요.
bcrypt .hcl Blowfish 암호를 사용해 주어진 문자열의 해시를 계산해 Modular Crypt Format 문자열을 반환해요.
filebase64sha256 .hcl 리터럴 문자열 대신 주어진 파일 내용을 해시하는 base64sha256 변형이에요.
filebase64sha512 .hcl 리터럴 문자열 대신 주어진 파일 내용을 해시하는 base64sha512 변형이에요.
filemd5 .hcl 리터럴 문자열 대신 주어진 파일 내용을 해시하는 md5 변형이에요.
filesha1 .hcl 리터럴 문자열 대신 주어진 파일 내용을 해시하는 sha1 변형이에요.
filesha256 .hcl 파일 내용의 SHA-256 해시를 계산해요.
filesha512 .hcl 파일 내용의 SHA-512 해시를 계산해요.
md5 .hcl 주어진 문자열의 MD5 해시를 계산해 16진수로 인코딩해요.
rsadecrypt .hcl RSA 암호화된 암호문을 복호화해 해당 평문을 반환해요.
sha1 .hcl 주어진 문자열의 SHA1 해시를 계산해 16진수로 인코딩해요.
sha256 .hcl 주어진 문자열의 SHA256 해시를 계산해 16진수로 인코딩해요.
sha512 .hcl 주어진 문자열의 SHA512 해시를 계산해 16진수로 인코딩해요.
uuid .hcl 무작위 바이트를 사용해 UUID 형식 문자열을 생성해요.
uuidv5 .hcl RFC 4122 4.3절에 설명된 이름 기반 UUID를 생성해요.

IP 네트워크 함수 (IP network functions)

함수 구성 유형 설명
cidrhost .hcl 주어진 IP 네트워크 주소 접두어 안에서 주어진 호스트 번호에 대한 전체 호스트 IP 주소를 계산해요.
cidrnetmask .hcl CIDR 표기법으로 주어진 IPv4 주소 접두어를 서브넷 마스크 주소로 변환해요.
cidrsubnet .hcl 주어진 IP 네트워크 주소 접두어 안에서 서브넷 주소를 계산해요.
cidrsubnets .hcl 특정 CIDR 접두어 안에서 연속된 IP 주소 범위 시퀀스를 계산해요.

타입 변환 함수 (Type conversion functions)

함수 구성 유형 설명
can .hcl, .tfcomponent.hcl, .tfdeploy.hcl 주어진 표현식을 평가해 오류 없이 결과를 만들었는지 불리언 값을 반환해요.
ephemeralasnull .hcl 임시 값을 받아 null을 반환해요.
issensitive .hcl Terraform이 값을 민감(sensitive)하게 취급하면 true를 반환해요.
nonsensitive .hcl 민감한 값을 받아 민감 표시를 제거한 복사본을 반환해 그 값을 노출해요.
sensitive .hcl 어떤 값이든 받아 Terraform이 민감하게 취급하도록 표시한 복사본을 반환해요.
tobool .hcl 인자를 불리언 값으로 변환해요.
tolist .hcl 인자를 리스트 값으로 변환해요.
tomap .hcl 인자를 맵 값으로 변환해요.
tonumber .hcl 인자를 숫자 값으로 변환해요.
toset .hcl 인자를 집합 값으로 변환해요.
tostring .hcl 인자를 문자열 값으로 변환해요.
try .hcl, .tfcomponent.hcl, .tfdeploy.hcl 모든 인자 표현식을 차례로 평가해 오류를 만들지 않는 첫 번째 결과를 반환해요.
type .hcl 주어진 값의 타입을 반환해요.

Terraform 전용 함수 (Terraform-specific functions)

함수 구성 유형 설명
provider::terraform::encode_tfvars .hcl 객체 값을 받아 그 객체를 설명하는 문자열을 생성해요.
provider::terraform::decode_tfvars .hcl .tfvars 파일 내용을 담은 문자열을 받아 그 파일이 정의한 원시 변수 값을 설명하는 객체를 반환해요.
provider::terraform::encode_expr .hcl 어떤 값이든 받아 그 값을 근사하는 Terraform 언어 표현식 문법 문자열을 생성해요.

더 알아보기 (Learn more)