반응형
해당 글은 ubuntu 20.04 에서 진행되었습니다.
windows 10에서 하다가 실패함 ㅜ
사전 준비물
- aws cli
https://docs.aws.amazon.com/ko_kr/cli/latest/userguide/getting-started-install.html - aws configure
- less
- aws s3 접근권한 (읽기/삭제)
# cmd 접근권한 확인
aws s3 ls s3://버킷명
# 번외 json으로 "다" 보기
aws s3api list-objects-v2 --bucket 버킷명
삭제하기
삭제 리스트 뽑기
aws s3api list-objects --bucket [my-bucket] --prefix [folder]/ --query 'Contents[?Where][.{Select Key}]'
# test_bucket의 lasmodifed 가 20230213보다 작은 경우 모든 정보
aws s3api list-objects --bucket test_bucket --query 'Contents[?LastModified<`2023-02-13T00:00:00.000Z`]'
# return
[ {
"Key": "test/test.jpeg",
"LastModified": "2023-01-05T12:18:31+00:00",
"ETag": "\"09f19e3e734682b7e15e4bcaa36bf1b6-5\"",
"Size": 39465,
"StorageClass": "STANDARD",
"Owner": {
"ID": "d388176d1b2aa337a1a351f33e54d0291f81c16fc50c507756c912e23d05afb9"
}
},{
"Key": "test1/test.jpeg",
"LastModified": "2023-01-05T12:18:31+00:00",
"ETag": "\"09f1923e734682b7e15e4bcaa36bf1b6-5\"",
"Size": 39465,
"StorageClass": "STANDARD",
"Owner": {
"ID": "d388176d1b2aa337a1a351f33e54d0291f81c16fc50c507756c912e23d05afb9"
}
}
]
# --prefix 폴더
# Json 항목 변경 Contents[].[json 항목]
aws s3api list-objects --bucket test_bucket --prefix test/ --query 'Contents[?LastModified<`2023-02-13T00:00:00.000Z`].{Key: Key, LastModified: LastModified}'
# return
[ {
"Key": "test/test.jpeg",
"LastModified": "2023-01-05T12:18:31+00:00"
}
]
# 해당 결과 형태로 변경 --output
aws s3api list-objects --bucket test_bucket --prefix test/ --query 'Contents[?LastModified<`2023-02-13T00:00:00.000Z`].{Key: Key, LastModified: LastModified}' --output text
# return
test/test.jpeg 2023-01-05T12:18:31+00:00
# 해당 결과 파일로 만들기
aws s3api list-objects --bucket test_bucket --prefix test/ --query 'Contents[?LastModified<`2023-02-13T00:00:00.000Z`].{Key: Key, LastModified: LastModified}' --output text > delete.txt
# 원하는값만 파일로 내보내기 (첫번째 항목만)
aws s3api list-objects --bucket test_bucket --prefix test/ --query 'Contents[?LastModified<`2023-02-13T00:00:00.000Z`].{Key: Key, LastModified: LastModified}' --output text | awk '{print $1}' > delete.txt
삭제하기
# 뭔가 잘 되는지 모르겠다.;
aws s3api delete-objects --bucket <bucket-name> --delete "$(cat delete_list.txt | awk '{print "{\"Object\": [{\"Key\": \"" $1 "\"}]}"}')"
# error bash: /usr/local/bin/aws: Argument list too long
# 삭제하려는 객체의 수가 많아 명령의 최대 길이를 초과하여 생기는 문제일 수 있습니다. 이러한 경우에는 배치 파일에서 각 객체를 순차적으로 삭제하는 방식을 사용해야함.
# delete_list.txt
# aws s3api list-objects --bucket test_bucket --prefix test/ --query 'Contents[?LastModified<`2023-02-13T00:00:00.000Z`].{Key: Key}' --output text > delete_list.txt
# for문 돌리기 .sh
# delete.sh
while read line; do
aws s3 rm s3://<bucket-name>/$line
done < delete_list.txt
bash delete.sh
실패
더보기
확인 및 삭제
유감스럽게도 aws cli에서는 date를 이용하여 조회하는 등의 옵션이 없다. ㅠㅠ (왜....ㅠㅠ)
그래서 특정 aws의 서비스를 사용하지않거나 뭐 다른 db에 파일 리스트를 관리하지않는 이상. 스크립트를 짜서 해야한다 ^^..
https://docs.aws.amazon.com/cli/latest/reference/s3/rm.html
확인
옵션 --dryrun 을 해주면 삭제할 리스트를 보여준다. 실행 X
삭제
참고
https://shout.setfive.com/2011/12/05/deleting-files-older-than-specified-time-with-s3cmd-and-bash/
https://may9noy.tistory.com/131
반응형
'프로젝트 설정 > AWS|GCP' 카테고리의 다른 글
[Cloud Service] 클라우드 서비스 스토리지 서비스 엄청 간단 비교 (0) | 2024.04.05 |
---|---|
[AWS] awscli로 내 권한 확인하기 (0) | 2023.08.10 |
[AWS] FTP 지원 서버 만들기 (feat. AWS Transfer Family) (0) | 2022.07.06 |
[AWS] EC2 종료 Error (0) | 2022.03.31 |
[AWS] RDS 참고 링크 (0) | 2022.03.28 |