AWS Lambda函数和API网关由于执行时间限制的限制,可能会导致ffmpeg超时问题。要解决这个问题,可以使用AWS Step Functions调用Lambda函数并实现无限执行时间的效果。
下面是示例代码:
{ "Comment": "A state machine that executes a Lambda function.", "StartAt": "InvokeLambdaFunction", "States": { "InvokeLambdaFunction": { "Type": "Task", "Resource": "arn:aws:states:::lambda:invoke", "Parameters": { "FunctionName": "lambda-function-name", "Payload.$": "$" }, "ResultPath": "$.output", "Next": "IsComplete" }, "IsComplete": { "Type": "Choice", "Choices": [ { "Variable": "$.statusCode", "NumericEquals": 200, "Next": "Done" } ], "Default": "Retry" }, "Done": { "Type": "Pass", "End": true }, "Retry": { "Type": "Wait", "Seconds": 1, "Next": "InvokeLambdaFunction" } } }
import boto3
def update_lambda_timeout(lambda_client, function_name, timeout): lambda_client.update_function_configuration( FunctionName=function_name, Timeout=timeout )
def lambda_handler(event, context): lambda_client = boto3.client('lambda') function_name = context.function_name timeout = 300 update_lambda_timeout(lambda_client, function_name, timeout)
{ "StartAt": "StartExecution", "States": { "StartExecution": { "Type": "Task", "Resource": "arn:aws:states:::states:startExecution.sync", "Parameters": { "StateMachineArn": "aws-resource-name-state-machine-ARN", "Input.$": "$