action 블록 레퍼런스

action 블록 레퍼런스 (action block reference)

action 블록은 Terraform CLI를 사용하거나 apply 작업 중에 호출할 수 있는, 프로바이더가 정의한 작업(action)을 지정해요. 액션은 프로바이더에 내장된 사전 정의 작업으로, Ansible 플레이북이나 Lambda 작업처럼 Terraform 외부의 자동화를 트리거하는 데 사용돼요. 자세한 내용은 액션 호출하기 문서를 참고하세요.

출처: 문서

본문

구성 모델 (Configuration model)

action 블록은 다음 구성을 지원해요.

구성 요소 설명
action "<TYPE>" "<LABEL>" 블록
config 인자 맵 또는 중첩 블록
count 숫자 · for_each와 상호 배타적
for_each 문자열 맵 또는 집합 · count와 상호 배타적
provider 참조 (reference)

완전한 구성 (Complete configuration)

다음 action 블록에는 지원되는 모든 내장 인자가 포함돼 있어요.

action "<TYPE>" "<LABEL>" {
   config {
      <PROVIDER ARGUMENTS>
   }
   for_each = {          # `for_each` and `count` are mutually exclusive
      <KEY> = <VALUE>
   }
   for_each = [       # `for_each` accepts a map or a set of strings
      "<VALUE>",
      "<VALUE>"
  ]
   count = <NUMBER>      # `for_each` and `count` are mutually exclusive
   provider = <REFERENCE.TO.ALIAS>
}

사양 (Specification)

action 블록은 다음 구성을 지원해요.

action "<TYPE>" "<LABEL>"

모든 action 블록에 대해 다음 인자를 설정해야 해요.

  • TYPE: 호출할 액션의 타입을 지정해요. 선언할 수 있는 액션 타입에 대한 정보는 프로바이더 문서를 참고하세요.
  • LABEL: action 블록의 라벨을 지정해요. Terraform은 블록에 의해 구성된 액션의 고유 이름의 일부로 이 라벨을 사용해요. 라벨은 사용자가 액션을 호출할 때 Terraform이 수행하는 작업에는 영향을 주지 않아요. 표현식 문법과 라벨 권장 사항은 명명된 값 참조리소스 이름 짓기를 참고하세요.

구성의 다른 곳에서 액션을 참조할 때는 action.<TYPE>.<LABEL> 구문을 사용해요.

config

config 블록은 프로바이더가 정의한 인자 또는 중첩 블록의 값을 설정해요.

action "<TYPE>" "<LABEL>" {
  config {
    <provider-specific arguments>
  }
  # . . .
}

config 블록은 인자, 중첩 블록, 또는 둘의 조합을 포함할 수 있어요. 호출하려는 액션 타입에 대해 config 블록에서 구성할 수 있는 인자는 프로바이더 문서를 참고하세요. config 블록 안에는 caller라는 특수한 심볼이 있는데, 이는 action_trigger에서 액션을 호출하는 리소스 인스턴스의 값을 나타내요.

요약 (Summary)
  • 데이터 타입: 인자 또는 중첩 블록의 맵 (Map of arguments or nested blocks)
  • 예시: 액션 정의하기

count

count 메타 인자는 같은 구성을 사용해 액션을 여러 번 호출하도록 Terraform에 지시해요.

action "<TYPE>" "<LABEL>" {
  count = <number>
}

count는 **메타 인자(meta-argument)**예요. 메타 인자는 Terraform 언어에 내장된 것으로, Terraform이 리소스를 생성하는 방식을 제어해요. 자세한 내용은 count 레퍼런스를 참고하세요.

for_each

for_each 메타 인자는 목록의 각 멤버 또는 맵의 각 키-값 쌍에 대해 액션을 한 번씩 호출하도록 Terraform에 지시해요.

action "<TYPE>" "<LABEL>" {
  for_each = [ "<VALUE>" ]
  # . . .
}
action "<TYPE>" "<LABEL>" {
  for_each = {
    "<KEY>" = "<VALUE>"
  }
}

for_each메타 인자예요. 자세한 내용은 for_each 레퍼런스를 참고하세요.

provider

provider 인자는 액션을 호출할 때 대체 프로바이더 구성을 사용하도록 Terraform에 지시해요.

action "<TYPE>" "<LABEL>" {
  provider = <provider>.<alias>
}

provider메타 인자예요. 자세한 내용은 provider 레퍼런스를 참고하세요.

예시 (Examples)

다음 예시는 일반적인 사용 사례에 대한 구성을 보여줘요.

액션 정의하기 (Define an action)

다음 예시는 aws_lambda_invoke 액션을 추가해요. CLI를 사용해 액션을 호출하거나, 리소스 수명주기 상태 동안 Terraform이 액션을 호출하도록 구성할 수 있어요. 호출 방법에 대한 지침은 액션 호출하기 문서를 참고하세요.

action "aws_lambda_invoke" "example" {
  config {
    function_name = "123456789012:function:my-function:1"
    payload = jsonencode({
      key1 = "value1"
      key2 = "value2"
    })
  }
}

function_name 인자는 이름 또는 ARN으로 기존 AWS Lambda 함수를 참조해야 해요. 자세한 내용은 aws_lambda_invoke 문서를 참고하세요.

대체 프로바이더 구성 선택하기 (Select an alternate provider configuration)

다음 예시는 액션을 호출할 때 aws.alias 프로바이더 구성을 적용하도록 Terraform을 구성해요.

action "aws_lambda_invoke" "example" {
  provider = aws.alias
  config {
    function_name = "my_function"
    payload = jsonencode({
      key1 = "value1"
      key2 = "value2"
    })
  }
}

액션을 여러 번 호출하기 (Invoke an action multiple times)

count 또는 for_each 메타 인자를 추가하면 액션을 여러 번 호출할 수 있어요.

다음 예시에서 Terraform은 액션을 세 번 호출해요.

action "aws_lambda_invoke" "example" {
  count = 3
  config {
    function_name = "my_function"
    payload = jsonencode({
      key1 = "value1"
      key2 = "value2"
    })
  }
}

다음 예시에서 Terraform은 맵의 각 멤버에 대해 액션을 한 번씩 호출하므로, 두 번 호출해요.

action "aws_lambda_invoke" "example" {
  for_each = tomap({
    a_group       = "eastus"
    another_group = "westus2"
  })
  config {
    function_name = "my_function"
    payload = jsonencode({
      key1 = "value1"
      key2 = "value2"
    })
  }
}

더 알아보기 (Learn more)