使用时,AWS Lambda作业运行两次服务生。伟

2024-04-28 10:23:01 发布

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

我使用lambda函数来运行AWS弹性代码转换器。在

如果我执行以下操作,该函数可以正常工作:

def lambda_handler(event, context):

  transcoder = boto3.client('elastictranscoder', REGION_NAME)
  pipeline_id = get_pipeline(transcoder, PIPELINE)

  input_file = os.path.basename(event['Records'][0]['s3']['object']['key'])
  filename_without_extension = os.path.splitext(input_file)[0]

  job = transcoder.create_job(
      PipelineId=pipeline_id,
      Input={
          'Key': 'uploads/' + input_file,
          'FrameRate': 'auto',
          'Resolution': 'auto',
          'AspectRatio': 'auto',
          'Interlaced': 'auto',
          'Container' : 'auto'
      },
      Outputs=[{
          'Key': filename_without_extension + '.mp4',
          'PresetId': '1487545782241-6uy45r',
      }]
  )

不过,我想做的是在代码转换完成后删除原始文件。在

(推荐人Deleting a file after transcoding with AWS Lambda and Elastic Transcoder

我想用服务员,等等()函数,但如果在代码末尾添加以下内容:

^{pr2}$

然后我的工作被重新提交?基本上相同的作业在弹性转码器中重新出现,但由于输出文件已经存在而失败。云监视日志显示作为同一lambda执行的一部分再次运行的作业。在

如何使用服务员,等等方法让我知道作业何时完成而不重新提交?在


Tags: pathlambda函数代码awseventidauto
1条回答
网友
1楼 · 发布于 2024-04-28 10:23:01

您需要在管道设置下订阅完成通知。通知必须启动一个新的lambda函数来处理您的自定义逻辑。在

enter image description here

您看到相同的作业再次提交的原因是,如果lambda函数执行失败(通过调用completion块并返回错误、超时等),lambda将在一个退避期后使用相同的事件自动重试该函数两次。在

相关问题 更多 >