💻 使い方
1. Auth Proxyのインストール
Linux / macOS:
curl -o cloud-sql-proxy https://storage.googleapis.com/cloud-sql-connectors/cloud-sql-proxy/v2.13.0/cloud-sql-proxy.linux.amd64
chmod +x cloud-sql-proxy
sudo mv cloud-sql-proxy /usr/local/bin/
Docker:
docker pull gcr.io/cloud-sql-connectors/cloud-sql-proxy:latest
2. Auth Proxyの起動
接続文字列の形式
PROJECT_ID:REGION:INSTANCE_NAME
例: my-project:us-central1:my-postgres-instance
基本的な起動:
cloud-sql-proxy my-project:us-central1:my-postgres-instance
cloud-sql-proxy my-project:us-central1:my-mysql-instance
cloud-sql-proxy my-project:us-central1:my-instance --port=5433
複数インスタンスへの接続:
cloud-sql-proxy \
my-project:us-central1:postgres-instance \
my-project:us-central1:mysql-instance
バックグラウンド実行:
nohup cloud-sql-proxy my-project:us-central1:my-instance &
cloud-sql-proxy my-project:us-central1:my-instance > proxy.log 2>&1 &
3. アプリケーションからの接続
Python (psycopg2):
import psycopg2
conn = psycopg2.connect(
host="localhost",
port=5432,
database="mydb",
user="postgres",
password="your-password"
)
cursor = conn.cursor()
cursor.execute("SELECT version();")
print(cursor.fetchone())
Node.js (pg):
const { Client } = require('pg');
const client = new Client({
host: 'localhost',
port: 5432,
database: 'mydb',
user: 'postgres',
password: 'your-password'
});
await client.connect();
const res = await client.query('SELECT NOW()');
console.log(res.rows[0]);
Java (JDBC):
import java.sql.Connection;
import java.sql.DriverManager;
String jdbcUrl = "jdbc:postgresql://localhost:5432/mydb";
String username = "postgres";
String password = "your-password";
Connection conn = DriverManager.getConnection(jdbcUrl, username, password);
4. Dockerでの使用
version: '3.8'
services:
cloud-sql-proxy:
image: gcr.io/cloud-sql-connectors/cloud-sql-proxy:latest
command:
- "my-project:us-central1:my-instance"
ports:
- "5432:5432"
volumes:
- ./service-account-key.json:/config/key.json
environment:
- GOOGLE_APPLICATION_CREDENTIALS=/config/key.json
app:
image: my-app
depends_on:
- cloud-sql-proxy
environment:
- DB_HOST=cloud-sql-proxy
- DB_PORT=5432
☁️ GCPサービスでの利用
1. Cloud Run
gcloud run deploy my-service \
--image gcr.io/my-project/my-image \
--add-cloudsql-instances my-project:us-central1:my-instance \
--set-env-vars DB_HOST="/cloudsql/my-project:us-central1:my-instance"
2. Cloud Functions
gcloud functions deploy my-function \
--runtime python39 \
--trigger-http \
--set-cloudsql-instances my-project:us-central1:my-instance
3. Kubernetes (GKE)
apiVersion: apps/v1
kind: Deployment
metadata:
name: my-app
spec:
template:
spec:
containers:
- name: app
image: gcr.io/my-project/my-app
env:
- name: DB_HOST
value: "127.0.0.1"
- name: cloud-sql-proxy
image: gcr.io/cloud-sql-connectors/cloud-sql-proxy:latest
command:
- "/cloud-sql-proxy"
- "my-project:us-central1:my-instance"
securityContext:
runAsNonRoot: true
4. App Engine
runtime: python39
env_variables:
DB_HOST: "/cloudsql/my-project:us-central1:my-instance"
beta_settings:
cloud_sql_instances: "my-project:us-central1:my-instance"