in src/publishers/websiteRunFromPackageDeploy.ts [72:95]
private static async getBlobSasParams(accountName: string, blobName: string, containerName: string, context: IActionContext): Promise<string> {
Logger.Info("Looking up storage account Keys");
const storageClient: StorageManagementClient = new StorageManagementClient(new DefaultAzureCredential(), context.endpoint.subscriptionID);
const keys: StorageAccountListKeysResult = await storageClient.storageAccounts.listKeys(context.resourceGroupName, accountName);
const key = keys.keys?.[0].value;
const now: Date = new Date();
const startTime: Date = new Date();
startTime.setMinutes(now.getMinutes() - 5);
const expiryTime: Date = new Date();
expiryTime.setFullYear(now.getFullYear() + 1);
const sasOptions: BlobSASSignatureValues = {
blobName,
containerName,
permissions: BlobSASPermissions.parse("r"),
protocol: SASProtocol.Https,
startsOn: startTime,
expiresOn: expiryTime
};
const sasParams: SASQueryParameters = generateBlobSASQueryParameters(sasOptions, new StorageSharedKeyCredential(accountName, key));
return sasParams.toString();
}