이 튜토리얼에서는 Pub/Sub를 사용하여 이벤트를 수신하는 인증된 Cloud Run 서비스를 사용하여 컨테이너화된 애플리케이션을 배포하는 방법을 보여줍니다. Pub/Sub는 독립적인 애플리케이션이 서로 메시지를 주고받게 해주는 완전 관리형 실시간 메시징 서비스입니다.
Artifact Registry 표준 저장소 만들기
컨테이너 이미지를 저장할 Artifact Registry 표준 저장소를 만듭니다.
gcloud artifacts repositories create REPOSITORY \ --repository-format=docker \ --location=$REGION
REPOSITORY
를 저장소의 고유한 이름으로 바꿉니다.
Cloud Run에 이벤트 수신자 배포
이벤트 콘텐츠를 로깅하는 Cloud Run 서비스를 배포합니다.
GitHub 저장소를 클론합니다.
Node.js
git clone https://github.com/GoogleCloudPlatform/nodejs-docs-samples.git
또는 zip 파일로 샘플을 다운로드하고 압축을 풀 수 있습니다.
Python
git clone https://github.com/GoogleCloudPlatform/python-docs-samples.git
또는 zip 파일로 샘플을 다운로드하고 압축을 풀 수 있습니다.
Go
git clone https://github.com/GoogleCloudPlatform/golang-samples.git
또는 zip 파일로 샘플을 다운로드하고 압축을 풀 수 있습니다.
자바
git clone https://github.com/GoogleCloudPlatform/java-docs-samples.git
또는 zip 파일로 샘플을 다운로드하고 압축을 풀 수 있습니다.
Ruby
git clone https://github.com/GoogleCloudPlatform/ruby-docs-samples.git
또는 zip 파일로 샘플을 다운로드하고 압축을 풀 수 있습니다.
C#
git clone https://github.com/GoogleCloudPlatform/dotnet-docs-samples.git
또는 zip 파일로 샘플을 다운로드하고 압축을 풀 수 있습니다.
Cloud Run 샘플 코드가 포함된 디렉터리로 변경합니다.
Node.js
cd nodejs-docs-samples/eventarc/pubsub/
Python
cd python-docs-samples/eventarc/pubsub/
Go
cd golang-samples/eventarc/pubsub/
Java
cd java-docs-samples/eventarc/pubsub/
Ruby
cd ruby-docs-samples/eventarc/pubsub/
C#
cd dotnet-docs-samples/eventarc/pubsub/
컨테이너를 빌드하고 Cloud Build에 업로드합니다.
gcloud builds submit --tag $REGION-docker.pkg.dev/PROJECT_ID/REPOSITORY/trigger-pubsub:v1
컨테이너 이미지를 Cloud Run에 배포합니다.
gcloud run deploy ${SERVICE_NAME} \ --image $REGION-docker.pkg.dev/PROJECT_ID/REPOSITORY/trigger-pubsub:v1
Pub/Sub 트리거에 인증되지 않은 호출 허용(Y/N)? 프롬프트에서 '아니요'의 경우
n
으로 응답합니다.
Cloud Run 서비스 URL이 표시되면 배포가 완료된 것입니다.
Eventarc 트리거 만들기
Pub/Sub 주제에 메시지가 게시되면 이벤트가 Cloud Run 서비스를 트리거합니다.
Pub/Sub 메시지를 리슨하는 트리거를 만듭니다.
새 Pub/Sub 주제
gcloud eventarc triggers create ${SERVICE_NAME} \ --destination-run-service=${SERVICE_NAME} \ --destination-run-region=${REGION} \ --location=${REGION} \ --event-filters="type=google.cloud.pubsub.topic.v1.messagePublished" \ --service-account=PROJECT_NUMBER-compute@developer.gserviceaccount.com
이렇게 하면 새 Pub/Sub 주제와
trigger-pubsub
라는 트리거가 생성됩니다.기존 Pub/Sub 주제
gcloud eventarc triggers create ${SERVICE_NAME} \ --destination-run-service=${SERVICE_NAME} \ --destination-run-region=${REGION} \ --location=${REGION} \ --event-filters="type=google.cloud.pubsub.topic.v1.messagePublished" \ --transport-topic=projects/PROJECT_ID/topics/TOPIC_ID \ --service-account=PROJECT_NUMBER-compute@developer.gserviceaccount.com
다음을 바꿉니다.
PROJECT_ID
: Google Cloud 프로젝트 IDTOPIC_ID
: 기존 Pub/Sub 주제의 ID입니다.
기존 Pub/Sub 주제에 대한
trigger-pubsub
라는 이름의 트리거를 만듭니다.Google Cloud 프로젝트에서 처음으로 Eventarc 트리거를 만들 때는 Eventarc 서비스 에이전트를 프로비저닝하는 데 시간이 지연될 수 있습니다. 이 문제는 일반적으로 트리거를 다시 만들면 해결할 수 있습니다. 자세한 내용은 권한 거부 오류를 참조하세요.
트리거가 성공적으로 생성되었는지 확인하세요. 트리거가 즉시 생성되더라도 트리거가 완전히 작동하려면 최대 2분까지 걸릴 수 있습니다.
gcloud eventarc triggers list --location=${REGION}
반환된 트리거 상태는
ACTIVE: Yes
여야 합니다.
이벤트 생성 및 확인
이벤트를 생성하고 Cloud Run 서비스를 트리거하도록 Pub/Sub 주제에 메시지를 게시합니다. Cloud Run 서비스가 서비스 로그에 메시지를 로깅합니다.
Pub/Sub 주제를 환경 변수로 찾아서 설정합니다.
export TOPIC_ID=$(gcloud eventarc triggers describe ${SERVICE_NAME} \ --format='value(transport.pubsub.topic)')
Pub/Sub 주제에 메시지를 보내 이벤트를 생성합니다.
gcloud pubsub topics publish $TOPIC_ID --message "Hello there"
이벤트는 Cloud Run 서비스로 전송되어 이벤트 메시지를 로깅합니다.
서비스에서 만든 이벤트 관련 로그 항목을 확인합니다.
gcloud logging read 'textPayload: "Hello there!"'
로그 항목은 다음과 비슷하게 표시됩니다.
textPayload: 'Hello, Hello there!'
로그가 나타나려면 시간이 약간 걸릴 수 있습니다. 즉시 표시되지 않으면 1분 후에 다시 확인하세요.