[CLOUD] AWS S3 에서 특정 기간이 이전 파일 자동 삭제하기 (S3 파일 삭제 스크립트)

 

1. 오늘은

지난 시간의 '시스템에 있는 특정 파일(디렉토리)를 S3로 자동으로 백업 하는 방법' 에 이어서, S3 에 저장되어 있는 파일인데,

특정 시간이 지난 파일을 찾아서 자동으로 삭제하는 스크립트를 만들어 볼게.

 

시스템에 있는 특정 파일(디렉토리)를 S3로 자동으로 백업 하는 방법은 이전의 게시물을 확인 해줘.

https://uncools.tistory.com/12

 

[CLOUD] 시스템의 특정 디렉토리를 S3로 자동 백업하기 (s3 백업 스크립트)

1. Amazon S3 Amazon S3(Amazon Simple Storage Service)는 업계 최고의 확장성과 데이터 가용성 및 보안과 성능을 제공하는 객체 스토리지 서비스이다. 즉, 어떤 규모 어떤 사업의 고객이든 이 서비스를 사용하

uncools.tistory.com

 

 

2. 구현 기능 정리

1. 삭제 대상의 파일을 설정으로 만들고 숫자로 설정 할 수 있게 하자.
- 즉 90일 이면 90 만 넣어 놓으면 , 오늘로 부터 90일 이전에 S3에 업로드된 파일을 찾는 거야.

 

2. 삭제 대상 파일이 되는 파일의 전체 개수를 세고 > 더하고 > 출력 결과에 표시하자.

 

3. 각 작업에 대하여 아래와 같이 추적하자.


- S3 에서 있는 파일의 삭제 작업 성공

>> 삭제가 성공한 파일의 이름을 s3://형태로 전체 경로를 만들어 변수에 저장하자

>> 삭제가 성공된 파일의 개수를 세어서 변수로 저장하자

- S3 에서 있는 파일의 삭제 작업 실패

>> 삭제가 실패한 파일의 이름을 s3://형태로 전체 경로를 만들어 변수에 저장하자.

>> 삭제가 실패된 파일의 개수를 세어서 변수로 저장하자. 

 

4. 작업의 결과는 슬랙 Webhook 으로 전송하여 메시지로 받자.

 

 

3. 결과

아래는 최종 실행 결과를 슬랙 Webhook 으로 전송받은 내용이야.

 

*** s3_file_clean_up ***
- buddy2
- 2023-06-27 08:42:02.303872
[+] run date: 2023-06-27
[+] cut off : 2023-06-19
---> cleaning up 8 days ago
---> scanned (37) files

[+] result
---> clean up success: 37 files
---> clean up failure: 0 files
---> total files: 37 files

