program story

Heroku의 임시 파일 시스템을 사용하는 방법

inputbox 2021. 1. 6. 08:17
반응형

Heroku의 임시 파일 시스템을 사용하는 방법


저는 Heroku (Cedar Stack)에서 Python / Django를 사용하고 있으며 S3 버킷에서 파일을 가져와 처리하는 작성해야하는 관리 명령이 있습니다. 임시 파일 시스템을 사용하는 방법을 잘 모르겠습니다. 쓰기 가능한 특정 디렉토리 만 있습니까? 쓰기 가능한 특정 폴더 만 있다는 것을 암시하는 다른 기사를 찾았습니다 (하지만 Cedar 스택에는 적용되지 않는 것 같습니다). 이 개발 기사를 찾았 지만 자세한 내용 은 다루지 않았습니다 (참고 : 일시적 일 뿐이라는 것을 이해합니다. 파일 압축을 풀고 파일을 처리하기 만하면됩니다). 응용 프로그램의 루트 아래에 폴더를 만들 수 있습니까? 그리고 어떻게 얻을 수 있습니까? 아마도 $ HOME을 사용할 수있을 것 같습니다. 비아에 연결하여 약간의 테스트를 수행했습니다.

$ heroku run bash

및 실행 :

$ echo #HOME

보고:

/앱

및 실행 :

$ mkdir $HOME/tmp

앱의 루트에 폴더를 만들고 다른 파일 및 폴더와 동일한 사용자 및 그룹으로 제공합니다.

그래서 ... 내가 여기에 빠진 것이 있나요? 더 좋은 방법은? 이에 대한 OS 환경 변수가 있습니까? 나는 "env"를 실행했고 더 나은 것을 보지 못했다.


'/ tmp'디렉토리 아래에 파일을 생성 할 수 있으며 해당 파일은 요청이 완료된 후 삭제됩니다. 나는 Cedar에서이 일을하고 있는데 아무런 문제가 없었습니다.


임시 파일 시스템을 실제로 이해하려면 dyno가 무엇인지 이해해야합니다. 다이 노스의 작동 원리대해 더 많이 읽을 수 있습니다 . 간단히 말해, 프로세스는 자체 파일 시스템이있는 가상 머신의 Heroku에서 실행됩니다. 해당 가상 머신은 파일 시스템과 함께 여러 가지 이유로 중지 될 수 있습니다.

앱이 다시 시작, 재구성 (예 heroku config ...:), 확장 될 때 기본 파일 시스템이 파괴됩니다 . 예를 들어 웹 다이노가 2 개있는 경우 일부 파일을 임시 파일 시스템에 쓰고 3 개의 다이노로 확장하면 해당 파일이 파괴됩니다. 앱이 새로운 다이 노스에서 실행되고 있기 때문입니다.

일반적으로 임시 파일 시스템은 모든 파일 시스템처럼 작동합니다. 디렉토리 당신은 같은에 쓸 수있는 권한이 $HOME/tmp당신이 파일을 쓸 수 있습니다. 영구성이 필요한 모든 파일은 S3 또는 유사한 영구 저장소에 작성해야합니다. Heroku는 AWS에서 실행되고 S3는 성능상의 이점을 제공하므로 S3가 선호됩니다. 마음대로 다시 만들 수있는 모든 파일은 dyno의 임시 저장소에 저장할 수 있습니다.

참조 URL : https://stackoverflow.com/questions/12416738/how-to-use-herokus-ephemeral-filesystem

반응형