Amazon S3 서버 액세스 로그 형식 - Amazon Simple Storage Service

Amazon S3 서버 액세스 로그 형식

서버 액세스 로깅은 Amazon S3 버킷에 수행된 요청에 대한 상세 레코드를 제공합니다. 서버 액세스 로그는 다음과 같은 목적으로 사용 가능합니다.

  • 보안 및 액세스 감사 수행

  • 고객층 조사

  • Amazon S3 청구서 이해

이 섹션에서는 Amazon S3 서버 액세스 로그 파일에 대한 형식과 기타 세부 정보를 설명합니다.

서버 액세스 로그 파일은 줄 바꿈으로 구분되는 로그 레코드의 시퀀스로 구성됩니다. 각 로그 레코드는 하나의 요청을 표시하며 공백으로 구분된 필드로 구성됩니다.

다음은 5개 로그 레코드로 구성된 로그 예제입니다.

79a59df900b949e55d96a1e698fbacedfd6e09d98eacf8f8d5218e7cd47ef2be DOC-EXAMPLE-BUCKET1 [06/Feb/2019:00:00:38 +0000] 192.0.2.3 79a59df900b949e55d96a1e698fbacedfd6e09d98eacf8f8d5218e7cd47ef2be 3E57427F3EXAMPLE REST.GET.VERSIONING - "GET /DOC-EXAMPLE-BUCKET1?versioning HTTP/1.1" 200 - 113 - 7 - "-" "S3Console/0.4" - s9lzHYrFp76ZVxRcpX9+5cjAnEH2ROuNkd2BHfIa6UkFVdtjf5mKR3/eTPFvsiP/XV/VLi31234= SigV4 ECDHE-RSA-AES128-GCM-SHA256 AuthHeader DOC-EXAMPLE-BUCKET1.s3.us-west-1.amazonaws.com TLSV1.2 arn:aws:s3:us-west-1:123456789012:accesspoint/example-AP Yes 79a59df900b949e55d96a1e698fbacedfd6e09d98eacf8f8d5218e7cd47ef2be DOC-EXAMPLE-BUCKET1 [06/Feb/2019:00:00:38 +0000] 192.0.2.3 79a59df900b949e55d96a1e698fbacedfd6e09d98eacf8f8d5218e7cd47ef2be 891CE47D2EXAMPLE REST.GET.LOGGING_STATUS - "GET /DOC-EXAMPLE-BUCKET1?logging HTTP/1.1" 200 - 242 - 11 - "-" "S3Console/0.4" - 9vKBE6vMhrNiWHZmb2L0mXOcqPGzQOI5XLnCtZNPxev+Hf+7tpT6sxDwDty4LHBUOZJG96N1234= SigV4 ECDHE-RSA-AES128-GCM-SHA256 AuthHeader DOC-EXAMPLE-BUCKET1.s3.us-west-1.amazonaws.com TLSV1.2 - - 79a59df900b949e55d96a1e698fbacedfd6e09d98eacf8f8d5218e7cd47ef2be DOC-EXAMPLE-BUCKET1 [06/Feb/2019:00:00:38 +0000] 192.0.2.3 79a59df900b949e55d96a1e698fbacedfd6e09d98eacf8f8d5218e7cd47ef2be A1206F460EXAMPLE REST.GET.BUCKETPOLICY - "GET /DOC-EXAMPLE-BUCKET1?policy HTTP/1.1" 404 NoSuchBucketPolicy 297 - 38 - "-" "S3Console/0.4" - BNaBsXZQQDbssi6xMBdBU2sLt+Yf5kZDmeBUP35sFoKa3sLLeMC78iwEIWxs99CRUrbS4n11234= SigV4 ECDHE-RSA-AES128-GCM-SHA256 AuthHeader DOC-EXAMPLE-BUCKET1.s3.us-west-1.amazonaws.com TLSV1.2 - Yes 79a59df900b949e55d96a1e698fbacedfd6e09d98eacf8f8d5218e7cd47ef2be DOC-EXAMPLE-BUCKET1 [06/Feb/2019:00:01:00 +0000] 192.0.2.3 79a59df900b949e55d96a1e698fbacedfd6e09d98eacf8f8d5218e7cd47ef2be 7B4A0FABBEXAMPLE REST.GET.VERSIONING - "GET /DOC-EXAMPLE-BUCKET1?versioning HTTP/1.1" 200 - 113 - 33 - "-" "S3Console/0.4" - Ke1bUcazaN1jWuUlPJaxF64cQVpUEhoZKEG/hmy/gijN/I1DeWqDfFvnpybfEseEME/u7ME1234= SigV4 ECDHE-RSA-AES128-GCM-SHA256 AuthHeader DOC-EXAMPLE-BUCKET1.s3.us-west-1.amazonaws.com TLSV1.2 - - 79a59df900b949e55d96a1e698fbacedfd6e09d98eacf8f8d5218e7cd47ef2be DOC-EXAMPLE-BUCKET1 [06/Feb/2019:00:01:57 +0000] 192.0.2.3 79a59df900b949e55d96a1e698fbacedfd6e09d98eacf8f8d5218e7cd47ef2be DD6CC733AEXAMPLE REST.PUT.OBJECT s3-dg.pdf "PUT /DOC-EXAMPLE-BUCKET1/s3-dg.pdf HTTP/1.1" 200 - - 4406583 41754 28 "-" "S3Console/0.4" - 10S62Zv81kBW7BB6SX4XJ48o6kpcl6LPwEoizZQQxJd5qDSCTLX0TgS37kYUBKQW3+bPdrg1234= SigV4 ECDHE-RSA-AES128-SHA AuthHeader DOC-EXAMPLE-BUCKET1.s3.us-west-1.amazonaws.com TLSV1.2 - Yes
참고

