2014-11-30 22 views
0

많은 정적 파일을 사용하는 Python 응용 프로그램이 있습니다. 이러한 정적 파일을 Amazon S3에 저장하고 싶습니다. 사용자가 파일 (예 : pdf)을 요청하면 S3에서 제공됩니다. 그러나 화장품 용도로는 S3 URL을 주소 표시 줄에 표시하고 싶지는 않지만 단지 사용자를 혼란스럽게 할뿐입니다. 사용자가 다운로드 URL을 S3로 표시하더라도 브라우저에서 볼 수있는 파일 용도로는 실제 URL을 숨기는 것이 합리적이라고 생각하면 파일을 다운로드해야합니다.Amazon S3에서 Heroku를 통해 정적 파일 검색

예 : 서버가 외부 URL에서 당겨 가리키고은 http://www.amazons3.com/user/file/file2.pdf

나는 보안상의 이유로이 일을하고 있지 않다 있습니다 여기서 사용자가, http://www.example.com/view/myfile.pdf에서 pdf 파일을 볼. 몇 가지 조사를 한 후에 Nginx를 실행하는 서버가 "X-Accel-Redirect"를 통해 URL을 가릴 수 있음을 발견했습니다. 그러나, 이것은 실제로 Heroku 때문에 옵션이 아닙니다.

Heroku가 라우팅을 처리하므로 Herokus 플랫폼을 사용하여이 "마스킹"을 구현할 수있는 방법이 있습니까?

정적 파일 제공과 관련하여 여러 가지 질문이 있지만 URL 마스킹과 관련해서는 아무것도 없습니다.

내 애플리케이션 스택은 다음과 같습니다

  • 파이썬 플라스크
  • Gunicorn
  • 에게 Heroku는

답변

1

경로를 소요하고 적절한 S3 파일로 리디렉션하여 플라스크 응용 프로그램의 경로를 확인합니다.

@app.route('/s3/<path:path>') 
def s3_file(path): 
    return redirect('https://www.amazons3.com/user/file/{}'.format(path), code=301) 

당신은 적절한 URL을 구축 할 url_for를 사용할 수 있습니다

url_for('s3_file', path='file2.pdf') 
+0

사용자가 실제로 S3 URL이 표시되지 않는 경우이 작업을 수행 할 수있는 방법이 있나요를? 보안 문제가 아니라 화장품 일뿐입니다. 내 파일의 이름 중 일부는보기 흉하고 비행 중에 이름을 바꿀 수 있기를 바랍니다. – Sam

관련 문제