1. 程式人生 > >使用AWS Lambda Python 實現S3桶上傳事件觸發,進行視訊壓縮儲存

使用AWS Lambda Python 實現S3桶上傳事件觸發,進行視訊壓縮儲存

最近實現錄製視訊實時上傳到AWS S3中,同時想對上傳的視訊進行壓縮儲存。考慮到用AWS Lambda來實現。

實時上傳是在Spring Boot專案中處理的,本文針對用Python 實現S3桶上傳事件觸發,進行視訊壓縮儲存。這一過程做個筆記。

1. 新建Lambda專案

2. 新增S3觸發器

3. 新建執行角色,為lambda 新增S3許可權

4. 語言選擇python

5. 編碼,準備ffmpeg,打包上傳

python程式碼

import logging
import boto3
import json
import os
logger = logging.getLogger()
logger.setLevel(logging.INFO)

s3 = boto3.resource('s3')

def lambda_handler(event, context):
    
    text = event['Records'][0]
    filename = text['s3']['object']['key']
    logger.info(filename)
    
    localFileName = '/tmp/' + filename
    s3.meta.client.download_file('S3-name', filename, localFileName)
    
    # f = open(localFileName,'r')
    # logger.info(f.read())
    
    logger.info(os.system('ls /tmp'))
    
    localFileName_split = localFileName.split('.', 1)
    compressFileName = localFileName_split[0] + '_compression' + '.' + localFileName_split[1]
    
    ffmpegCmd = './ffmpeg -i ' + localFileName + ' -vcodec libx264 -preset fast -crf 30 ' + compressFileName
    logger.info(os.system('ls /tmp'))

    logger.info(os.system(ffmpegCmd))

    s3.meta.client.upload_file(compressFileName, 'S3-name', filename)

將python程式碼和ffmpeg文打包上傳

以上。