여러 AWS 계정이 있으며 계정 당 모든 S3 버킷 을 나열한 다음 각 버킷의 총 크기를 확인해야합니다.
현재 단일 S3 버킷 의 스토리지 크기 만 볼 수 있습니다 .
aws s3 ls s3://mybucket --recursive --human-readable --summarize
여러 AWS 계정이 있으며 계정 당 모든 S3 버킷 을 나열한 다음 각 버킷의 총 크기를 확인해야합니다.
현재 단일 S3 버킷 의 스토리지 크기 만 볼 수 있습니다 .
aws s3 ls s3://mybucket --recursive --human-readable --summarize
답변:
해상도 1
그래서 나는 다음 스크립트로 이것을 해결했다. 내가 알지 못하는 더 쉬운 방법이있는 경우를 대비하여 원래 질문을 게시했습니다.
#!/bin/bash
aws_profile=('profile1' 'profile2' 'profile3');
#loop AWS profiles
for i in "${aws_profile[@]}"; do
echo "${i}"
buckets=($(aws --profile "${i}" --region your_region s3 ls s3:// --recursive | awk '{print $3}'))
#loop S3 buckets
for j in "${buckets[@]}"; do
echo "${j}"
aws --profile "${i}" --region your_region s3 ls s3://"${j}" --recursive --human-readable --summarize | awk END'{print}'
done
done
해상도 2
사용 대시 보드 에서 CloudWatch에서를 AWS 콘솔에서.
그런 다음 모든 S3 버킷을 지정하고 숫자 통계를 추가하여 스토리지 크기 지표를 표시 할 수 있습니다.
이것은 많은 API 호출 비용이 들지 않으며 s3 버킷의 크기에 따라 상당히 빠를 수 있습니다 (매우 큰 버킷에서 크기를 얻는 데 꽤 오래 걸립니다).
평결
대시 보드 (만들기 해결 방법 2 각 AWS 계정에하는) 가장 효율적인 옵션을이었다 나를 위해 나를 로그인 각 AWS는 끝까지 스크립트 API 호출을 기다리는 것보다 계정에서 수동 측정을 잡아하는 것이 빠른 방법입니다 원인이된다. :(
| awk END'{print}'
?
[@]
에 "${buckets[@]}"
평균?
내가 아는 한,이를 수행하는 도구 또는 cli 기능이 없기 때문에이 데이터를 구문 분석하고 쿼리하는 스크립트를 작성해야합니다. 다행히이 모든 정보를 CLI로 수집 할 수 있습니다.
조직의 모든 계정을 나열 하고 구문 분석하십시오.
aws organizations list-accounts
각 계정에 대해 모든 버킷을 나열 하고 구문 분석하십시오.
aws s3api list-buckets --query "Buckets[].Name"
마지막으로 각 계정 내에서 각 버킷의 크기를 확인하십시오. 이전과 동일한 cli 명령을 사용할 수 있지만 버킷에있는 각 항목의 개별 크기를 나열한다는 경고가 표시됩니다. 이 cli 명령을 사용하여 버킷 크기를 얻을 수도 있습니다.
aws s3api list-objects --bucket BUCKETNAME --output json --query "
[sum(Contents[].Size), length(Contents[])]"
찾을 수없는 도구가 없으면 스크립트를 작성해야합니다.
여러 AWS 계정으로 작업하는 경우 버킷 크기를 얻으려면 계정 간을 전환해야합니다.
모든 버킷과 총 크기를 얻으려면 ' aws s3api '를 사용할 수 있습니다 . 를 사용 list-buckets
하면 하나의 계정에서 모든 버킷을 얻을 수 있으며 크기를 나열하고 다음 계정을 시도 할 수 있습니다.
버전 관리가 켜져 있고 방대한 양의 데이터가 "삭제"된 경우 버킷 크기가 표시되지 않습니다. S3 GUI 콘솔에서 측정 항목 탭에 청구 대상이 표시됩니다.
/server/84815/how-can-i-get-the-size-of-an-amazon-s3-bucket 에있는 스크립트에서 다음 명령을 폐기했습니다 . Windows에서 잘 작동합니다. 대체 yourregion
및 yourbucketname
:
aws cloudwatch get-metric-statistics --namespace AWS/S3 --start-time 2019-05-09T00:01:00Z --end-time 2019-05-11T23:59:00Z --period 86400 --statistics Average --region yourregion --metric-name BucketSizeBytes --dimensions Name=BucketName,Value=yourbucketname Name=StorageType,Value=StandardStorage
이것은 시작 및 종료 시간에 의해 제한되는 일 동안 평균 크기 (바이트)를 제공합니다. 버킷에 Versioning Enabled (활성화)가 있고 대량의 데이터를 "삭제"한 경우 충격을 받을 수 있습니다 .
버전 관리 사용 버킷을 정리하려면 LifeCycle 규칙을 설정해야합니다. 이전 버전을 영구적으로 삭제하도록 선택할 수 있습니다. 전환 단계에서 확인란을 생략 할 수 있습니다.