[AWS] 클라우드와치 로그그룹을 S3에 저장
클라우드 와치 수동으로 내보내기 하려 하는데 아래와 같은 메시지를 보게 되면
GetBucketAcl call on the given bucket failed. Please check if CloudWatch Logs has been granted permission to perform this operation.
"S3 버킷에 대한 GetBucketAcl 호출 실패" 오류는 CloudWatch Logs가 지정된 S3 버킷에 대한 접근 권한이 없음을 의미 하기 때문에 문제를 해결하기 위해서는 S3 버킷 정책을 업데이트하여 CloudWatch Logs 서비스에 필요한 권한을 부여하면 된다.
AWS는 설정 해줄 것이 상당히? 많다. 권한과 정책 문제 이것저것 하는 입장에선 복잡하고 복잡하다
● S3 버킷의 권한 설정은 다음과 같다.
1) AWS Management Console에 로그인하고, S3 대시보드로 이동합니다.
2) 문제가 발생한 S3 버킷을 선택합니다.
3) 권한 탭으로 이동한 다음, 버킷 정책을 클릭합니다.
4) 버킷 정책 편집기에 다음과 같은 정책을 추가합니다.
아래 정책에서 arn:aws:s3:::your-bucket-name 버킷의 실제 ARN으로 변경해 주세요.
그리고 arn:aws:logs:your-region 에서 your-region 실제 리전 코드로 변경.
이 정책은 CloudWatch Logs 서비스에게 버킷의 ACL을 읽는 권한(s3:GetBucketAcl)과 버킷에 로그 파일을 쓰는 권한(s3:PutObject)을 부여 하고 s3:PutObject 권한에는 객체가 버킷 소유자에게 전체 제어 권한을 부여하도록 하는 조건이 포함되어 있다.
정책을 입력한 후 변경 사항 저장을 클릭합니다.
이렇게 업데이트한 후에는 CloudWatch Logs가 S3 버킷에 접근하여 로그 파일을 저장할 수 있게 된다. 앞쪽에 붙이라는것을 넣으면 디렉토리가 생기고 그안에 로그파일이 저장된것을 볼 수 있을 것이다.