View a markdown version of this page

REST API 실행 로그에 대한 로그 전송 생성 - Amazon API Gateway

REST API 실행 로그에 대한 로그 전송 생성

실행 로그를 자체 CloudWatch Logs 로그 그룹, Amazon S3 버킷 또는 Firehose 스트림으로 라우팅할 수 있습니다. 이렇게 하려면 Amazon CloudWatch Logs 전송을 생성합니다. 여기에는 전송 소스 생성, 전송 대상 생성, 전송과 연결의 세 단계가 포함됩니다.

사전 조건

로그 전송을 생성하기 전에 다음이 있는지 확인합니다.

  • REST API 단계에서 실행 로깅이 활성화되어 있어야 합니다. loggingLevel을 ERROR 또는 INFO로 설정합니다. 로깅이 활성화되어 있지 않으면 전송 소스 생성이 실패합니다.

  • 대상 리소스: 소유한 CloudWatch Logs 로그 그룹, Amazon S3 버킷 또는 Firehose 스트림입니다.

  • Amazon CloudWatch Logs 전송 API 직접 호출 권한. 자세한 내용은 Amazon CloudWatch Logs 사용 설명서의 AWS 서비스에서 로깅 활성화를 참조하세요.

Amazon CloudWatch Logs 전송을 위한 API Gateway별 값

API Gateway 실행 로그에 대한 전송을 생성할 때 다음 값을 사용합니다.

리소스 ARN

arn:aws:apigateway:{region}:{account-id}:/restapis/{rest-api-id}/stages/{stage-name}

로그 유형

EXECUTION_LOGS

로그 전송 생성(AWS CLI)

다음 예제에서는 REST API에서 사용자가 소유한 CloudWatch Logs 로그 그룹으로 실행 로그를 전송하는 전송을 생성합니다.

  1. 전송 소스 생성

    REST API를 전송 소스로 등록합니다.

    aws logs put-delivery-source \ --name my-apigw-source \ --log-type EXECUTION_LOGS \ --resource-arn arn:aws:apigateway:{region}:{account-id}:/restapis/{rest-api-id}/stages/{stage-name}
  2. 전송 대상 생성

    로그 그룹을 전송 대상으로 등록합니다.

    aws logs put-delivery-destination \ --name my-log-destination \ --delivery-destination-configuration "destinationResourceArn=arn:aws:logs:{region}:{account-id}:log-group:{log-group-name}"
  3. 전송 생성

    소스를 대상에 연결합니다.

    aws logs create-delivery \ --delivery-source-name my-apigw-source \ --delivery-destination-arn arn:aws:logs:{region}:{account-id}:delivery-destination:my-log-destination

Amazon S3 또는 Firehose로 로그를 보내려면 put-delivery-destination 명령에서 적절한 리소스 ARN을 지정합니다. 전체 Amazon CloudWatch Logs 전송 워크플로에 대한 자세한 내용은 Amazon CloudWatch Logs 사용 설명서의 AWS 서비스에서 로깅 활성화를 참조하세요.

여러 대상으로 로그를 전송하려면 대상이 다른 동일한 전송 소스를 사용하여 추가 전송을 생성합니다.

레코드 필드

Amazon CloudWatch Logs 전송을 사용하면 실행 로그에 대상별로 사용자 지정할 수 있는 구조화된 필드가 포함됩니다. 다음 필드를 사용할 수 있습니다.

  • resource_arn – API 스테이지의 ARN

  • event_timestamp – 로그 이벤트의 시간

  • api_id – REST API 식별자

  • stage – 스테이지 이름

  • resource_path - 요청의 리소스 경로

  • http_method – HTTP 메서드

  • payload – 실행 로그 콘텐츠(표준 실행 로그와 동일)

create-delivery의 --record-fields 파라미터와 put-delivery-destination의 --output-format 파라미터를 사용하여 포함할 필드와 각 대상의 출력 형식을 선택할 수 있습니다.

사용 가능한 출력 형식은 대상에 따라 다릅니다.

  • CloudWatch Logs – json, 일반

  • Amazon S3 – json, 일반, w3c, parquet

  • Firehose – json, 일반

표준 실행 로그 출력 일치

표준 실행 로깅과 일치하는 전송 출력(페이로드만 해당, 추가 필드 없음)을 원하는 경우 --output-format "plain"을 put-delivery-destination에, --record-fields "payload" --field-delimiter ""를 create-delivery에 추가합니다.

로그 전송 생성(CloudFormation)

CloudFormation 템플릿의 스테이지 ARN을 어셈블링할 때는 다음 패턴을 사용합니다.

DeliverySource: Type: AWS::Logs::DeliverySource Properties: Name: my-apigw-source LogType: EXECUTION_LOGS ResourceArn: !Sub "arn:${AWS::Partition}:apigateway:${AWS::Region}:${AWS::AccountId}:/restapis/${MyApi}/stages/${MyStageName}"

로그 전송 생성(API Gateway 콘솔)

스테이지 세부 정보 페이지의 로그 및 추적 섹션에서 로그 전송을 생성할 수 있습니다.

  1. https://console.aws.amazon.com/apigateway에서 API Gateway 콘솔에 로그인합니다.

  2. REST API를 선택한 다음 스테이지를 선택합니다.

  3. 스테이지를 선택합니다.

  4. 로그 및 추적 섹션의 로그 전송 대상에서 대상 추가를 선택합니다.

  5. 대상 유형(CloudWatch Logs, Amazon S3 또는 Firehose)을 선택하고 대상 리소스를 지정합니다.

  6. 저장을 선택합니다.

중요

전송 대상을 추가하려면 먼저 스테이지에서 실행 로깅을 활성화해야 합니다. 로깅이 꺼짐으로 설정된 경우 전송 구성은 로그를 생성하지 않습니다.

참고

교차 계정 전송 대상을 구성하려면 AWS CLI를 사용합니다. 소스 계정에서 전송을 생성하기 전에 대상 계정에서 전송 대상 정책을 생성해야 합니다. 자세한 내용은 Amazon CloudWatch Logs 사용 설명서의 교차 계정 전송 예제를 참조하세요.