2017-11-29 13 views
2

여기에 내가 때마다 시간 초과 오류가이 함수를 테스트 할 때AWS Labmda 자바 HttpURLConnection의 제한 시간

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(); 
     } 
    } 
} 

모든이 줄

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

까지 훌륭한 작품을 내 람다 코드입니다.

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

람다 설정에서 "No VPC"를 선택했습니다. 누군가 도울 수 있습니까?

답변

0

AWS Lambda에 대한 모든 호출은 300 초 이내에 실행을 완료해야합니다. 기본 제한 시간은 3 초이지만 제한 시간은 1 ~ 300 초 사이의 값으로 설정할 수 있습니다.

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

+0

나는 3 초 동안 기본 람다 타임 아웃을 사용했다. 여기에 문제가 없습니다. HttpURLConnection의 문제, 람다는 URL에 연결할 수 없습니다. 나는 약간의 추가 설정이 필요하다고 생각하지만, 나는 무엇을 모른다. –

0

시도가 vConnection.setConnectTimeout을 제거하기 (1000); 또는 1000에서 큰 숫자로 숫자를 늘리십시오.

그래도 작동하지 않으면; 람다 실행 시간을 3 초에서 10 초로 늘리십시오. 이것이 문제가되는지 확인하십시오.

+0

완료. 결과는 동일합니다. 내 데스크톱 Java 응용 프로그램에서 동일한 코드를 사용하며 시간 제한없이 완벽하게 작동합니다. 아마존이 뭔가를 차단하는 것 같아. –

1

람다 함수에 할당 된 메모리가 부족하여 문제가 발생했습니다. 나는 128MB에서 512MB로 바뀌었고 작동했다.