|
20 | 20 | package org.elasticsearch.cloud.aws.blobstore; |
21 | 21 |
|
22 | 22 | import com.amazonaws.AmazonClientException; |
23 | | -import com.amazonaws.services.s3.model.AmazonS3Exception; |
24 | | -import com.amazonaws.services.s3.model.ObjectListing; |
25 | | -import com.amazonaws.services.s3.model.S3Object; |
26 | | -import com.amazonaws.services.s3.model.S3ObjectSummary; |
| 23 | +import com.amazonaws.services.s3.model.*; |
27 | 24 | import org.elasticsearch.common.Nullable; |
28 | 25 | import org.elasticsearch.common.blobstore.BlobMetaData; |
29 | 26 | import org.elasticsearch.common.blobstore.BlobPath; |
@@ -134,6 +131,24 @@ public ImmutableMap<String, BlobMetaData> listBlobsByPrefix(@Nullable String blo |
134 | 131 | return blobsBuilder.build(); |
135 | 132 | } |
136 | 133 |
|
| 134 | + @Override |
| 135 | + public void move(String sourceBlobName, String targetBlobName) throws IOException { |
| 136 | + try { |
| 137 | + CopyObjectRequest request = new CopyObjectRequest(blobStore.bucket(), buildKey(sourceBlobName), |
| 138 | + blobStore.bucket(), buildKey(targetBlobName)); |
| 139 | + |
| 140 | + if (blobStore.serverSideEncryption()) { |
| 141 | + ObjectMetadata objectMetadata = new ObjectMetadata(); |
| 142 | + objectMetadata.setSSEAlgorithm(ObjectMetadata.AES_256_SERVER_SIDE_ENCRYPTION); |
| 143 | + request.setNewObjectMetadata(objectMetadata); |
| 144 | + } |
| 145 | + blobStore.client().copyObject(request); |
| 146 | + blobStore.client().deleteObject(blobStore.bucket(), buildKey(sourceBlobName)); |
| 147 | + } catch (AmazonS3Exception e){ |
| 148 | + throw new IOException(e); |
| 149 | + } |
| 150 | + } |
| 151 | + |
137 | 152 | @Override |
138 | 153 | public ImmutableMap<String, BlobMetaData> listBlobs() throws IOException { |
139 | 154 | return listBlobsByPrefix(null); |
|
0 commit comments