【问题标题】:Unable to copy blob from one storage account to another无法将 blob 从一个存储帐户复制到另一个
【发布时间】:2018-02-21 20:30:59
【问题描述】:

我正在尝试将 Blob 从一个 Azure 存储帐户复制到另一个存储帐户(相同订阅),但出现异常:

指定的资源不存在。

据我所知,问题是由容器设置为 Private 引起的,这对于我们的业务目的来说应该是这样的。

我从 this SO answer 那里得到了提示:

在源 blob 上创建至少具有读取权限和至少 15 天到期日期的共享访问签名 (SAS),并将该 SAS URL(blob URL + SAS 令牌)用作复制源。

此外,我在Microsoft forums 上找到了一些代码,来自他发布对他有用的代码的同一张海报。由此,我现在有了以下代码(ctCancellationToken):

var snapshot = await blob.CreateSnapshotAsync(ct);
var sourceSAS = snapshot.GetSharedAccessSignature(new SharedAccessBlobPolicy {
                                                                                Permissions = SharedAccessBlobPermissions.Read,
                                                                                SharedAccessExpiryTime = DateTime.Now.AddYears(1),
                                                                                SharedAccessStartTime = DateTimeOffset.Now.AddHours(-1)
                                                                            });
var sourceUri = $"{snapshot.Uri}{sourceSAS}";

var backupBlob = FileBackupContainer.GetBlockBlobReference(blob.Name);
var targetSAS = backupBlob.GetSharedAccessSignature(new SharedAccessBlobPolicy {
                                                                                  Permissions = SharedAccessBlobPermissions.Write,
                                                                                  SharedAccessExpiryTime = DateTime.Now.AddYears(1),
                                                                                  SharedAccessStartTime = DateTimeOffset.Now.AddHours(-1)
                                                                              });
var targetUri = $"{backupBlob.Uri}{targetSAS}";

var newTargetBlob = new CloudBlockBlob(new Uri(targetUri));
await newTargetBlob.StartCopyAsync(new Uri(sourceUri), ct);

await snapshot.DeleteAsync(ct);

但我还是遇到了同样的异常。

为了使用 SAS 复制 blob,我还需要什么?

更新:
我的代码不起作用,因为源 blob 位于我的本地存储模拟器( localhost)中,Azure 托管的目标存储容器显然无法访问。

【问题讨论】:

    标签: c# azure-storage azure-blob-storage


    【解决方案1】:

    回答我自己的问题...

    我的代码无法正常工作,因为源 blob 位于我的本地存储模拟器(即 localhost)中,Azure 托管的目标存储容器显然无法访问。

    【讨论】:

      猜你喜欢
      • 2021-08-25
      • 2021-06-27
      • 1970-01-01
      • 1970-01-01
      • 2015-10-22
      • 2020-09-24
      • 1970-01-01
      • 2023-04-06
      • 2022-01-11
      相关资源
      最近更新 更多