适用于Powershell的AWS工具,版本差异

时间:2020-08-25 18:13:04

标签: amazon-web-services powershell

我一直在测试使用AWSToolsAndSDKForNet_sdk-3.3.398.0_ps-3.3.390.0_tk-1.14.4.1.msi的较旧的AWS Tools安装和使用AWSToolsAndSDKForNet_sdk-3.5.2.0_ps-4.1.0.0_tk-1.14.5.0.msi的较新安装。我用来测试的代码是

Set-AWSCredential -AccessKey:$ACCESSKEY -SecretKey:$SECRETKEY -StoreAs:default

$items = Get-S3Object -BucketName:$BUCKETNAME -Region:'eu-west-1' -Key:'revit/2020'
Write-Host "$($items.Length) items"

$count = 1
foreach ($item in $items) {
    Write-Host "$count $($item.key)"
    $count ++
}

我看到了非常不同的行为,无法弄清原因。在3.3版本中,代码按预期工作,最终得到了存储桶和密钥中的文件列表。性能是相当不错的,花了一点时间,但在“子文件夹”中有大约5000个文件。 当我用4.1运行它时,它花费了3-5倍的时间,并且什么也没有返回。 似乎“帮助”也有些不同。 get-help Get-S3Object -detailed的首次运行将耗时10分钟,而CPU,内存和磁盘访问的利用率通常为99%。第二次运行非常快。 3.3什么也不做。

那么,当前构建的适用于Powershell的AWS工具是否还没有准备好迎接黄金时段?我对 AWS Tools 4.1性能的搜索没有发现任何问题。 对于它的价值,我使用MSI安装程序是因为我需要安装才能真正稳定地工作,并且NuGet方法在许多生产工作站上都​​存在很大问题。但是,如果还有其他选择,我很乐意进行研究。主要问题是我最终需要安装并立即加载模块并使用AWS。我还没有与基于MSI的安装一起使用的功能,但这是针对其他线程的。

1 个答案:

答案 0 :(得分:1)

似乎他们更改了Get-S3Object的结果。您将需要添加-Select S3Objects.Key以获得所需的结果(或仅是-select *)。以下是变更说明的摘录:

大多数cmdlet具有一个新参数:-Select。 Select可用于更改cmdlet返回的值。例如,Get-S3Object使用的服务API返回ListObjectsResponse对象,但该cmdlet配置为仅返回S3Objects字段。现在,您可以指定-Select *以接收完整的API响应。您还可以指定嵌套结果属性的路径,例如-Select S3Objects.Key。在某些情况下,返回cmdlet参数可能很有用,这可以通过-Select ^ ParameterName实现。

通过转到the Change Notes并为 Get-S3Object 做CTRL + F找到。希望这能为您解决!