0

我正在尝试编写一个 Bash 脚本来备份 Azure App 服务并将备份保存到 Azure 存储中的容器中。

为此,我需要一个 SAS 来访问存储并生成一个,我将使用以下命令:

az storage blob generate-sas -c containername --account-name storage-account-name -n blob-name

这里的问题是,我还需要为上述命令提供 blob 名称才能工作,但我希望我的备份直接存储在容器中。

但是,如果我使用 Powershell 并按照此处的文档进行操作的文档操作,则不需要 blob 存储名称来创建 SAS。

所以我想知道是否有一种方法可以使用 Azure-CLI 生成 SAS,该方法在容器级别而不是 blob 级别有效。

4

2 回答 2

2

请尝试az storage container generate-sas

az storage container generate-sas --name <container-name> --expiry <sas-expiry> --permissions <permissions> --account-name <account-name> --account-key <account-key>

要查看此命令的所有选项,请使用:

az storage container generate-sas --help
于 2017-06-08T15:12:45.733 回答
1

我同意高拉夫的观点。是的,您可以生成在容器级别有效的 SAS。您也可以使用以下命令来生成它。它适用于 bash shell。

groupname=<>
accountname=<>
containername=<>
##generate connection-string
StorageAccountConnectionString=`az storage account show-connection-string --name $accountname --resource-group $groupname --output tsv`
##generate sas
sas=`az storage container generate-sas --connection-string $StorageAccountConnectionString -n $containername --permissions rl --expiry 'Y-m-dTH:M:SZ' --output tsv`

#usage example

groupname=shui
accountname=shui
containername=shui
##generate connection-string
StorageAccountConnectionString=`az storage account show-connection-string --name $accountname --resource-group $groupname --output tsv`
##generate sas
sas=`az storage container generate-sas --connection-string $StorageAccountConnectionString -n $containername --permissions rl --expiry '2018-06-30' --output tsv`
echo $sas
se=2018-06-30&sp=rl&sv=2016-05-31&sr=c&sig=GTdFdruu2DxzSoIKCb0K7YQpBPaJdHSaXLUPSOzTcZ4%3E

您还可以使用 Azure CLI 2.0 来获取存储密钥。

#usage example
az storage account keys list -n shuihdi -g shui4 --output tsv|head -n 1|awk '{print $3}'
5NQdibPibJrxQ3StybPb1kMsAL8NVdL3GT3KWcodWL96vhBNz5fYRKuXmYWkHxPxvxGnmJTOAY2rizgnJa4qmQ==
于 2017-06-09T01:46:06.103 回答