schungx
(Stephen Chung)
8월 16, 2021, 5:39오전
1
Azure Blob Storage 플러그인이 계속 깨져서 스트레스를 받던 끝에, Azure를 S3 프로토콜로 변환하기 위해 Flexify.IO 서버를 실행했습니다.
하지만 Discourse에 설정한 후에는 작동하지 않습니다. 에러 메시지는 다음과 같습니다:
Failed to open TCP connection to support.xxx.xxx.xxx.xxx:443 (getaddrinfo: Name or service not known)
여기서 xx.xx.xx.xx는 S3 게이트웨이의 IP 주소이고, support는 버킷 이름입니다…
재미있는 점은… S3 Browser를 사용해 엔드포인트를 테스트했는데, 그것에서는 정상적으로 작동한다는 것입니다.
그래서 제가 어디를 잘못했는지 알려주실 수 있는 분이 있을까요?
엔드포인트가 노출하는 리전이 eastasia(유효한 Azure 리전)인데, 저는 목록에서 표준 AWS 리전만 선택할 수 있어서 리전 문제일 것 같다는 것이 제가 볼 수 있는 유일한 가능성입니다. 그럼에도 여전히 이상한 점은, 에러가 리전 불일치가 아니라 엔드포인트 자체에 연결 실패를 나타내는 것처럼 보인다는 것입니다.
schungx
(Stephen Chung)
8월 16, 2021, 9:47오전
2
s3_bucket 설정이 잘못되었을 것 같습니다. 버킷 이름이 엔드포인트 URL 자체에 추가되고 있기 때문입니다.
대신 bucket/folder 형식을 사용해야 할까요? 각각에 무엇을 입력해야 하나요?
수정: 소스 코드를 보면 하드코딩되어 있는 것 같습니다. 스토리지 제공업체가 버킷 이름을 접두사로 사용하지 않는다면 어떻게 해야 하나요?
Falco
(Falco)
8월 16, 2021, 3:04오후
3
사용 사례에 맞게 업로드용 오브젝트 스토리지 사용 (S3 & Clones) 문서를 따르는 것이 좋습니다. 훨씬 더 유연합니다. 제대로 작동하게 만들면 위키에도 추가할 수 있습니다!
schleifer
(Andrew Schleifer)
8월 17, 2021, 1:19오전
4
다음과 같은 상황에서:
그러면 이 부분은 확실히 잘못되었습니다:
에러 메시지가 이를 말해줍니다. getaddrinfo: Name or service not known은 DNS 조회 실패를 의미합니다. "support.303.303.303.303"과 같은 호스트네임은 절대 존재하지 않습니다.
“support” 부분은 어디서 가져온 건가요?
flexify 문서 에는 이렇게 나와 있습니다:
애플리케이션이 사용하는 S3 엔드포인트를 s3.flexify.io로 변경하세요 (설정에서 표시되는 [sic] 다른 호스트네임).
따라서 관리 콘솔을 통해 이를 변경할 수 없으며, 대신 @falco가 언급한 주제를 참고하고 다음으로 시작하세요:
DISCOURSE_S3_ENDPOINT: https://s3.flexify.io
schungx
(Stephen Chung)
8월 17, 2021, 3:19오전
5
아, 죄송합니다. support는 버킷 이름입니다. S3가 도메인 이름 앞에 버킷 이름을 단순히 붙여넣는다는 점과, 이것이 Discourse에서 가정된다는 것을 알 수 있습니다.
네, 그 정도는 파악했습니다. 그러면 app.yaml에 엔드포인트를 하드코딩해야 하는 것이 맞나요?
schungx
(Stephen Chung)
8월 17, 2021, 4:14오전
6
@Falco @schleifer 네, 시도해 봤는데 unfortunately 동일한 오류가 계속 발생합니다.
따라서 app.yaml에 하드코딩해도 작동하지 않는 것 같습니다. 두 설정이 동일한 코드 경로로 들어가는 것 같습니다.
제 app.yaml 설정은 다음과 같습니다:
DISCOURSE_USE_S3: true
DISCOURSE_S3_REGION: eastasia
DISCOURSE_S3_ENDPOINT: https://??.??.??.??
DISCOURSE_S3_ACCESS_KEY_ID: ???
DISCOURSE_S3_SECRET_ACCESS_KEY: ???
DISCOURSE_S3_BUCKET: support
여전히 support.??.??.??.??:443에 접근을 시도하고 있습니다.
즉, Discourse에서는 버킷이 서브도메인을 형성해야 하는 것 같습니다.
수정 1
네, app.yaml 설정을 삭제하고 support를 서브도메인으로 만들어 xx.xx.xx.xx를 가리키도록 했습니다. 이제 업로드를 하면 오랫동안 로딩이 된 후 일반적인 오류가 반환됩니다:
Aws::S3::Errors::BadRequest
정확한 오류 메시지를 확인할 수 있는 방법이 있을까요?
Falco
(Falco)
8월 18, 2021, 2:11오후
9
엔드포인트 환경 변수에 사용 중인 정확한 값은 무엇입니까?
schungx
(Stephen Chung)
8월 19, 2021, 2:26오전
10
네, Flexify.IO에서 서브도메인 모드를 설정할 수 있는 옵션을 찾았어요. 이제 정상적으로 작동합니다.
위키를 업데이트하겠습니다!