프로그래밍 공부/Ruby on Jets : 서버리스 프레임워크
Ruby on Jets : 임시파일 저장/보관
나른한 하루
2020. 5. 2. 12:29
AWS Lambda에서 간혹 파일을 임시적으로 등록해야 할 경우가 있습니다 :
-
Path를 가리켜서 이미지 분석을 해야할 때
-
Path가 가리키는 파일을 FTP 서버에 업로드 해야할 때
-
...
위와같은 용도로서 AWS Lambda에 임시적으로 파일 생성을 하려 하면 일반적인 디렉터리에는 파일 생성/보관이 안됩니다. 이는 디렉터리 권한 때문입니다.
하지만 다행히도 서버에 있어서 한가지 암묵적인 규칙이 있습니다. 다양한 프로그램의 개발 Process를 보면 프로그램 내에서 임시적으로 파일을 생성을 해야 할 경우, /tmp 파일에 등록을 하는 방향으로 개발이 이루어집니다.
AWS Lambda 역시 위 규칙을 참고하여, /tmp 한 디렉터리에 대해서만 파일 생성/보관이 되게 했습니다.
직접 한번 /tmp 폴더에 파일을 생성 및 확인을 해보겠습니다.
1. Ruby on Jets에 Job 파일을 생성하고, 아래와 같은 내용으로 AWS Lambda에 배포했습니다.
class FileWriteTestJob < ApplicationJob
def job_test
system "cd /tmp; touch ImFine;" # /tmp 파일 이동 및 ImFine 파일 생성
p system "cd /tmp; ls" # tmp 디렉터리를 조회하는 디버깅 코드
end
end
2. Jets를 통해 배포된 Job을 AWS Lambda 함수에서 실행하고, 결과를 봅니다.
아까와 달리 Write 에러 없이 touch 명령어를 통해 파일이 잘 생성된게 확인됩니다.