Cloud SQL Go Connector を使用して接続を作成する
コレクションでコンテンツを整理
必要に応じて、コンテンツの保存と分類を行います。
Cloud SQL Go Connector を使用して Cloud SQL for Postgres への接続を開きます。
もっと見る
このコードサンプルを含む詳細なドキュメントについては、以下をご覧ください。
コードサンプル
Go
Cloud SQL for PostgreSQL に対する認証を行うには、アプリケーションのデフォルト認証情報を設定します。詳細については、ローカル開発環境の認証を設定するをご覧ください。
特に記載のない限り、このページのコンテンツはクリエイティブ・コモンズの表示 4.0 ライセンスにより使用許諾されます。コードサンプルは Apache 2.0 ライセンスにより使用許諾されます。詳しくは、Google Developers サイトのポリシーをご覧ください。Java は Oracle および関連会社の登録商標です。
[[["わかりやすい","easyToUnderstand","thumb-up"],["問題の解決に役立った","solvedMyProblem","thumb-up"],["その他","otherUp","thumb-up"]],[["わかりにくい","hardToUnderstand","thumb-down"],["情報またはサンプルコードが不正確","incorrectInformationOrSampleCode","thumb-down"],["必要な情報 / サンプルがない","missingTheInformationSamplesINeed","thumb-down"],["翻訳に関する問題","translationIssue","thumb-down"],["その他","otherDown","thumb-down"]],[],[],[],null,["# Create a connection using the Cloud SQL Go Connector\n\nOpen a connection to Cloud SQL for Postgres by using the Cloud SQL Go Connector.\n\nExplore further\n---------------\n\n\nFor detailed documentation that includes this code sample, see the following:\n\n- [Connect from App Engine flexible environment](/sql/docs/postgres/connect-app-engine-flexible)\n- [Connect from App Engine standard environment](/sql/docs/postgres/connect-app-engine-standard)\n- [Connect from Cloud Run](/sql/docs/postgres/connect-run)\n- [Connect from Cloud Run functions](/sql/docs/postgres/connect-functions)\n- [Connect using Cloud SQL Language Connectors](/sql/docs/postgres/connect-connectors)\n\nCode sample\n-----------\n\n### Go\n\n\nTo authenticate to Cloud SQL for PostgreSQL, set up Application Default Credentials.\nFor more information, see\n\n[Set up authentication for a local development environment](/docs/authentication/set-up-adc-local-dev-environment).\n\n package cloudsql\n\n import (\n \t\"context\"\n \t\"database/sql\"\n \t\"fmt\"\n \t\"log\"\n \t\"net\"\n \t\"os\"\n\n \t\"cloud.google.com/go/cloudsqlconn\"\n \t\"github.com/jackc/pgx/v5\"\n \t\"github.com/jackc/pgx/v5/stdlib\"\n )\n\n func connectWithConnector() (*sql.DB, error) {\n \tmustGetenv := func(k string) string {\n \t\tv := os.Getenv(k)\n \t\tif v == \"\" {\n \t\t\tlog.Fatalf(\"Fatal Error in connect_connector.go: %s environment variable not set.\\n\", k)\n \t\t}\n \t\treturn v\n \t}\n \t// Note: Saving credentials in environment variables is convenient, but not\n \t// secure - consider a more secure solution such as\n \t// Cloud Secret Manager (https://cloud.google.com/secret-manager) to help\n \t// keep passwords and other secrets safe.\n \tvar (\n \t\tdbUser = mustGetenv(\"DB_USER\") // e.g. 'my-db-user'\n \t\tdbPwd = mustGetenv(\"DB_PASS\") // e.g. 'my-db-password'\n \t\tdbName = mustGetenv(\"DB_NAME\") // e.g. 'my-database'\n \t\tinstanceConnectionName = mustGetenv(\"INSTANCE_CONNECTION_NAME\") // e.g. 'project:region:instance'\n \t\tusePrivate = os.Getenv(\"PRIVATE_IP\")\n \t)\n\n \tdsn := fmt.Sprintf(\"user=%s password=%s database=%s\", dbUser, dbPwd, dbName)\n \tconfig, err := pgx.ParseConfig(dsn)\n \tif err != nil {\n \t\treturn nil, err\n \t}\n \tvar opts []cloudsqlconn.https://cloud.google.com/go/docs/reference/cloud.google.com/go/cloudsqlconn/latest/index.html#cloud_google_com_go_cloudsqlconn_Option\n \tif usePrivate != \"\" {\n \t\topts = append(opts, cloudsqlconn.https://cloud.google.com/go/docs/reference/cloud.google.com/go/cloudsqlconn/latest/index.html#cloud_google_com_go_cloudsqlconn_Option_WithDefaultDialOptions(cloudsqlconn.https://cloud.google.com/go/docs/reference/cloud.google.com/go/cloudsqlconn/latest/index.html#cloud_google_com_go_cloudsqlconn_DialOption_WithPrivateIP()))\n \t}\n \t// WithLazyRefresh() Option is used to perform refresh\n \t// when needed, rather than on a scheduled interval.\n \t// This is recommended for serverless environments to\n \t// avoid background refreshes from throttling CPU.\n \topts = append(opts, cloudsqlconn.https://cloud.google.com/go/docs/reference/cloud.google.com/go/cloudsqlconn/latest/index.html#cloud_google_com_go_cloudsqlconn_Option_WithLazyRefresh())\n \td, err := cloudsqlconn.https://cloud.google.com/go/docs/reference/cloud.google.com/go/cloudsqlconn/latest/index.html#cloud_google_com_go_cloudsqlconn_Dialer_NewDialer(context.Background(), opts...)\n \tif err != nil {\n \t\treturn nil, err\n \t}\n \t// Use the Cloud SQL connector to handle connecting to the instance.\n \t// This approach does *NOT* require the Cloud SQL proxy.\n \tconfig.DialFunc = func(ctx context.Context, network, instance string) (net.Conn, error) {\n \t\treturn d.https://cloud.google.com/go/docs/reference/cloud.google.com/go/cloudsqlconn/latest/index.html#cloud_google_com_go_cloudsqlconn_Dialer_Dial(ctx, instanceConnectionName)\n \t}\n \tdbURI := stdlib.RegisterConnConfig(config)\n \tdbPool, err := sql.Open(\"pgx\", dbURI)\n \tif err != nil {\n \t\treturn nil, fmt.Errorf(\"sql.Open: %w\", err)\n \t}\n \treturn dbPool, nil\n }\n\nWhat's next\n-----------\n\n\nTo search and filter code samples for other Google Cloud products, see the\n[Google Cloud sample browser](/docs/samples?product=cloud_sql_postgres)."]]