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.
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: