Como usar o sistema de arquivos efêmero do heroku

Eu estou usando Python / Django no Heroku (Cedar Stack) e eu tenho um comando de gerenciamento que eu preciso escrever que irá extrair um arquivo de um bucket do S3 e processá-lo. Não tenho certeza se entendi como usar o sistema de arquivos efêmero. Existem apenas alguns diretórios que são graváveis? Eu encontrei um outro artigo que implicava que havia apenas algumas pastas que eram graváveis ​​(mas, parece não se aplicar à pilha do Cedar). Eu encontrei este artigo dev mas ele não entra em muitos detalhes (note: eu entendo que é apenas temporário. Eu só preciso descompactar o arquivo e processar o arquivo). Posso apenas criar uma pasta em qualquer lugar sob a raiz do aplicativo? E como eu conseguiria isso? Parece que eu provavelmente poderia usar apenas $ HOME. Eu fiz um pouco de teste conectando via

$ heroku run bash 

e correndo:

 $ echo #HOME 

retorna:

/aplicativo

e correndo:

 $ mkdir $HOME/tmp 

cria uma pasta na raiz do aplicativo e fornece o mesmo usuário e grupo que os outros arquivos e pastas.

Então … qualquer coisa que eu esteja perdendo aqui? Uma maneira melhor de fazer isso? Existe uma variável de ambiente do sistema operacional para isso? Eu corri “env” e não vejo melhor.

Você pode criar um arquivo no diretório ‘/ tmp’ e esse arquivo será destruído após a conclusão da solicitação. Estou fazendo isso no Cedar e não tive nenhum problema.

Para realmente entender o sistema de arquivos efêmero, você precisa entender o que é um dinamômetro. Você pode ler mais sobre como funciona o dynos . Em poucas palavras, porém, um processo é executado no Heroku em uma máquina virtual com seu próprio sistema de arquivos. Essa máquina virtual pode parar por vários motivos, levando o sistema de arquivos junto com ela.

O sistema de arquivos subjacente será destruído quando um aplicativo for reiniciado, reconfigurado (por exemplo, heroku config ... ), dimensionado, etc. Por exemplo, se você tiver dois dynos da Web, grave alguns arquivos no sistema de arquivos efêmero e dimensione para três dynos. esses arquivos serão destruídos porque seu aplicativo está sendo executado em novos dynos.

Em geral, o sistema de arquivos efêmero funciona como qualquer sistema de arquivos. Diretórios para os quais você tem permissão para gravar, como $HOME e /tmp , para os quais você pode gravar arquivos. Quaisquer arquivos que exijam permanência devem ser gravados no S3 ou em um armazenamento durável semelhante. O S3 é preferido, já que o Heroku é executado no AWS e o S3 oferece algumas vantagens de desempenho. Todos os arquivos que podem ser recriados à vontade podem ser armazenados no repository efêmero do dyno.