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

Amazon S3 서버 액세스 로그 형식

서버 액세스 로깅은 Amazon S3 버킷에 수행된 요청에 대한 상세 레코드를 제공합니다. 보안 및 액세스 감사에 서버 액세스 로그를 사용하거나, 고객 기반에 대해 알아보거나, Amazon S3 결제 내역을 이해할 수 있습니다. 이 섹션에서는 Amazon S3 서버 액세스 로그 파일에 대한 형식과 기타 세부 정보를 설명합니다.

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

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

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

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

로그 레코드 필드

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

액세스 포인트 ARN(Amazon 리소스 이름)

요청 액세스 포인트의 Amazon 리소스 이름(ARN) 입니다. 액세스 포인트 ARN의 형식이 잘못되었거나 이를 사용하지 않으면 필드에 '-'가 포함됩니다. 액세스 포인트에 대한 자세한 내용은 액세스 포인트 사용 단원을 참조하세요. ARN에 대한 자세한 내용은 AWS 참조 안내서Amazon 리소스 이름(ARN) 항목을 참조하세요.

입력 예

arn:aws:s3:us-east-1:123456789012:accesspoint/example-AP
버킷 소유자

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

입력 예

79a59df900b949e55d96a1e698fbacedfd6e09d98eacf8f8d5218e7cd47ef2be
버킷

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

입력 예

awsexamplebucket1
시간

요청이 수신된 시간입니다. 이 날짜 및 시간은 협정 세계시(UTC)로 표시됩니다. strftime() 용어를 사용하는 형식은 [%d/%b/%Y:%H:%M:%S %z]입니다.

입력 예

[06/Feb/2019:00:00:38 +0000]
원격 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

요청의 "키" 부분. URL로 인코딩되거나 작업에 키 파라미터가 없을 경우 "-".

입력 예

/photos/2019/08/puppy.jpg
요청-URI

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

입력 예

"GET /awsexamplebucket1/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 Referrer 헤더의 값(있는 경우). HTTP 사용자 에이전트(예: 브라우저)는 일반적으로 이 헤더를 요청 시 연결 또는 포함 페이지의 URL로 설정합니다.

입력 예

"http://www.amazon.com/webservices"
사용자 에이전트

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, TLSv1.1, TLSv1.2 또는 -(TLS가 사용되지 않은 경우) 중 하나입니다.

입력 예

TLSv1.2

복사 작업을 위한 추가 로깅

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

버킷 소유자

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

입력 예

79a59df900b949e55d96a1e698fbacedfd6e09d98eacf8f8d5218e7cd47ef2be
버킷

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

입력 예

awsexamplebucket1
시간

요청이 수신된 시간입니다. 이러한 날짜 및 시간은 협정 세계시(UTC)로 표시됩니다. strftime() 용어를 사용하는 형식은 [%d/%B/%Y:%H:%M:%S %z]입니다.

입력 예

[06/Feb/2019:00:00:38 +0000]
원격 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
요청-URI

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

입력 예

"GET /awsexamplebucket1/photos/2019/08/puppy.jpg?x-foo=bar"
HTTP 상태

복사 작업 GET 부분의 숫자 HTTP 상태 코드.

입력 예

200
오류 코드

복사 작업 오류 코드 부분의 Amazon S3 GET 또는 오류가 없을 경우 '-'

입력 예

NoSuchBucket
보낸 바이트

HTTP 프로토콜 오버헤드를 제외한 보낸 응답 바이트 수, 영일 경우 "-".

입력 예

2662992
객체 크기

해당 객체의 총 크기.

입력 예

3462992
총 시간

서버 관점에서 요청이 플라이트 상태를 유지한 시간(밀리초). 이 값은 요청이 수신된 시간부터 응답의 마지막 바이트가 전송된 시간까지 측정됩니다. 클라이언트 관점의 측정값은 네트워크 지연 시간으로 인해 더 길 수 있습니다.

입력 예

70
반환 시간

Amazon S3이 요청을 처리하는 데 소비한 시간(밀리초). 이 값은 요청의 마지막 바이트가 수신된 시간부터 응답의 첫 바이트가 전송된 시간까지 측정됩니다.

입력 예

10
Referer

HTTP Referrer 헤더의 값(있는 경우). HTTP 사용자 에이전트(예: 브라우저)는 일반적으로 이 헤더를 요청 시 연결 또는 포함 페이지의 URL로 설정합니다.

입력 예

"http://www.amazon.com/webservices"
사용자 에이전트

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 또는 인증되지 않은 요청에 대한 -.

입력 예

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, TLSv1.1, TLSv1.2 또는 -(TLS가 사용되지 않은 경우) 중 하나입니다.

입력 예

TLSv1.2

사용자 지정 액세스 로그 정보

요청에 대한 액세스 로그 레코드에 저장할 사용자 지정 정보를 포함할 수 있습니다. 이렇게 하려면 요청의 URL에 사용자 지정 쿼리 문자열 파라미터를 추가합니다. Amazon S3은 'x-'로 시작하는 쿼리 문자열 파라미터를 무시하지만 해당 파라미터를 요청에 대한 액세스 로그 레코드에 로그 레코드 Request-URI 필드의 일부로 포함시킵니다.

예를 들어 GET에 대한 "s3.amazonaws.com/awsexamplebucket1/photos/2019/08/puppy.jpg?x-user=johndoe" 요청은 관련 로그 레코드의 "s3.amazonaws.com/awsexamplebucket1/photos/2019/08/puppy.jpg" 필드에 "x-user=johndoe" 문자열이 포함된다는 점을 제외하고 Request-URI에 대한 요청과 동일하게 작동합니다. 이 기능은 REST 인터페이스에서만 사용할 수 있습니다.

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

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