서비스 간 통신

리전 ID

REGION_ID는 앱을 만들 때 선택한 리전을 기준으로 Google에서 할당하는 축약된 코드입니다. 일부 리전 ID는 일반적으로 사용되는 국가 및 주/도 코드와 비슷하게 표시될 수 있지만 코드는 국가 또는 주/도와 일치하지 않습니다. 2020년 2월 이후에 생성된 앱의 경우 REGION_ID.r이 App Engine URL에 포함됩니다. 이 날짜 이전에 만든 기존 앱의 경우 URL에서 리전 ID는 선택사항입니다.

리전 ID에 대해 자세히 알아보세요.

다양한 방법을 사용하여 App Engine 서비스 간에 또는 Google Cloud 서비스와 외부 애플리케이션을 포함한 다른 서비스와 통신할 수 있습니다.

App Engine 서비스와 통신하는 가장 간단한 방법은 타겟팅된 HTTP 요청을 보내는 것입니다. URL에는 리소스의 이름 또는 ID가 포함됩니다. 예를 들어 타겟팅할 서비스 또는 버전의 ID와 해당 Google Cloud 프로젝트 ID를 포함할 수 있습니다.


https://VERSION-dot-SERVICE-dot-PROJECT_ID.REGION_ID.r.appspot.com

VERSION-dot-SERVICE-dot-PROJECT_ID의 결합된 길이(VERSION는 버전 이름, SERVICE 은 서비스 이름, PROJECT_ID는 프로젝트 ID)는 63자(영문)를 초과할 수 없으며 하이픈으로 시작하거나 끝날 수 없습니다. 합친 길이가 63자를 초과하면 DNS address could not be found. 오류가 표시될 수 있습니다.

App Engine의 요청에 대해 자세히 알아보세요.

App Engine 서비스는 App Engine을 포함한 프로세스 사이에서 안정적인 비동기식 다대다 메시징을 제공하는 Pub/Sub를 사용하여 통신할 수도 있습니다. 애플리케이션, 서비스 또는 외부 애플리케이션의 개별 인스턴스도 이러한 프로세스에 해당합니다.

데이터베이스, App Engine 앱 또는 기타 외부 애플리케이션 간에 데이터를 공유하려면 데이터 및 파일 스토리지 이해를 참조하세요.

기존 번들 서비스를 사용하는 경우 URL Fetch API를 사용하여 요청을 서비스 간에 전달하고 서비스에서 외부 엔드포인트로 전달할 수도 있습니다.

또한 표준 환경에서 동일한 Google Cloud 프로젝트에 속한 서비스는 다음 태스크에 App Engine API 중 하나를 사용할 수도 있습니다.

  • 단일 memcache 인스턴스 공유
  • 태스크 큐를 통해 서비스 간에 작업을 할당하여 공동작업 진행

비공개 통신

동일한 프로젝트의 서비스 간 통신

대상 서비스를 공개 인터넷에 노출하지 않아도 App Engine 표준 서비스로 동일한 프로젝트의 다른 App Engine 서비스와 통신할 수 있습니다.

같은 프로젝트에서 서비스 간 통신을 허용하려면 다음 안내를 따르세요.

  1. '내부' 트래픽만 허용하도록 대상 서비스의 인그레스 설정을 조정하여 인그레스 제어를 구성합니다.

    '내부' 설정은 프로젝트의 VPC 네트워크 요청만 허용합니다. 여기에는 이그레스 트래픽이 커넥터를 통해 라우팅될 때 동일한 네트워크에 있는 클라이언트 앱의 App Engine 리소스가 포함됩니다. 인터넷 또는 다른 App Engine 서비스를 포함한 기타 Google Cloud 프로젝트에서 발생하는 다른 모든 트래픽은 차단됩니다.

  2. 서버리스 VPC 액세스 커넥터를 통해 트래픽을 라우팅합니다.

    1. 다른 앱 엔드포인트로 비공개 트래픽을 전송하는 각 App Engine 버전에 대해 공유 VPC 네트워크가 아닌 Google Cloud 프로젝트의 자체 네트워크 중 하나에 속한 서버리스 VPC 액세스 커넥터에 버전을 연결합니다.

    2. 서버리스 VPC 액세스 커넥터에서 사용하는 서브넷에 비공개 Google 액세스가 사용 설정되어 있는지 확인합니다.

    3. 다음 중 하나를 구성합니다.

      • 대상 호스트 이름에 대한 DNS 항목을 추가하여 private.googleapis.com IP 범위를 사용하도록 클라이언트 요청을 구성합니다. DNS 구성에 따라 DNS 호스트 이름을 추가합니다. 하지만 googleapis.com이 아닌 appspot.com에 맞게 비공개 영역을 구성해야 합니다. 또한 트래픽이 커스텀 도메인이 아닌 대상 앱의 appspot.com 주소로 전달되는지 확인합니다. 이 appspot.com 도메인을 사용하는 private.googleapis.com IP 범위에서만 앱에 연결할 수 있습니다.

      • private.googleapis.com IP 범위를 사용하도록 요청을 구성하는 대신 서버리스 VPC 액세스 커넥터를 통해 all-traffic전송하도록 클라이언트 앱을 구성합니다.

다른 프로젝트의 서비스 간 통신

프로젝트에서 실행 중인 앱이 공유 VPC 네트워크의 호스트 프로젝트에서 실행되는 앱을 호출하도록 구성된 공유 VPC 네트워크에 속하는 경우 Google Cloud 프로젝트 간에 비공개 액세스 권한이 있을 수 있습니다.

이 패턴을 사용하려면 동일한 프로젝트의 서비스 간 통신에 대한 이전 단계를 수행합니다. 표준 환경에서는 각 클라이언트 버전을 공유 VPC 네트워크의 서버리스 VPC 액세스 커넥터에 연결합니다.

App Engine에서는 내부 액세스를 사용하는 프로젝트 간의 다른 통신 방법이 불가능합니다.

예약된 URL 경로

다음 URL 경로는 사용할 수 없습니다.

  • /eventlog로 끝나는 경로
  • /_ah/로 시작하는 경로
  • z로 끝나는 일부 경로