2017-11-29 9 views
2

Hier ist mein Lambda CodeAWS Labmda Java HttpURLConnection Timeout

import com.amazonaws.services.lambda.runtime.Context; 
import com.amazonaws.services.lambda.runtime.RequestHandler; 

import java.io.IOException; 
import java.net.HttpURLConnection; 
import java.net.URL; 

public class CallURL implements RequestHandler<Void, String> { 

    @Override 
    public String handleRequest(Void input, Context context) { 
     try { 
      String vAdress = "https://www.google.com"; 
      //context.getLogger().log("URL: " + vAdress+"\n"); 

      URL vURL = new URL(vAdress); 
      //context.getLogger().log("Open connection\n"); 
      HttpURLConnection vConnection = (HttpURLConnection) vURL.openConnection(); 
      vConnection.setRequestMethod("GET"); 
      vConnection.setConnectTimeout(1000); 
      vConnection.connect(); 
      return String.valueOf(vConnection.getResponseCode()) +" : "+ vConnection.getResponseMessage(); 
     } catch (IOException ioe) { 
      return ioe.toString(); 
     } 
    } 
} 

Alles bis diese Linie große Werke

HttpURLConnection vConnection = (HttpURLConnection) vURL.openConnection(); 

Wenn ich diese Funktion zu testen, versuche ich jedes Mal Timeout-Fehler haben.

"errorMessage": "2017-11-29T08:36:22.020Z 5ea45429-d4e0-11e7-8749-31e92e6a27f6 Task timed out after 3.00 seconds" 

Ich habe "Keine VPC" in Lambda-Einstellungen gewählt. Kann jemand helfen?

Antwort

0

Alle Anrufe an AWS Lambda müssen innerhalb von 300 Sekunden ausgeführt werden. Das Standard-Timeout beträgt 3 Sekunden. Sie können das Timeout jedoch auf einen Wert zwischen 1 und 300 Sekunden festlegen.

Siehe: http://docs.aws.amazon.com/lambda/latest/dg/monitoring-functions.html

+0

Ich habe Standard Lambda Timeout 3 Sekunden verwenden. Problem nicht hier. Problem in HttpURLConnection, Lambda kann keine Verbindung zu URLs herstellen. Ich denke, einige zusätzliche Konfiguration benötigt, aber ich habe keine Ahnung, was –

0

Versuchen zu entfernen vConnection.setConnectTimeout (1000); oder erhöhen Sie die Zahl von 1000 auf eine größere Zahl.

Wenn das nicht funktioniert; Versuchen Sie, die Lambda-Ausführungszeit von 3 Sekunden auf 10 Sekunden zu erhöhen. Nur um sicher zu gehen, dass dies das Problem ist.

+0

Erledigt. Ergebnis gleich. In meiner Desktop-Java-App verwende ich den gleichen Code und es funktioniert perfekt, keine Zeitüberschreitung. Sieht aus wie Amazon etwas blockieren –

1

Problem wurde mit nicht genügend Speicher für Lambda-Funktion zugeordnet verbunden. Ich habe von 128mb zu 512mb geändert und es funktioniert

Verwandte Themen