[英]az storage blob download not downloading file when run in Azure Pipelines
我有一个 powershell 脚本,用于查询 Azure 存储容器以获取最新的 blob(按创建日期),然后将其下载到本地文件夹。 我可以在本地运行这个脚本,它会按预期执行,下载文件名为“test.yml”的新文件。
function Get-BlobList
{
return az storage blob list `
--account-name $accountName `
--account-key $key `
--container-name $containerName | `
ConvertFrom-Json
}
$files = `
$(Get-BlobList) | `
Sort-Object -Descending { $_.properties.CreationTime } | `
Select-Object name
az storage blob download `
--account-name $accountName `
--account-key $key `
--container-name $containerName `
--name $($files[0].name) `
--file "$downloadFolder\test.yml"
但是,当我在 Azure DevOps 管道中针对同一个 Azure 存储容器运行此脚本时,无论出于何种原因,文件都没有下载。 不会抛出任何错误,但本地运行的 output 与管道运行不同。
本地运行(按预期工作和下载文件):
{
"content": null,
"deleted": false,
"metadata": {},
"name": "20230127.yml",
"properties": {
"appendBlobCommittedBlockCount": null,
"blobTier": null,
"blobTierChangeTime": null,
"blobTierInferred": false,
"blobType": "BlockBlob",
"contentLength": 247,
"contentRange": "bytes 0-246/247",
"contentSettings": {
"cacheControl": null,
"contentDisposition": null,
"contentEncoding": null,
"contentLanguage": null,
"contentMd5": "uGLe+ORvBsW6k6il8FekhQ==",
"contentType": "application/octet-stream"
},
"copy": {
"completionTime": null,
"id": null,
"progress": null,
"source": null,
"status": null,
"statusDescription": null
},
"creationTime": "2023-01-27T23:48:51+00:00",
"deletedTime": null,
"etag": "\"0x8DB00C10ABD11C7\"",
"lastModified": "2023-01-27T23:48:51+00:00",
"lease": {
"duration": null,
"state": "available",
"status": "unlocked"
},
"pageBlobSequenceNumber": null,
"remainingRetentionDays": null,
"serverEncrypted": true
},
"snapshot": null
}
管道运行(不下载但也没有错误):
{
"container": "manifests",
"content": "",
"contentMd5": null,
"deleted": false,
"encryptedMetadata": null,
"encryptionKeySha256": null,
"encryptionScope": null,
"hasLegalHold": null,
"hasVersionsOnly": null,
"immutabilityPolicy": {
"expiryTime": null,
"policyMode": null
},
"isAppendBlobSealed": null,
"isCurrentVersion": null,
"lastAccessedOn": null,
"metadata": {},
"name": "20230127.yml",
"objectReplicationDestinationPolicy": null,
"objectReplicationSourceProperties": [],
"properties": {
"appendBlobCommittedBlockCount": null,
"blobTier": null,
"blobTierChangeTime": null,
"blobTierInferred": null,
"blobType": "BlockBlob",
"contentLength": 247,
"contentRange": "bytes None-None/247",
"contentSettings": {
"cacheControl": null,
"contentDisposition": null,
"contentEncoding": null,
"contentLanguage": null,
"contentMd5": "uGLe+ORvBsW6k6il8FekhQ==",
"contentType": "application/octet-stream"
},
"copy": {
"completionTime": null,
"destinationSnapshot": null,
"id": null,
"incrementalCopy": null,
"progress": null,
"source": null,
"status": null,
"statusDescription": null
},
"creationTime": null,
"deletedTime": null,
"etag": "\"0x8DB00C10ABD11C7\"",
"lastModified": "2023-01-27T23:48:51+00:00",
"lease": {
"duration": null,
"state": "available",
"status": "unlocked"
},
"pageBlobSequenceNumber": null,
"pageRanges": null,
"rehydrationStatus": null,
"remainingRetentionDays": null,
"serverEncrypted": true
},
"rehydratePriority": null,
"requestServerEncrypted": true,
"snapshot": null,
"tagCount": null,
"tags": null,
"versionId": null
}
值得注意的是,管道运行中的“creationTime”为 null,“contentRange”表示“bytes None-None/247”
在管道中运行此命令时,我是否遗漏了什么?
您可以尝试在Azure CLI 任务中执行az storage blob download 命令,以从 Azure Blob 存储下载文件,如下所示:
- task: AzureCLI@2
displayName: 'Azure CLI '
inputs:
azureSubscription: {your service connection name}
scriptType: ps
scriptLocation: inlineScript
inlineScript: |
mkdir $(Build.SourcesDirectory)/BlobFile
az storage blob download --container-name $(containername) --file $(Build.SourcesDirectory)/BlobFile --name "{file name}" --account-key $(accountkey) --account-name $(accountname)
使用mkdir
在当前目录中创建一个文件夹,然后从 blob 下载文件并将其保存到该文件夹中。 您可以创建一个服务连接,首先连接到您的 Azure blob,然后在此 Azure CLI 任务中连接到 select。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.