![](/img/trans.png)
[英]Unable to access a Pulumi Created Azure Storage Table - Access Forbidden (403)
[英]Azure Table Storage query failed with authentication error (Received:Forbidden) from time to time
環境:Azure app服務。
Azure 存儲 SDK: WindowsAzure.Storage (9.3.3)
調用(偽代碼):
void QueryAzureTable(){
while(true){
var tableClient = new AzureTable();
var resp = tableClient.Query('table','pk','rk');
// ...
}
}
var tasks = new List<Task>();
for (var i = 0; i < 5; i++)
{
tasks.Add(QueryAzureTable());
}
await Task.WhenAll(tasks).ConfigureAwait(false);
QueryAzureTable 的授權方法:嘗試使用 clientId/secret 和托管身份/MSI,兩者的結果相同。
觀察:
QueryAzureTable()
中的 anth 問題,大約一半的請求失敗(請參閱下面的詳細錯誤消息)。錯誤信息:
我已經檢查並嘗試了此stackoverflow 線程中提到的幾乎所有解決方案,但沒有成功。 猜測這個特定的身份驗證問題可能與多任務有關。
我自己想出了解決方案:添加重試邏輯來更新令牌。
void query(...){
int cnt=0;
while(true){
try{
_client.queryTable(...);
}
catch(AuthException ex){
log.error(ex...);
var token=new Token(...);
_client = new AzureTableClient(token);
cnt++;
if(cnt==3) throw;
}
}
}
這個解決方案的第一個線索是每當有應用服務發布、部署或重啟應用服務時,查詢表 function 運行了一段時間,然后大約 12 小時后,錯誤開始出現。 但不是100%的失敗率。
如果有任何解釋或結論有助於根本原因,請分享您的意見。 在此先感謝:我的盲目猜測是它與多任務有關。 WindowsAzure.Storage (9.3.3) 不能很好地為多任務更新令牌。
希望這可以幫助你。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.