2017-12-19 42 views
0

現在、md5ハッシュを含むメタデータタグを添付してs3のオブジェクトにタグを付けています。オブジェクトをアップロードしているときに、オブジェクトをs3にプッシュする前に、md5ハッシュが異なることを確認します。S3バケット内のすべてのオブジェクトのメタデータを取得

s3バケット内のすべてのオブジェクトのメタデータを取得する方法があるかどうかは、それぞれのアイテムごとに個別に取得することがあると思われました。私は-Key値を削除すると、私は次のエラー

Get-S3ObjectMetadata : Key is a required property and must be set before making this call. 

を取得

S3
$hash = Get-S3ObjectMetadata -Credential $AwsCredentials -BucketName $Bucketname -Key $key 

からハッシュをつかむために、次を使用しています

私はまた、取得-助けを-fullを試してみましたが、 -keyの次の情報を取得しました

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

    Required?     false 
    Position?     2 
    Default value    None 
    Accept pipeline input?  True (ByPropertyName) 
    Accept wildcard characters? false 

これは矛盾しているようですが、

+0

'$ key'は設定されていますか?そうではないようです。そして、オブジェクトのMD5は既にオブジェクトの属性として利用可能です。 – stdunbar

+0

個々のファイルではなくバケット全体をつかみたいので、キーを削除したいのです。私はs3のフォルダ名のように、Keyの一部を使ってみましたが、それは動作しておらず、別のエラーを返します。既に利用可能なMD5に関しては、私が見つけた最も近いものは類似しているE-Tagですが、明らかにObjectの実際のMD5ハッシュではありません。 – Shadowzee

答えて

1

オブジェクトメタデータの取得にはバッチモードはありません。各オブジェクトのメタデータを個別に取得する必要があります。通常の方法は、複数のプロセスまたはスレッドを使用して並列要求を送信することです。バケツは、問題なく何百回ものreqs/secのレートでそのような要求を処理できるはずです。

あなたの解決方法には縮尺がないので、問題があります。私が見た1つの解決策は、本質的に自動重複除外を提供するオブジェクトペイロードのハッシュにオブジェクトキーを実際に設定することです(sha256はmd5とsha1の既知のコリジョンがあるため、より良い選択です)。

もしSSE-C又はSSE-KMSを使用している場合を除き場合、ETagのは、対象体又は-部品点数が続く個々の部品のバイナリ(ないヘクス)MD5SUMSのMD5チェックサムのMD5チェックサムでありますオブジェクトはマルチパートアップロードAPIを使用してアップロードされます。

関連する問題