您可以使用AWS Tools For PowerShell在存儲區中列出對象(通過Get-S3Object)並從響應對象中提取公共前綴。
下面是一個小型圖書館遞歸檢索子目錄:
function Get-Subdirectories
{
param
(
[string] $BucketName,
[string] $KeyPrefix,
[bool] $Recurse
)
@(get-s3object -BucketName $BucketName -KeyPrefix $KeyPrefix -Delimiter '/') | Out-Null
if($AWSHistory.LastCommand.Responses.Last.CommonPrefixes.Count -eq 0)
{
return
}
$AWSHistory.LastCommand.Responses.Last.CommonPrefixes
if($Recurse)
{
$AWSHistory.LastCommand.Responses.Last.CommonPrefixes | % { Get-Subdirectories -BucketName $BucketName -KeyPrefix $_ -Recurse $Recurse }
}
}
function Get-S3Directories
{
param
(
[string] $BucketName,
[bool] $Recurse = $false
)
Get-Subdirectories -BucketName $BucketName -KeyPrefix '/' -Recurse $Recurse
}
這個遞歸函數依賴於更新在每次迭代的KeyPrefix檢查子目錄中的每個KeyPrefix傳遞給它。通過將分隔符設置爲'/'
,在到達分隔符第一次出現之前匹配KeyPrefix字符串的鍵將滾動到$ AWSHistory的最後一個響應中的CommonPrefixes集合中。
要在S3桶只檢索頂級目錄:
PS C:/> Get-S3Directories -BucketName 'myBucket'
要檢索的所有目錄中的S3鬥:
PS C:/> Get-S3Directories -BucketName 'myBucket' -Recurse $true
這將返回一個字符串的集合,其中每個字符串是一個通用的前綴。
示例輸出:
myprefix/
myprefix/txt/
myprefix/img/
myotherprefix/
...