Devs/Unity

Unity Addressables + AWS CloudFront 적용 삽질 기록

whawoo 2025. 7. 1. 00:59
반응형

🏗️ 들어가며

지난번에 Unity Addressables를 AWS S3에 올려서 원격 리소스 다운로드 방식으로 적용하는 과정을 블로그에 정리했었습니다. 그런데 실제 서비스를 상상해보니 **"S3가 퍼블릭으로 열려 있는 상태"**라는 건 생각보다 위험했습니다.

  • 누군가 URL만 알면 다운로드 가능
  • 검색 엔진에 인덱싱될 위험도 있음
  • 리소스 URL이 그대로 노출됨

그래서 AWS에서 제공하는 CDN 서비스인 CloudFront를 연동해서 퍼블릭 차단 + CDN을 통한 안정적인 다운로드 구조를 만들기로 결정했습니다.


🔥 CloudFront 생성 및 설정 과정

📌 AWS 콘솔에서 CloudFront 서비스 선택

  • 서비스 → CloudFront 클릭

✅ 단계별 생성

1.Get Started

  • Single website or app 선택
  • (Optional) 도메인 입력 가능

Get Started 화면

2. Specify origin

  • Origin type: Amazon S3
  • S3 Origin: 업로드한 S3 버킷 선택
  • Origin Path는 비워두기 (S3 버킷 최상단 기준)
  • ✅ Allow private S3 bucket access to CloudFront 체크 (퍼블릭 차단 가능)

Specify origin 화면

3. Enable Security

  • WAF는 선택 사항 (저는 비활성화로 진행)

Enable Security 화면

4. Review and Create

  • 최종 설정 확인 후 Create Distribution

Review and Create 화면

5. 배포 도메인 확인
→ 생성 후 나온 도메인 예시:

https://dxxxxx.cloudfront.net

배포 도메인 확인 화면


🔧 S3 퍼블릭 차단

CloudFront가 정상 동작하면 이제 S3 버킷은 퍼블릭 접근이 필요 없습니다.

  • S3 → 버킷 → 퍼블릭 액세스 차단 설정 → 전부 체크 (퍼블릭 차단)

이렇게 설정해도 CloudFront는 버킷 정책을 통해 내부적으로 접근 가능합니다. (CloudFront가 S3 권한을 위임받음)


🔗 Unity Addressables 설정

✅ Addressables Profile 수정

  • Remote.LoadPath →
https://dxxxxx.cloudfront.net/[BuildTarget]
  • Remote.BuildPath → 기존과 동일 (로컬 빌드 폴더)

✅ [BuildTarget]을 쓰면 Android, iOS 자동 분리됨.

✅ 각 Addressables Group 설정

  • Build & Load Paths → Remote로 설정
  • BuildPath는 빌드 시 로컬 경로
  • LoadPath는 CDN URL

이렇게 하면 게임 실행 시 CloudFront 경유로 Addressables를 다운로드합니다.


🚧 삽질 로그 (간략 정리)

1. 처음에 S3 Origin Path를 /Android 처럼 넣었는데 → ❌
→ 플랫폼별로 따로 만들 필요 없음. 그냥 빈칸 유지.

2. Addressables BuildPath/LoadPath 경로 설정 시 아래 오류 발생:

BuildPath is dynamic but LoadPath is not (혹은 반대)

→ ✔️ 해결 방법:
둘 다 변수 형태로 통일하거나, 둘 다 문자열로 통일.

3.최종적으로 Profile에 CDN URL을 직접 넣고, [BuildTarget]만 변수 처리하는 방식으로 정착.


✅ 적용 후 테스트

  • S3는 퍼블릭 완전 차단 ✔️
  • 브라우저에서 CloudFront URL로만 접근 가능 ✔️
  • Unity Addressables도 문제없이 CloudFront에서 다운로드 ✔️

🚀 결론 및 느낀 점

  • ✔️ AWS CloudFront 연동은 의외로 간단하다.
  • ✔️ 오히려 Unity Addressables 경로 설정이 더 빡셌음.
  • ✔️ S3 퍼블릭 차단은 필수로 추천.
  • ✔️ 그리고 확실히 CloudFront 경유하면 S3보다 응답 속도도 더 빠르다.

🔥 참고 — BuildPath 경로 표시 변화

CloudFront 적용 이후 Addressables 인스펙터에서 BuildPath가 이렇게 보입니다:

BuildPath: BuildPath/Android/RemoteAssets

예전처럼 실제 경로가 보이지 않고 BuildPath라는 변수명으로 보이는 형태인데, 정상입니다.

→ 실행 시 자동으로 치환되어 문제없이 동작합니다.


💡 마치며

이 글이 Unity Addressables와 AWS를 사용하는 분들에게 도움이 되었으면 합니다. CloudFront 세팅이 생각보다 어렵지 않으니, 저처럼 삽질하지 마시고 빠르게 적용해보세요. 🙌

반응형