lively-whale-42645
04/22/2022, 4:30 PMmodern-quill-17695
04/22/2022, 5:09 PMpublic static Input<string> GetSasTokenedUrlToReadBlob(Input<string> resourceGroupName, Input<string> accountName, BlobContainer blobContainer, Blob blob)
{
const string signatureExpiration = "2100-01-01";
const string signatureStart = "2000-01-01";
var primaryStorageKey = GetConnectionString(resourceGroupName, accountName);
var sasToken = Output.Tuple(primaryStorageKey, blobContainer.Name)
.Apply(parameters =>
{
var primaryStorageKey = parameters.Item1;
var containerName = parameters.Item2;
return AzureClassicStorage.GetAccountBlobContainerSAS.InvokeAsync(new AzureClassicStorage.GetAccountBlobContainerSASArgs
{
ConnectionString = primaryStorageKey,
ContainerName = containerName,
HttpsOnly = true,
Start = signatureStart,
Expiry = signatureExpiration,
Permissions = new AzureClassicStorage.Inputs.GetAccountBlobContainerSASPermissionsArgs
{
Read = true,
Write = false,
Delete = false,
List = false,
Add = false,
Create = false
}
});
});
return Output.Tuple(blob.Url, sasToken).Apply(x => $"{x.Item1}{x.Item2.Sas}");
}
lively-whale-42645
04/22/2022, 5:23 PMpublic static Output<string> GenerateContainerSasUrl(GrahamsBlobContainer container,
Output<string> storageAccountName,
Output<string> resourceGroupName)
{
var serviceSasToken = ListStorageAccountServiceSAS.Invoke(new ListStorageAccountServiceSASInvokeArgs
{
AccountName = storageAccountName,
Protocols = HttpProtocol.Https,
SharedAccessStartTime = "2021-01-01",
SharedAccessExpiryTime = "2230-01-01",
Resource = SignedResource.C,
ResourceGroupName = resourceGroupName,
Permissions = Permissions.R,
CanonicalizedResource = Output.Format($"/blob/{storageAccountName}/{container.Name}"),
ContentType = "application/json",
CacheControl = "max-age=5",
ContentDisposition = "inline",
ContentEncoding = "deflate",
}).Apply(blobSas => blobSas.ServiceSasToken);
return Output.Format(
$"https://{storageAccountName}.<http://blob.core.windows.net/{container.Name}/{container.Name}?{serviceSasToken}|blob.core.windows.net/{container.Name}/{container.Name}?{serviceSasToken}>");
}