Cloud Logging으로 2차 트리거
많은 Google Cloud Platform 이벤트가 Cloud 감사 로그에 로깅됩니다. 이러한 로그를 필터링하고 싱크를 사용하여 Pub/Sub 주제로 전달할 수 있습니다. 그런 다음 이러한 Pub/Sub 주제가 Cloud Functions를 트리거하는 알림을 전송할 수 있습니다. 또한 감사 로그를 생성하는 모든 Google Cloud Platform 서비스에서 커스텀 이벤트를 만들 수도 있습니다.
구성
아래 샘플을 실행하려면 Pub/Sub 주제와 Cloud Logging 싱크가 필요합니다. 이 샘플에서는 이들을 사용하여 Cloud 감사 로그를 Cloud 함수에 전달합니다.
이벤트 구조
모든 Pub/Sub 트리거 함수와 마찬가지로, Cloud 로그 항목에 의해 트리거된 함수는 PubsubMessage
객체를 수신하며 data
매개변수는 base64
로 인코딩된 문자열입니다. Cloud 로그 이벤트의 경우 이 값을 디코딩하면 관련 로그 항목이 JSON 문자열로 반환됩니다.
샘플 코드
아래와 같은 Pub/Sub 트리거 함수를 사용하면 내보낸 Cloud 로그를 감지하고 로그에 응답할 수 있습니다.
Node.js
Python
Go
자바
함수 배포
아래 명령어를 사용하여 함수를 배포합니다.
Node.js
gcloud functions deploy processLogEntry \ --runtime nodejs20 \
--trigger-topic YOUR_PUBSUB_TOPIC
--runtime
플래그를 사용하여 함수를 실행할 지원되는 Node.js 버전의 런타임 ID를 지정합니다.
Python
gcloud functions deploy process_log_entry \ --runtime python312 \
--trigger-topic YOUR_PUBSUB_TOPIC
--runtime
플래그를 사용하여 함수를 실행할 지원되는 Python 버전의 런타임 ID를 지정합니다.
Go
gcloud functions deploy ProcessLogEntry \ --runtime go121 \
--trigger-topic YOUR_PUBSUB_TOPIC
--runtime
플래그를 사용하여 함수를 실행할 지원되는 Go 버전의 런타임 ID를 지정합니다.
Java
gcloud functions deploy java-log-function \ --entry-point StackdriverLogging \ --runtime java17 \ --memory 512MB \
--trigger-topic YOUR_PUBSUB_TOPIC
--runtime
플래그를 사용하여 함수를 실행할 지원되는 Java 버전의 런타임 ID를 지정합니다.
함수 트리거
필터 중 하나와 일치하는 Cloud 로그 항목이 만들어지면 함수의 해당 로그 항목이 표시됩니다.
Method: METHOD Resource: projects/YOUR_GCLOUD_PROJECT/... Initiator: YOUR_EMAIL_ADDRESS