AWS Lambda:org.apache.http.conn.ConnectTimeoutException

时间:2016-07-14 04:57:47

标签: amazon-web-services amazon-s3 aws-lambda

我的Lambda函数无法从Lambda中下载对象,我得到以下异常。

我的存储桶名称和密钥名称都是正确的。我通过从我的本地机器运行Lambda函数测试它们,其中有一个虚拟主机和它尝试下载的存储桶/密钥,它下载了对象就好了。

Lambda函数执行的角色具有S3只读权限。

我已经尝试将套接字超时增加到25秒,将最大连接数增加到10但仍然没有运气。

以下是堆栈跟踪的顶部(似乎无法从AWS Cloudwatch以漂亮的格式复制/粘贴)。我的代码中唯一的引用停在

s3Client.getObject(bucket, key);

我的s3Client对象创建如下:

private final AmazonS3Client s3Client = new AmazonS3Client();

多年前搜索出现了类似的问题,这似乎与特定问题或不正确的身份验证有关。

有什么想法吗?

下面是stacktrace:

  

com.amazonaws.http.AmazonHttpClient executeHelper INFO:无法   执行HTTP请求:连接到<>:443 http://<> /54.231.112.64失败:连接超时

     

org.apache.http.conn.ConnectTimeoutException:连接到<>:443 http://<> /54.231.112.64失败:连接时间   出去   org.apache.http.impl.conn.DefaultHttpClientConnectionOperator.connect(DefaultHttpClientConnectionOperator.java:150)   在

1 个答案:

答案 0 :(得分:3)

54.231.112.64是一个公共IP地址,你是否在VPC中创建了lambda函数?如果是 - 请确保其在子网中通过NAT访问Internet。阅读更多here

与S3的连接需要网关或NAT实例。如果您需要内部访问权限,可以尝试设置VPC endpoints