【发布时间】:2020-12-30 11:07:37
【问题描述】:
我正在使用 azure-storage java sdk 8.6.5 版中的 startCopy API 在同一存储帐户内的容器之间复制 blob。根据文档,它将块 blob 的内容、属性和元数据复制到新的块 blob。这是否也意味着源和目标访问层将匹配?
String copyJobId = cloudBlockBlob.startCopy(sourceBlob);
如果源 blob 访问层是 ARCHIVE,我会收到以下异常 -
com.microsoft.azure.storage.StorageException: This operation is not permitted on an archived blob.
at com.microsoft.azure.storage.StorageException.translateException(StorageException.java:87) ~[azure-storage-8.6.5.jar:?]
at com.microsoft.azure.storage.core.StorageRequest.materializeException(StorageRequest.java:305) ~[azure-storage-8.6.5.jar:?]
at com.microsoft.azure.storage.core.ExecutionEngine.executeWithRetry(ExecutionEngine.java:196) ~[azure-storage-8.6.5.jar:?]
at com.microsoft.azure.storage.blob.CloudBlob.startCopy(CloudBlob.java:791) ~[azure-storage-8.6.5.jar:?]
at com.microsoft.azure.storage.blob.CloudBlockBlob.startCopy(CloudBlockBlob.java:302) ~[azure-storage-8.6.5.jar:?]
at com.microsoft.azure.storage.blob.CloudBlockBlob.startCopy(CloudBlockBlob.java:180) ~[azure-storage-8.6.5.jar:?]
如下所示,我使用 startCopy API 将 container02(src) 中的所有 blob 复制到 container03(destination)。访问层 ARCHIVE 的 Blob 失败,并且 test1.txt blob 的访问层与源中的不同。
我只是想确认这是否是预期的,或者我没有使用正确的 API,如果我需要源和目标看起来相同,则需要明确设置这些属性??
提前致谢!!!
【问题讨论】:
-
这似乎与这个问题有关:stackoverflow.com/questions/62759750/…。我认为您需要确保为存档项目传递 RehydraPriority 参数。
-
添加 RehydraPriority 参数有效。谢谢@Bryan
标签: azure-storage azure-blob-storage