HTTPS 요청으로 호출

서비스나 함수를 만들면 Cloud Run에서 서비스의 HTTPS 엔드포인트를 제공합니다. HTTPS 요청에 대한 응답으로 실행되도록 서비스를 사용 설정할 수 있습니다.

모든 Cloud Run 서비스에는 서비스의 기본 HTTPS 엔드포인트를 나타내는 안정적인 HTTPS URL이 있지만 커스텀 도메인도 구성할 수 있습니다.

다음은 몇 가지 사용 사례입니다.

  • 커스텀 RESTful 웹 API
  • 비공개 마이크로서비스
  • 웹 애플리케이션용 HTTP 미들웨어 또는 리버스 프록시
  • 사전 패키징된 웹 애플리케이션

공개 서비스 만들기

Cloud Run에 공개 서비스를 만들려면 다음이 필요합니다.

  • 공개 인터넷에서 서비스로의 액세스 권한
  • 공개 사용을 위한 URL

서비스를 공개로 설정하려면 인증되지 않은(공개) 액세스를 허용하도록 서비스를 설정합니다.

서비스 URL

Cloud Run은 서비스에 결정론적 URL을 할당합니다.

이러한 기본 run.app URL을 중지할 수 있습니다.

Cloud de Confiance 콘솔에서 서비스 이름을 클릭하거나 gcloud CLI에서 다음 명령어를 실행하여 서비스 URL을 검색할 수 있습니다.

gcloud run services describe SERVICE --format 'value(status.url)'

결정론적 URL이 표시될 때 우선순위가 부여됩니다.

결정론적 URL

결정 URL을 사용하면 서비스가 생성되기 전에 서비스 URL을 예측할 수 있으므로 서비스 간 통신에 유용합니다.

결정 URL은 63자 이하의 DNS 세그먼트에만 사용할 수 있습니다. DNS 세그먼트에는 서비스 이름, 프로젝트 번호, 하나 이상의 트래픽 태그가 포함됩니다.

Cloud Run 서비스의 결정 URL은 다음과 같은 형식입니다.

https://[TAG---]SERVICE_NAME-PROJECT_NUMBER.REGION.run.app

각 항목의 의미는 다음과 같습니다.

  • TAG는 요청하는 버전의 선택적 트래픽 태그입니다.
  • PROJECT_NUMBER는 Cloud de Confiance by S3NS 프로젝트 번호입니다.
  • SERVICE_NAME은 Cloud Run 서비스 이름입니다.
  • REGION은 리전 이름입니다(예: europe-west1).

응답 스트리밍

Cloud Run은 스트리밍 HTTP 응답을 지원합니다. 이 기능을 사용 설정하기 위해 구성이 필요하지 않습니다. 서버는 Transfer-Encoding: chunked 응답 헤더로 응답해야 합니다.

HTTP-HTTPS 간 리디렉션

Cloud Run은 모든 HTTP 요청을 HTTPS로 리디렉션하지만 웹 서비스에 연결되기 전에 TLS를 종료합니다. 서비스에서 안전하지 않은 URL(http://)로 다른 웹 리소스를 참조하는 웹 리소스를 생성하면 페이지에 혼합 콘텐츠 경고 또는 오류가 발생할 수 있습니다. X-Forwarded-Proto HTTP 헤더와 같은 HTTP 요청의 프록시 지시문에 대한 모든 참조 웹 URI 또는 계정에 https 프로토콜을 사용합니다.

HTTP 및 HTTP/2

기본적으로 Cloud Run은 해당 요청이 컨테이너로 전송될 때 HTTP/2 요청을 HTTP/1로 다운그레이드합니다. HTTP/2 엔드 투 엔드를 사용하도록 서비스를 명시적으로 설정하려면 HTTP/2 사용을 참조하세요.

비공개 서비스 만들기

Cloud Run에서 비공개 서비스를 만들려면 IAM 호출자 권한을 활용하여 서비스에 대한 액세스를 제한해야 합니다.

또한 애플리케이션 수준 승인 및 인증 메커니즘(예: Identity Platform)을 사용하여 서비스에 대한 액세스 권한을 제한할 수 있습니다.

비공개 서비스 테스트

비공개 서비스를 테스트하는 가장 쉬운 방법은 Google Cloud CLI에서 Cloud Run 프록시를 사용하는 것입니다. 그러면 비공개 서비스가 http://localhost:8080(또는 --port로 지정된 포트)으로 프록시되어 활성 계정의 토큰 또는 지정한 다른 토큰이 제공됩니다. 이렇게 하면 웹브라우저 또는 curl 등의 도구를 사용할 수 있습니다. 이는 브라우저에서 웹사이트 또는 API를 비공개로 테스트하는 데 권장되는 방법입니다.

Linux, macOS, WSL(권장) 또는 cygwin 환경에서 다음 명령줄을 사용하여 서비스를 로컬로 프록시할 수 있습니다.

gcloud run services proxy SERVICE --project PROJECT-ID

curl과 같은 도구를 사용하여 Authorization 헤더에 인증 토큰을 전달하여 프록시 없이 비공개 서비스를 테스트할 수 있습니다.

curl -H "Authorization: Bearer $(gcloud auth print-identity-token)" SERVICE_URL

서비스 간 비공개 서비스

Cloud Run 서비스는 서비스 간 인증으로 다른 Cloud Run 서비스를 호출할 수 있습니다.

비공개 서비스를 호출하는 샘플 코드

ID 토큰을 가져오고 비공개 서비스에 HTTP 요청을 수행하는 방법을 보여주는 코드 샘플은 서비스 간 인증 주제를 참조하세요.

미들웨어를 사용하여 서비스 개선

HTTPS 프록시는 HTTP 서비스에서 캐싱, 요청 검사 또는 승인과 같은 일반적인 기능을 오프로드할 수 있습니다. 마이크로서비스의 경우 많은 HTTP 프록시가 API Gateway 솔루션 또는 Istio와 같은 서비스 메시에 포함됩니다.

Cloud Run 서비스 개선을 위해 사용할 수 있는Cloud de Confiance by S3NS 제품은 다음과 같습니다.