Open roamdam opened 2 years ago
@nficano any chance to get the PR from rashadmoarref approved ? I have been using his fix as well it it is working fine !
Thanks.
Sleep looks like hack and what if you are updating many functions in same time? deployment will be very long. Possible solutions:
I think we need to go by way 1 so there will be no delays in deployments and guarantee that status changes after all changes are done. PR above can be used as temp fix and can work but not in 100% times and makes deployments much longer!
Okay. As everything is async I've used client waiter to make configuration changes during update. PR https://github.com/nficano/python-lambda/pull/716
I can see this issue has been resolved in #714 but the latest version available on pip is 11.8.0 from over a year ago. https://pypi.org/project/python-lambda/
Is it possible to publush a new version please so we can have access to the latest code via pip?
I'm running the latest version 11.8.0 on Python v3.11, and getting the same ResourceConflictException
whenever I run:
lambda deploy \
--config-file aws_lambda_config.yaml \
--requirements requirements.txt
It still uploads the lambda and everything seems to works fine, so it's only a minor nuisance.
Here is the full traceback:
Traceback (most recent call last):
File "/app/.venv/bin/lambda", line 213, in <module>
cli()
File "/app/.venv/lib/python3.11/site-packages/click/core.py", line 716, in __call__
return self.main(*args, **kwargs)
^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/app/.venv/lib/python3.11/site-packages/click/core.py", line 696, in main
rv = self.invoke(ctx)
^^^^^^^^^^^^^^^^
File "/app/.venv/lib/python3.11/site-packages/click/core.py", line 1060, in invoke
return _process_result(sub_ctx.command.invoke(sub_ctx))
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/app/.venv/lib/python3.11/site-packages/click/core.py", line 889, in invoke
return ctx.invoke(self.callback, **ctx.params)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/app/.venv/lib/python3.11/site-packages/click/core.py", line 534, in invoke
return callback(*args, **kwargs)
^^^^^^^^^^^^^^^^^^^^^^^^^
File "/app/.venv/bin/lambda", line 117, in deploy
aws_lambda.deploy(
File "/app/.venv/lib/python3.11/site-packages/aws_lambda/aws_lambda.py", line 138, in deploy
update_function(
File "/app/.venv/lib/python3.11/site-packages/aws_lambda/aws_lambda.py", line 744, in update_function
ret = client.update_function_configuration(**kwargs)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/app/.venv/lib/python3.11/site-packages/botocore/client.py", line 530, in _api_call
return self._make_api_call(operation_name, kwargs)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/app/.venv/lib/python3.11/site-packages/botocore/client.py", line 960, in _make_api_call
raise error_class(parsed_response, operation_name)
botocore.errorfactory.ResourceConflictException: An error occurred (ResourceConflictException) when calling the UpdateFunctionConfiguration operation: The operation cannot be performed at this time. An update is in progress for resource: arn:aws:lambda:us-east-1:012345678901:function:my_lambda
Problem
It seems that the application of lambda states to all functions, including zip-file based lambdas, prevents from deploying as previously with
lambda deploy
. Several lambdas that I was able to deploy perfectly last week do not deploy now.Error
The error I'm getting is the following
Observations
It seems that right after calling the
client.update_function_code
method, theLastUpdateStatus
from the lambda's configuration stays atInProgress
, thus the subsequent call toclient.update_function_configuration
is refused by the API.I've tried adding a simple
time.sleep(120)
right after the call toclient.update_function_code
, and it seems to work : after waiting the value ofLastUpdateStatus
goes back toSuccessful
, and the deployment goes fine afterwards.