Digital Ocean Spaces/S3에서 이상한 동작: example.com에 대해 중복된 CORS 규칙이 많이 존재

최근 부트스트랩 과정에서 이 오류가 발생했습니다. 저는 SFO3에 있는 Digital Ocean을 사용하고 있습니다.

"Tasks: TOP => s3:upload_assets => s3:ensure_cors_rules", "(See full trace by running
 task with --trace)", "I, [2021-12-16T21:19:05.748497 #1]  INFO -- : Installing CORS rules...", "Attempting to apply ASSETS S3 CORS ruleset in bucket pfaffmanager.", "At
tempting to apply BACKUP_DIRECT_UPLOAD S3 CORS ruleset in bucket pfaffmanager."]

이를 설명할 수 있는 해결 가능한 원인이 있을까요?

음. 설정을 살펴보니 겉보기에 동일한 CORS 규칙이 여러 개 있었습니다. 그중 하나를 삭제하니 모든 것이 삭제되었습니다. 이는 제가 수천 번(아니면 아마도 백 번, 어쨌든?)의 업그레이드를 수행해 온 스테이징 서버이므로, Digital Ocean을 사용하는 모든 사람에게 결국 이런 일이 발생할 수 있지만, 대부분의 경우 8개월이 아니라 10년 정도는 걸릴 것 같습니다.

CORS 규칙을 삭제한 후, 다음 부트스트랩은 성공했으며, spaces 버킷 설정에는 이제 CORS 규칙이 2개 있었습니다. 하지만 보세요–규칙이 example.com.에 대해 설정되어 있는 것으로 보입니다:man_shrugging:

제가 꽤 많이 부트스트랩을 수행한 AMS3의 다른 버킷에는 위의 것과 같은 규칙이 3개 있습니다. 모두 example.com을 대상으로 합니다. 제가 뭔가 바보 같은 짓을 하고 있는지 확인하기 위해 app.yml을 살펴봤습니다(만약 제가 그랬다면, 여러 곳에서 동일한 방식으로 했을 것이므로 의미가 있을 텐데), 하지만 yml 파일에는 example.com이 없습니다.

재구축 시 로그에서 이것이 보입니다:

                                                                                                                                                                         
I, [2021-12-16T21:46:58.038151 #1]  INFO -- : > cd /var/www/discourse && sudo -E -u discourse bundle exec rake s3:upload_assets                                          
I, [2021-12-16T21:47:39.039145 #1]  INFO -- : Installing CORS rules...                                                                                                   
Attempting to apply ASSETS S3 CORS ruleset in bucket pfaffmanager.                                                                                                       
Attempting to apply BACKUP_DIRECT_UPLOAD S3 CORS ruleset in bucket pfaffmanager.                                                                                         
Assets rules status: rules_applied.                                                 
Backup rules status: rules_applied.                                                                                                                                      
Direct upload rules status: rules_skipped_from_settings.

example.com에 대한 설명을 찾아내기 위해 s3_backup_store.rb와 같은 곳의 코드를 살펴봤지만, 이유를 알 수 없습니다.

GCP와 BackBlaze에서 이미 하고 있는 것처럼, 업로드용 객체 저장소 사용 (S3 및 클론) 문서에서 DO의 경우에도 DISCOURSE_S3_INSTALL_CORS_RULE: false를 권장해야 할 것 같습니다 :thinking:

안녕하세요,

이 주제를 다시 꺼내서 죄송합니다. 며칠 전 비슷한 문제를 겪은 것 같아서요.

제 환경 설정은 다음과 같습니다:

Digital Ocean Spaces에 s3:upload_assets와 s3:expire_missing_assets를 사용 중입니다.
CDN은 Bunny를 사용하고 있습니다.

자산(assets) 업로드 시 재빌드나 관리자 업데이트가 발생할 때마다 새로운 CORS 규칙이 생성되는 것 같습니다. 기존 규칙과 중복되는 상태입니다. 불행히도 콘솔 오류 메시지를 복사해 두지 못했지만, 자산 업로드 전에 'CORS 규칙 최대 개수 100에 도달했습니다’라는 메시지가 떴던 것으로 기억합니다. 그래서 Digital Ocean에 접속해 규칙을 확인해 보니 실제로 100개였네요. :smiley: 그래서 @pfaffman 님이 하신 것처럼 규칙 중 하나를 삭제했는데, 그 결과 모든 규칙이 삭제되었습니다. 이후 재빌드 시 자산이 성공적으로 업로드되었습니다.

초기 설정을 할 때는 다음 안내를 따랐습니다: Configure an S3 compatible object storage provider for uploads 해당 문서에는 아직 이 줄이 포함되어 있지 않습니다.

이 줄을 추가하면 중복된 CORS 규칙 생성이 방지될까요? 감사합니다 :slightly_smiling_face:

다른 토픽을 업데이트했으니, 앞으로 사용자들에게 이런 일이 발생하지 않기를 바랍니다! 지적해 주셔서 감사합니다.