我正在尝试使用分段上传AWS S3 java API执行文件上传(我使用的是SDK 1.8.1)。 我能够成功执行上传。
但是,间歇性地我不断得到这个例外。
2014年7月31日上午4:39:38 com.amazonaws.http.AmazonHttpClient executeHelper INFO:无法执行HTTP请求:连接重置 java.net.SocketException:连接重置为 java.net.SocketInputStream.read(SocketInputStream.java:189)at java.net.SocketInputStream.read(SocketInputStream.java:121)at sun.security.ssl.InputRecord.readFully(InputRecord.java:312)at at sun.security.ssl.InputRecord.read(InputRecord.java:350)at sun.security.ssl.SSLSocketImpl.readRecord(SSLSocketImpl.java:927)at at sun.security.ssl.SSLSocketImpl.readDataRecord(SSLSocketImpl.java:884) 在sun.security.ssl.AppInputStream.read(AppInputStream.java:102)at org.apache.http.impl.io.AbstractSessionInputBuffer.fillBuffer(AbstractSessionInputBuffer.java:166) 在 org.apache.http.impl.io.SocketInputBuffer.fillBuffer(SocketInputBuffer.java:90) 在 org.apache.http.impl.io.AbstractSessionInputBuffer.readLine(AbstractSessionInputBuffer.java:281) 在 org.apache.http.impl.conn.DefaultHttpResponseParser.parseHead(DefaultHttpResponseParser.java:92) 在 org.apache.http.impl.conn.DefaultHttpResponseParser.parseHead(DefaultHttpResponseParser.java:62) 在 org.apache.http.impl.io.AbstractMessageParser.parse(AbstractMessageParser.java:254) 在 org.apache.http.impl.AbstractHttpClientConnection.receiveResponseHeader(AbstractHttpClientConnection.java:289) 在 org.apache.http.impl.conn.DefaultClientConnection.receiveResponseHeader(DefaultClientConnection.java:252) 在 org.apache.http.impl.conn.ManagedClientConnectionImpl.receiveResponseHeader(ManagedClientConnectionImpl.java:191) 在 org.apache.http.protocol.HttpRequestExecutor.doReceiveResponse(HttpRequestExecutor.java:300) 在 com.amazonaws.http.protocol.SdkHttpRequestExecutor.doReceiveResponse(SdkHttpRequestExecutor.java:66) 在 org.apache.http.protocol.HttpRequestExecutor.execute(HttpRequestExecutor.java:127) 在 org.apache.http.impl.client.DefaultRequestDirector.tryExecute(DefaultRequestDirector.java:717) 在 org.apache.http.impl.client.DefaultRequestDirector.execute(DefaultRequestDirector.java:522) 在 org.apache.http.impl.client.AbstractHttpClient.execute(AbstractHttpClient.java:906) 在 org.apache.http.impl.client.AbstractHttpClient.execute(AbstractHttpClient.java:805) 在 com.amazonaws.http.AmazonHttpClient.executeHelper(AmazonHttpClient.java:402) 在 com.amazonaws.http.AmazonHttpClient.execute(AmazonHttpClient.java:245) 在 com.amazonaws.services.s3.AmazonS3Client.invoke(AmazonS3Client.java:3711) 在 com.amazonaws.services.s3.AmazonS3Client.uploadPart(AmazonS3Client.java:2809) 在云。< -filename-> .writeContent(< -filename-> .java:< -linenumber->)
在以下代码中
try {
_partETags.add(_s3.uploadPart(uploadPartReq).getPartETag());
} catch (AmazonClientException e) {
System.out.println("Amazon service error. Retrying...");
printException(e);
} catch (Exception e) {
printException(e);
throw new UserException("Received an exception while performing upload part");
}
如果我查看docuementation,它说uploadPart函数只会抛出两个类AmazonClientException和AmazonServiceException。
<documentation> ... UploadPartResult uploadPart(UploadPartRequest request) throws AmazonClientException, AmazonServiceException ... Throws: AmazonClientException - If any errors are encountered in the client while making the request or handling the response. AmazonServiceException - If any errors occurred in Amazon S3 while processing the request. ... </documentation>
但是,我收到了不同的例外。
我有以下问题
答案 0 :(得分:1)
这是来自AmazonS3Client的日志消息(在INFO级别),告诉您存在瞬态网络错误。默认情况下,AmazonS3Client会捕获这些类型的异常并为您重试上载。您可以通过ClientConfiguration调整此行为。如果在配置的重试次数之后上传仍未成功,则将根据文档引发AmazonClientException
。
答案 1 :(得分:0)
当我尝试通过eclipse上传我的项目AWS lambda时,我遵循了教程链接中的步骤:
但是在执行步骤“将Lambda代码部署到AWS”时===> 在Eclipse中,右键单击您的代码,然后选择Amazon Web Services>将功能上传到Lambda…
我遇到的错误: 1)我收到一个错误窗口,并显示消息“ 无法将项目上传到Lambda无法执行HTTP请求:对等方重置连接:套接字写入错误”
2)我的堆栈停放的第一行是一个例外: “ com.amazonaws.SdkClientException:无法执行HTTP请求:对等方重置连接:套接字写入错误 由以下原因引起:java.net.SocketException:对等方重置连接:套接字写入错误“
3)Eclipse错误日志给出消息:“ org.eclipse.core.databinding.ValueBinding.doUpdate(ValueBinding.java:158)处的java.lang.NullPointerException”
然后我通过在Eclipse网络连接上进行一些小的更改来更改设置,因为我的代理设置阻止将我的项目上传到lambda,所以我提出了以下解决方案:
解决方案: 窗口->首选项->常规->网络连接->活动提供程序为“直接”。
,然后尝试使用相同的步骤将项目上传到lambda上,它对我有用。 希望这对您也有帮助。