gpt4 book ai didi

Azure DevOps Pipeline Azure Blob 存储上传文件 403 禁止异常

转载 作者:行者123 更新时间:2023-12-03 20:27:51 24 4
gpt4 key购买 nike

摘要

我正在为 Azure DevOps 管道中的新 Azure 存储帐户创建 CI/CD 预配管道,并尝试使用从管道中的 Azure Powershell 任务运行的 AzCopy 将一些文件上传到 Blob 存储。

错误

该脚本从我的本地计算机成功运行,但在 Azure DevOps 管道中运行时出现以下错误(ErrorDateTime 只是一个混淆的 ISO 8601 格式的日期时间):

假设

  • 存储帐户已设置为仅允许特定 VNet 和 IP 地址访问。
  • 看起来防火墙或凭据在某种程度上配置错误,但运行脚本的 ServicePrincipal 已在其他同级管道任务中成功使用,为了理解这些问题,我暂时授予了 ServicePrincipal 订阅所有者权限和存储帐户防火墙规则选项卡具有“允许受信任的 Microsoft 服务访问此存储帐户”

我尝试过...

  • 我已从本地计算机成功运行该脚本,并且我的 IP 地址位于允许列表中。

  • 如果我在存储帐户防火墙规则上启用“允许从所有网络访问”,则脚本将运行并且文件将成功上传。

  • 似乎在自己的 VNet 中运行的 Azure Pipeline Agent 无权访问我的存储帐户,但我认为通过设置“允许受信任的 Microsoft 服务访问此存储帐户”可以满足该要求“在防火墙设置中

我在 Azure Powershell 任务中使用以下行。我对这些值很满意,因为当启用“所有网络”或我的 IP 地址并且我在本地运行时,一切正常。

.\AzCopy.exe /Source:$SourcePath /Dest:$blobUrlDir /DestKey:$key /Pattern:$FilenamePattern /Y

任何想法或指导将不胜感激。

谢谢

SJB

最佳答案

人们似乎在 this github issue 中得到了不同的结果,但是AzureFileCopy@4在将“存储 Blob 数据贡献者”角色添加到 ARM 连接的服务主体(存储帐户本身)后,该任务可以正常工作(至少对我们来说)。以下是将存储库部署为 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 Pipeline Azure Blob 存储上传文件 403 禁止异常,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56916562/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com