Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/docker/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
AWS Lambda(Python+;Flask)基本功能在使用API网关时不起作用_Python_Amazon Web Services_Flask - Fatal编程技术网

AWS Lambda(Python+;Flask)基本功能在使用API网关时不起作用

AWS Lambda(Python+;Flask)基本功能在使用API网关时不起作用,python,amazon-web-services,flask,Python,Amazon Web Services,Flask,我正在使用Flask在API网关上与AWS Lambda进行POC集成,以构建一个简单的S3上传函数。然而,当我使用Flask编写一个简单的Hello World函数时,它失败了,出现以下错误。 API网关已启用代理lambda。然而,我不知道为什么它没有通过这项活动 #Lambda Handler is fl.app from flask import Flask app = Flask(__name__) @app.route("/resourcetest") def

我正在使用Flask在API网关上与AWS Lambda进行POC集成,以构建一个简单的S3上传函数。然而,当我使用Flask编写一个简单的Hello World函数时,它失败了,出现以下错误。 API网关已启用代理lambda。然而,我不知道为什么它没有通过这项活动

#Lambda Handler is fl.app
from flask import Flask
app = Flask(__name__)

@app.route("/resourcetest")
def hello():
    return "Hello World!"

Response
Response
{
  "errorMessage": "'SERVER_NAME'",
  "errorType": "KeyError",
  "stackTrace": [
    [
      "/var/task/flask/app.py",
      2464,
      "__call__",
      "return self.wsgi_app(environ, start_response)"
    ],
    [
      "/var/task/flask/app.py",
      2442,
      "wsgi_app",
      "ctx = self.request_context(environ)"
    ],
    [
      "/var/task/flask/app.py",
      2359,
      "request_context",
      "return RequestContext(self, environ)"
    ],
    [
      "/var/task/flask/ctx.py",
      292,
      "__init__",
      "self.url_adapter = app.create_url_adapter(self.request)"
    ],
    [
      "/var/task/flask/app.py",
      2174,
      "create_url_adapter",
      "subdomain=subdomain,"
    ],
    [
      "/var/task/werkzeug/routing.py",
      1594,
      "bind_to_environ",
      "wsgi_server_name = get_host(environ).lower()"
    ],
    [
      "/var/task/werkzeug/wsgi.py",
      168,
      "get_host",
      "rv = environ[\"SERVER_NAME\"]"
    ]
  ]
}
函数日志

启动请求ID:5c0f26d9-00ac-4901-b224-c56c23fdff39版本:$LATEST
“服务器名称”:键错误
回溯(最近一次呼叫最后一次):
文件“/var/task/flask/app.py”,第2464行,在调用中__
返回self.wsgi_应用程序(环境,启动响应)
wsgi_应用程序中的文件“/var/task/flask/app.py”,第2442行
ctx=self.request\u上下文(环境)
文件“/var/task/flask/app.py”,第2359行,在请求上下文中
返回RequestContext(自身、环境)
文件“/var/task/flask/ctx.py”,第292行,在__
self.url\u adapter=app.create\u url\u adapter(self.request)
文件“/var/task/flask/app.py”,第2174行,位于创建url适配器中
子域=子域,
文件“/var/task/werkzeug/routing.py”,第1594行,在绑定到环境中
wsgi_server_name=get_host(environ).lower()
get_主机中的文件“/var/task/werkzeug/wsgi.py”,第168行
rv=环境[“服务器名称”]
KeyError:“服务器名称”
结束请求ID:5c0f26d9-00ac-4901-b224-c56c23fdff39
报告请求ID:5c0f26d9-00ac-4901-b224-c56c23fdff39持续时间:6.05毫秒计费持续时间:7毫秒内存大小:128 MB最大使用内存:53 MB初始持续时间:292.92毫秒
请求ID
5c0f26d9-00ac-4901-b224-c56c23fdff39

提供一点关于如何部署到aws lambda的背景知识?您好,感谢您的回复。我是通过AWS控制台做的。请让我知道是否需要任何其他特定的。此外,我已经安装了依赖项并使用zip文件上载。嗯,似乎
flask
正在尝试获取服务器的名称,但无法——这对于AWS lambda函数来说可能并不奇怪。也许你可以通过设置
SERVER\u NAME
env var的一些伪值来破解它,让flask满意。您好,Andrew,这不是从事件对象传递到lambda吗?