'set timeout for chalice functions in general
In the documentation of chalice one can see an example of a configuration of a lambda function on aws provisioned by chalice.
The idea is that you can define an app like below:
from chalice import Chalice
app = Chalice(app_name='demotimeout')
@app.route('/')
def index():
return {'hello': 'world'}
@app.lambda_function()
def test_lambda(event, context):
return {'hello': 'world'}
And with this app you can set the config.json
file like so;
{
"stages": {
"dev": {
"api_gateway_stage": "api",
"lambda_functions": {
"test_lambda": {
"lambda_timeout": 120
}
}
}
},
"version": "2.0",
"app_name": "demotimeout"
}
When you do this, you set the timeout for the test_lambda
function.
I was wondering, is it possible to set the timeout of the index
function? The one that does not have the @app.lambda_function()
decorator but the one that has the @app.route('/')
decorator?
Solution 1:[1]
If the requirements aren't met when it hits the route in Chalice, it will either fail or pass. There is not a timeout setting in Chalice routing.
There is however a timeout setting in Chalice for the lambdas which an be set in the config.
Solution 2:[2]
Change the config.json file as follow:
{
"stages": {
"dev": {
"api_gateway_stage": "api"
}
},
"version": "2.0",
"app_name": "myappname",
"lambda_memory_size" : 2048,
"lambda_timeout" : 120
}
No need to use lambda decorator or anything.
Solution 3:[3]
Here is one way to configure timeout for aws lambda and deploy it:
$> chalice --version
chalice 1.2.2
1st create a "pure lambda", refer to this link for details: http://chalice.readthedocs.io/en/latest/topics/purelambda.html
@app.lambda_function(name='FancyLambdaFunc')
def fancy_handler(event, context):
# Do all the fancy stuff ...
2nd in config.json add:
"dev": {
"api_gateway_stage": "api",
"lambda_functions": {
"FancyLambdaFunc": {
"lambda_timeout": 240
}
}
}
finally verify in AWS: (see above pic)
Solution 4:[4]
When you want to set the timeout on a non-pure lambda (not previously declared in the app context), the name of lambda in AWS is prefixed. But, in config file you should not set this prefix.
The correct name of the lambda function for this configuration is in your declared resources file, in the chalice at .chalice/deployed/prod.json
Use the name
of the respective lambda function from this file, not from the AWS console.
Sources
This article follows the attribution requirements of Stack Overflow and is licensed under CC BY-SA 3.0.
Source: Stack Overflow
Solution | Source |
---|---|
Solution 1 | |
Solution 2 | john |
Solution 3 | |
Solution 4 |