2017-11-29 14 views
2

は、ここで私は毎回タイムアウトエラーを持って、この機能をテストしようとするとAWS LabmdaのJavaの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ラムダへのすべての呼び出しは、300秒以内に実行を完了する必要があります。デフォルトのタイムアウトは3秒ですが、タイムアウトを1〜300秒の任意の値に設定できます。

参照してください: http://docs.aws.amazon.com/lambda/latest/dg/monitoring-functions.html

+0

デフォルトのLambdaタイムアウトを3秒間使用しています。ここに問題はありません。 HttpURLConnectionの問題は、ラムダはどのURLにも接続できません。私はいくつか追加の設定が必要だと思うが、私は何も考えていない –

0

はvConnection.setConnectTimeout(1000)を削除するようにしてください。 1000から大きな番号に番号を増やしてください。

これが機能しない場合。ラムダ実行時間を3秒から10秒に増やしてください。これが問題かどうかを確認するだけです。

+0

完了。結果は同じです。 私のデスクトップのJavaアプリケーションでは、私は同じコードを使用し、完璧に動作し、タイムアウトはありません。 Amazonが何かをブロックするように見える –

1

ラムダ関数に割り当てられたメモリが不足しているため、問題が発生しました。 私は128MBから512MBに変更して動作します。

関連する問題