🏗️ 들어가며
지난번에 Unity Addressables를 AWS S3에 올려서 원격 리소스 다운로드 방식으로 적용하는 과정을 블로그에 정리했었습니다. 그런데 실제 서비스를 상상해보니 **"S3가 퍼블릭으로 열려 있는 상태"**라는 건 생각보다 위험했습니다.
- 누군가 URL만 알면 다운로드 가능
- 검색 엔진에 인덱싱될 위험도 있음
- 리소스 URL이 그대로 노출됨
그래서 AWS에서 제공하는 CDN 서비스인 CloudFront를 연동해서 퍼블릭 차단 + CDN을 통한 안정적인 다운로드 구조를 만들기로 결정했습니다.
🔥 CloudFront 생성 및 설정 과정
📌 AWS 콘솔에서 CloudFront 서비스 선택
- 서비스 → CloudFront 클릭
✅ 단계별 생성
1.Get Started
- Single website or app 선택
- (Optional) 도메인 입력 가능
2. Specify origin
- Origin type: Amazon S3
- S3 Origin: 업로드한 S3 버킷 선택
- Origin Path는 비워두기 (S3 버킷 최상단 기준)
- ✅ Allow private S3 bucket access to CloudFront 체크 (퍼블릭 차단 가능)
3. Enable Security
- WAF는 선택 사항 (저는 비활성화로 진행)
4. Review and Create
- 최종 설정 확인 후 Create Distribution
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 세팅이 생각보다 어렵지 않으니, 저처럼 삽질하지 마시고 빠르게 적용해보세요. 🙌
'Devs > Unity' 카테고리의 다른 글
Unity Addressables + AWS S3 적용 삽질 기록 — BuildPath 에러 해결법 (0) | 2025.06.30 |
---|---|
[UGUI] GridLayoutGroup 정렬 후 하위 게임 오브젝트 position 0인 현상 (1) | 2025.05.28 |