如何使用Azure Java SDK使用容器SAS设置重试Policy



我正在实现一个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同时创建CloudBlobClientCloudBlobContainer,但是客户端是用匿名凭据创建的,并且不能与我的容器相关联:

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。

希望这会有所帮助!

最新更新