2017-03-16 6 views
0

別のプロジェクトのApp Engineアプリケーションから1つの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")

が、私はGoogleのマニュアルの手順に従って、プロジェクトの住宅クラウドSQLのためのIAM権限リストに2つ目のプロジェクトのためのApp Engineサービスアカウントを追加しましたインスタンス(「Cloud SQL Editor」をロールとして使用)。私のアプリで使用している接続の詳細と設定は、Cloud SQLインスタンスと同じプロジェクトに格納されている完全に機能するApp Engineアプリで使用されているものと同じです。

私の設定についてオフ思える唯一のものは、デフォルトの1([MY-PROJECT-NAME]@appspot.gserviceaccount.com)のように見えるのApp Engineサービスアカウントは、IAMの権限リストに表示されている間、私の第二GCPプロジェクトでは、このサービスアカウントがないであるということですIAM & Adminのサービスアカウントタブの下に表示されます。記載されている唯一のサービスアカウントはCompute Engine default service accountです。私はサービスアカウントを削除していません。ここにはApp Engineのデフォルトサービスアカウントはありませんでしたが、MySQL接続とは別にApp Engineアプリはうまく動作します。

関連性があるかどうかわかりませんが、MySQL Engineを使用して接続しているApp Engine標準環境でPython 2.7アプリケーションを実行しています。

答えて

2

これは最終的に考えられます。おそらく、同じ問題に遭遇した他の人にとっては役に立ちます。問題は、 "Cloud SQL Editor"ロールがではなく、私が想像していたように "Cloud SQL Client"のスーパーセットではなく、です。 "Cloud SQL Editor"ではCloud SQLインスタンスの管理が可能ですが、データベースへの基本的な接続は許可されません。

Cloud SQL Editorのアクセス権を付与するIAMエントリを削除し、それをCloud SQL Clientのアクセス権を付与するアクセス権と置き換えることで、この問題が解決され、データベース接続が可能になりました。