내장 함수
내장 함수 (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)
- Function Calls (표현식) — 함수 호출 문법
- Type Constraints (타입 제약) — 값 타입
terraform console명령 — 함수 실험 도구- Terraform Registry — 외부 프로바이더 함수