안녕하세요.
실무에서 사용하는 클라우드 프로그래밍 강사 천강민입니다.
Terraform 1.8 버전에서 provider-defined functions
라는 기능이 출시 됐습니다.
간단히 얘기하면, 프로바이더 레벨에서 함수를 지원하는건데요. 바로 예시를 보면,
terraform {
required_providers {
aws = {
source = "hashicorp/aws"
}
}
}
provider "aws" {}
# result:
# {
# "partition": "aws",
# "service": "iam",
# "region": "",
# "account_id": "444455556666",
# "resource": "role/example",
# }
output "role" {
value = provider::aws::arn_parse("arn:aws:iam::444455556666:role/example")
}
# result:
# {
# "partition": "aws",
# "service": "elasticloadbalancing",
# "region": "us-east-2",
# "account_id": "123456789012",
# "resource": "loadbalancer/app/my-load-balancer/1234567890123456",
# }
output "elb" {
value = provider::aws::arn_parse("arn:aws:elasticloadbalancing:us-east-2:123456789012:loadbalancer/app/my-load-balancer/1234567890123456")
}
(미쳤다...)
나온지 얼마 안된 기능이기 때문에 기능이 확실히 많이 부족하지만, 선언형 언어를 다양한 내장함수를 통해 절차적으로 사용해야하는 경우가 있었는데(split 후에 인덱스 접근해서 local에 저장하고...), 조금 더 선언적으로 지원이 되어가는 것 같습니다.
매우 따끈따근한 기능이라서 엄청 간단합니다. 혹시 보실 분들은 링크 참고하세요!
별별 함수들이 생겨날걸 생각하니 그 동안 내장함수 찾아서 구현했던 것들에 대해 보상받은 기분이네요. 해당 내용은 조금 더 파악해보고 별도로 강의 제작하여 업로드도 진행 예정입니다!
감사합니다.