Фабрика данных Azure получает путь BLOB-объекта с токеном sas в пользовательском действии

Я пытаюсь создать пользовательскую операцию в фабрике данных Azure, которая получает большой двоичный объект в качестве входного набора данных и хотела бы передать путь sas-токена этого большого двоичного объекта в API, который требует этот тип пути.

Есть ли способ получить путь BLOB-объекта с помощью токена SAS в пользовательском действии?

1 ответ

Решение

Я нашел способ сделать это. Частью пользовательского действия в ADF v1 является метод Execute, имеющий параметр контекста. Из этого контекста вы можете получить строку подключения к хранилищу BLOB-объектов и путь к BLOB-объекту, а затем вы можете извлечь токен sas следующим образом:

public override IDictionary<string, string> Execute(
AOMDotNetActivityContext context,
IActivityLogger logger)
{
    string blobConnectionString = context.ConnectionString;
    CloudStorageAccount inputStorageAccount = CloudStorageAccount.Parse(blobConnectionString);
    var blob = new CloudBlob(new Uri(inputStorageAccount.BlobEndpoint, Path.Combine(context.FolderPath, context.FileName)), inputStorageAccount.Credentials);
    SharedAccessBlobPolicy adHocSAS = new SharedAccessBlobPolicy()
    {
        SharedAccessExpiryTime = DateTime.UtcNow.AddHours(48),
        Permissions = SharedAccessBlobPermissions.Read | SharedAccessBlobPermissions.Delete
    };
    string sasBlobToken = blob.GetSharedAccessSignature(adHocSAS);
    string fullUri = new Uri(blob.Uri, sasBlobToken).ToString();
Другие вопросы по тегам