내가 빠진 것이 아닌 한, 내가 본 API 중 어느 것도 S3 버킷 / 폴더 (접두사)에 얼마나 많은 객체가 있는지 알려주지 않습니다. 수를 얻는 방법이 있습니까?
답변
당신이 아니면 방법은 없습니다
-
1000 단위로 모두 나열하십시오 (이는 느리고 대역폭이 빠를 수 있습니다-아마존은 XML 응답을 압축하지 않는 것 같습니다).
-
S3에서 계정에 로그인하고 계정-사용으로 이동하십시오. 청구 부서가 얼마나 많은 객체를 저장했는지 알고있는 것 같습니다!
모든 개체 목록을 다운로드하기 만하면 5 천만 개의 개체가 저장되어있는 경우 실제로 시간과 비용이 소요됩니다.
사용량 데이터에있는 StorageObjectCount에 대한이 스레드 도 참조하십시오 .
몇 시간이 지난 경우에도 최소한 기본 사항을 얻는 S3 API가 좋습니다.
답변
AWS CLI 사용
aws s3 ls s3://mybucket/ --recursive | wc -l
또는
aws cloudwatch get-metric-statistics \
--namespace AWS/S3 --metric-name NumberOfObjects \
--dimensions Name=BucketName,Value=BUCKETNAME \
Name=StorageType,Value=AllStorageTypes \
--start-time 2016-11-05T00:00 --end-time 2016-11-05T00:10 \
--period 60 --statistic Average
참고 : 위의 cloudwatch 명령은 일부는 작동하지만 다른 기능은 작동하지 않는 것 같습니다. 여기에서 논의하십시오 : https://forums.aws.amazon.com/thread.jspa?threadID=217050
AWS 웹 콘솔 사용
클라우드 워치의 측정 항목 섹션 을 보면 대략 수의 객체가 저장됩니다.
약 5 천만 개의 제품이 있으며 사용하는 데 1 시간 이상이 걸렸습니다. aws s3 ls
답변
버킷 요약 정보 (예 : 객체 수, 총 크기) --summarize
를 포함 하는 스위치가 있습니다 .
다음은 AWS cli를 사용한 정답입니다.
aws s3 ls s3://bucketName/path/ --recursive --summarize | grep "Total Objects:"
Total Objects: 194273
설명서를 참조하십시오
답변
답변
s3cmd 명령 줄 도구 를 사용하면 특정 버킷의 재귀 목록을 가져 와서 텍스트 파일로 출력 할 수 있습니다.
s3cmd ls -r s3://logs.mybucket/subfolder/ > listing.txt
그런 다음 리눅스에서는 파일에서 wc -l을 실행하여 줄 수를 계산할 수 있습니다 (객체 당 한 줄).
wc -l listing.txt
답변
S3 API를 사용하는 쉬운 솔루션이 있습니다 (AWS cli에서 사용 가능).
aws s3api list-objects --bucket BUCKETNAME --output json --query "[length(Contents[])]"
또는 특정 폴더의 경우 :
aws s3api list-objects --bucket BUCKETNAME --prefix "folder/subfolder/" --output json --query "[length(Contents[])]"