AWS Sagemaker:端点“HTTP 301 293”无响应

时间:2018-03-28 22:15:37

标签: amazon-web-services nginx flask gunicorn amazon-sagemaker

我正在尝试通过sagemaker托管自定义docker容器。 我使用nginx,gunicorn,烧瓶设置。 我能够为我的应用程序调用(ping)端点。 输入到我的服务是'application / json'格式,服务的预期输出是json。

当我调用该服务时,我在客户端获得以下输出:

'<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2Final//EN">\n<title>Redirecting...</title>\n<h1>Redirecting...</h1>\n<p>You should be redirected automatically to target URL: <a href="http://boaucpph.aws.local:8080/invocations/">http://boaucpph.aws.local:8080/invocations/</a>.  If not click the link.'

和我的端点日志告诉:

10.32.0.2 - - [28/Mar/2018:20:50:41 +0000] "POST /invocations HTTP/1.1" 301 293 "-" "AHC/2.0"

我的nginx.conf

worker_processes 1;
daemon off; # Prevent forking

pid /tmp/nginx.pid;
error_log /var/log/nginx/error.log;

events {
  # defaults
}

 http {
  include /etc/nginx/mime.types;
  default_type application/octet-stream;
  access_log /var/log/nginx/access.log combined;

  upstream gunicorn {
    server unix:/tmp/gunicorn.sock;
  }

  server {
    listen 8080 deferred;
    client_max_body_size 100M;

    keepalive_timeout 5;

    location ~ ^/(ping|invocations) {
      proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
      proxy_set_header Host $http_host;
      proxy_redirect off;
      proxy_pass http://gunicorn;
    }

    location / {
      return 404 "{}";
    }
  }
}

有没有人遇到过类似的问题?对此提出任何建议都会有很大帮助。

1 个答案:

答案 0 :(得分:0)

好吧我明白了。 问题出在我的烧瓶文件中。

最初我的烧瓶文件中的端点是这样的。

void method1(int m, int n)
         int p = m / n;
         if (n != 0) {
         System.out.println("Print some value");
         }
         if (n == 0) {
         System.out.println("Infinity");
         }
         return p;

必须将其更改为

@app.route('/invocations/', methods=['POST']) 

因为在nginx文件服务器中会向

发送请求
@app.route('/invocations', methods=['POST'])

即。

 location ~ ^/(ping|invocations) {

由于有一个额外的/ in烧瓶应用程序,它没有收到请求。