AWS Lightsail 인스턴스에서 Discourse와 AWS S3 설정을 연동하려고 3시간 동안 고군분투한 끝에, 이 주제에 대한 간단하고 명확한 튜토리얼이 있으면 좋겠다는 확고한 믿음을 갖게 되었습니다. 이 설정에는 빠져들 수 있는 함정이 정말 많습니다. AWS S3 URL을 제공받아 원격으로 파일을 가져오는 버킷을 만드는 것 자체에는 문제가 없는데, CDN과 S3 엔드포인트(설정 UI에서는 비워 둘 수 있다고 명시되어 있지만, 업로드를 시도하면 "Endpoint can’t be blank"라는 내부 메시지가 뜸) 그리고 Amazon CloudFront를 통한 CDN 사용 시 실제로 필요한 권한 수준 같은 기본적인 것들까지 고려하면 복잡해집니다.
정말 할 일이 많습니다. 인터넷을 샅샅이 뒤져 보았지만, 이 주제에 근접한 내용조차 찾지 못했고, 특히 오늘날의 Discourse와 일치하는 최신 자료는 더더욱 없었습니다.
어떤 힌트라도 주시면 감사하겠습니다.
현재 저의 가장 큰 걸림돌은 아마도 권한 문제인 것 같습니다. Discourse가 Key ID와 Key Secret을 요구하는데, 이를 위해 IAM에 사용자는 만들어 두었지만, S3 버킷 정보에서 이 사용자를 해당 버킷과 연관 짓는 내용이 전혀 보이지 않아 이것이 문제의 원인인지 알 길이 없습니다. 솔직히 Lightsail과 AWS를 8년 이상 사용해 왔지만, 이 S3 영역은 개발자 UX 스타일의 난해한 구조로 되어 있어 50가지 이상의 다른 방식으로 처리할 수 있게 되어 있습니다. 직관적이지가 않습니다.
링크들 감사합니다. 올려주신 첫 번째 링크에는 AWS 영역에 2013년에 작성된 또 다른 링크( Set up file and image uploads to S3 )가 있는데, X 버킷 정책을 설정하라는 내용이 포함되어 있습니다(이 내용은 구식이بدو합니다). 그런데 CloudFront를 통한 AWS CDN이 이미 자체 정책으로 해당 정책을 대체해 버렸거든요. 이걸 변경해야 할까요, 아니면 그대로 두어야 할까요? 제가 말하는 '이런 것들’이 바로 이런 겁니다. 우으으!
사실 app.yml의 “빈칸 채우기” 설정이나 관리자 설정이 문제의 핵심은 아닙니다. 그 설정들이 생성된 버킷이나 CDN 등과 어떻게 상호작용하는지, 그런 복합적인 요소가 더 큰 문제입니다. 결국 아마존 쪽에서 좀 더 명확한 안내가 필요합니다. Discourse 자체의 문제는 아니라는 건 알지만, S3를 통해 실제로 정상적으로 동작하는 방법을 Discourse 사용자에게 알려주는 것이 정말 도움이 될 텐데요. 제 말이 통할까요?