아무 필드나 -로 설정하여 데이터를 알 수 없거나 사용할 수 없음 또는 해당 필드에 이 요청이 적용되지 않음을 표시할 수 있습니다.

로그 레코드 필드

다음 목록에서는 로그 레코드 필드에 대해 설명합니다.

버킷 소유자

원본 버킷의 정식 사용자 ID입니다. 정식 사용자 ID는 또 다른 형식의 AWS 계정 ID입니다. 정식 사용자 ID에 대한 자세한 내용은 AWS 일반 참조에서 AWS 계정 식별자를 참조하십시오. 계정의 정식 사용자 ID를 찾는 방법에 대한 자세한 내용은 AWS 계정에 대한 정식 사용자 ID 찾기를 참조하십시오.

입력 예

79a59df900b949e55d96a1e698fbacedfd6e09d98eacf8f8d5218e7cd47ef2be
버킷

요청이 처리된 버킷의 이름. 시스템이 잘못된 양식의 요청을 수신하여 버킷을 결정할 수 없을 경우 해당 요청이 어떤 서버 액세스 로그에도 표시되지 않습니다.

입력 예

DOC-EXAMPLE-BUCKET1
시간

요청이 수신된 시간입니다. 이 날짜 및 시간은 협정 세계시(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
요청 ID

각 요청을 고유하게 식별하기 위해 Amazon S3에서 생성한 문자열입니다.

입력 예

3E57427F33A59F07
작업

여기에 나열된 작업은 SOAP.operation, REST.HTTP_method.resource_type, WEBSITE.HTTP_method.resource_type 또는 BATCH.DELETE.OBJECT로 선언되거나 수명 주기 및 로깅의 경우 S3.action.resource_type으로 선언됩니다.

입력 예

REST.PUT.OBJECT

요청의 키(객체 이름) 부분입니다.

입력 예

/photos/2019/08/puppy.jpg
Request-URI

HTTP 요청 메시지의 Request-URI 부분.

입력 예

"GET /DOC-EXAMPLE-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

복사 작업을 위한 추가 로깅

복사 작업에는 GETPUT이 관련됩니다. 그러므로 복사 작업을 수행할 때 2개의 레코드가 로그됩니다. 작업의 PUT 부분과 관련된 필드는 이전 표에 설명되어 있습니다. 아래 목록에서는 복사 작업의 GET 부분과 관련된 레코드의 필드에 대해 설명합니다.

버킷 소유자

복사 중인 객체가 저장되어 있는 버킷의 정식 사용자 ID입니다. 정식 사용자 ID는 또 다른 형식의 AWS 계정 ID입니다. 정식 사용자 ID에 대한 자세한 내용은 AWS 일반 참조에서 AWS 계정 식별자를 참조하십시오. 계정의 정식 사용자 ID를 찾는 방법에 대한 자세한 내용은 AWS 계정에 대한 정식 사용자 ID 찾기를 참조하십시오.

입력 예

79a59df900b949e55d96a1e698fbacedfd6e09d98eacf8f8d5218e7cd47ef2be
버킷

복사 중인 객체가 저장되어 있는 버킷의 이름.

입력 예

DOC-EXAMPLE-BUCKET1
시간

요청이 수신된 시간입니다. 이 날짜 및 시간은 협정 세계시(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
요청 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 /DOC-EXAMPLE-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/DOC-EXAMPLE-BUCKET1/photos/2019/08/puppy.jpg?x-user=johndoe" 요청은 관련 로그 레코드의 "s3.amazonaws.com/DOC-EXAMPLE-BUCKET1/photos/2019/08/puppy.jpg" 필드에 "x-user=johndoe" 문자열이 포함된다는 점을 제외하고 Request-URI에 대한 요청과 동일하게 작동합니다. 이 기능은 REST 인터페이스에서만 사용할 수 있습니다.

확장 가능한 서버 액세스 로그 형식에 대한 프로그래밍 고려 사항

때때로 각 줄의 끝에 새로운 필드를 추가하여 액세스 로그 레코드 형식을 확장할 수 있습니다. 따라서, 서버 액세스 로그를 파싱하여 이해되지 못할 수 있는 후행 필드를 처리하는 코드를 작성해야 합니다.