aws ffmpeg+ lambda来完成视频stream的截图 python docker 版

aws ffmpeg+ lambda来完成视频stream的截图 python docker 版

描述:

业务需求在aws云上面实现直播,随机截取直播流进行截图,上传到S3桶里面去。
业务其实很简单,难点是在如何在serverless的lambda来部署ffmpeg,因为lambda的无状态特性,所以我们无法直接在lambda上安装ffmpeg的安装包。
这就让我们在aws的lambda上部署ffmpeg变的困难起来,但是方法总比困难多,我有两个解决方案:
1. 通过docker 部署到aws 的lambda 
2. 通过自定义层的方法部署到lambda
我们前面讲了第二种方案,今天介绍一下比较繁琐的第一种方案。

通过Docker的方式来部署ffmpeg到lambda

准备事项:
  1. 准备一台与lambda系统相同的ec2(临时使用用完就可以delete掉了)

    在这里插入图片描述

  2. 创建IAMffmpeg_ecr_builder

    在这里插入图片描述

  3. 给角色赋予一个策略

    在这里插入图片描述

  4. 给ec2绑定角色即可

    在这里插入图片描述

  5. git clone 自己的项目到ec2实例上面

    git clone 项目url
    
  6. 创建build文件夹并将git clone下来的项目文件夹移动进去

    mkdir inplay_build
    # 移动项目到build文件夹里面
    mv inplay_ffmpeg/ inplay_build/
    #移动Dockerfile到build文件夹里面
    mv Dockerfile /home/ec2-user/inplay_build/
    
  7. 将准备好的dockerfile代码写入到Dockerfile里面

    FROM public.ecr.aws/lambda/python:3.9
    RUN export ENVIRONMENT=$ENVIRONMENT:online
    RUN /var/lang/bin/python3.9 -m pip install --upgrade pip
    RUN yum -y install gcc libjpeg-devel zlib-devel gcc-c++ python3-wheel epel-release wget tar gzip xz
    RUN wget https://johnvansickle.com/ffmpeg/releases/ffmpeg-release-amd64-static.tar.xz
    RUN wget https://johnvansickle.com/ffmpeg/releases/ffmpeg-release-amd64-static.tar.xz.md5
    RUN md5sum -c ffmpeg-release-amd64-static.tar.xz.md5
    RUN tar -xvf ffmpeg-release-amd64-static.tar.xz
    RUN mv ffmpeg-5.0.1-amd64-static/ffmpeg /usr/bin
    copY ./inplay_ffmpeg ./
    CMD ["lambda_handle.lambda_handler"]
    
  8. 我们要开始build docker image了

    sudo docker build -t inplay:latest -f Dockerfile .
    

好了到此我们项目的image 也build完了一切都准备好了,那么我们如何将docker 部署到AWS 的lambda上呢?我们还需要使用一个AWS的服务那就是Amazon Elastic Container Registry (Amazon ECR)

我们开始ecr的部分

  1. 我们通过允许一下命令对ecr 注册表种的docker进行身份验证。

    重要提示:将 us-east-1 替换为 AWS 区域。然后,将 123456789012 替换为您的 AWS 账户 ID。
    aws ecr get-login-password --region us-east-1 | docker login --username AWS --password-stdin 123456789012.dkr.ecr.us-east-1.amazonaws.com
    
  2. 通过运行以下 create-repository AWS CLI 命令创建 Amazon ECR 存储库:

    重要提示:请将 hello-world 替换为您的 Amazon ECR 存储库的名称。
    aws ecr create-repository --repository-name hello-world --image-scanning-configuration scanOnPush=true --image-tag-mutability MUTABLE
    
  3. 通过运行以下 docker tag Docker CLI 命令来标记要推送到存储库的容器镜像:

    重要提示:请将 123456789012 替换为您的 AWS 账户 ID。将 us-east-1 替换为 AWS 区域。
    docker tag  hello-world:latest 123456789012.dkr.ecr.us-east-1.amazonaws.com/hello-world:latest
    
  4. 通过运行以下 docker push Docker CLI 命令将您的容器镜像推送到存储库:

    重要提示:请将 123456789012 替换为您的 AWS 账户 ID。将 us-east-1 替换为 AWS 区域。
    docker push 123456789012.dkr.ecr.us-east-1.amazonaws.com/hello-world:latest
    

好到此我们已经将我们的项目push到ecr上了,接下来我们要将docker部署到lambda上面去了

部署docker到lambda

  1. 创建一个lambda

    在这里插入图片描述


    在这里插入图片描述

好了到此我们的项目已经通过docker的方式部署到lambda上面了

相关文章

显卡天梯图2024最新版,显卡是电脑进行图形处理的重要设备,...
初始化电脑时出现问题怎么办,可以使用win系统的安装介质,连...
todesk远程开机怎么设置,两台电脑要在同一局域网内,然后需...
油猴谷歌插件怎么安装,可以通过谷歌应用商店进行安装,需要...
虚拟内存这个名词想必很多人都听说过,我们在使用电脑的时候...
win11本地账户怎么改名?win11很多操作都变了样,用户如果想要...