S3와 CloudFront - 설정이 작동하지 않음

모두 안녕하세요!

이 가이드를 따라 S3를 설정했습니다.

찾을 수 없었던 유일한 옵션은 “Programmatic access” 체크박스가 선택되어 있는지 확인하는 것이었습니다.

그런 옵션을 찾을 수 없었습니다.

하지만 S3가 작동하지 않습니다.

참고: CDN은 CloudFront를 통해 제공됩니다 (S3는 CloudFront의 소스입니다)

감사합니다

실행 중인 rake 작업은 지정된 값이 환경 변수에 있어야 한다고 주장하며, 사이트 설정에 있는 값은 사용하지 않습니다.

답변 감사합니다.

이미지 URL이 CDN 링크로 교체될 것이라 생각하고 rake를 사용했습니다.

하지만 S3 설정 자체가 작동하지 않습니다.

S3 설정에서 놓친 부분이 있을까요?

네, S3로 마이그레이션하기 위한 rake 작업을 실행하려면 환경 변수를 설정해야 합니다.

이해가 잘 안 됩니다. 제 디스코urs 설정을 검토해 주셨기를 바랍니다.

이 가이드 외에 추가로 필요한 단계가 있나요? Set up file and image uploads to S3

필요한 환경 변수에 대한 개요를 여기서 볼 수 있다고 생각합니다:
Configure an S3 compatible object storage provider for uploads

수정: rake 명령의 컨텍스트에 대해서는 아래 답변을 참조하세요 :point_down:

또는 오류 메시지에서 확인할 수 있습니다:

이들은 사이트 설정이 아니라 환경에 설정되어야 합니다.

예를 들어, rake 작업을 실행할 때 다음과 같이 값을 제공할 수 있습니다:

DISCOURSE_S3_BUCKET=foo DISCOURSE_S3_REGION=us-east-1 DISCOURSE_S3_USE_IAM_PROFILE=true rake uploads:migrate_to_s3

아, 알겠습니다!

그럼 app.yml에 이 내용을 추가하겠습니다.

예시:

DISCOURSE_USE_S3: true
  DISCOURSE_S3_REGION: us-west-1
  DISCOURSE_S3_ACCESS_KEY_ID: myaccesskey
  DISCOURSE_S3_SECRET_ACCESS_KEY: mysecretkey
  DISCOURSE_S3_CDN_URL: https://falcoland-files-cdn.falco.dev
  DISCOURSE_S3_BUCKET: falcoland-files
  DISCOURSE_S3_BACKUP_BUCKET: falcoland-files/backups
  DISCOURSE_BACKUP_LOCATION: s3

제발 마이클의 답변을 읽어 주세요!

설치가 최신 상태이기 때문이에요!

제가 걱정하는 부분은 새 이미지입니다. Rake는 기사에서 권장했기 때문에 실행했습니다.

Discourse 관리자에서 S3 설정만 추가하면 새 이미지를 S3에서 서빙하는 데 충분할 줄 알았거든요!

업로드를 위한 S3 호환 객체 스토리지 제공자 구성 보기

네, 제 환경이 S3와 CloudFront를 사용하므로 S3 코드를 다음과 같이 추가했습니다.

지금 다시 빌드 중입니다. S3가 제대로 작동하길 바랍니다!

안 돼요! S3 권한 관련해서 뭔가 빠진 것 같아요!

제안이 있으신가요?

여기에는 3가지 부분이 있습니다:

  • Discourse가 버킷에 대해 읽기/쓰기 등을 수행할 수 있는가?
  • 익명 사용자가 버킷에서 읽을 수 있는가?
  • CDN이 버킷에서 읽을 수 있는가?

두 번째 부분이 작동하지 않는 것 같습니다.

제 설정을 검토해 주시고, 빠뜨린 부분이 있는지 알려주시면 감사하겠습니다: S3 및 CloudFront CDN

이 가이드를 기반으로

두 개의 버킷 생성:

  • CDN용 버킷 (ACL도 활성화함)
  • 백업용 버킷
  • 두 버킷을 추가하여 정책을 생성하고, IAM 사용자에게 연결한 후 액세스 키를 생성했습니다.

두 개의 CloudFront 분배 생성:

  1. cdn.mysite.com (기원은 cdn 버킷) - CNAME을 구성하여 설정.

  2. assets.mysite.com (기원은 mysite.com) - 커뮤니티가 서브도메인이 아닌 메인 도메인에 있으므로 CNAME을 구성하여 설정.

이 가이드를 기반으로:

아래와 같이 AWS S3 코드와 설정을 app.yml에 추가했습니다:

감사합니다.

@pfaffman 에게 정말 감사드립니다.

호스트 주소에 www를 사용해야 한다는 힌트를 주셨거든요. 제 포럼은 www가 없는 버전을 사용 중이었거든요!

www 버전으로 변경하고 다시 빌드했습니다!

이제 CDN과 에셋을 포함해 모든 것이 정상적으로 작동합니다!

감사합니다.

정확히 어떻게 고쳐졌는지 잘 모르겠지만, 해결되어서 다행이에요!

제가 여기에서 설명했듯이, 이 작업을 수행한 후 사이트가 오프라인 상태가 되었습니다. 그래서 그 결과물을 확인할 수 없었습니다. 하지만 테스트용 서브도메인에서 동일한 설정을 시도했을 때는 모든 것이 정상적으로 작동했습니다. 따라서 SSL에 문제가 있는 것으로 추정됩니다.

www라는 단서를 바탕으로 호스트 주소를 변경했는데, 문제가 즉시 해결되었습니다.

또한 Cloudflare의 최근 서비스 장애 때문에 사이트가 오프라인 상태가 되었을 가능성도 있다고 생각합니다.

어쨌든 문제가 해결되었습니다.

감사합니다!