Quden transcoder
Video のトランスコードなどを行うサーバのリポジトリです。 AWS ECS でワーカーとしてデプロイされています。
NOTE
Video の変換処理については、動画変換処理の概要 を参照してください。
local 環境セットアップ
- bitwarden の
quden-transcoder / .env.development.localをコピーして、.env.development.local として保存 npm run dev:docker:upでコンテナを立ち上げるconstants.ts内IS_ECS_VIDEO_TRANSCODER_AVAILABLEフラグをtrueにした状態で、backend を立ち上げる- backend で
yarn ngrokをし、backend を公開 - chrome 拡張で動画を撮影すると、ジョブが SQS にキューされ、transcoder がジョブを処理するようになる
ローカルでのデバッグ方法
npm run dev:docker:up で立ち上げたコンテナに入り込む場合は、以下のコマンドを実行してください。
# $CONTAINER_ID には、`docker container ls -a` などで確認できる、docker コンテナの ID を入れてください
docker exec -it $CONTAINER_ID /bin/bashデプロイ方法
コンテナは AWS の ECR のサービスの1つとしてデプロイされています。デプロイの流れは大きく下記のとおりです。
- Version の更新
- AWS ECR に Docker image を push する
- Push した image で ECS の Service を更新する
0: Version の更新
Create Release workflow で workflow_dispatch をトリガーすることで、version を更新できます。
流れは下記のとおりです:
workflow_dispatchをトリガーするmainブランチが更新されるので local に main ブランチを pull する
NOTE
TODO: 本当は deploy まで GitHub Actions で実行したい
1: AWS ECR に Docker image を push する
まずはじめに、下記2つの dotfile をルートディレクトリに用意して、必要な情報を代入してください。
.env.staging.env.production
# ex: .env.(staging|production)
AWS_ACCOUNT_ID= # AWS ACCOUNT ID を入れる
AWS_PROFILE_NAME= # aws cli の profile 名を入れる
AWS_ECR_REPO_NAME= # push する先の ECR リポジトリ名を入れる.env ファイルが用意できたら、以下の手順に従って push およびデプロイ作業を行ってください:
- SSO で AWS にログイン (
aws sso login --profile $AWS_PROFILE_NAME) npm run (stg|prod):build-and-push-imageで docker image build を行い、 ecr への push を行う
TIP
stg:build-and-push-image:cache は、キャッシュを利用してビルドを行うため、ビルド時間を短縮できます。ただし、キャッシュが古い場合は、ビルドが失敗する可能性があります。
2: Push した image で ECS の Service を更新する
Image が正常に Push できたら、AWS の ECS コンソールにアクセスして、Service を更新します。
大抵のケースではタスク定義を更新する必要はなく、既存のタスク定義を指定しつつ、「新しいデプロイを強制」することで、push した image を反映します。
詳細な手順は下記クリップを参考にしてください:
https://app.quden.io/videos?videoId=65b881222fd9704fecab4646