我正在实现一个Android应用程序,我需要使用容器SAS将图像上传到BLOB容器。
当前使用完整端点凭据作为连接字符串,我可以使用以下代码将重试策略添加到我的CloudBlobClient
:
CloudStorageAccount storageAccount = CloudStorageAccount
.parse(storageConnectionString);
CloudBlobClient blobClient = storageAccount.createCloudBlobClient();
BlobRequestOptions options = new BlobRequestOptions();
RetryPolicy policy = new RetryExponentialRetry(BACKOFF_DELTA, MAX_RETRIES);
options.setRetryPolicyFactory(policy);
blobClient.setDefaultRequestOptions(options);
CloudBlobContainer container = blobClient.getContainerReference(containername);
现在,当我从帐户密钥转换为SAS时,我不知道如何使用容器的SAS签名创建CloudBlobClient
。我可以使用带有SAS的URL同时创建CloudBlobClient
和CloudBlobContainer
,但是客户端是用匿名凭据创建的,并且不能与我的容器相关联:
CloudBlobClient blobClient = new CloudBlobClient(URI.create(containerurl));
CloudBlobContainer container = new CloudBlobContainer(URI.create(containerurl));
有没有办法将RetryPolicy
直接添加到CloudBlobContainer
或创建与我的容器类相关的身份验证的CloudBlobClient
?
这两者都标有'java'和android'的标签,所以我会回答有关java sdk,android应该相似。
这里有一些选项:
- 所有制作服务呼叫的API都提供了一个超负荷,该过载含有blobrequestoptions对象。此对象中的设置(包括重试策略(覆盖客户端的默认值。
- 使用URI,CloudBlobContainer和CloudBlob对象构造时,可以在内部创建默认的BlobServiceClient对象,您可以使用getServiceClient((方法访问该对象。然后,您可以在此设置默认值。
- 如果您想继续使用连接字符串,则可以使用SAS令牌创建一个,如此处记录。
- 您可以使用SAS令牌创建StorageCredentials对象,然后您可以使用它来创建CloudStorageAccount对象。请注意,如果选择此路线,则需要使用一个cloudStorageAccount构造函数,该构造函数要么以帐户名或端点为单位,否则SDK将无法为您的存储帐户构造URL。
希望这会有所帮助!