Amazon S3 서버 액세스 로그 형식
서버 액세스 로깅은 Amazon S3 버킷에 수행된 요청에 대한 상세 레코드를 제공합니다. 서버 액세스 로그는 다음과 같은 목적으로 사용 가능합니다.
-
보안 및 액세스 감사 수행
-
고객층 조사
-
Amazon S3 청구서 이해
이 섹션에서는 Amazon S3 서버 액세스 로그 파일에 대한 형식과 기타 세부 정보를 설명합니다.
서버 액세스 로그 파일은 줄 바꿈으로 구분되는 로그 레코드의 시퀀스로 구성됩니다. 각 로그 레코드는 하나의 요청을 표시하며 공백으로 구분된 필드로 구성됩니다.
다음은 5개 로그 레코드로 구성된 로그 예제입니다.
79a59df900b949e55d96a1e698fbacedfd6e09d98eacf8f8d5218e7cd47ef2be amzn-s3-demo-bucket1 [06/Feb/2019:00:00:38 +0000] 192.0.2.3 79a59df900b949e55d96a1e698fbacedfd6e09d98eacf8f8d5218e7cd47ef2be 3E57427F3EXAMPLE REST.GET.VERSIONING - "GET /amzn-s3-demo-bucket1?versioning HTTP/1.1" 200 - 113 - 7 - "-" "S3Console/0.4" - s9lzHYrFp76ZVxRcpX9+5cjAnEH2ROuNkd2BHfIa6UkFVdtjf5mKR3/eTPFvsiP/XV/VLi31234= SigV4 ECDHE-RSA-AES128-GCM-SHA256 AuthHeader amzn-s3-demo-bucket1.s3.us-west-1.amazonaws.com TLSV1.2 arn:aws:s3:us-west-1:123456789012:accesspoint/example-AP Yes 79a59df900b949e55d96a1e698fbacedfd6e09d98eacf8f8d5218e7cd47ef2be amzn-s3-demo-bucket1 [06/Feb/2019:00:00:38 +0000] 192.0.2.3 79a59df900b949e55d96a1e698fbacedfd6e09d98eacf8f8d5218e7cd47ef2be 891CE47D2EXAMPLE REST.GET.LOGGING_STATUS - "GET /amzn-s3-demo-bucket1?logging HTTP/1.1" 200 - 242 - 11 - "-" "S3Console/0.4" - 9vKBE6vMhrNiWHZmb2L0mXOcqPGzQOI5XLnCtZNPxev+Hf+7tpT6sxDwDty4LHBUOZJG96N1234= SigV4 ECDHE-RSA-AES128-GCM-SHA256 AuthHeader amzn-s3-demo-bucket1.s3.us-west-1.amazonaws.com TLSV1.2 - - 79a59df900b949e55d96a1e698fbacedfd6e09d98eacf8f8d5218e7cd47ef2be amzn-s3-demo-bucket1 [06/Feb/2019:00:00:38 +0000] 192.0.2.3 79a59df900b949e55d96a1e698fbacedfd6e09d98eacf8f8d5218e7cd47ef2be A1206F460EXAMPLE REST.GET.BUCKETPOLICY - "GET /amzn-s3-demo-bucket1?policy HTTP/1.1" 404 NoSuchBucketPolicy 297 - 38 - "-" "S3Console/0.4" - BNaBsXZQQDbssi6xMBdBU2sLt+Yf5kZDmeBUP35sFoKa3sLLeMC78iwEIWxs99CRUrbS4n11234= SigV4 ECDHE-RSA-AES128-GCM-SHA256 AuthHeader amzn-s3-demo-bucket1.s3.us-west-1.amazonaws.com TLSV1.2 - Yes 79a59df900b949e55d96a1e698fbacedfd6e09d98eacf8f8d5218e7cd47ef2be amzn-s3-demo-bucket1 [06/Feb/2019:00:01:00 +0000] 192.0.2.3 79a59df900b949e55d96a1e698fbacedfd6e09d98eacf8f8d5218e7cd47ef2be 7B4A0FABBEXAMPLE REST.GET.VERSIONING - "GET /amzn-s3-demo-bucket1?versioning HTTP/1.1" 200 - 113 - 33 - "-" "S3Console/0.4" - Ke1bUcazaN1jWuUlPJaxF64cQVpUEhoZKEG/hmy/gijN/I1DeWqDfFvnpybfEseEME/u7ME1234= SigV4 ECDHE-RSA-AES128-GCM-SHA256 AuthHeader amzn-s3-demo-bucket1.s3.us-west-1.amazonaws.com TLSV1.2 - - 79a59df900b949e55d96a1e698fbacedfd6e09d98eacf8f8d5218e7cd47ef2be amzn-s3-demo-bucket1 [06/Feb/2019:00:01:57 +0000] 192.0.2.3 79a59df900b949e55d96a1e698fbacedfd6e09d98eacf8f8d5218e7cd47ef2be DD6CC733AEXAMPLE REST.PUT.OBJECT s3-dg.pdf "PUT /amzn-s3-demo-bucket1/s3-dg.pdf HTTP/1.1" 200 - - 4406583 41754 28 "-" "S3Console/0.4" - 10S62Zv81kBW7BB6SX4XJ48o6kpcl6LPwEoizZQQxJd5qDSCTLX0TgS37kYUBKQW3+bPdrg1234= SigV4 ECDHE-RSA-AES128-SHA AuthHeader amzn-s3-demo-bucket1.s3.us-west-1.amazonaws.com TLSV1.2 - Yes
참고
아무 필드나 -
로 설정하여 데이터를 알 수 없거나 사용할 수 없음 또는 해당 필드에 이 요청이 적용되지 않음을 표시할 수 있습니다.
로그 레코드 필드
다음 목록에서는 로그 레코드 필드에 대해 설명합니다.
- 버킷 소유자
-
원본 버킷의 정식 사용자 ID입니다. 정식 사용자 ID는 또 다른 형식의 AWS 계정 ID입니다. 정식 사용자 ID에 대한 자세한 내용은 AWS 일반 참조에서 AWS 계정 식별자를 참조하십시오. 계정의 정식 사용자 ID를 찾는 방법에 대한 자세한 내용은 AWS 계정에 대한 정식 사용자 ID 찾기를 참조하십시오.
입력 예
79a59df900b949e55d96a1e698fbacedfd6e09d98eacf8f8d5218e7cd47ef2be
- 버킷
-
요청이 처리된 버킷의 이름. 시스템이 잘못된 양식의 요청을 수신하여 버킷을 결정할 수 없을 경우 해당 요청이 어떤 서버 액세스 로그에도 표시되지 않습니다.
입력 예
- 시간
-
요청이 수신된 시간입니다. 이 날짜 및 시간은 협정 세계시(UTC)로 표시됩니다.
strftime()
용어를 사용하는 형식은[%d/%b/%Y:%H:%M:%S %z]
입니다.입력 예
[06/Feb/2019:00:00:38 +0000]
- 원격 IP
-
요청자의 명백한 IP 주소. 중간 프록시 및 방화벽이 요청 시스템의 실제 IP 주소를 가릴 수 있습니다.
입력 예
192.0.2.3
- 요청자
-
요청자의 정식 사용자 ID 또는 인증되지 않은 요청의
-
입니다. 요청자가 IAM 사용자인 경우 이 필드는 IAM 사용자가 속한 AWS 계정 루트 사용자와 함께 요청자의 IAM 사용자 이름을 반환합니다. 이 식별자는 액세스 제어 목적으로 사용되는 것과 동일합니다.입력 예
79a59df900b949e55d96a1e698fbacedfd6e09d98eacf8f8d5218e7cd47ef2be
요청자가 수임된 역할을 사용하는 경우 이 필드는 수임된 IAM 역할을 반환합니다.
입력 예
arn:aws:sts::123456789012:assumed-role/roleName/test-role
- 요청 ID
-
각 요청을 고유하게 식별하기 위해 Amazon S3에서 생성한 문자열입니다.
입력 예
3E57427F33A59F07
- 작업
-
여기에 나열된 작업은
SOAP.
,operation
REST.
,HTTP_method
.resource_type
WEBSITE.
또는HTTP_method
.resource_type
BATCH.DELETE.OBJECT
로 선언되거나 S3 수명 주기 및 로깅의 경우S3.action.resource_type
으로 선언됩니다.입력 예
REST.PUT.OBJECT
- 키
-
요청의 키(객체 이름) 부분입니다.
입력 예
/photos/2019/08/puppy.jpg
- Request-URI
-
HTTP 요청 메시지의
Request-URI
부분.입력 예
"GET /amzn-s3-demo-bucket1/photos/2019/08/puppy.jpg?x-foo=bar HTTP/1.1"
- HTTP 상태
-
응답의 숫자 HTTP 상태 코드.
입력 예
200
- 오류 코드
-
Amazon S3 오류 응답, 오류가 없을 경우
-
.입력 예
NoSuchBucket
- 보낸 바이트
-
HTTP 프로토콜 오버헤드를 제외한 보낸 응답 바이트 수. 영일 경우
-
.입력 예
2662992
- 객체 크기
-
해당 객체의 총 크기.
입력 예
3462992
- 총 시간
-
서버 관점에서 요청이 플라이트 상태를 유지한 밀리초 단위 시간. 이 값은 요청이 수신된 시간부터 응답의 마지막 바이트가 전송된 시간까지 측정됩니다. 클라이언트 관점의 측정값은 네트워크 지연 시간으로 인해 더 길 수 있습니다.
입력 예
70
- 반환 시간
-
Amazon S3이 요청을 처리하는 데 소비한 시간(밀리초). 이 값은 요청의 마지막 바이트가 수신된 시간부터 응답의 첫 바이트가 전송된 시간까지 측정됩니다.
입력 예
10
- Referer
-
HTTP
Referer
헤더의 값(있는 경우). HTTP 사용자 에이전트(예: 브라우저)는 일반적으로 이 헤더를 요청 시 연결 또는 포함 페이지의 URL로 설정합니다.입력 예
"http://www.example.com/webservices"
- User-Agent
-
HTTP
User-Agent
헤더의 값.입력 예
"curl/7.15.1"
- 버전 ID
-
요청의 버전 ID. 작업이
versionId
파라미터를 사용하지 않는 경우-
.입력 예
3HL4kqtJvjVBH40Nrjfkd
- 호스트 Id
-
x-amz-id-2
또는 Amazon S3 확장 요청 ID.입력 예
s9lzHYrFp76ZVxRcpX9+5cjAnEH2ROuNkd2BHfIa6UkFVdtjf5mKR3/eTPFvsiP/XV/VLi31234=
- 서명 버전
-
요청을 인증하는 데 사용된 서명 버전,
SigV2
또는SigV4
또는 인증되지 않은 요청에 대한-
.입력 예
SigV2
- 암호 그룹
-
HTTPS 요청에 대해 협상된 Secure Sockets Layer(SSL) 암호 또는 HTTP에 대해 협상된
-
암호.입력 예
ECDHE-RSA-AES128-GCM-SHA256
- 인증 유형
-
사용된 요청 인증 유형: 인증 헤더의 경우
AuthHeader
, 쿼리 문자열(사전 서명된 URL)의 경우QueryString
, 미인증 요청의 경우-
.입력 예
AuthHeader
- 호스트 헤더
-
Amazon S3에 연결하는 데 사용된 엔드포인트
입력 예
s3.us-west-2.amazonaws.com
일부 초기 리전은 레거시 엔드포인트를 지원합니다. 서버 액세스 로그 또는 AWS CloudTrail 로그에 이러한 엔드포인트가 표시될 수 있습니다. 자세한 내용은 레거시 엔드포인트 단원을 참조하십시오. Amazon S3 리전 및 엔드포인트의 전체 목록은 Amazon Web Services 일반 참조에서 Amazon S3 엔드포인트 및 할당량을 참조하십시오.
- TLS 버전
-
클라이언트가 협상한 TLS(전송 계층 보안) 버전. 값은
TLSv1.1
,TLSv1.2
,TLSv1.3
또는-
(TLS가 사용되지 않은 경우) 중 하나입니다.입력 예
TLSv1.2
- 액세스 포인트 ARN
-
요청 액세스 포인트의 Amazon 리소스 이름(ARN) 입니다. 액세스 포인트 ARN의 형식이 잘못되었거나 이를 사용하지 않으면 필드에
-
가 포함됩니다. 액세스 포인트에 대한 자세한 내용은 액세스 포인트 사용 섹션을 참조하십시오. ARN에 대한 자세한 내용은 AWS 참조 안내서의 Amazon 리소스 이름(ARN)을 참조하십시오.입력 예
arn:aws:s3:
us-east-1
:123456789012
:accesspoint/example-AP
- aclRequired
-
승인을 위해 요청에 액세스 제어 목록(ACL)이 필요한지 여부를 나타내는 문자열입니다. 승인을 위해 요청에 ACL이 필요한 경우, 문자열은
Yes
입니다. ACL이 필요하지 않은 경우 문자열은-
입니다. ACL에 대한 자세한 내용은 ACL(액세스 제어 목록) 개요 단원을 참조하십시오.aclRequired
필드를 사용하여 ACL을 비활성화하는 방법에 대한 자세한 내용은 객체 소유권 제어 및 버킷에 대해 ACL 사용 중지 페이지를 참조하십시오.입력 예
Yes
복사 작업을 위한 추가 로깅
복사 작업에는 GET
및 PUT
이 관련됩니다. 그러므로 복사 작업을 수행할 때 2개의 레코드가 로그됩니다. 작업의 PUT
부분과 관련된 필드는 이전 표에 설명되어 있습니다. 아래 목록에서는 복사 작업의 GET
부분과 관련된 레코드의 필드에 대해 설명합니다.
- 버킷 소유자
-
복사 중인 객체가 저장되어 있는 버킷의 정식 사용자 ID입니다. 정식 사용자 ID는 또 다른 형식의 AWS 계정 ID입니다. 정식 사용자 ID에 대한 자세한 내용은 AWS 일반 참조에서 AWS 계정 식별자를 참조하십시오. 계정의 정식 사용자 ID를 찾는 방법에 대한 자세한 내용은 AWS 계정에 대한 정식 사용자 ID 찾기를 참조하십시오.
입력 예
79a59df900b949e55d96a1e698fbacedfd6e09d98eacf8f8d5218e7cd47ef2be
- 버킷
-
복사 중인 객체가 저장되어 있는 버킷의 이름.
입력 예
- 시간
-
요청이 수신된 시간입니다. 이 날짜 및 시간은 협정 세계시(UTC)로 표시됩니다.
strftime()
용어를 사용하는 형식은[%d/%B/%Y:%H:%M:%S %z]
입니다.입력 예
[06/Feb/2019:00:00:38 +0000]
- 원격 IP
-
요청자의 명백한 IP 주소. 중간 프록시 및 방화벽이 요청 시스템의 실제 IP 주소를 가릴 수 있습니다.
입력 예
192.0.2.3
- 요청자
-
요청자의 정식 사용자 ID 또는 인증되지 않은 요청의
-
입니다. 요청자가 IAM 사용자인 경우 이 필드는 IAM 사용자가 속한 AWS 계정 루트 사용자와 함께 요청자의 IAM 사용자 이름을 반환합니다. 이 식별자는 액세스 제어 목적으로 사용되는 것과 동일합니다.입력 예
79a59df900b949e55d96a1e698fbacedfd6e09d98eacf8f8d5218e7cd47ef2be
요청자가 수임된 역할을 사용하는 경우 이 필드는 수임된 IAM 역할을 반환합니다.
입력 예
arn:aws:sts::123456789012:assumed-role/roleName/test-role
- 요청 ID
-
각 요청을 고유하게 식별하기 위해 Amazon S3에서 생성한 문자열입니다.
입력 예
3E57427F33A59F07
- 작업
-
여기에 나열된 작업은
SOAP.
,operation
REST.
,HTTP_method
.resource_type
WEBSITE.
또는HTTP_method
.resource_type
BATCH.DELETE.OBJECT
로 선언됩니다.입력 예
REST.COPY.OBJECT_GET
- 키
-
복사 중인 객체의 키(객체 이름). 작업에 키 파라미터가 없을 경우
-
.입력 예
/photos/2019/08/puppy.jpg
- Request-URI
-
HTTP 요청 메시지의
Request-URI
부분.입력 예
"GET /amzn-s3-demo-bucket1/photos/2019/08/puppy.jpg?x-foo=bar"
- HTTP 상태
-
복사 작업
GET
부분의 숫자 HTTP 상태 코드.입력 예
200
- 오류 코드
-
복사 작업
GET
부분의 Amazon S3 오류 응답, 오류가 없을 경우-
.입력 예
NoSuchBucket
- 보낸 바이트
-
HTTP 프로토콜 오버헤드를 제외한 보낸 응답 바이트 수. 영일 경우
-
.입력 예
2662992
- 객체 크기
-
해당 객체의 총 크기.
입력 예
3462992
- 총 시간
-
서버 관점에서 요청이 플라이트 상태를 유지한 밀리초 단위 시간. 이 값은 요청이 수신된 시간부터 응답의 마지막 바이트가 전송된 시간까지 측정됩니다. 클라이언트 관점의 측정값은 네트워크 지연 시간으로 인해 더 길 수 있습니다.
입력 예
70
- 반환 시간
-
Amazon S3이 요청을 처리하는 데 소비한 시간(밀리초). 이 값은 요청의 마지막 바이트가 수신된 시간부터 응답의 첫 바이트가 전송된 시간까지 측정됩니다.
입력 예
10
- Referer
-
HTTP
Referer
헤더의 값(있는 경우). HTTP 사용자 에이전트(예: 브라우저)는 일반적으로 이 헤더를 요청 시 연결 또는 포함 페이지의 URL로 설정합니다.입력 예
"http://www.example.com/webservices"
- User-Agent
-
HTTP
User-Agent
헤더의 값.입력 예
"curl/7.15.1"
- 버전 ID
-
복사 중인 객체의 버전 ID.
x-amz-copy-source
헤더가 복사 소스의 일부로versionId
파라미터를 지정하지 않은 경우-
.입력 예
3HL4kqtJvjVBH40Nrjfkd
- 호스트 Id
-
x-amz-id-2
또는 Amazon S3 확장 요청 ID.입력 예
s9lzHYrFp76ZVxRcpX9+5cjAnEH2ROuNkd2BHfIa6UkFVdtjf5mKR3/eTPFvsiP/XV/VLi31234=
- 서명 버전
-
요청을 인증하는 데 사용된 서명 버전,
SigV2
또는SigV4
. 미인증 요청의 경우-
.입력 예
SigV4
- 암호 그룹
-
HTTPS 요청에 대해 협상된 Secure Sockets Layer(SSL) 암호 또는 HTTP에 대해 협상된
-
암호.입력 예
ECDHE-RSA-AES128-GCM-SHA256
- 인증 유형
-
사용된 요청 인증 유형: 인증 헤더의 경우
AuthHeader
, 쿼리 문자열(사전 서명된 URL)의 경우QueryString
, 미인증 요청의 경우-
.입력 예
AuthHeader
- 호스트 헤더
-
Amazon S3에 연결하는 데 사용된 엔드포인트.
입력 예
s3.us-west-2.amazonaws.com
일부 초기 리전은 레거시 엔드포인트를 지원합니다. 서버 액세스 로그 또는 AWS CloudTrail 로그에 이러한 엔드포인트가 표시될 수 있습니다. 자세한 내용은 레거시 엔드포인트 단원을 참조하십시오. Amazon S3 리전 및 엔드포인트의 전체 목록은 Amazon Web Services 일반 참조에서 Amazon S3 엔드포인트 및 할당량을 참조하십시오.
- TLS 버전
-
클라이언트가 협상한 TLS(전송 계층 보안) 버전. 값은
TLSv1.1
,TLSv1.2
,TLSv1.3
또는-
(TLS가 사용되지 않은 경우) 중 하나입니다.입력 예
TLSv1.2
- 액세스 포인트 ARN
-
요청 액세스 포인트의 Amazon 리소스 이름(ARN) 입니다. 액세스 포인트 ARN의 형식이 잘못되었거나 이를 사용하지 않으면 필드에
-
가 포함됩니다. 액세스 포인트에 대한 자세한 내용은 액세스 포인트 사용 섹션을 참조하십시오. ARN에 대한 자세한 내용은 AWS 참조 안내서의 Amazon 리소스 이름(ARN)을 참조하십시오.입력 예
arn:aws:s3:
us-east-1
:123456789012
:accesspoint/example-AP
- aclRequired
-
승인을 위해 요청에 액세스 제어 목록(ACL)이 필요한지 여부를 나타내는 문자열입니다. 승인을 위해 요청에 ACL이 필요한 경우, 문자열은
Yes
입니다. ACL이 필요하지 않은 경우 문자열은-
입니다. ACL에 대한 자세한 내용은 ACL(액세스 제어 목록) 개요 단원을 참조하십시오.aclRequired
필드를 사용하여 ACL을 비활성화하는 방법에 대한 자세한 내용은 객체 소유권 제어 및 버킷에 대해 ACL 사용 중지 페이지를 참조하십시오.입력 예
Yes
사용자 지정 액세스 로그 정보
요청에 대한 액세스 로그 레코드에 저장할 사용자 지정 정보를 포함할 수 있습니다. 이렇게 하려면 요청의 URL에 사용자 지정 쿼리 문자열 파라미터를 추가합니다. Amazon S3은 x-
로 시작하는 쿼리 문자열 파라미터를 무시하지만 해당 파라미터를 요청에 대한 액세스 로그 레코드에 로그 레코드 Request-URI
필드의 일부로 포함시킵니다.
예를 들어 GET
에 대한 "s3.amazonaws.com/amzn-s3-demo-bucket1/photos/2019/08/puppy.jpg?x-user=johndoe"
요청은 관련 로그 레코드의 "s3.amazonaws.com/amzn-s3-demo-bucket1/photos/2019/08/puppy.jpg"
필드에 "x-user=johndoe"
문자열이 포함된다는 점을 제외하고 Request-URI
에 대한 요청과 동일하게 작동합니다. 이 기능은 REST 인터페이스에서만 사용할 수 있습니다.
확장 가능한 서버 액세스 로그 형식에 대한 프로그래밍 고려 사항
때때로 각 줄의 끝에 새로운 필드를 추가하여 액세스 로그 레코드 형식을 확장할 수 있습니다. 따라서, 서버 액세스 로그를 파싱하여 이해되지 못할 수 있는 후행 필드를 처리하는 코드를 작성해야 합니다.