1. EFS 파일 시스템 생성

(1) EFS 콘솔 → Create File System

  • 이름: 예) APNE2-DEV-MY-APP-EFS
  • VPC: ECS가 사용하는 VPC와 동일하게 선택
  • 나머지 설정(Throughput, Performance, Lifecycle)은 기본값 가능

2. Mount Target 생성 및 설정

(1) EFS → Network → Mount Targets 이동

→ 자동 생성되지 않은 경우 수동 추가

(2) 각 AZ마다 1개씩 생성

Yujin이 사용한 구성:

  • AZ: apne2-2a → Subnet: Private-a
  • AZ: apne2-2c → Subnet: Private-c

(3) Security Group 설정

새로운 SG(EFS 전용) 생성하여 추가하는 것을 권장했음.

EFS-SG inbound rule

  • NFS 2049 / TCP
  • Source: ECS Task가 사용하는 SG (예: ECS-Service-SG)

EFS-SG outbound rule

  • 모든 outbound 허용 or 최소 보안 구성이면 2049만

3. EFS Access Point 생성 (중요)

EFS → Access Points → Create

입력 값:

  • Root Directory: /my-app
  • POSIX User (UID/GID): 기본값 또는 필요시 1000/1000
  • Permissions:
    • Owner UID: 1000
    • Owner GID: 1000
    • Permissions: 755 또는 앱 요구사항

Access Point ID 예:
fsap-031543c379c0a9aa6


4. ECS Task Definition에 EFS Volume 추가

(1) volumes 섹션

"volumes": [
  {
    "name": "efs-volume",
    "efsVolumeConfiguration": {
      "fileSystemId": "fs-0*********",
      "rootDirectory": "/",
      "transitEncryption": "ENABLED",
      "authorizationConfig": {
        "accessPointId": "fsap-0*********",",
        "iam": "ENABLED"
      }
    }
  }
]

 

(2) containerDefinitions.mountPoints

"mountPoints": [
  {
    "sourceVolume": "efs-volume",
    "containerPath": "/data",
    "readOnly": false
  }
]

 

컨테이너에서는 /data/ 가 실제로 EFS /my-app/ 와 연결됨.

 

 

✅ 5. ECS 서비스 재배포

Task Definition 업데이트 후:

  • ECS Service → Force New Deployment
  • 새로운 Task가 Running 상태가 되면 완료

 

✅ 6. ECS - EFS 볼륨 마운트 확인

AWS ECS 서비스 콘솔에서도 볼륨이 추가된것을 확인할 수 있으나, 

가장 간단하게는 ECS 시작 스크립트에 로깅을 추가해서 확인할 수 있다.

# Verify EFS volume mount
echo "EFS volume mount check:"
ls -al /data

 

재배포 했을때 로그 확인

 

EFS volume mount check:

drwxr-xr-x 2 1000 1000 6144 Nov 18 14:45 .

drwxr-xr-x 1 root root 4096 Nov 18 16:09 ..

 

 

1. S3 버킷 - 권한 - CORS(Cross-origin 리소스 공유) - 편집

[
    {
        "AllowedHeaders": [
            "*"
        ],
        "AllowedMethods": [
            "GET",
            "PUT",
            "POST",
            "DELETE"
        ],
        "AllowedOrigins": [
            "*"
        ],
        "ExposeHeaders": [
            "ETag",
            "Content-Length",
            "Content-Range",
            "Accept-Ranges"
        ],
        "MaxAgeSeconds": 3000
    }
]

 

 

2. CloudFront - 정책 - 응답 헤더 - 응답 헤더 정책 생성

Access-Control-Expose-Headers 에 아래와 같이 custom 값을 추가

 

3. 생성한 응답 정책을 연결

 

4. CloudFront 배포 -> 완료 이후 확인

mp4 비디오도 정상 로드 확인

S3 와 연동하는 커스텀 노드

https://github.com/TemryL/ComfyS3

 

GitHub - TemryL/ComfyS3: ComfyS3 seamlessly integrates with Amazon S3 in ComfyUI. This open-source project provides custom nodes

ComfyS3 seamlessly integrates with Amazon S3 in ComfyUI. This open-source project provides custom nodes for effortless loading and saving of images, videos, and checkpoint models directly from S3 b...

github.com

 

 

위 노드는, 이미지를 S3 로 로드할때, 단일 폴더 구조안의 이미지만 읽는게 가능한 듯함

나는 동적으로 서브 폴더 구조로 사용하기 위해,

위 레포지토리를 포크떠서 소스를 약간 수정하였음

 

https://github.com/monster1083/ComfyS3/commit/9ce85dcaf48b9a4c5603ce00278b6a49c93d4f51

 

feat: 이미지 url 스트링으로 로드 · monster1083/ComfyS3@9ce85dc

+ {"image": ("STRING", {"default": "", "multiline": False})},

github.com

 

주요 차이점

1. UI 형태

  • 기존: 드롭다운 메뉴 (선택 방식)
  • 변경: 텍스트 입력 필드 (직접 타이핑)

2. 입력 제한

  • 기존: S3에서 가져온 파일 목록에 있는 것만 선택 가능 (엄격한 검증)
  • 변경: 임의의 문자열 입력 가능 (자유로운 입력)

3. 성능

  • 기존: 노드 로딩할 때마다 S3 API 호출 (느림)
  • 변경: S3 호출 없음 (빠름)

4. 사용성

  • 기존:
    • ✅ 실제 존재하는 파일만 선택 가능
    • ❌ S3에 새 파일이 추가되면 노드 새로고침 필요
    • ❌ 긴 경로는 드롭다운에서 찾기 어려움
  • 변경:
    • ✅ 어떤 경로든 입력 가능 (유연함)
    • ✅ 노드 새로고침 불필요
    • ❌ 잘못된 경로 입력 시 런타임 에러

5. 에러 처리

  • 기존: 입력 단계에서 검증 (ComfyUI가 차단)
  • 변경: 실행 단계에서 검증 (런타임에 에러 발생 가능)

사용방식

.env 

S3_INPUT_DIR=""

 

input dir 에는 아무런 스트링 주지않음

워크플로우에서 input image 의 S3 url 을 통째로 처리하기 위해서

 

 

workflow 중 LoadImageS3 노드

"20": {
        "inputs": {
            "image": "output/test/df119288-e447-418f-9c4c-3333342/Basetest1_.png"
        },
        "class_type": "LoadImageS3",
        "_meta": {
            "title": "Load Image from S3"
        }
    }

 

+ Recent posts