1, [success], s3://mywebapp.log/20230612/log_export/com.main.web/2023-06-10/buddy2_node.js.tar.gz
2, [success], s3://mywebapp.log/20230612/log_export/com.main.web/2023-06-10/buddy2_node.js.tar.gz.md
3, [success], s3://mywebapp.log/20230612/log_export/com.main.web/2023-06-10/buddy2_sql.tar.gz
4, [success], s3://mywebapp.log/20230612/log_export/com.main.web/2023-06-10/buddy2_sql.tar.gz.md
5, [success], s3://mywebapp.log/20230612/log_export/com.main.web/2023-06-11/buddy2_node.js.tar.gz
6, [success], s3://mywebapp.log/20230612/log_export/com.main.web/2023-06-11/buddy2_node.js.tar.gz.md
7, [success], s3://mywebapp.log/20230612/log_export/com.main.web/2023-06-11/buddy2_sql.tar.gz
8, [success], s3://mywebapp.log/20230612/log_export/com.main.web/2023-06-11/buddy2_sql.tar.gz.md
9, [success], s3://mywebapp.log/20230613/log_export/com.main.web/2023-06-01/buddy2_node.js.tar.gz
10, [success], s3://mywebapp.log/20230613/log_export/com.main.web/2023-06-01/buddy2_node.js.tar.gz.md
11, [success], s3://mywebapp.log/20230613/log_export/com.main.web/2023-06-01/buddy2_sql.tar.gz
12, [success], s3://mywebapp.log/20230613/log_export/com.main.web/2023-06-01/buddy2_sql.tar.gz.md
13, [success], s3://mywebapp.log/20230613/log_export/com.main.web/2023-06-02/buddy2_node.js.tar.gz
14, [success], s3://mywebapp.log/20230613/log_export/com.main.web/2023-06-02/buddy2_node.js.tar.gz.md
15, [success], s3://mywebapp.log/20230613/log_export/com.main.web/2023-06-02/buddy2_sql.tar.gz
16, [success], s3://mywebapp.log/20230613/log_export/com.main.web/2023-06-02/buddy2_sql.tar.gz.md
17, [success], s3://mywebapp.log/20230613/log_export/com.main.web/2023-06-03/buddy2_node.js.tar.gz
18, [success], s3://mywebapp.log/20230613/log_export/com.main.web/2023-06-03/buddy2_node.js.tar.gz.md
19, [success], s3://mywebapp.log/20230613/log_export/com.main.web/2023-06-03/buddy2_sql.tar.gz
20, [success], s3://mywebapp.log/20230613/log_export/com.main.web/2023-06-03/buddy2_sql.tar.gz.md
21, [success], s3://mywebapp.log/20230613/log_export/com.main.web/2023-06-04/buddy2_node.js.tar.gz
22, [success], s3://mywebapp.log/20230613/log_export/com.main.web/2023-06-04/buddy2_node.js.tar.gz.md
23, [success], s3://mywebapp.log/20230613/log_export/com.main.web/2023-06-04/buddy2_sql.tar.gz
24, [success], s3://mywebapp.log/20230613/log_export/com.main.web/2023-06-04/buddy2_sql.tar.gz.md
25, [success], s3://mywebapp.log/20230613/log_export/com.main.web/2023-06-05/buddy2_node.js.tar.gz
26, [success], s3://mywebapp.log/20230613/log_export/com.main.web/2023-06-05/buddy2_node.js.tar.gz.md
27, [success], s3://mywebapp.log/20230613/log_export/com.main.web/2023-06-05/buddy2_sql.tar.gz
28, [success], s3://mywebapp.log/20230613/log_export/com.main.web/2023-06-05/buddy2_sql.tar.gz.md
29, [success], s3://mywebapp.log/20230613/log_export/com.main.web/2023-06-06/buddy2_node.js.tar.gz
30, [success], s3://mywebapp.log/20230613/log_export/com.main.web/2023-06-06/buddy2_node.js.tar.gz.md
31, [success], s3://mywebapp.log/20230613/log_export/com.main.web/2023-06-06/buddy2_sql.tar.gz
32, [success], s3://mywebapp.log/20230613/log_export/com.main.web/2023-06-06/buddy2_sql.tar.gz.md
33, [success], s3://mywebapp.log/20230613/log_export/com.main.web/2023-06-07/buddy2_node.js.tar.gz
34, [success], s3://mywebapp.log/20230613/log_export/com.main.web/2023-06-07/buddy2_node.js.tar.gz.md
35, [success], s3://mywebapp.log/20230613/log_export/com.main.web/2023-06-07/buddy2_sql.tar.gz
36, [success], s3://mywebapp.log/20230613/log_export/com.main.web/2023-06-07/buddy2_sql.tar.gz.md
37, [success], s3://mywebapp.log/20230613/log_export/com.main.web/2023-06-08/buddy2_node.js.tar.gz

 

 

4. 코드

코드는 아래에 올려 두었어. 수정과 변형은 자유 :)

 

https://github.com/password123456/s3_file_clean_up

 

GitHub - password123456/s3_file_clean_up: A script that searches for and deletes older files in a specific time period from file

A script that searches for and deletes older files in a specific time period from files uploaded to S3. - GitHub - password123456/s3_file_clean_up: A script that searches for and deletes older file...

github.com