使用AWS Lambda Python 實現S3桶上傳事件觸發,進行視訊壓縮儲存
阿新 • • 發佈:2018-12-28
最近實現錄製視訊實時上傳到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文打包上傳
以上。