AWS

AWS EFS 리소스

devfinger 2024. 10. 22. 20:58

EFS

  • 파일 시스템
  • 액세스 포인트

 

1. EFS 파일 시스템 (EFS File System)

리소스 이름: aws_efs_file_system

필수 입력 파라미터:

  • creation_token: 파일 시스템을 생성할 때 고유하게 식별하는 토큰.
  • tags: 태그 지정은 필수는 아니지만, 리소스를 잘 관리하기 위해 추천됩니다.

옵션 입력 파라미터:

  • encrypted: 파일 시스템의 데이터가 암호화될지 여부. 기본값은 false.
  • performance_mode: 성능 모드를 설정합니다. 기본값은 generalPurpose이고, maxIO로 설정할 수 있습니다.
  • throughput_mode: 파일 시스템의 처리량을 관리하는 방식. 기본값은 bursting, 다른 옵션은 provisioned.
  • provisioned_throughput_in_mibps: throughput_mode가 provisioned일 때 제공하는 처리량 (MiB/s 단위).
  • kms_key_id: 암호화에 사용할 KMS 키의 ID.
  • lifecycle_policy: 비정기적으로 사용되는 데이터를 비활성화하는 생명 주기 정책.

2. EFS 액세스 포인트 (EFS Access Point)

리소스 이름: aws_efs_access_point

필수 입력 파라미터:

  • file_system_id: 파일 시스템 ID. 해당 액세스 포인트가 연결될 EFS 파일 시스템의 ID.
  • posix_user: 액세스 포인트에서 사용할 POSIX 사용자 정보 (UID, GID).

옵션 입력 파라미터:

  • root_directory: 액세스 포인트의 루트 디렉토리 경로 및 권한을 설정할 수 있음.
  • client_token: 고유한 토큰을 사용하여 액세스 포인트를 생성할 때 사용. 중복 생성 방지.
  • tags: 태그 지정으로 리소스를 효율적으로 관리.
# AWS Provider 설정
provider "aws" {
  region = "ap-northeast-2"  # 리전을 설정합니다.
}

# 1. EFS 파일 시스템 생성
resource "aws_efs_file_system" "my_efs" {
  # 필수 파라미터
  creation_token = "unique-efs-token"  # 파일 시스템을 위한 고유 토큰 (필수)

  # 옵션 파라미터
  encrypted        = true              # EFS 데이터 암호화 (기본값: false)
  performance_mode = "generalPurpose"  # 성능 모드 설정 (generalPurpose, maxIO 중 선택)
  throughput_mode  = "bursting"        # 처리량 모드 (bursting, provisioned 중 선택)

  tags = {                             # 리소스 태그 설정 (옵션)
    Name = "MyEFS"
    Env  = "production"
  }
}

# 2. EFS 액세스 포인트 생성
resource "aws_efs_access_point" "my_access_point" {
  # 필수 파라미터
  file_system_id = aws_efs_file_system.my_efs.id  # 연결할 파일 시스템의 ID
  posix_user {
    uid = 1001  # 사용자 ID (UID)
    gid = 1001  # 그룹 ID (GID)
  }

  # 옵션 파라미터
  root_directory {                   # 루트 디렉토리 경로 설정
    path = "/data"                   # 액세스 포인트의 루트 디렉토리 경로
    creation_info {
      owner_uid   = 1001             # 디렉토리 소유자 UID
      owner_gid   = 1001             # 디렉토리 소유자 GID
      permissions = "755"            # 디렉토리 권한 (rwxr-xr-x)
    }
  }

  client_token = "unique-access-token"  # 고유한 토큰 설정 (옵션)

  tags = {                               # 태그 설정 (옵션)
    Name = "MyEFSAccessPoint"
  }
}

# 출력: 생성된 EFS 파일 시스템의 ID
output "efs_file_system_id" {
  description = "The ID of the EFS file system"
  value       = aws_efs_file_system.my_efs.id
}

# 출력: 생성된 EFS 액세스 포인트의 ID
output "efs_access_point_id" {
  description = "The ID of the EFS access point"
  value       = aws_efs_access_point.my_access_point.id
}

 

입력 파라미터 설명

1. EFS 파일 시스템 (aws_efs_file_system)

  • 필수 파라미터:
    • creation_token: 각 EFS 파일 시스템을 고유하게 식별하는 값입니다. 반드시 지정해야 합니다.
  • 옵션 파라미터:
    • encrypted: 데이터를 암호화할지 여부를 설정합니다. 기본값은 false이지만, 민감한 데이터 보호를 위해 true로 설정할 수 있습니다.
    • performance_mode: generalPurpose (기본값) 또는 maxIO 중 선택합니다. 고성능이 필요한 워크로드는 maxIO로 설정할 수 있습니다.
    • throughput_mode: 기본적으로 bursting 모드로 동작하며, 처리량이 고정된 경우 provisioned를 선택할 수 있습니다.
    • provisioned_throughput_in_mibps: throughput_mode를 provisioned로 설정했을 때 처리량을 미리 정의할 수 있습니다.
    • lifecycle_policy: 데이터 비활성화를 위한 생명 주기 정책을 정의할 수 있습니다.

2. EFS 액세스 포인트 (aws_efs_access_point)

  • 필수 파라미터:
    • file_system_id: 연결할 EFS 파일 시스템의 ID입니다. 이 값은 반드시 설정해야 합니다.
    • posix_user: 액세스 포인트에서 사용할 POSIX 사용자 정보입니다. UID와 GID는 필수로 설정해야 합니다.
  • 옵션 파라미터:
    • root_directory: 액세스 포인트의 루트 디렉토리를 설정할 수 있으며, 권한과 소유자 정보도 함께 정의할 수 있습니다.
    • client_token: 고유한 토큰을 설정하여 중복 생성을 방지할 수 있습니다.