gpt4 book ai didi

java - 将页面 Blob 上传到 Azure 时出现错误 : Make sure the value of Authorization header is formed correctly

转载 作者:行者123 更新时间:2023-12-02 07:30:58 25 4
gpt4 key购买 nike

我正在使用 Microsoft Azure Java SDK 上传页面 Blob(大小:20G/40G)。上传过程中,SDK 抛出存储异常:

java.io.IOException: null
at com.microsoft.azure.storage.core.Utility.initIOException(Utility.java:584) ~[classes/:na]
at com.microsoft.azure.storage.blob.BlobOutputStream$2.call(BlobOutputStream.java:414) ~[classes/:na]
at com.microsoft.azure.storage.blob.BlobOutputStream$2.call(BlobOutputStream.java:398) ~[classes/:na]
at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:334) ~[na:1.7.0_25]
at java.util.concurrent.FutureTask.run(FutureTask.java:166) ~[na:1.7.0_25]
at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:471) ~[na:1.7.0_25]
at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:334) ~[na:1.7.0_25]
at java.util.concurrent.FutureTask.run(FutureTask.java:166) ~[na:1.7.0_25]
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145) ~[na:1.7.0_25]
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615) ~[na:1.7.0_25]
at java.lang.Thread.run(Thread.java:724) ~[na:1.7.0_25]
Caused by: com.microsoft.azure.storage.StorageException: Server failed to authenticate the request. Make sure the value of Authorization header is formed correctly including the signature.
at com.microsoft.azure.storage.StorageException.translateException(StorageException.java:162) ~[azure-storage-1.2.0.jar:na]
at com.microsoft.azure.storage.core.StorageRequest.materializeException(StorageRequest.java:306) ~[azure-storage-1.2.0.jar:na]
at com.microsoft.azure.storage.core.ExecutionEngine.executeWithRetry(ExecutionEngine.java:178) ~[classes/:na]
at com.microsoft.azure.storage.blob.CloudPageBlob.putPagesInternal(CloudPageBlob.java:642) ~[classes/:na]
at com.microsoft.azure.storage.blob.CloudPageBlob.uploadPages(CloudPageBlob.java:971) ~[classes/:na]
at com.microsoft.azure.storage.blob.BlobOutputStream$2.call(BlobOutputStream.java:402) ~[classes/:na]
... 9 common frames omitted

SDK版本:

<groupId>com.microsoft.azure</groupId>
<artifactId>azure-storage</artifactId>
<version>1.2.0</version>

请注意此错误在上传过程中随机出现:传输的字节数:27325890560,总共 42949673472

Linux Box 上的时间漂移​​是否有可能导致此问题?任何其他指针都会有帮助。

调用 Azure Java SDK API 上传页面 blob 的代码片段:

String storageAccntName = "storageAccount";

URI blobEndpoint = null;
String uriString = "http://" + storageAccntName + ".blob.core.windows.net";
blobEndpoint = new URI(uriString);

CloudBlobClient blobClient = new CloudBlobClient(blobEndpoint, new StorageCredentialsAccountAndKey(storageAccntName, blobInfo.getAccessKey()));
blobClient.setAuthenticationScheme(AuthenticationScheme.SHAREDKEYFULL);
blobClient.getDefaultRequestOptions().setRetryPolicyFactory(new RetryLinearRetry());

//Create Storage Container
CloudBlobContainer container = blobClient.getContainerReference(Constants.STORAGE_CONTAINER_NAME);
container.createIfNotExists();

//Creating Page Blob corresponding to each disk
CloudPageBlob pageBlob = container.getPageBlobReference("pageBlobName");
File vhdFile = new File("pageBlobName");
if(vhdFile.length()==0) {
throw new CPMException("Invalid file with length 0. Stopping upload for file with path: " + vhdFile.getAbsolutePath()
+ " and file name: " + diskBlob.getLocation());
}
LOG.debug("Blob size for Disk: " + diskBlob.getName() + " is: " + vhdFile.length());

pageBlob.create(vhdFile.length());
blobClient.getDefaultRequestOptions().setConcurrentRequestCount(Constants.MAX_CONSUMER_THREADS);
pageBlob.upload(new FileInputStream(vhdFile), vhdFile.length());

最佳答案

如果您使用共享访问签名上传文件,并且 SAS 的有效期已过期,则可能会发生这种情况。根据您的 blob 大小,此上传将分为多个请求,并且当发出后续请求时,SAS 可能已过期。

如果您使用的是存储帐户和 key 而不是 SAS,请粘贴遇到此问题的代码片段。

关于java - 将页面 Blob 上传到 Azure 时出现错误 : Make sure the value of Authorization header is formed correctly,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28982217/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com