【问题标题】:Download files from S3 bucket + folder从 S3 存储桶 + 文件夹下载文件
【发布时间】:2015-05-20 18:07:06
【问题描述】:

我正在使用 AWS 开发工具包编写一个 Powershell 脚本,以从 S3 中存储桶内的特定目录下载指定数量的文件。

当我运行脚本时,对于循环的每次迭代,我都会收到此错误:

Read-S3Object : Illegal characters in path.
At line:21 char:5
+     Read-S3Object -BucketName $BucketName -Key $Key -File $LocalFile
+     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    + CategoryInfo          : InvalidOperation: (Amazon.PowerShe...dS3ObjectCmdlet:ReadS3ObjectCmdlet) [Read-S3Object], Inv 
   alidOperationException
    + FullyQualifiedErrorId : Amazon.Runtime.AmazonServiceException,Amazon.PowerShell.Cmdlets.S3.ReadS3ObjectCmdlet

我尝试了一些变体,我怀疑是包含 : 或 \

的文件夹有问题
Param( 
   [Parameter(Mandatory=$False)] [String]$WorkingDir = "C:\Temp\Testing\",
   [Parameter(Mandatory=$False)] [String]$BucketName = "BucketName",
   [Parameter(Mandatory=$False)] [String]$DownloadFolder = "Testing",
   [Parameter(Mandatory=$False)] [int]$FileCount = 100
    )

$FilesToDownload = Get-S3Object -BucketName $BucketName -KeyPrefix $DownloadFolder -MaxKey $FileCount

$FilesToDownload | ForEach-Object {

    $Key       = ($_.Key | Out-String)
    $File      = $Key.TrimStart($DownloadFolder + "/")
    $LocalFile = Join-Path $WorkingDir $File

    Read-S3Object -BucketName $BucketName -Key $Key -File $LocalFile

    }

我可以让下面的工作,这基本上是 ForEach 循环正在做的事情:

Read-S3Object -BucketName BucketName -Key Testing/text.txt -File C:\Temp\Testing\test.txt

【问题讨论】:

    标签: powershell amazon-web-services amazon-s3 aws-powershell


    【解决方案1】:

    $LocalFile 变量中似乎存在一些非法字符,尤其是回车、换行。

    我通过以下方式修复了它:

    $LocalFile = $LocalFile -replace "`n",""
    $LocalFile = $LocalFile -replace "`r",""
    

    【讨论】:

      【解决方案2】:

      真正的问题是下面这行。

      $Key       = ($_.Key | Out-String)
      

      如果你只是设置 $Key = $_.Key 那么你不会从字符串中得到回车。

      【讨论】:

        【解决方案3】:

        这可能更简单:

        Get-S3Object -BucketName ${BucketName} -Region ${RegionName} | Select-Object -First ${FileCount} | Copy-S3Object -LocalFolder ${WorkingDir}
        

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2017-02-16
          • 2013-10-15
          • 2019-09-06
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多