본문 바로가기

개발하자

테라폼 리소스에 사용되기 전에 파일에 값을 삽입하는 것이 가능합니까?

반응형

테라폼 리소스에 사용되기 전에 파일에 값을 삽입하는 것이 가능합니까?

다음 설명서에 따라 연락처 흐름이 연결된 Amazon Connect 인스턴스를 배포하고 있습니다:

연락처 흐름이 파일에 저장되므로 다음을 사용합니다:

resource "aws_connect_contact_flow" "general" {
    instance_id = aws_connect_instance.dev.id
    name        = "General"
    description = "General Flow routing customers to queues"
    filename     = "flows/contact_flow.json"
    content_hash = filebase64sha256("flows/contact_flow.json")
}

그러나 내 연락처 흐름에 따라 한 특정 섹션에서 AWS 람다 기능의 ARN을 지정해야 합니다:

...

"parameters":[
   {
          "name":"FunctionArn",
          "value":"<lambda function arn>",
          "namespace":null
    },
    {
          "name":"TimeLimit",
          "value":"3"
    }
],

</snip>

...

연락처 흐름이 생성되기 전에 <lambda function arn>에서 JSON 파일로 대체하려는 값은 다음에서 액세스할 수 있습니다

data.terraform_remote_state.remote.outputs.lambda_arn

이것을 달성할 수 있는 방법이 있나요? 아니면 위에 링크된 문서의 '' 방법을 사용하여 필요한 것을 달성해야 합니까?




를 사용하려면 를 사용하여 렌더링된 템플릿을 임시 파일에 써야 합니다.

하지만 이를 위해 직접 사용하는 것이 더 쉬울 것입니다. 이를 위해 의 템플릿 형식으로 변환해야 합니다:

"parameters":[
   {
          "name":"FunctionArn",
          "value":"$arn",
          "namespace":null
    },
    {
          "name":"TimeLimit",
          "value":"3"
    }
],

예를 들어, 다음과 같습니다:

locals {

  contact_flow = templatefile("flows/contact_flow.json", {
                   arn = data.terraform_remote_state.remote.outputs.lambda_arn
                 })
}


resource "aws_connect_contact_flow" "general" {
    instance_id = aws_connect_instance.dev.id
    name        = "General"
    description = "General Flow routing customers to queues"
    content     = local.contact_flow
}

반응형