使用AWS Lambda和Elastic transcode转换代码后删除文件

2024-04-28 02:08:24 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在使用一个Lambda python脚本对上传的文件调用弹性代码转换器。转码后如何删除文件?在

目前,我的代码创建作业,然后直接删除源文件,也就是说,在作业有机会运行之前。:-)

如何等待弹性转码完成?在

import os
import boto3
import urllib

def lambda_handler(event, context):
  transcoder = boto3.client('elastictranscoder', 'ap-southeast-2')
  pipeline_id = get_pipeline(transcoder, 'MP4 Transcode')
  base_filename = os.path.basename(event['Records'][0]['s3']['object']['key'])
  output = transcoder.create_job(
      PipelineId=pipeline_id,
      Input={
      'Key': create_aws_filename('uploads', base_filename, ''),
      'FrameRate': 'auto',
      'Resolution': 'auto',
      'AspectRatio': 'auto',
      'Interlaced': 'auto',
      'Container' : 'auto'
  })
bucket = event['Records'][0]['s3']['bucket']['name']
key = urllib.unquote_plus(event['Records'][0]['s3']['object']['key'])
print("deleting " + key)  
boto3.client('s3').delete_object(Bucket=bucket, Key=key)

Tags: 文件key代码importeventautopipelineobject
1条回答
网友
1楼 · 发布于 2024-04-28 02:08:24

基本上,您必须轮询Elastic Transcoder以了解作业的状态(例如,每隔30秒),然后等待作业完成。一旦作业完成,就可以删除S3源文件。在

使用boto3,可以检索作业的状态,如下所示:

transcoder = boto3.client('elastictranscoder')
job = transcoder.read_job(Id=job_id)
status = job['Job']['Status']

或者,您可以使用^{} waiter.

相关问题 更多 >