HTTP API 액세스 로그 사용자 정의 - Amazon API Gateway

HTTP API 액세스 로그 사용자 정의

다음 변수를 사용하여 HTTP API 액세스 로그를 사용자 지정할 수 있습니다. HTTP API의 액세스 로그에 대해 자세히 알아보려면 API Gateway에서 HTTP API 로깅 구성 단원을 참조하십시오.

파라미터 설명
$context.accountId

API 소유자의 AWS 계정 ID입니다.

$context.apiId

식별자 API Gateway가 API에 할당합니다.

$context.authorizer.claims.property

메서드 호출자가 성공적으로 인증된 후 JWT(JSON Web Token)에서 반환된 클레임의 속성(예: $context.authorizer.claims.username)입니다. 자세한 내용은 API Gateway에서 JWT 권한 부여자를 사용하여 HTTP API에 대한 액세스 제어 섹션을 참조하세요.

참고

$context.authorizer.claims를 호출하면 null이 반환됩니다.

$context.authorizer.error 권한 부여자로부터 반환된 오류 메시지입니다.
$context.authorizer.property

API Gateway Lambda 권한 부여자 함수에서 반환된 context 맵의 지정된 키-값 페어의 값입니다. 예를 들어, 권한 부여자는 다음 context 맵을 반환합니다.

"context" : { "key": "value", "numKey": 1, "boolKey": true }

$context.authorizer.key를 호출하면 "value" 문자열이 반환되고, $context.authorizer.numKey를 호출하면 1이 반환되고, $context.authorizer.boolKey를 호출하면 true가 반환됩니다.

$context.awsEndpointRequestId

x-amz-request-id 또는 x-amzn-requestId 헤더의 AWS 엔드포인트 요청 ID입니다.

$context.awsEndpointRequestId2

x-amz-id-2 헤더의 AWS 엔드포인트 요청 ID입니다.

$context.customDomain.basePathMatched

들어오는 요청이 일치하는 API 매핑의 경로입니다. 클라이언트가 사용자 지정 도메인 이름을 사용하여 API에 액세스할 때 적용할 수 있습니다. 예를 들어 클라이언트가 https://api.example.com/v1/orders/1234에 요청을 보내고 요청이 API 매핑을 경로 v1/orders와(과) 일치시키는 경우 값은 v1/orders입니다. 자세한 내용은 API 스테이지를 HTTP API에 대한 사용자 지정 도메인 이름에 매핑 단원을 참조하십시오.

$context.dataProcessed 처리된 데이터의 양(바이트)입니다.
$context.domainName

API를 호출하는 데 사용되는 정식 도메인 이름입니다. 이 이름은 수신되는 Host 헤더와 동일해야 합니다.

$context.domainPrefix

$context.domainName의 첫 번째 레이블입니다.

$context.error.message

API Gateway 오류 메시지가 포함된 문자열입니다.

$context.error.messageString $context.error.message의 따옴표 붙은 값, 즉 "$context.error.message"입니다.
$context.error.responseType

GatewayResponse의 한 유형입니다. 자세한 내용은 CloudWatch 지표로 WebSocket API 실행 모니터링오류 응답을 사용자 지정하도록 게이트웨이 응답 설정(을)를 참조하세요.

$context.extendedRequestId $context.requestId와 동일합니다.
$context.httpMethod

사용된 HTTP 메서드입니다. 유효한 값에는 DELETE, GET, HEAD, OPTIONS, PATCH, POSTPUT이 있습니다.

$context.identity.accountId

요청과 연결된 AWS 계정 ID입니다. IAM 권한 부여를 사용하는 라우팅에 대해 지원됩니다.

$context.identity.caller

요청에 서명한 호출자의 보안 주체 ID입니다. IAM 권한 부여를 사용하는 라우팅에 대해 지원됩니다.

$context.identity.cognitoAuthenticationProvider

요청을 작성한 직접 호출자가 사용한 모든 Amazon Cognito 인증 공급자의 쉼표로 구분된 목록입니다. Amazon Cognito 자격 증명으로 요청을 서명한 경우에만 사용할 수 있습니다.

예를 들어, Amazon Cognito 사용자 풀의 자격 증명의 경우 cognito-idp. region.amazonaws.com/user_pool_id,cognito-idp.region.amazonaws.com/user_pool_id:CognitoSignIn:token subject claim

사용 가능한 Amazon Cognito 인증 공급자에 대한 자세한 내용은 Amazon Cognito 개발자 안내서페더레이션 자격 증명 사용을 참조하세요.

$context.identity.cognitoAuthenticationType

요청을 작성한 호출자의 Amazon Cognito 인증 유형입니다. Amazon Cognito 자격 증명으로 요청을 서명한 경우에만 사용할 수 있습니다. 가능한 값에는 인증 자격 증명에 대한 authenticated 및 미인증 자격 증명에 대한 unauthenticated이(가) 포함됩니다.

$context.identity.cognitoIdentityId

요청을 작성한 호출자의 Amazon Cognito 자격 증명 ID입니다. Amazon Cognito 자격 증명으로 요청을 서명한 경우에만 사용할 수 있습니다.

