AWS 아테나를 통해서 S3 리퀘스트를 분석해 보도록 하겠습니다.
다음의 순서를 따르시면 됩니다.
아테나 셋업 가이드
1. 대시보드에서 athena 서비스로 이동합니다.
2. 데이터베이스 생성을 선택한 후, 사용하실 데이터 베이스 명, 테이블 이름을 입력합니다.
3. 테이블 추가시 데이터 형식 역시 선택할 수 있습니다.
외부 자료가 있으시면 csv나 tsv, json, parquet과 ORC등을 선택하실 수 있습니다.
4. 필요시에는 파티션을 구성하실 수 있습니다.
5. 이후 테이블 생성을 위해서 DDL을 실행합니다.
자세한 아테나 세팅 가이드는 다음의 링크에 있습니다.
참조 링크 : https://docs.aws.amazon.com/athena/latest/ug/athena-ug.pdf#setting-up
우선 제가 짰던 쿼리는 다음과 같습니다.
다른 샘플 쿼리에 대한 내용은 다음의 링크에서도 확인하실 수 있습니다.
링크 : https://docs.aws.amazon.com/ko_kr/AmazonS3/latest/userguide/using-s3-access-logs-to-identify-requests.html
위의 가이드대로 s3 버킷의 데이터를 Athena로 설정하시고 나신 후에 쿼리 편집기에서 다음의 쿼리를 실행합니다.
**1. 성공 쿼리를 제외한 버킷명, httpstatus, errorcode, 카운트에 대한 내용
SELECT bucket_name
, httpstatus
, errorcode
, count(*)
FROM s3_access_logs_db.s3_logs
WHERE NOT httpstatus IN ('200')
AND parse_datetime(requestdatetime,'dd/MMM/yyyy:HH:mm:ss Z')
BETWEEN parse_datetime('2020-10','yyyy-MM')
AND parse_datetime('2021-03','yyyy-MM')
GROUP BY bucket_name
, httpstatus
, errorcode;
# 여기에 버킷을 제한하고 싶으시면
where절에 AND Bucket_name='XXXXXX'을 넣어주시기 바랍니다.
2. 명시한 기간에 버킷에 요청하는 모든 익명 요청자 표시
SELECT bucket_name
, Requester
, RemoteIP
, Key
, HTTPStatus
, ErrorCode
, RequestDateTime
FROM s3_access_logs_db.s3_logs
WHERE Requester IS NULL
AND parse_datetime(requestdatetime,'dd/MMM/yyyy:HH:mm:ss Z')
BETWEEN parse_datetime('2020-10','yyyy-MM')
AND parse_datetime('2021-03','yyyy-MM')
AND Bucket_name='XXXXXX'
GROUP BY Bucket_name
, Requester
, RemoteIP
, Key
, HTTPStatus
, ErrorCode
, RequestDateTime;
3. 작업, 전송된 바이트, 객체 크기, 카운트에 대한 쿼리
SELECT bucket_name as bucket
, operation as operation
, SUM(bytessent) as byte
, SUM(objectsize) as size
, count(*) as cnt
FROM s3_access_logs_db.s3_logs
WHERE parse_datetime(RequestDateTime,'dd/MMM/yyyy:HH:mm:ss Z')
BETWEEN parse_datetime('2021-03-01:00:00:00','yyyy-MM-dd:HH:mm:ss')
AND parse_datetime('2021-03-31:23:59:42','yyyy-MM-dd:HH:mm:ss')
GROUP BY bucket_name
,operation
'IT > AWS' 카테고리의 다른 글
aws efs vs ebs (0) | 2022.01.25 |
---|---|
AWS S3 Pre-signed URL 완벽 가이드 (0) | 2022.01.13 |
Aws Cloudwatch와 EC2 내부 CPU 사용량 차이 (0) | 2022.01.09 |
Aws Aurora 다수 DB 커넥션 끊어졌을때 (0) | 2022.01.01 |
AWS RDS FreeStorageSpace가 낮을때 (0) | 2021.12.30 |