Amazon web services S3AbortableInputStream:并非所有字节都从S3ObjectInputStream读取,正在中止HTTP连接。仅读取ObjectMetadata时发出警告
我使用的是Amazon web services S3AbortableInputStream:并非所有字节都从S3ObjectInputStream读取,正在中止HTTP连接。仅读取ObjectMetadata时发出警告,amazon-web-services,amazon-s3,aws-sdk,Amazon Web Services,Amazon S3,Aws Sdk,我使用的是,它说如果\u readAllBytes()不是真的(在我的例子中,我使用S3Object只是获取用户元数据,而不是整个流内容),那么总是会有警告 问题: a) S3Object.close如何导致调用S3AbortableInputStream.close 我假设S3Object.close中的代码仅通过is.close()调用SdkFilterInputStream.close b) 当我只想使用S3Object读取元数据而不是整个对象内容时,我应该如何消除这些警告。也许可以尝试使
,它说如果\u readAllBytes()不是真的(在我的例子中,我使用S3Object只是获取用户元数据,而不是整个流内容),那么总是会有警告
问题:
a) S3Object.close如何导致调用S3AbortableInputStream.close
我假设S3Object.close中的代码仅通过is.close()调用SdkFilterInputStream.close
代码>
b) 当我只想使用S3Object读取元数据而不是整个对象内容时,我应该如何消除这些警告。也许可以尝试使用此API函数来仅检索S3对象的元数据:
ObjectMetadata getObjectMetadata(GetObjectMetadataRequest getObjectMetadataRequest)
throws SdkClientException,
AmazonServiceException
因此,请将代码更改为:
ObjectMetadata s3ObjectMeta = null;
s3ObjectMeta = s3Client.getObjectMetadata(new GetObjectMetadataRequest(bucketName, key));
userMetadata.putAll(s3ObjectMeta.getUserMetadata());
我认为这正是我正在寻找的解决方案。我是AWS的新手,但没有任何借口,我为错过API文档感到羞愧。没有问题@ArunKumar,发生在我们当中最好的人身上。请不要忘记将此标记为已接受的答案。
ObjectMetadata getObjectMetadata(GetObjectMetadataRequest getObjectMetadataRequest)
throws SdkClientException,
AmazonServiceException
ObjectMetadata s3ObjectMeta = null;
s3ObjectMeta = s3Client.getObjectMetadata(new GetObjectMetadataRequest(bucketName, key));
userMetadata.putAll(s3ObjectMeta.getUserMetadata());