이 작업을 하게된 이유는?
IDC 서버에서 S3로 업/다운로드, 복사, 이동, 삭제 등의 작업을 aws cli나 sdk를 통해 하고있다.
그런데 어떤 서버에서는 aws cli를 쓰고 어떤 서버는 s3cmd를 쓰고 또 어떤 서버는 boto3를 쓰고있다.
추가로 사용중인 IAM KEY 권한도 작업에 맞게 제대로 정리가 되어있지 않아 서버별로 필요한 Action만 부여하고 나머지는 회수하기로 했다.
먼저 객체 복사를 하기위해 IAM User를 새로 생성하여 S3 Action에 CopyObject API 요청에 필요한 권한을 부여하고 여러 서버들을 확인해보았다.
동일한 Access Key를 가지고 테스트해보았을 때 aws cli는 정상적으로 복사가 되었으나 s3cmd는 되지 않았다.
(추적로그를 통해 확인한거지만 aws s3 cp, aws s3api copy-object, s3cmd 별로 CloudTrail에 찍히는 API가 전부 달랐다...
만약 대량작업의 경우 이것도 잘 따져보고 사용해야 할 것 같다.. 1억개의 이미지를 다운로드 받는다면 aws s3 cp의 경우 COPY API 요청요금이 적용되지만 aws s3api get-object를 이용하면 GET 요청요금이 적용되어 1/10 비용이 될 것이다..)
어쨌든 툴이 다르니 명령어를 날리면 어떠한 API 요청이 적용되는지 확인하기 위해 추적을 생성하게 됐다.
CloudTrail
CloudTrail은 AWS 계정, 사용자, 역할이나 서비스가 수행하는 작업들을 이벤트로 기록한다.
AWS Console이나 AWS CLI, AWS SDK 등에서 수행한 작업들도 마찬가지로 기록된다.
이벤트는 90일간 보관되며 이벤트 기록을 보는데는 요금이 없다.
아무튼 CloudTrail의 자세한 내용은 다시 정리하기로 한다.
CloudTrail 추적
90일이 지난 이벤트들은 확인이 불가능하기 때문에 추적을 통해 지난 이벤트 기록들을 저장하여 보관하기 위해 사용된다.
이벤트는 기본 이벤트와 고급 이벤트 2가지로 나눠지며 기본 이벤트를 선택하면 S3, Lambda, DynamoDB에 대한 이벤트만 로깅이 가능하고 고급 이벤트를 선택하면 S3, Lambda, DynamoDB 뿐만 아니라 Bedrock, Amazon Q, SageMaker 등 지원 가능한 모든 이벤트를 로깅할 수 있다.
이벤트 10만건 당 $2가 과금되고 추가로 S3 저장비용도 같이 과금된다.
위와 같이 추적을 생성했다
[추적 로그 위치] 를 확인해보면 S3에 데이터들이 계속 쌓이는 것을 확인할 수 있다.
Athena 테이블 생성 및 데이터 조회
CloudTrail 이벤트 기록을 보면 Athena 테이블 생성하는 곳이 있다.
클릭하면 스토리지 위치를 선택하는 부분이 있고 추적을 생성하면 드롭다운 목록에 나타난다.
AWS Athena에서 확인 시 테이블이 생성된 것을 확인할 수 있다.
select eventtime, eventname, sourceipaddress, requestparameters, responseelements, resources from cloudtrail_logs_sjh0207
WHERE sourceipaddress = 'IP주소'
ORDER BY eventtime DESC;
위와 같이 쿼리하면 어떤 source ip 서버에서 해당 버킷으로 어떠한 이벤트들이 발생했는지 확인할 수 있다.
'AWS' 카테고리의 다른 글
AWS CLI 설치 [CentOS 7] (0) | 2022.06.24 |
---|