단일 리소스 가져오기

단일 리소스 가져오기 (Import a single resource)

Terraform으로 단일 리소스나 소량의 리소스를 워크스페이스로 가져오는 방법을 설명해 드릴게요. import 블록과 resource 블록을 사용해요.

출처: 문서

본문

단일 리소스나 소량의 리소스를 가져오는 워크플로는 클라우드 프로바이더에서 고유한 인프라 리소스 ID와 기타 속성에 쉽게 접근할 수 있을 때 가장 효과적이에요.

워크플로 (Workflow)

  1. 가져올 리소스의 import 블록을 구성에 추가해요. import 블록은 다음 인자를 가져요:

    • id 또는 identity: 클라우드 프로바이더가 할당한 리소스의 고유 정체성.
    • to: state에서 가져온 리소스의 주소.
    import {
      id = "i-096fba6d03d36d262"
      to = aws_instance.web
    }
    
  2. import 블록의 to 주소와 일치하는 대상 resource 블록을 구성에 작성해요. resource 블록은 구성에서 리소스를 나타내요.

    resource "aws_instance" "web" {
      # ...
    }
    
  3. terraform plan을 실행해 가져오기가 제대로 수행될지 확인해요. 익숙하지 않은 리소스는 generate-config-out 플래그를 사용해 리소스 블록을 생성할 수 있어요.

  4. terraform apply를 실행해 리소스를 state로 가져와요. import 블록은 가져오기 완료 후 제거할 수 있어요. 이후부터는 resource 블록으로 리소스를 관리해요.

리소스 정체성 지정 (Specify resource identity)

Terraform은 클라우드 프로바이더가 할당한 ID 또는 프로바이더가 정의한 특정 속성 모음에 따라 리소스를 고유하게 식별해요. id 또는 identity 속성을 사용해요. 예를 들어 aws_instanceid 속성으로, s3_bucketidentity 속성(계정, 버킷, 리전 기반)으로 참조할 수 있어요. 자세한 내용은 import 블록 레퍼런스를 참고해요.

제한 사항 (Limitations)

  • import 블록의 to 주소는 resource 블록의 주소를 가리켜야 해요. module 주소를 가리키면 오류가 발생해요.
  • 현재 구성에서 관리되는 리소스는 가져올 수 없어요.
  • count 또는 for_each를 사용하는 리소스는 적절한 인덱스나 키가 포함된 주소로 참조해요.

더 알아보기 (Learn more)