$context.identity.cognitoIdentityPoolId

요청을 작성한 호출자의 Amazon Cognito 자격 증명 풀 ID입니다. Amazon Cognito 자격 증명으로 요청을 서명한 경우에만 사용할 수 있습니다.

$context.identity.principalOrgId

AWS 조직 ID입니다. IAM 권한 부여를 사용하는 라우팅에 대해 지원됩니다.

$context.identity.clientCert.clientCertPem

상호 TLS 인증 시 클라이언트가 제공한 PEM 인코딩된 클라이언트 인증서입니다. 클라이언트에서 상호 TLS가 활성화된 사용자 지정 도메인 이름을 사용하여 API에 액세스할 때 제공됩니다.

$context.identity.clientCert.subjectDN

클라이언트가 제공하는 인증서의 주체가 갖는 고유 이름입니다. 클라이언트에서 상호 TLS가 활성화된 사용자 지정 도메인 이름을 사용하여 API에 액세스할 때 제공됩니다.

$context.identity.clientCert.issuerDN

클라이언트가 제공하는 인증서의 발행자가 갖는 고유 이름입니다. 클라이언트에서 상호 TLS가 활성화된 사용자 지정 도메인 이름을 사용하여 API에 액세스할 때 제공됩니다.

$context.identity.clientCert.serialNumber

인증서의 일련 번호입니다. 클라이언트에서 상호 TLS가 활성화된 사용자 지정 도메인 이름을 사용하여 API에 액세스할 때 제공됩니다.

$context.identity.clientCert.validity.notBefore

인증서의 유효 기간이 시작되는 날짜입니다. 클라이언트에서 상호 TLS가 활성화된 사용자 지정 도메인 이름을 사용하여 API에 액세스할 때 제공됩니다.

$context.identity.clientCert.validity.notAfter

인증서의 유효 기간이 끝나는 날짜입니다. 클라이언트에서 상호 TLS가 활성화된 사용자 지정 도메인 이름을 사용하여 API에 액세스할 때 제공됩니다.

$context.identity.sourceIp

API Gateway 엔드포인트를 요청하는 즉시 TCP 연결의 소스 IP 주소입니다.

$context.identity.user

리소스 액세스에 대해 권한을 부여할 사용자의 보안 주체 ID입니다. IAM 권한 부여를 사용하는 라우팅에 대해 지원됩니다.

$context.identity.userAgent

API 호출자의 User-Agent 헤더입니다.

$context.identity.userArn

인증 후 식별된 실제 사용자의 ARN(Amazon Resource Name)입니다. IAM 권한 부여를 사용하는 라우팅에 대해 지원됩니다. 자세한 내용은 https://docs.aws.amazon.com/IAM/latest/UserGuide/id_users.html 단원을 참조하세요.

$context.integration.error 통합에서 반환된 오류 메시지입니다. $context.integrationErrorMessage와 동일합니다.
$context.integration.integrationStatus Lambda 프록시 통합의 경우 백엔드 Lambda 함수 코드가 아니라 AWS Lambda에서 반환된 상태 코드입니다.
$context.integration.latency 통합 지연 시간(ms)입니다. $context.integrationLatency와 동일합니다.
$context.integration.requestId AWS 엔드포인트의 요청 ID입니다. $context.awsEndpointRequestId와 동일합니다.
$context.integration.status 통합에서 반환된 상태 코드입니다. Lambda 프록시 통합의 경우 Lambda 함수 코드에서 반환된 상태 코드입니다.
$context.integrationErrorMessage

통합 오류 메시지가 포함된 문자열입니다.

$context.integrationLatency 통합 지연 시간(ms)입니다.
$context.integrationStatus Lambda 프록시 통합의 경우 이 파라미터는 백엔드 Lambda 함수가 아니라 AWS Lambda에서 반환된 상태 코드를 나타냅니다.
$context.path 요청 경로입니다. 예를 들어 /{stage}/root/child입니다.
$context.protocol 요청 프로토콜입니다(예: HTTP/1.1).
참고

API Gateway API는 HTTP/2 요청을 수락할 수 있지만 API Gateway는 HTTP/1.1을 사용하여 백엔드 통합에 요청을 보냅니다. 따라서 클라이언트가 HTTP/2를 사용하는 요청을 보내더라도 요청 프로토콜은 HTTP/1.1로 기록됩니다.

$context.requestId

API Gateway가 API 요청에 할당하는 ID입니다.

$context.requestTime CLF 형식 요청 시간(dd/MMM/yyyy:HH:mm:ss +-hhmm)입니다.
$context.requestTimeEpoch Epoch 형식 요청 시간입니다.
$context.responseLatency 응답 지연 시간(ms)입니다.
$context.responseLength 바이트로 된 응답 페이로드 길이입니다.
$context.routeKey

API 요청의 경로 키입니다(예: /pets).

$context.stage

API 요청의 개발 단계입니다(예: beta 또는 prod).

$context.status 메서드 응답 상태입니다.