ApiGateway has 500 error when Lambda is updating


I am seeing a rare race condition. Sometimes, if I update my image-based Lambda to have a new image, the ApiGateway api that is triggering the Lambda returns the following error:

(f654758f-d377-4222-a4c3-766325f0de32) Lambda invocation failed with status: 409. Lambda request id: 1e69c921-26ce-4c4d-81ad-183264a08c59
(f654758f-d377-4222-a4c3-766325f0de32) Execution failed due to configuration error: The operation cannot be performed at this time. The function is currently in the following state: Pending
(f654758f-d377-4222-a4c3-766325f0de32) Method completed with status: 500

Here is how I'm updating the Lambda which causes the race condition to occur:

# publish the new docker image to the function
aws lambda update-function-code --publish --function-name "$name" --image-uri "$image"
# update my alias to the new published version
aws lambda update-alias --name "$stage" --function-name "$name" --function-version "$version"

I must be doing something wrong, because if a Lambda image or alias can't be updated atomically, that is a deal-breaker for reliable deployments.

1 Answer
Accepted Answer

Lambda functions can be in one of several states. This happens during function creation and update.

I assume your API is configured to invoke a specific lambda alias. It seems you are moving your alias before the new lambda version is in the Active state. You should be update the alias only after the function gets into the Active state.

profile pictureAWS
answered 2 years ago
  • Yes, that would make sense. I have added the following commands before I update the alias pointer, and it seems to clear up the issue:

    aws lambda wait function-updated --function-name "$name"
    aws lambda wait function-active --function-name "$name"

You are not logged in. Log in to post an answer.

A good answer clearly answers the question and provides constructive feedback and encourages professional growth in the question asker.

Guidelines for Answering Questions