【问题标题】:Trying to run powershell scripts from azure automation account to list blob in storage account尝试从 azure 自动化帐户运行 powershell 脚本以列出存储帐户中的 blob
【发布时间】:2021-09-19 12:03:27
【问题描述】:

我正在尝试从 azure 自动化帐户运行 powershell 脚本,以列出存储帐户中的 blob。此存储帐户仅具有选定网络的网络规则,尝试在脚本中提供访问密钥和 SAS,但我仍然看到 403 错误。如何运行我的脚本并列出具有网络限制的 blob?

$StorageAccountName = 'xyz'
$key = get-azstorageaccountkey -storageaccountname $StorageAccountName -resourcegroupname "xxxxxx"
$StorageAccountKeyPrimary = $key[0].value 
$ContainerName = 'xxx'
$StorageContext = New-AzStorageContext -StorageAccountName $StorageAccountName -StorageAccountKey $StorageAccountKeyPrimary
$Blobs = Get-AzStorageBlob -Container $ContainerName -Context $StorageContext | Where-Object{$_.LastModified.Date -lt (Get-Date).AddDays(-30)}
$Blobs | ft -property name, LastModified
$totalblobs = $Blobs.Count
Write-Output "Total blobs in container = $totalblobs"

【问题讨论】:

  • 403 是被禁止的,所以它更可能是 SAS 问题而不是网络问题。
  • 我尝试添加 SAS 而不是主键,仍然是同样的问题。
  • 您是否尝试过通过 Azure 存储资源管理器连接 SAS?众所周知,SAS 密钥很难使用。有时您需要对它们进行 URL 编码,并且需要使用正确的段

标签: azure powershell azure-blob-storage azure-automation


【解决方案1】:

以下代码应该可以工作。请注意,您也应该在代码中输入访问密钥

$StorageAccountName = "name"
$StorageAccountKeyPrimary = "your key" 
$ContainerName = "container name"
$StorageContext = New-AzStorageContext -StorageAccountName $StorageAccountName -StorageAccountKey $StorageAccountKeyPrimary
$Blobs = Get-AzStorageBlob -Container $ContainerName -Context $StorageContext | Where-Object{$_.LastModified.Date -lt (Get-Date).AddDays(-30)}
$Blobs | ft -property name, LastModified
$totalblobs = $Blobs.Count
Write-Output "Total blobs in container = $totalblobs"

【讨论】:

  • 这与原始代码几乎相同。有什么区别可以让它发挥作用?
  • 访问密钥直接在代码中给出,这会有所不同
【解决方案2】:

我在我的订阅中重新创建了此问题并收到以下错误。

This request is not authorized to perform this operation. HTTP Status Code: 403 - HTTP Error Message: This request is not authorized to perform this operation.
ErrorCode: AuthorizationFailure
ErrorMessage: This request is not authorized to perform this operation.

当我删除 IP 白名单时,我能够访问 blob。在线查看类似问题,LINK 似乎需要按照链接中的建议将 Azure 数据中心的所有 IP 列入白名单。

【讨论】:

  • 我不应该添加所有这些 ip,会收到违规。
  • @Adityac 您可以发布您收到的实际错误消息,以便其他人可以更好地理解问题
  • 此请求无权执行此操作。 HTTP 状态代码:403 - HTTP 错误消息:此请求无权执行此操作。 ErrorCode: AuthorizationFailure ErrorMessage: 此请求无权执行此操作。 RequestId:0000-000-000-0000-0000000000000 时间:2021 年 7 月 9 日星期五 14:03:52 GMT
  • @Adityac 另外,检查是否缺少列出 blob 的权限。在容器的设置选项卡下选择访问策略,然后单击添加策略。选择您要授予此特定容器的权限。此外,公共访问级别是容器级别。
  • @ManuPhilip 即使遵循上述建议,我仍然遇到同样的错误。我将容器访问级别从私有设置为容器。
猜你喜欢
  • 2021-07-17
  • 2017-06-28
  • 1970-01-01
  • 2022-11-11
  • 1970-01-01
  • 1970-01-01
  • 2023-03-20
  • 1970-01-01
  • 2017-01-24
相关资源
最近更新 更多