s3 에 업로드된 파일을 주기적으로 삭제시키려면 수명 주기를 구성해야 한다. ex) 3일뒤 삭제
AWS 콘솔을 이용하거나 AWS CLI 를 사용할 수 있다.
1. AWS 콘솔 이용
- S3 버킷 -> 관리 -> 수명 주기 규칙 생성
- 규칙의 범위를 제한한다면 접두사로 적용할 디렉토리 지정 ex) mydir/
- 객체의 현재 버전 만료 체크 -> 일자 지정 ex) 3
2. AWS CLI 이용
S3 객체를 삭제할 마음이 있을 정도의 유저라면 aws cli 준비가 되어 있다고 가정하고...
$ aws s3api put-bucket-lifecycle-configuration --profile my_profile --bucket my_bucket_name --lifecycle-configuration '{
"Rules": [
{
"ID": "Delete objects after 3 days myDir",
"Prefix": "myDir/",
"Status": "Enabled",
"Expiration": {
"Days": 3
}
}
]
}'
위 cli 를 사용하면 1번 aws 콘솔을 사용한 것과 동일한 결과를 얻을 수 있다.
이 설정 이후로, my_bucket_name 버킷의 myDir 디렉토리 안의 모든 객체는 매일 특정 시간대에 체크되며, 업로드 된지 3일이 지난 객체는 영구 삭제된다.
3. MFADelete 이슈
수명 주기 규칙을 생성하려고 할 때, MFA(Multi-Factor Authentication) 가 활성화되어 있다는 메시지를 보게 된다면...
An error occurred (InvalidBucketState) when calling the PutBucketLifecycleConfiguration operation: Cannot put lifecycle configuration on a bucket that has MFA enabled
수명 주기 설정에는 MFA 가 필요하다는 말인데, s3 에 웬 MFA 인고 하니...
버킷 속성에 보면 [MFA 삭제] 항목이 활성화 되어 있다. 객체 삭제시 MFA 인증이 필요하다는 말이다. (내가 한건 아닌거 같은데...;;)
아무튼 이 항목을 수정하려면 root 계정 profile 과 MFA 인증키가 필요하다. 다음과 같이...
$ aws s3api put-bucket-versioning --bucket my_bucket_name --versioning-configuration MFADelete=Disabled,Status=Enabled --mfa "arn:aws:iam::111122223333:mfa/root-account-mfa-device 743015" --profile root
$ aws s3api get-bucket-versioning --bucket my_bucket_name
{
"Status": "Enabled",
"MFADelete": "Disabled"
}
위 코드에서 수정.
- 버킷명 (my_bucket_name)
- MFA삭제 여부 (MFADelete) : Disabled (반대로 활성화 할 경우는 enable)
- 계정ID (111122223333)
- MFA 코드 입력 (743015)
- profile : 실제 루트 credencials
'IT기술 > AWS' 카테고리의 다른 글
AWS 계정간 CodeCommit 저장소 공유 (0) | 2025.04.07 |
---|---|
AWS Reserved Instance (RI) (0) | 2025.03.21 |
CloudWatch Container Insights (1) | 2025.03.20 |
Failed deploy model due to AccessDenied (0) | 2025.03.20 |
AWS WAF setting (0) | 2025.03.17 |