2017-12-19 4 views
0

현재 m3.5 해시가 포함 된 메타 데이터 태그를 첨부하여 s3의 객체에 태그를 지정하고 있습니다. 개체를 업로드 할 때 s3에 개체를 보내기 전에 md5 해시가 다른지 확인합니다.S3 버킷의 모든 객체에 대해 메타 데이터 가져 오기

s3 버킷의 모든 객체에 대한 메타 데이터를 가져 오는 방법이 있는지 궁금해했습니다. 각 항목에 대해 개별적으로 가져 오는 것 같습니다.

나는

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

나는 내가 또한 보려면 get-help -full 시도

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

다음과 같은 오류를 얻을 - 키 값을 제거하면 S3에서 해시를 잡기 위해 다음과 사용하고 - 열쇠에 관한 다음의 정보를 얻었습니다

-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가 비슷하지만 실제로 MD5 객체의 실제 해시가 아닙니다. – Shadowzee

답변

1

개체 메타 데이터를 가져 오는 중에 배치 모드가 없습니다. 각 개체의 메타 데이터를 개별적으로 가져와야합니다. 일반적인 접근법은 여러 프로세스 나 스레드로 작업하여 병렬 요청을 보내는 것입니다. 버킷은 이러한 요청을 아무런 문제없이 수백 reqs/sec의 비율로 처리 할 수 ​​있어야합니다.

귀하의 솔루션은 규모가 조정되지 않기 때문에 결함이 있습니다. 필자가 보았던 한 가지 해결책은 객체 중복을 실제로 제공하는 객체 페이로드의 해시에 객체 키를 실제로 설정하는 것입니다 (sha256은 md5와 sha1 모두에 알려진 충돌이 있으므로 더 나은 선택입니다).

SSE-C 또는 SSE-KMS를 사용하지 않는 경우는 ETAG 개별 부품 또는 이진 (되지 진수)의 md5sum md5sums를가 - 뒤에 오브젝트 본체와 부품의 수,을의 md5sum 인 멀티 파트 업로드 API를 사용하여 개체를 업로드합니다.

관련 문제