我正在尝试删除多个对象,但它不会删除。我没有得到任何的exception.If我去单一删除,这是没有问题的。
下面是我正在使用的代码
public void deleteImage(){
List<KeyVersion> amazonKeys = new ArrayList<KeyVersion>();
amazonKeys.add(new KeyVersion("compressedc1eac77b-9c38-4036-9770-34a77a163bb0.jpeg"));
amazonKeys.add(new KeyVersion("compressedb52adf1e-5155-48b6-9051-bb679601f5ee.jpeg"));
imageService.removeS3Files("mubucketname/dev/3123",amazonKeys);
}我的服务是
public void removeS3Files(String bucketName,List<KeyVersion> keys){
log.debug("deleting multiple objects from s3 with bucket::" + bucketName);
try{
DeleteObjectsRequest multiObjectDeleteRequest = new DeleteObjectsRequest(bucketName);
multiObjectDeleteRequest.setKeys(keys);
AmazonS3 s3client = new AmazonS3Client(CustomAwsCredentials.getInstance(envConfiguration));
s3client.setEndpoint(Constant.AWS_ENDPOINT);
DeleteObjectsResult deleteObjectsResult = s3client.deleteObjects(multiObjectDeleteRequest);
System.out.println(deleteObjectsResult.getDeletedObjects());
}catch(AmazonServiceException exception){
log.debug("Caught an AmazonServiceException.");
log.debug("Error Message: " + exception.getMessage());
}catch (AmazonClientException clientException) {
log.debug("Caught an AmazonClientException.");
log.debug("Error Message: " + clientException.getMessage());
}
}我在桶中的数据存储看起来像
bucketname/dev/3123/compressedc1eac77b-9c38-4036-9770-34a77a163bb0.jpeg
bucketname/dev/3123/compressedb52adf1e-5155-48b6-9051-bb679601f5ee.jpeg我使用了以下代码来删除单个对象(工作正常)
try{
AmazonS3 s3client = new AmazonS3Client(CustomAwsCredentials.getInstance(envConfiguration));
System.out.println(s3client.doesBucketExist(bucketName));
s3client.setEndpoint(Constant.AWS_ENDPOINT);
s3client.deleteObject(bucketName, key);
}catch(AmazonServiceException exception){
log.debug("Caught an AmazonServiceException.");
log.debug("Error Message: " + exception.getMessage());
}catch (AmazonClientException clientException) {
log.debug("Caught an AmazonClientException.");
log.debug("Error Message: " + clientException.getMessage());
}请帮我在这里删除多个对象所缺少的东西?
提前感谢
发布于 2016-03-01 17:58:17
这不是一个有效的桶名:
mubucketname/dev/3123桶名与键是分开的,您不能将键中的路径前缀放在桶名上。试试这个:
List<KeyVersion> keys = new ArrayList<KeyVersion>();
keys.add(new KeyVersion("dev/3123/compressedc1eac77b-9c38-4036-9770-34a77a163bb0.jpeg"));
keys.add(new KeyVersion("dev/3123/compressedb52adf1e-5155-48b6-9051-bb679601f5ee.jpeg"));
DeleteObjectsRequest request = new DeleteObjectsRequest("mubucketname").withKeys(keys);
DeleteObjectsResult result = s3client.deleteObjects(request);https://stackoverflow.com/questions/35726349
复制相似问题