• 요구사항 :
    • AWS Lambda ARM64 환경에서 HTML 멀티미디어 웹 랜더링. -> 기본적으로 chromium 기반으로 처리.
  • 대책1 : 크로미움 with HEVC
    • https://github.com/StaZhu/enable-chromium-hevc-hardware-decoding 
    • chromium 은 '크롬' 과 다르게... 비디오 코덱의 제약이 있음.
    • 그래서 h.256 지원하는 소스를 찾아~ 빌드하고 테스트 해봐야 됨. (과연 람다 환경에서 잘 동작할지???)
  • 대책2 : 크로미움 Binary
    • https://github.com/remotion-dev/lambda-binaries
    • h.264 까지는 지원이 되는것을!!! 심지어 바이너리 무설치 버전 꽁짜로 제공. ㅎㄷㄷ 이렇게 까지 해주는 이유가 뭔데?
    • 리모션 내부엔 따로 디코딩 서버 있음 . (h.256 등등 각종 비지원 코덱 처리용)
    • 리모션에서 제공하는 특정 tag(<video...> ) 를 -> 해당 HTML 에 적용하면 된다고 함!
  • 대책3 : 토륨
    • https://thorium.rocks
    • https://github.com/Alex313031/thorium
    • https://github.com/Alex313031/Thorium-Special/releases
    • h.265 지원 되고... 속도까지 (지구상에서 젤빠른?) 최적화 되었다고 함.
    • 결론적으로... AWS Lambda ARM64 환경에서 동작 되도록 할수만 있다면, 베스트!!!
    • (라즈베리 arm64 용 .rpm , .deb , .zip 등등을 테스트)
  • base-image 후보
    • python:3.10 : ...
    • python:3.10-alpine : ...
    • public.ecr.aws/lambda/python:3.10 : ...
  • Dockerfile 예시
    • FROM python:3.10 AS base-image
      
      RUN set -x \
          && apt-get update \
          && apt-get install -y \
              libnss3 \
              libatk1.0-0 \
              libatk-bridge2.0-0 \
              libcups2 \
              libdrm2 \
              libxkbcommon-x11-0 \
              libxcomposite-dev \
              libxdamage1 \
              libxrandr2 \
              libgbm-dev \
              libffi-dev \
              libasound2 \
              dbus \
              rpm \
              git \
              zip \
              sudo \
          && rm -rf /var/lib/apt/lists/*
          
      ADD https://github.com/Alex313031/Thorium-Special/releases/download/M114.0.5735.134-1/thorium-browser_114.0.5735.134.aarch64.rpm ./thorium.rpm
      #RUN rpm -qa
      #RUN rpm -qpR thorium.rpm
      #RUN rpm -ivvh thorium.rpm
      RUN rpm --install --nodeps thorium.rpm
      
      ADD https://github.com/Alex313031/Thorium-Special/releases/download/M114.0.5735.134-1/thorium-browser_114.0.5735.134_arm64.zip ./thorium.zip
      RUN unzip -d ./thorium thorium.zip
      
      #CMD mkdir /run/dbus -p
      #CMD dbus-daemon --system
      #CMD service dbus start
    • ...
  • 미션 : AWS Lambda ARM64 에서 Thorium Raspberry Pi Release 실행
    • /bin/thorium-shell
    • /src/thorium/THORIUM-PORTABLE
    • /src/thorium/THORIUM-SHELL 
      • --no-sandbox --headless --disable-dev-shm-usage --no-zygote --single-process
      • --user-data-dir=/tmp --data-path=/tmp --homedir=/tmp --disk-cache-dir=/tmp
    • 오류1 : D-Bus 관련 파일을 못찾음? (해당 dbus 데몬이이 안떠있음?)
      • 봉님왈 dbus-devel dbus-glib-devel 설치하기? (https://saengjja.tistory.com/418)
      • 그냥 service dbus start 띄우기? (https://wsldl-pg.github.io/ArchW-docs/Known-issues/#d-bus)
    • 오류2 : AWS Lambda 에서 D-Bus 잘안뜸...
      • dbus[22]: Unknown username "systemd-timesync" in message bus configuration file
      • dbus-daemon[22]: Failed to start message bus: Failed to bind socket "/run/dbus/system_bus_socket": Read-only file system
  • ...

-끝-

'DevOps' 카테고리의 다른 글

EKS 초기화  (0) 2023.09.14
doppler  (0) 2023.07.13
Jenkins  (0) 2022.01.02
puckel Airflow V1 on K8S  (0) 2021.06.26
git-sync  (0) 2021.06.26

+ Recent posts