VOD Station 대체 (1) Cloud Function, API Gateway 에서 1편을 보실 수 있어요!

🦔 Custom Image

Untitled

인코딩이 필수적으로 필요한 코덱 라이브러리인 ffmpeg은 모듈이 아닌 패키지라서 설치돼야 한다.

그런데 cloudfunction은 코드의 실행이 끝나면 리소스를 클라우드에게 반납하니까 런타임중 설치한 패키지들도 몽땅 날아간다 ㅎㅎ

cloudfunction을 처음부터 ffmpeg이 설치된 환경에서 구동하고 싶었는데 Custom Image를 만들면 가능했다.

Untitled

대신 아무 이미지나 되는 건아니고 Base 이미지 사용이나 WORKDIR등의 사항이 정해져있다.

이런 부분을 신경써서 Dockerfile을 아래처럼 작성해줬다!

// 반드시 cloudfunction에서 정해준 base 이미지를 사용
FROM cloudfunctions.kr.ncr.ntruss.com/cloudfunctions-nodejs-16:latest

// cloudfunction 기본 이미지가 rocky 8.7이고 rocky 8.7에서 ffmpeg설치하는 명령
RUN dnf -y install epel-release \\
&& dnf -y install <https://download1.rpmfusion.org/free/el/rpmfusion-free-release-8.noarch.rpm> \\
&& dnf -y update \\
&& dnf config-manager --set-enabled powertools \\
&& dnf -y install ffmpeg 

// base이미지와 동일한 workdir 설정 (cloudfunction 요구사항)
WORKDIR /nodejsAction

// 의존성 모듈도 설치
RUN npm install fluent-ffmpeg \\
&& npm install aws-sdk

// base이미지와 동일한 CMD 설정 (cloudfunction 요구사항)
CMD ["node", "--expose-gc", "app.js"]

자세한 건 ‣

🔒 Private Subnet?

Untitled

Custom Image 사용을 위해 추가적인 인프라 구축이 필요했다.

Untitled

Custom Image를 위해서는 반드시 VPC 환경의 Cloud function에서 실행돼야하고

Untitled