我可以仅通过 PartitionKey 列出 Azure table(Azure Table 存储)的所有项目吗?

Can I list all items of an Azure table(Azure Table Storage) just by PartitionKey?

我尝试使用以下 uri 进行 REST 调用,但出现错误(403 禁止访问)

https://$storageAccount.table.core.windows.net/$tableName()?$filter=PartitionKey%20eq%20'Key1'

还有别的办法吗?请帮忙。

根据我的测试,我们可以使用share key调用Azure table rest api


$accesskey="<storage account key>"
    $storageAccount = "<account name>"
    $version = "2017-04-17"
    $resource = "table name"
    $key="Jim"
   
    $table_url = "https://$storageAccount.table.core.windows.net/$($resource)?`$filter=PartitionKey%20eq%20'$($key)'"
    # create share key
    $GMTTime = (Get-Date).ToUniversalTime().AddYears(1).toString('R')
    $stringToSign = "$GMTTime`n/$storageAccount/$resource"
    $hmacsha = New-Object System.Security.Cryptography.HMACSHA256
    $hmacsha.key = [Convert]::FromBase64String($accesskey)
    $signature = $hmacsha.ComputeHash([Text.Encoding]::UTF8.GetBytes($stringToSign))
    $signature = [Convert]::ToBase64String($signature)
    $headers = @{
        'x-ms-date'    = $GMTTime
        "Authorization"  = "SharedKeyLite " + $storageAccount + ":" + $signature
        "x-ms-version" = $version
        "Accept"         = "application/json"
    }
    $item = Invoke-RestMethod -Method GET -Uri $table_url -Headers $headers -ContentType application/json
    $item.value

更新

关于如何通过Azure Portal创建sas token,请参考以下步骤

  1. 创建 sas 令牌

  2. 测试

 GET https://myaccount.table.core.windows.net/mytable()
?$filter=<>
&sv=2019-02-02&ss=t&srt=o&sp=r&se=2020-03-27T13:01:24Z&st=2020-03-27T05:01:24Z&spr=https&sig=OFUNXShu6kTojIp3SU...TkG%2BXAVZXJ8sqc%3D