App Engine 오류 문제 해결

배포

App Engine Admin API를 사용하여 앱을 배포할 때 문제가 발생하는 경우 이 페이지에는 표시될 수 있는 오류 메시지가 표시되며, 각 오류를 해결하는 방법을 제공합니다.

호출자에게 프로젝트에 액세스할 수 있는 권한이 없음

앱을 배포할 때 다음 오류가 발생합니다.

User EMAIL_ADDRESS does not have permission to access project PROJECT_ID (or it may not exist): The caller does not have permission

이 오류는 앱을 배포하는 데 사용한 계정에 현재 프로젝트에 앱을 배포할 권한이 없는 경우에 발생합니다.

이 문제를 해결하려면 계정에 App Engine 배포자(roles/appengine.deployer) 역할부여합니다. 배포에 사용한 계정을 확인하려면 다음 중 하나를 수행합니다.

  • gcloud 명령줄 도구를 사용하여 배포한 경우 gcloud auth list 명령어를 실행합니다.
  • IDE에서 배포한 경우 Cloud 도구 플러그인의 설정을 봅니다.

레지스트리에서 메타데이터를 가져올 수 없음

앱을 배포할 때 다음 오류가 발생합니다.

Failed to fetch metadata from the registry, with reason: generic::permission_denied

이 오류는 스토리지 관리자(roles/storage.admin) 역할이 없는 서비스 계정으로 gcloud app deploy 명령어를 사용하는 경우에 발생합니다.

이 문제를 해결하려면 서비스 계정에 스토리지 관리자 역할부여합니다.

  • 사용한 계정을 확인하려면 gcloud auth list 명령어를 실행합니다.
  • 경우에 따라 App Engine 배포자(roles/appengine.deployer) 역할만 할당하는 것이 왜 충분하지 않은지 알아보려면 App Engine 역할을 참조하세요.

서비스 계정에는 이미지에 대한 권한이 있어야 함

앱을 배포할 때 다음 오류가 발생합니다.

The App Engine appspot and App Engine flexible environment service accounts must have permissions on the image IMAGE_NAME

이 오류는 다음 이유 중 하나로 발생합니다.

Cloud Build를 만들 수 없음

앱을 배포할 때 다음 오류가 발생합니다.

Failed to create cloud build: Permission denied

이 오류는 Cloud Build 편집자(roles/cloudbuild.builds.editor) 역할이 없는 계정으로 gcloud app deploy 명령어를 사용하는 경우에 발생합니다.

이 문제를 해결하려면 앱을 배포하는 데 사용하는 서비스 계정에 Cloud Build 편집자 역할부여합니다.

사용한 계정을 확인하려면 gcloud auth list 명령어를 실행합니다.

애플리케이션을 가져오는 중에 발생한 권한 오류

앱을 배포할 때 다음 오류가 발생합니다.

Permissions error fetching application apps/app_name. Please make sure you are using the correct project ID and that you have permission to view applications on the project

Cloud SDK 버전 328 이상을 실행하는 경우 앱을 배포할 때 다음 오류가 발생합니다.

Permissions error fetching application apps/app_name. Please
make sure that you have permission to view applications on the project and that
SERVICE_ACCOUNT has the App Engine Deployer (roles/appengine.deployer) role.

이 오류는 앱을 배포하는 데 사용한 계정에 App Engine 배포자(roles/appengine.deployer) 역할이 없는 경우에 발생합니다.

이 문제를 해결하려면 앱을 배포하는 데 사용한 서비스 계정에 App Engine 배포자 역할을 부여했는지 확인합니다. 서비스 계정에 이 역할이 없다면 이 역할을 부여하세요. 배포에 사용한 계정을 확인하려면 다음 중 하나를 수행합니다.

  • gcloud 명령줄 도구를 사용하여 배포한 경우 gcloud auth list 명령어를 실행합니다.
  • IDE에서 배포한 경우 Cloud 도구 플러그인의 설정을 봅니다.

앱 인프라가 정상이 될 때까지 기다리는 동안 타임아웃됨

앱을 배포할 때 다음 오류가 발생합니다.

Timed out waiting for the app infrastructure to become healthy

권한 누락, 코드 오류, CPU 또는 메모리 부족, 상태 확인 실패 등 다양한 요인으로 인해 이 오류가 발생할 수 있습니다. 이 오류는 App Engine 가변형 환경에서만 발생합니다.

