2016-07-14 3 views
2

私のラムダ関数はラムダ内からオブジェクトをダウンロードできません。以下の例外があります。AWS Lambda:org.apache.http.conn.ConnectTimeoutException

バケット名とキー名はどちらも正しいです。私はダミーのメインと、それをダウンロードしようとしているバケツ/キーを使って私のローカルマシンからラムダ関数を実行することによってそれらをテストし、オブジェクトをちゃんとダウンロードしました。

ラムダ関数が実行している役割には、S3読み取り専用権限があります。

ソケットタイムアウトを25秒に増やしてみましたが、最大接続数を10に増やしましたが、まだ幸運はありませんでした。

以下はスタックトレースの上部です(AWS Cloudwatchからかなりの形式でコピー/ペーストできないようです)。

private final AmazonS3Client s3Client = new AmazonS3Client(); 

検索はに何かを持っているように見えた、数年前から同様の問題が出ている:私のコード内でのみ参照が

s3Client.getObject(bucket, key);

次のように私のs3Clientオブジェクトが作成されるで停止します特定の問題や誤った認証をしてください。

どのような考えですか?

以下

は、スタックトレースです:

com.amazonaws.http.AmazonHttpClient executeHelper INFO:HTTP要求を実行 にできません:443のhttp:// <> /54.231.112.64に失敗しました:<>への接続します<への接続>::443のhttp://> /54.231.112.64 <に失敗しました: org.apache.http.impl.connで出 をタイムアウトして接続タイムアウトし

org.apache.http.conn.ConnectTimeoutExceptionを接続.DefaultHttpClientConnectionOperator.connect(DefaultHttp

答えて

3

54.231.112.64でClientConnectionOperator.java:150) あなたがVPC内のラムダ関数を作成しなかった、パブリックIPアドレスですか?はいの場合 - NATを介してインターネットにアクセスするサブネット内にあることを確認します。続きを読むhere

S3に接続するには、ゲートウェイインスタンスまたはNATインスタンスが必要です。内部アクセスが必要な場合は、VPC endpointsの設定を試みることができます。

+0

うん!私はEC2インスタンスにアクセスしようとしているので、VPCの中に入れました... AWSリソースへのアクセスを制限することは一度も考えていませんでした。あなたが気にしないなら、私はあなたの答えを編集して、ちょうど被験者に見つかったURLを含めます。また、私の他の質問に刺し傷をつけてもいいですか? http://stackoverflow.com/questions/38342418/outofmemoryerror-when-creating-amazons3client-in-lambda – Brooks

+2

うんS3へのアクセスは、NATやIGWを必要とし、しかしVPCは、「エンドポイント」機能を持っている、とS3 –

+0

への内部アクセスを可能にすること秒の質問、私は仲間を知っていない、私は幸運なことに、それはめったに25MB以上の要求を使用することはありません –