DevOps/Terraform

[Terraform] 테라폼 모듈을 활용한 athena 데이터 카탈로그 배포

Jflip 2024. 7. 14. 02:48
728x90

 

안녕하세요, 이번 포스팅은 테라폼 모듈을 활용한 athena datacatalog 배포에 대해서 포스팅을 올립니다.

CloudNet@의 테라폼 스터디 내용을 기반하고 있습니다.

 

본 포스팅에서는 데이터 카탈로그를 만들기 위해서 공식문서의 모듈을 나눴습니다.

 

트리

트리는 다음과 같습니다.

main.tf
athena_data_catalog/
├── aws_athena_data_catalog.tf
└── variables.tf

 

루트 모듈 정의 (main.tf)

module "athena_data_catalog" {
  source      = "./athena_data_catalog"
  name        = "athena-data-catalog"
  description = "Example Athena data catalog"
  type        = "LAMBDA"
  function_arn = "arn:aws:lambda:ap-northeast-2:xxxxxxxxxxxx:function:not-important-lambda-function"
  tags = {
    Name = "example-athena-data-catalog"
  }
}

 

Terraform을 사용하여 AWS Athena 데이터 카탈로그를 생성하기 위한 매개변수들을 설정해 주겠습니다.

이 코드를 통해서 모듈을 호출하고, 해당 모듈에 필요한 변수들을 전달합니다.

다음은 각 항목에 대한 설명입니다:

  • source: 모듈의 소스 경로를 지정합니다. 현재 디렉토리의 athena_data_catalog 폴더를 가리킵니다. 즉, 이 폴더 내에 정의된 하위 모듈을 사용합니다.
  • name: 생성할 Athena 데이터 카탈로그의 이름을 지정합니다. "athena-data-catalog"로 설정됩니다.
  • description: Athena 데이터 카탈로그의 설명을 지정합니다. "Example Athena data catalog"로 설정됩니다.
  • type: 데이터 카탈로그의 유형을 지정합니다. "LAMBDA"로 설정됩니다.
  • function_arn: Lambda 함수의 ARN(아마존 리소스 이름)을 지정합니다. arn:aws:lambda:ap-northeast-2:xxxxxxxxxxxx:function:not-important-lambda-function으로 설정됩니다.
  • tags: 데이터 카탈로그에 적용할 태그들을 지정합니다. { Name = "example-athena-data-catalog" }로 설정됩니다.

차일드 모듈 정의(aws_athena_data_catalog.tf)

resource "aws_athena_data_catalog" "this" {
  name        = var.name
  description = var.description
  type        = var.type

  parameters = {
    "function" = var.function_arn
  }

  tags = var.tags
}

 

AWS Athena 데이터 카탈로그를 생성하기 위한 구성입니다.

var.name, var.description, var.type, var.function_arn, var.tags를 사용하여 데이터 카탈로그의 속성을 정의합니다.

 

다음은 각 항목에 대한 설명입니다:

  • name: Athena 데이터 카탈로그의 이름을 설정합니다. var.name 변수를 사용하여 이름을 설정합니다.
  • description: Athena 데이터 카탈로그의 설명을 설정합니다. var.description 변수를 사용하여 설명을 설정합니다.
  • type: 데이터 카탈로그의 유형을 설정합니다. var.type 변수를 사용하여 유형을 설정합니다. (예: "LAMBDA")
  • parameters: 데이터 카탈로그의 매개변수를 설정합니다. var.function_arn 변수를 사용하여 Lambda 함수의 ARN을 설정합니다.
  • tags: 데이터 카탈로그에 적용할 태그들을 설정합니다. var.tags 변수를 사용하여 태그를 설정합니다.

차일드 모듈 정의(variables.tf)

variable "name" {
  description = "The name of the Athena data catalog"
  type        = string
}

variable "description" {
  description = "The description of the Athena data catalog"
  type        = string
}

variable "type" {
  description = "The type of the Athena data catalog"
  type        = string
}

variable "function_arn" {
  description = "The ARN of the Lambda function"
  type        = string
}

variable "tags" {
  description = "A map of tags to assign to the resource"
  type        = map(string)
}
  • name: Athena 데이터 카탈로그의 이름을 설정합니다.
  • description: 데이터 카탈로그의 설명을 설정합니다.
  • type: 데이터 카탈로그의 유형을 설정합니다. 기본값은 "LAMBDA"입니다.
  • function_arn: Lambda 함수의 ARN을 설정합니다.
  • tags: 데이터 카탈로그에 적용할 태그들을 설정합니다.

이제 terraform plan을 통해서 해당 내용 확인해 보겠습니다.

다음과 같이 확인됩니다.

 

해당 내용을 통해서 생성된 athena-data-catalog입니다.

물론 람다는 연동하지 않았기 때문에 해당 내용 람다를 클릭하면 오류가 납니다!

 

감사합니다.

728x90
반응형