0

AWS Java クライアントが投げています

javax.net.ssl.SSLException: Connection has been shutdown: javax.net.ssl.SSLException: java.net.SocketException: Connection reset
    at sun.security.ssl.SSLSocketImpl.checkEOF(SSLSocketImpl.java:1541) ~[na:1.8.0_60]
    at sun.security.ssl.SSLSocketImpl.checkWrite(SSLSocketImpl.java:1553) ~[na:1.8.0_60]
    at sun.security.ssl.AppOutputStream.write(AppOutputStream.java:71) ~[na:1.8.0_60]
    at org.apache.http.impl.io.AbstractSessionOutputBuffer.flushBuffer(AbstractSessionOutputBuffer.java:159) ~[httpcore-4.3.3.jar:4.3.3]

私のコードは

public void save(String name, byte[] file) {
    ObjectMetadata metaData = new ObjectMetadata();
    String streamMD5 = new String(Base64.encodeBase64(file));
    metaData.setContentMD5(streamMD5);
    metaData.setContentLength(file.length);

    InputStream stream = new ByteArrayInputStream(file);
    try {
        PutObjectRequest put = new PutObjectRequest(
                configuration.getBucketName(), name, stream, metaData);
        s3client.putObject(put);
    } finally {
        IOUtils.closeQuietly(stream);
    }
}

s3client は Spring Bean であり、ストリームのアップロードが完了する前にガベージ コレクションは行われません。MD5 やコンテンツの長さを指定せずに試してみましたが、それでも同じ例外がスローされます。

AWS ライブラリを介してログを記録すると、次のように表示されます。

10:09:15.540 [http-nio-8080-exec-1] DEBUG o.a.h.c.protocol.RequestAddCookies - CookieSpec selected: best-match
10:09:15.540 [http-nio-8080-exec-1] DEBUG o.a.h.c.protocol.RequestAuthCache - Auth cache not set in the context
10:09:15.540 [http-nio-8080-exec-1] DEBUG o.a.h.c.p.RequestProxyAuthentication - Proxy auth state: UNCHALLENGED
10:09:15.540 [http-nio-8080-exec-1] DEBUG c.a.http.impl.client.SdkHttpClient - Attempt 1 to execute request
10:09:15.540 [http-nio-8080-exec-1] DEBUG o.a.h.i.conn.DefaultClientConnection - Sending request: PUT /documeent.pdf HTTP/1.1
10:09:15.540 [http-nio-8080-exec-1] DEBUG org.apache.http.wire -  >> "PUT /document.pdf HTTP/1.1[\r][\n]"
10:09:15.540 [http-nio-8080-exec-1] DEBUG org.apache.http.wire -  >> "Host: bucket.s3.amazonaws.com[\r][\n]"
10:09:15.540 [http-nio-8080-exec-1] DEBUG org.apache.http.wire -  >> "Authorization: AWS 123445667788=[\r][\n]"
10:09:15.540 [http-nio-8080-exec-1] DEBUG org.apache.http.wire -  >> "User-Agent: aws-sdk-java/1.10.21 Linux/3.13.0-65-generic Java_HotSpot(TM)_Server_VM/25.60-b23/1.8.0_60[\r][\n]"
10:09:15.540 [http-nio-8080-exec-1] DEBUG org.apache.http.wire -  >> "Date: Tue, 06 Oct 2015 09:09:15 GMT[\r][\n]"
10:09:15.663 [http-nio-8080-exec-1] DEBUG com.amazonaws.internal.SdkSSLSocket - closing bucket.s3.amazonaws.com/12.34.56.78:443
10:09:15.665 [http-nio-8080-exec-1] DEBUG o.a.h.i.conn.DefaultClientConnection - I/O error closing connection

ファイル サイズ (3.2M) がこのバケットの最大ファイル サイズを超えていないことを確認しました。

Get/List リクエストは正常に機能し、s3 クライアント ツールを使用してファイルを S3 バケットにコピーできます。

他に確認すべきことを知っている人はいますか?

ありがとう。

4

0 に答える 0