로컬 파일을 DigitalOcean Spaces(S3)에 rake uploads:migrate_to_s3로 업로드하면 일부 파일은 정상적으로 마이그레이션이 시작되지만, 갑자기 한 파일에서 Aws::S3::Errors::SignatureDoesNotMatch 오류가 발생하여 실패합니다.
Extend S3 configuration for other S3 API compatible services - #4 by rishabh 에 언급된 스크립트를 사용하여 해당 파일을 수동으로 업로드한 뒤 스크립트를 다시 실행하면 더 많은 파일이 업로드되지만, 또 다른 파일에서 다시 실패합니다.
팀의 누군가 이 문제를 확인해 주실 수 있을까요? 가까운 장래에 로컬 저장소에서 S3로 이동해야 할 파일이 거의 50GB나 됩니다(새 파일의 설정 및 업로드는 문제없이 작동합니다).
지금은 임시 해결책만이라도 있다면 좋겠습니다. to_s3_migration.rb 코드를 살펴보고 문제의 파일들을 식별할 수는 있지만, 위에서 언급한 스크립트의 Aws::S3::Resource를 사용하여 S3에 업로드하면 파일 메타데이터가 누락되고 다운로드 시 파일의 원래 이름이 사라집니다.
웹에서 검색하면 SignatureDoesNotMatch와 관련된 문제가 많이 나오는데, 그 중 하나는 해당 게엠이 사용하는 서명 알고리즘 버전이 잘못되었을 수 있다는 내용입니다. 하지만 이는 제 현재 실력으로 확인하기에는 어렵습니다.
다음은 rake를 위한 설정입니다:
DISCOURSE_S3_ACCESS_KEY_ID="id" \
DISCOURSE_S3_SECRET_ACCESS_KEY="secret" \
DISCOURSE_S3_REGION="sfo2" \
DISCOURSE_S3_BUCKET="mybucket/uploads" \
DISCOURSE_S3_ENDPOINT="https://sfo2.digitaloceanspaces.com" \
DISCOURSE_S3_CDN_URL="https://mybucket.sfo2.cdn.digitaloceanspaces.com" \
rake uploads:migrate_to_s3 --trace