이 문제를 해결하려면 다음과 같은 가능한 원인을 배제하세요.

  1. 기본 App Engine 서비스 계정에 편집자 roles/editor 역할을 부여했는지 확인합니다.

  2. 프로젝트의 조직 정책이 외부 IP 주소에 대한 액세스를 제한하는지 확인합니다. 자세한 내용은 App Engine 가변형 환경의 알려진 문제를 참조하세요.

  3. 애플리케이션을 실행하는 데 사용하는 서비스 계정(일반적으로 기본 서비스 계정, app-id@appspot.gserviceaccount.com)에 다음 역할을 부여했는지 확인합니다.

  4. 서비스 계정에 역할이 없는 경우 역할을 부여합니다.

  5. 공유 VPC 설정에서 배포하고 app.yaml에서 instance_tag을 전달하는 경우 이 섹션을 참조하여 문제를 해결하세요.

서버리스 VPC 커넥터로 서비스를 배포할 때 발생한 권한 오류

앱을 배포할 때 다음 오류가 발생합니다.

Please ensure you have [compute.globalOperations.get] on the service project

이 오류는 서버리스 VPC 커넥터로 앱을 배포하려는 사용자 또는 서비스 계정에 필요한 권한이 없을 때 발생합니다.

이 문제를 해결하려면 배포를 수행하는 사용자 또는 서비스 계정에 서버리스 VPC 액세스 사용자Compute 뷰어 IAM 역할이 있는지 확인합니다.

공유 VPC 설정에서 배포할 때 발생한 잘못된 값 오류

다음 오류는 앱을 배포할 때 Flex VM 인스턴스의 Cloud Logging에 표시됩니다.

Invalid value for field 'resource.tags.items[1]': 'aef-instance'. Duplicate
tags are not allowed: aef-instance on compute.instances.insert

이 오류는 인스턴스를 생성 시 instance_tag를 설정할 때 발생하는 현재 알려진 문제로 인해 발생합니다.

이 문제를 해결하려면 app.yaml에서 instance_tag 필드를 삭제하고 다시 배포합니다.

'compute.firewalls.list' 권한 필요

공유 VPC 네트워크에 앱을 배포하면 다음과 같은 오류가 발생합니다.

Request to https://compute.googleapis.com/compute/v1/projects/projects/PROJECT_ID/global/firewalls?key failed, details: Required 'compute.firewalls.list' permission for 'projects/PROJECT_ID'

이 오류는 호스트 프로젝트의 다음 서비스 계정에 Compute 네트워크 사용자(roles/compute.networkUser) 역할이 없을 때 발생합니다.

이 문제를 해결하려면 호스트 프로젝트의 Google API 서비스 에이전트 및 App Engine 가변형 환경 서비스 에이전트 서비스 계정에 Compute 네트워크 사용자 역할을 부여했는지 확인하고 서비스 계정에 역할이 없다면 부여합니다.

빌드 로그 오류 없이 배포 중에 빌드가 실패함

앱을 배포할 때 다음 오류가 발생합니다.

ERROR: (gcloud.app.deploy) Cloud build failed. Check logs at https://console.cloud.google.com/cloud-build/builds/BUILD_ID?project=PROJECT_NUMBER Failure status: UNKNOWN: Error Response: [2] Build failed; check build logs for details

오류 메시지의 링크를 따라가면 모든 빌드 단계가 성공했음을 나타냅니다. 하지만 앱을 빌드하지 못했습니다.

이 문제는 고객 관리 암호화 키(CMEK)를 사용 중이거나 staging.PROJECT_ID.appspot.com 버킷에 데이터 보존 정책을 설정한 경우 발생합니다.

이 문제를 해결하려면 staging.PROJECT_ID.appspot.com 버킷의 다음 설정을 변경하세요.

제공

Nginx가 앱 컨테이너에 연결하지 못함

다음 오류는 App Engine 가변형 환경에서만 발생하며 일반적으로 오류 발생 직후 502 오류와 함께 반환됩니다.

recv() failed (104: Connection reset by peer) while reading response header from upstream

이 오류는 nginx 역방향 프록시(nginx 사이드카)가 앱 컨테이너에 연결할 수 없음을 나타냅니다. 로그에서 nginx 로그에 있는 502 오류의 종료 시간을 nginx.error 로그의 시간과 비교할 수 있습니다. nginx.error 다음에 즉시 502 nginx 오류가 발생한 경우 nginx 502 오류의 원인일 수 있습니다.

문제 해결을 위해서는 VM 인스턴스에 연결하여 앱 컨테이너에서 실행되는 코드에 기록된 로그를 확인하고 필요한 경우 로깅을 추가하여 근본 원인을 찾습니다.