一般为圣杯功能设置超时

set timeout for chalice functions in general

chalice 的文档中,您可以看到 lambda 函数在由 chalice 提供的 aws 上的配置示例。

我们的想法是您可以像下面这样定义一个应用程序:

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'}

使用此应用程序,您可以像这样设置 config.json 文件;

{
  "stages": {
    "dev": {
      "api_gateway_stage": "api",
      "lambda_functions": {
        "test_lambda": {
          "lambda_timeout": 120
        }
      }
    }
  },
  "version": "2.0",
  "app_name": "demotimeout"
}

执行此操作时,您设置了 test_lambda 函数的超时。

我想知道,index函数是否可以设置超时?一个没有 @app.lambda_function() 装饰器,一个有 @app.route('/') 装饰器?

如果到达Chalice 路线时不满足要求,则要么失败要么通过。 Chalice路由中没有超时设置。

但是在配置中设置的 lambda 的 Chalice 超时设置。

这是为 aws lambda 配置超时并部署它的一种方法:

    $> chalice --version
    chalice 1.2.2

首先创建一个"pure lambda",参考这个link了解详情: http://chalice.readthedocs.io/en/latest/topics/purelambda.html

@app.lambda_function(name='FancyLambdaFunc')
def fancy_handler(event, context):
    # Do all the fancy stuff ...

config.json 中的第 2 添加:

    "dev": {
      "api_gateway_stage": "api",
      "lambda_functions": {
        "FancyLambdaFunc": {
          "lambda_timeout": 240
        }
      }
    }

终于在AWS中验证了:(见上图)

更改 config.json 文件如下:

 {
  "stages": {
    "dev": {
      "api_gateway_stage": "api"
    }
  },
  "version": "2.0",
  "app_name": "myappname",
  "lambda_memory_size" : 2048,
  "lambda_timeout" : 120
}

无需使用 lambda 装饰器或任何东西。

当您想在 non-pure lambda 上设置超时(之前未在应用程序上下文中声明)时,AWS 中的 lambda 名称带有前缀。但是,在配置文件中你不应该设置这个前缀。

此配置的 lambda 函数的正确名称在您声明的资源文件中,在 .chalice/deployed/prod.json

的圣杯中

使用来自此文件的相应 lambda 函数的 name,而不是来自 AWS 控制台。