如何使用PowerShell获取AWS S3对象的元数据值?
解决S3对象自定义元数据取值问题
你的问题出在元数据值的获取方式上,Metadata.Keys是用来获取所有元数据键的集合,而非直接取值。正确的做法是直接通过字典键访问对应的值,或者使用Item方法。
修正后的代码如下:
Import-Module -Name AWS.Tools.Common Import-Module -Name AWS.Tools.S3 # 设置AWS凭证配置文件 Set-AWSCredential -StoreAs $profileName -AccessKey $accessKey -SecretKey $secretKey -SessionToken $sessionToken # 获取S3存储桶内的文件列表 $s3Contents = Get-S3Object -BucketName $s3 -ProfileName $profileName foreach ($file in $s3Contents) { $fileName = $file.Key # 获取文件元数据 $fileDetail = Get-S3ObjectMetadata -BucketName $s3 -ProfileName $profileName -Key $fileName -Select Metadata # 正确获取自定义元数据的值 $buildId = $fileDetail.Metadata["x-amz-meta-build-id"] # 或者使用Item方法:$buildId = $fileDetail.Metadata.Item("x-amz-meta-build-id") Write-Host "文件 $fileName 的Build ID: $buildId" }
关键说明
Get-S3ObjectMetadata返回的Metadata是键值对集合类型,直接通过键名即可访问对应值,无需通过Keys集合。- 确保元数据键名完全匹配,AWS S3的自定义元数据键会保留大小写,若直接取值失败,可尝试验证键名的大小写一致性。
内容的提问来源于stack exchange,提问作者Flan
相关产品推荐
相关产品推荐

