Azure Redis 导入:“未找到。Azure 区域“巴西南部”中没有名为“<redacted>”的存储帐户”

问题描述 投票:0回答:1

我们的自动 Redis 导入开始失败,并显示以下消息:

Not Found. There was no storage account called '<redacted>' in the Azure region 'Brazil South'.

我们的流程如下:

  1. 生成 SAS url:
    sas_url=$(az storage blob generate-sas \
                 -o tsv \
                 --account-name $AZ_ACCOUNT_NAME \
                 --account-key $AZ_ACCOUNT_KEY \
                 --container-name $AZ_CONTAINER_NAME \
                 --name db \
                 --permissions r \
                 --start $(date_plus_minutes -20) \
                 --expiry $(date_plus_minutes 120) \
                 --full-uri)
  1. 使用服务主体登录:
    az login \
       --service-principal \
       -u $AZ_SP_ID \
       -p $AZ_SP_PASS \
       --tenant $AZ_SP_TENANT
  1. 进口:
    az redis import \
       --ids $REDIS_ID \
       --files $sas_url

Redis 服务器和存储帐户位于同一订阅和资源组中。

如果我从 Web 界面开始导入,该过程就可以工作;当我使用我的帐户而不是服务主体时,该过程也可以从命令行工作。

我验证了,当以服务主体身份登录时,

az storage account list
不会列出存储帐户(即使服务主体在该帐户中具有存储 Blob 数据贡献者角色),但我不确定这是否重要 - SAS 令牌应该向通常无权访问的用户授予访问权限,对吧?我已通过打开 URL 确认这一点,并且即使未登录 Azure 也能够下载该文件。

我注意到的一件事是,在 Web 界面中,Redis 服务器被列为“位置:巴西南部”,存储帐户为“位置:巴西南部”。不过,我不确定这是否相关,因为我能够使用普通用户从命令行上传。

azure azure-blob-storage azure-storage azure-redis-cache azure-sas
1个回答
0
投票

我注意到的一件事是,在 Web 界面中,Redis 服务器被列为“位置:巴西南部”,存储帐户为“位置:巴西南部”。不过,我不确定这是否相关,因为我能够使用普通用户从命令行上传。

在我的环境中,我在同一位置(巴西南部)、同一资源组和同一订阅中创建了存储帐户和 Redis 缓存。

传送门:

enter image description here

现在,我将服务主体

contributor role
storage blob data contributor
角色分配给存储帐户。

传送门:

enter image description here

现在,您可以运行与从存储帐户导入 blob 相同的命令。

命令:

az login --service-principal -u "xxx" -p "xxx" --tenant "xxx"

az redis import --ids "/subscriptions/xxx/resourceGroups/xxx/providers/Microsoft.Cache/Redis/xxx" --files  "https://venkat98012.blob.core.windows.net/venkat/test" --debug

参考:

© www.soinside.com 2019 - 2024. All rights reserved.