Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/amazon-web-services/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Powershell 获取S3 bucket中所有对象的元数据_Powershell_Amazon Web Services_Amazon S3 - Fatal编程技术网

Powershell 获取S3 bucket中所有对象的元数据

Powershell 获取S3 bucket中所有对象的元数据,powershell,amazon-web-services,amazon-s3,Powershell,Amazon Web Services,Amazon S3,我目前正在通过附加包含md5哈希的元数据标记来标记s3中的对象。当我上传对象时,我会在将对象推入s3之前检查md5散列是否不同 我想知道是否有一种方法可以获取s3 bucket中所有对象的元数据,因为似乎需要一些时间来分别获取每个项目的元数据 我使用下面的代码从s3中获取散列 $hash = Get-S3ObjectMetadata -Credential $AwsCredentials -BucketName $Bucketname -Key $key 当我删除-Key值时,我得到以下错误

我目前正在通过附加包含md5哈希的元数据标记来标记s3中的对象。当我上传对象时,我会在将对象推入s3之前检查md5散列是否不同

我想知道是否有一种方法可以获取s3 bucket中所有对象的元数据,因为似乎需要一些时间来分别获取每个项目的元数据

我使用下面的代码从s3中获取散列

$hash = Get-S3ObjectMetadata -Credential $AwsCredentials -BucketName $Bucketname -Key $key
当我删除-Key值时,我得到以下错误

Get-S3ObjectMetadata : Key is a required property and must be set before making this call.
我还尝试获取完整帮助,并在-键上获得以下信息

    -Key <System.String>
    The key of the object.

    Required?                    false
    Position?                    2
    Default value                None
    Accept pipeline input?       True (ByPropertyName)
    Accept wildcard characters?  false
-键
对象的键。
必修的?假的
位置?2.
默认值无
接受管道输入?True(ByPropertyName)
是否接受通配符?假的

这似乎与我得到的错误相矛盾

获取对象元数据没有批处理模式。您必须分别获取每个对象的元数据。通常的方法是使用多个进程或线程来发送并行请求。一个bucket应该能够以每秒几百个请求的速率处理此类请求,而不会出现任何问题

您的解决方案有缺陷,因为它无法扩展。我看到的一个解决方案是将对象密钥实际设置为对象有效负载的散列(sha256是更好的选择,因为md5和sha1都存在已知冲突),这基本上提供了自动重复数据消除


除非您使用的是
SSE-C
SSE-KMS
,否则当使用多部分上载API上载对象时,etag是对象体的MD5和或单个部分的二进制(非十六进制)MD5和的MD5和,后跟
-
和部分数。

是否设置了
$key
?似乎不是。对象的MD5已经作为对象的属性可用。我希望能够获取整个bucket,而不是单独获取每个文件,这就是为什么我要删除密钥。我尝试过使用密钥的一部分,比如s3中的文件夹名称,但这不起作用,并返回不同的错误。至于已经可用的MD5,我发现最接近的是E-Tag,它很相似,但显然不是对象的实际MD5散列。