[英]Azure DevOps Pipeline Azure Blob Storage upload file 403 Forbidden Exception
我正在為 Azure DevOps 管道中的新 Azure 存儲帳戶創建 CI/CD 配置管道,並嘗試使用從管道中的 Azure Powershell 任務運行的 AzCopy 將一些文件上傳到 Blob 存儲。
該腳本在我的本地機器上成功運行,但是在 Azure DevOps 管道中運行時,我收到以下錯誤( ErrorDateTime只是一個經過混淆的 ISO 8601 格式的日期時間):
我試過的...
我已經成功地從我的本地機器運行了腳本,我的 IP 地址在允許列表中。
如果我在存儲帳戶防火牆規則上啟用“允許從所有網絡訪問”,則腳本將運行並且文件已成功上傳。
似乎在其自己的 VNet 中運行的 Azure 管道代理無權訪問我的存儲帳戶,但我認為通過在防火牆設置中設置“允許受信任的 Microsoft 服務訪問此存儲帳戶”可以滿足該要求
我在 Azure Powershell 任務中使用以下行。 我對這些值很滿意,因為當“所有網絡”或我的 IP 地址啟用並且我在本地運行時,一切正常。
.\AzCopy.exe /Source:$SourcePath /Dest:$blobUrlDir /DestKey:$key /Pattern:$FilenamePattern /Y
任何想法或指導將不勝感激。
謝謝,
SJB
在進一步研究后,我注意到以下提出的問題 - 從存儲帳戶的角度來看,Azure DevOps 不被視為受信任的 Microsoft 服務。
我的臨時解決方法是:
Try
{
Update-AzureRmStorageAccountNetworkRuleSet -ResourceGroupName "$ResourceGroupName" -Name "$StorageAccountName" -DefaultAction Allow
.\AzCopy.exe /Source:$SourcePath /Dest:$blobUrlDir /DestKey:$key /Pattern:$FilenamePattern /Y
}
Catch
{
#Handle errors...
}
Finally
{
Update-AzureRmStorageAccountNetworkRuleSet -ResourceGroupName "$ResourceGroupName" -Name "$StorageAccountName" -DefaultAction Deny
}
謝謝,
SJB
人們似乎在 這個 github 問題中得到了不同的結果,但是在將“存儲 Blob 數據貢獻者”角色添加到 ARM 連接的服務主體后, AzureFileCopy@4任務可以工作(至少對我們而言)。 以下是將存儲庫部署為 blob 容器中的靜態網站的管道中唯一必要的步驟:
- task: AzureFileCopy@4
displayName: 'Copy files to blob storage: $(storageName)'
inputs:
SourcePath: '$(build.sourcesDirectory)'
Destination: AzureBlob
storage: $(storageName)
ContainerName: $web
azureSubscription: 'ARM Connection goes here' # needs a role assignment before it'll work
(當然,如果你像我們一樣使用 Azure CDN,下一步是清除 CDN 端點的緩存,但這與 blob 存儲錯誤無關)
您是否考慮過使用 Azure DevOps 任務“Azure 文件復制”而不是 powershell 腳本? 請參閱: https : //docs.microsoft.com/en-us/azure/devops/pipelines/tasks/deploy/azure-file-copy?view=azure-devops
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.