2017-03-16 3 views
0

다른 프로젝트의 App Engine 애플리케이션에서 하나의 Cloud Platform 프로젝트에 저장된 Google Cloud SQL 인스턴스에 액세스하려고하는데 작동하지 않습니다 . 는 SQL 인스턴스에IAM 권한 설정에도 불구하고 다른 GCP 프로젝트의 Google Cloud SQL 인스턴스에 액세스 할 수 없습니다.

연결이 오류와 함께 실패 : OperationalError: (2013, "Lost connection to MySQL server at 'reading initial communication packet', system error: 38")

내가 구글의 설명서의 지침을 따라 프로젝트 하우징 클라우드 SQL의 IAM 권한 목록에 두 번째 프로젝트의 앱 엔진 서비스 계정을 추가 인스턴스 ("Cloud SQL Editor"역할). 내 앱에서 사용하는 연결 세부 정보 및 구성은 Cloud SQL 인스턴스와 동일한 프로젝트에있는 완벽하게 작동하는 App Engine 앱에서 사용되는 것과 동일합니다.

내 구성에 대한 떨어져 보인다 유일한 것은 기본 일 ([MY-PROJECT-NAME]@appspot.gserviceaccount.com)처럼 보이는 앱 엔진 서비스 계정은 IAM 권한 목록에 나타납니다 동안 내 두 번째 GCP 프로젝트에서,이 서비스 계정이 하지 때문이다 IAM & 관리자의 서비스 계정 탭에 나열됩니다. 나열된 유일한 서비스 계정은 Compute Engine default service account입니다. 서비스 계정을 삭제하지 않았습니다. App Engine 기본 서비스 계정은 여기에 나열된 적이 없지만 MySQL 연결을 제외하고는 App Engine 앱이 정상적으로 실행됩니다.

관련성이 있는지는 모르지만 MySQL Engine을 사용하여 연결하는 App Engine Standard Environment에서 Python 2.7 앱을 실행 중입니다.

답변

2

결국 알아 냈습니다. 아마도 이것은 같은 문제를 겪고있는 다른 누군가에게 유용 할 것입니다. 문제는 "Cloud SQL Editor"역할이 이 아니라 "Cloud SQL Client"의 상위 집합이라고 생각했습니다. "Cloud SQL Editor"를 사용하면 Cloud SQL 인스턴스를 관리 할 수 ​​있지만 데이터베이스에 대한 기본 연결은 허용되지 않습니다.

Cloud SQL Editor 권한을 부여하고 Cloud SQL Client 권한을 부여하는 IAM 항목을 삭제하면 문제가 해결되고 데이터베이스 연결이 통과됩니다.