|
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