Python ã¯ã©ã€ã¢ã³ãã©ã€ãã©ãªã䜿çšããŠãGoogle Cloud Platform (GCP) ãžã®ãµãŒãã¹ã¢ã¯ã»ã¹ããã¹ã¿ãŒããŸããããèªèšŒããµãŒãã¹é£æºãã¹ã±ãŒã©ãã«ãªã¯ã©ãŠãã¢ããªã±ãŒã·ã§ã³æ§ç¯ã®ãã¹ããã©ã¯ãã£ã¹ãåŠã³ãŸãã
Python ã§ Google Cloud Platform ãæŽ»çšãã: GCP ãµãŒãã¹ã¢ã¯ã»ã¹ã®å æ¬çãªã¬ã€ã
Google Cloud Platform (GCP) ã¯ãã¹ã±ãŒã©ãã«ã§ä¿¡é Œæ§ã®é«ãã¢ããªã±ãŒã·ã§ã³ãæ§ç¯ããããã€ããããã®è±å¯ãªãµãŒãã¹ãæäŸããŠããŸããæç¢ºãªæ§æãšè±å¯ãªã©ã€ãã©ãªãæã€ Python ã¯ãGCP ãšé£æºããããã®äžè¬çãªéžæè¢ã§ãã ãã®ã¬ã€ãã§ã¯ãPython ã¯ã©ã€ã¢ã³ãã©ã€ãã©ãªã䜿çšã㊠GCP ãµãŒãã¹ã«ã¢ã¯ã»ã¹ãã管çããæ¹æ³ã«ã€ããŠå æ¬çãªæŠèŠãæäŸããããŸããŸãªæè¡çèæ¯ãæã€äžçäžã®ãŠãŒã¶ãŒã«å¯Ÿå¿ããŸãã
GCP ã§ Python ã䜿çšããçç±
Python ã¯ãGCP ãšé£æºããéã«ããã€ãã®å©ç¹ããããŸãã
- 䜿ãããã: Python ã®èªã¿ãããæ§æã«ãããéçºãç°¡çŽ åãããGCP ã¢ããªã±ãŒã·ã§ã³ã®åŠç¿ãšä¿å®ã容æã«ãªããŸãã
- å æ¬çãªã©ã€ãã©ãª: Google ã¯ãGCP ãµãŒãã¹å°çšã«èšèšããããååã«ã¡ã³ããã³ã¹ããã Python ã¯ã©ã€ã¢ã³ãã©ã€ãã©ãªãæäŸããŠããŸãã
- 匷åãªã³ãã¥ããã£ãµããŒã: å€§èŠæš¡ã§æŽ»çºãª Python ã³ãã¥ããã£ã¯ãGCP éçºã®ããã®è±å¯ãªãªãœãŒã¹ããã¥ãŒããªã¢ã«ãããã³ãµããŒããæäŸããŠããŸãã
- èªååãšã¹ã¯ãªããã£ã³ã°: Python ã¯ãã¯ã©ãŠãç°å¢ã«äžå¯æ¬ ãªã¿ã¹ã¯ã®èªååãšã€ã³ãã©ã¹ãã©ã¯ãã£ç®¡çã®ã¹ã¯ãªããã£ã³ã°ã«åªããŠããŸãã
- ããŒã¿ãµã€ãšã³ã¹ã𿩿¢°åŠç¿: Python ã¯ãGCP ã® AI/ML ãµãŒãã¹ãšã·ãŒã ã¬ã¹ã«çµ±åãããããŒã¿ãµã€ãšã³ã¹ã𿩿¢°åŠç¿ã®äž»èŠãªèšèªã§ãã
ç°å¢ã®ã»ããã¢ãã
å§ããåã«ãPython ç°å¢ãã»ããã¢ããããå¿ èŠãªã©ã€ãã©ãªãã€ã³ã¹ããŒã«ããå¿ èŠããããŸãã
1. Python ãš Pip ã®ã€ã³ã¹ããŒã«
Python ãã€ã³ã¹ããŒã«ãããŠããªãå Žåã¯ãå ¬åŒ Python Web ãµã€ãïŒhttps://www.python.org/downloads/ïŒããææ°ããŒãžã§ã³ãããŠã³ããŒãããŠã€ã³ã¹ããŒã«ããŠãã ããã Python ããã±ãŒãžã€ã³ã¹ããŒã©ãŒã§ãã Pip ã¯ãéåžžãPython ã®ã€ã³ã¹ããŒã«ã«å«ãŸããŠããŸãã
æ€èšŒ: ã¿ãŒããã«ãŸãã¯ã³ãã³ãããã³ãããéããæ¬¡ã®ã³ãã³ããå®è¡ããŸãã
python --version
pip --version
ãããã®ã³ãã³ãã¯ãã€ã³ã¹ããŒã«ãããŠãã Python ããã³ Pip ã®ããŒãžã§ã³ã衚瀺ããŸãã
2. Google Cloud Client Library for Python ã®ã€ã³ã¹ããŒã«
`google-cloud-python` ã©ã€ãã©ãªã¯ããã¹ãŠã® GCP ãµãŒãã¹ãžã®ã¢ã¯ã»ã¹ãæäŸããŸãã Pip ã䜿çšããŠã€ã³ã¹ããŒã«ããŸãã
pip install google-cloud-storage google-cloud-compute google-cloud-pubsub # äŸ - ã¹ãã¬ãŒãžãComputeãpubsub ããã±ãŒãžãã€ã³ã¹ããŒã«ãã
䜿çšãã GCP ãµãŒãã¹ã«å¯ŸããŠã®ã¿ãç¹å®ã®ã¯ã©ã€ã¢ã³ãã©ã€ãã©ãªãã€ã³ã¹ããŒã«ããŸãã ããã«ãããã¢ããªã±ãŒã·ã§ã³ã®äŸåé¢ä¿ã®ãµã€ãºãåæžãããŸãã
äŸ (Cloud Storage): Cloud Storage ã¯ã©ã€ã¢ã³ãã©ã€ãã©ãªãã€ã³ã¹ããŒã«ããã«ã¯ã次ã®ããã«ããŸãã
pip install google-cloud-storage
3. èªèšŒã®èšå®
èªèšŒã¯ãPython ã¢ããªã±ãŒã·ã§ã³ã« GCP ãªãœãŒã¹ãžã®ã¢ã¯ã»ã¹èš±å¯ãä»äžããããã«äžå¯æ¬ ã§ãã ããã€ãã®èªèšŒæ¹æ³ãå©çšå¯èœã§ãã
- ãµãŒãã¹ã¢ã«ãŠã³ã: GCP ã§å®è¡ãããŠããã¢ããªã±ãŒã·ã§ã³ïŒCompute EngineãCloud FunctionsãCloud Run ãªã©ïŒã«æšå¥šãããŸãã
- ãŠãŒã¶ãŒèªèšŒæ å ±: ããŒã«ã«éçºãšãã¹ãã«é©ããŠããŸãã
ãµãŒãã¹ã¢ã«ãŠã³ãã®äœ¿çš (æ¬çªç°å¢ã«æšå¥š)
ãµãŒãã¹ã¢ã«ãŠã³ãã¯ãã¢ããªã±ãŒã·ã§ã³ãšãµãŒãã¹ãèªèšŒããããã«äœ¿çšã§ããé人éã¢ã«ãŠã³ãã§ãã GCP ãªãœãŒã¹ãžã®ã¢ã¯ã»ã¹ãå®å šãã€å¶åŸ¡ãããæ¹æ³ã§ä»äžããŸãã
- ãµãŒãã¹ã¢ã«ãŠã³ãã®äœæ: Google Cloud Console ã§ãIAM ãšç®¡ç > ãµãŒãã¹ã¢ã«ãŠã³ã ã«ç§»åãããµãŒãã¹ã¢ã«ãŠã³ããäœæ ãã¯ãªãã¯ããŸãã ãµãŒãã¹ã¢ã«ãŠã³ãã®ååãšèª¬æãå ¥åããŸãã
- æš©éã®ä»äž: ã¢ããªã±ãŒã·ã§ã³ãã¢ã¯ã»ã¹ããå¿ èŠããã GCP ãªãœãŒã¹ã«åºã¥ããŠãé©åãªããŒã«ããµãŒãã¹ã¢ã«ãŠã³ãã«å²ãåœãŠãŸã (ããšãã°ãCloud Storage ãªããžã§ã¯ããå®å šã«å¶åŸ¡ããã«ã¯ `roles/storage.objectAdmin`)ã
- ãµãŒãã¹ã¢ã«ãŠã³ãããŒã®ããŠã³ããŒã: ãµãŒãã¹ã¢ã«ãŠã³ãã® JSON ããŒãã¡ã€ã«ãäœæããŠããŠã³ããŒãããŸãã ãã®ããŒãã¡ã€ã«ã¯ãGCP ãªãœãŒã¹ãžã®ã¢ã¯ã»ã¹ãèš±å¯ããããã现å¿ã®æ³šæãæã£ãŠæ±ã£ãŠãã ããã å®å šã«ä¿ç®¡ããããŒãžã§ã³ç®¡çã«ã³ãããããªãã§ãã ããã
- `GOOGLE_APPLICATION_CREDENTIALS` ç°å¢å€æ°ãèšå®ãã: `GOOGLE_APPLICATION_CREDENTIALS` ç°å¢å€æ°ããããŠã³ããŒããã JSON ããŒãã¡ã€ã«ã®ãã¹ã«èšå®ããŸãã
äŸ (Linux/macOS):
export GOOGLE_APPLICATION_CREDENTIALS="/path/to/your/service-account-key.json"
äŸ (Windows):
set GOOGLE_APPLICATION_CREDENTIALS=C:\path\to\your\service-account-key.json
éèŠãªã»ãã¥ãªãã£ã«é¢ããæ³šæ: ãµãŒãã¹ã¢ã«ãŠã³ãããŒãã³ãŒãã«çŽæ¥ããŒãã³ãŒãã£ã³ã°ããªãã§ãã ããã ã»ãã¥ãªãã£ãšä¿å®æ§ãé«ããã«ã¯ã`GOOGLE_APPLICATION_CREDENTIALS` ç°å¢å€æ°ã䜿çšããããšããå§ãããŸãã
ãŠãŒã¶ãŒèªèšŒæ å ±ã®äœ¿çš (ããŒã«ã«éçºçš)
ããŒã«ã«ã§ã®éçºãšãã¹ãã«ã¯ãç¬èªã® Google Cloud ãŠãŒã¶ãŒèªèšŒæ å ±ã䜿çšã§ããŸãã
- Google Cloud SDK (gcloud) ã®ã€ã³ã¹ããŒã«: å ¬åŒ Web ãµã€ã (https://cloud.google.com/sdk/docs/install) ãã Google Cloud SDK ãããŠã³ããŒãããŠã€ã³ã¹ããŒã«ããŸãã
- gcloud ã§èªèšŒ: ã¿ãŒããã«ãŸãã¯ã³ãã³ãããã³ããã§æ¬¡ã®ã³ãã³ããå®è¡ããŸãã
gcloud auth application-default login
ãã®ã³ãã³ããå®è¡ãããšãGoogle Cloud ã¢ã«ãŠã³ãã«ãµã€ã³ã€ã³ããGoogle Cloud SDK ã«å¿ èŠãªæš©éãä»äžã§ãããã©ãŠã¶ãŠã£ã³ããŠãéããŸãã
Python ã§ã® GCP ãµãŒãã¹ãžã®ã¢ã¯ã»ã¹
ç°å¢ãã»ããã¢ããããèªèšŒãæ§æããããPython ã¯ã©ã€ã¢ã³ãã©ã€ãã©ãªã䜿çšã㊠GCP ãµãŒãã¹ãžã®ã¢ã¯ã»ã¹ãéå§ã§ããŸãã 以äžã«äŸã瀺ããŸãã
1. Cloud Storage
Cloud Storage ã¯ãã¹ã±ãŒã©ãã«ã§èä¹ æ§ã®ãããªããžã§ã¯ãã¹ãã¬ãŒãžãæäŸããŸãã Python ã¯ã©ã€ã¢ã³ãã©ã€ãã©ãªã䜿çšããŠãCloud Storage ãã±ããå ã®ãªããžã§ã¯ããã¢ããããŒããããŠã³ããŒããããã³ç®¡çã§ããŸãã
äŸ: Cloud Storage ãžã®ãã¡ã€ã«ã®ã¢ããããŒã
from google.cloud import storage
# ãã±ããåãšãã¡ã€ã«ãã¹ã«çœ®ãæããŸã
BUCKET_NAME = "your-bucket-name"
FILE_PATH = "/path/to/your/local/file.txt"
OBJECT_NAME = "remote/file.txt" # Cloud Storage ã§ãã¡ã€ã«ã«ä»ãããåå
client = storage.Client()
bucket = client.bucket(BUCKET_NAME)
blob = bucket.blob(OBJECT_NAME)
blob.upload_from_filename(FILE_PATH)
print(f"ãã¡ã€ã« {FILE_PATH} ã gs://{BUCKET_NAME}/{OBJECT_NAME} ã«ã¢ããããŒããããŸããã")
説æ:
- `from google.cloud import storage`: Cloud Storage ã¢ãžã¥ãŒã«ãã€ã³ããŒãããŸãã
- `storage.Client()`: 以åã«èšå®ããèªèšŒè³æ Œæ å ±ã䜿çšããŠãCloud Storage ã¯ã©ã€ã¢ã³ããªããžã§ã¯ããäœæããŸãã
- `client.bucket(BUCKET_NAME)`: æå®ããã Cloud Storage ãã±ãããžã®åç §ãååŸããŸãã
- `bucket.blob(OBJECT_NAME)`: æå®ãããååã§ãã±ããå ã« blob (ãªããžã§ã¯ã) ãäœæããŸãã
- `blob.upload_from_filename(FILE_PATH)`: ããŒã«ã«ãã¡ã€ã«ãã¹ãã Cloud Storage blob ã«ãã¡ã€ã«ãã¢ããããŒãããŸãã
äŸ: Cloud Storage ããã®ãã¡ã€ã«ã®ããŠã³ããŒã
from google.cloud import storage
# ãã±ããåããªããžã§ã¯ãåãããŒã«ã«ãã¡ã€ã«ãã¹ã«çœ®ãæããŸã
BUCKET_NAME = "your-bucket-name"
OBJECT_NAME = "remote/file.txt"
FILE_PATH = "/path/to/your/local/downloaded_file.txt"
client = storage.Client()
bucket = client.bucket(BUCKET_NAME)
blob = bucket.blob(OBJECT_NAME)
blob.download_to_filename(FILE_PATH)
print(f"ãã¡ã€ã« gs://{BUCKET_NAME}/{OBJECT_NAME} ã {FILE_PATH} ã«ããŠã³ããŒããããŸããã")
2. Compute Engine
Compute Engine ã¯ãGCP äžã®ä»®æ³ãã·ã³ (VM) ãæäŸããŸãã Python ã¯ã©ã€ã¢ã³ãã©ã€ãã©ãªã䜿çšããŠãCompute Engine ã€ã³ã¹ã¿ã³ã¹ã管çã§ããŸããããã«ã¯ãã€ã³ã¹ã¿ã³ã¹ã®äœæãèµ·åã忢ãåé€ãªã©ãå«ãŸããŸãã
äŸ: Compute Engine ã€ã³ã¹ã¿ã³ã¹ã®ãªã¹ã衚瀺
from google.cloud import compute_v1
# ãããžã§ã¯ã ID ãšãŸãŒã³ã«çœ®ãæããŸã
PROJECT_ID = "your-project-id"
ZONE = "us-central1-a"
client = compute_v1.InstancesClient()
request = compute_v1.ListInstancesRequest(
project=PROJECT_ID,
zone=ZONE
)
# ãªã¯ãšã¹ããè¡ã
pager = client.list(request=request)
print("ãããžã§ã¯ããšãŸãŒã³ã®ã€ã³ã¹ã¿ã³ã¹:")
# ã¬ã¹ãã³ã¹ãåŠçãã
for response in pager:
print(response)
説æ:
- `from google.cloud import compute_v1`: Compute Engine ã¢ãžã¥ãŒã« (v1 ããŒãžã§ã³) ãã€ã³ããŒãããŸãã å©çšå¯èœãªå Žåã¯ãããææ°ã®ããŒãžã§ã³ã䜿çšããããšãæ€èšããŠãã ããã
- `compute_v1.InstancesClient()`: Compute Engine ã¯ã©ã€ã¢ã³ããªããžã§ã¯ããäœæããŸãã
- `compute_v1.ListInstancesRequest()`: æå®ããããããžã§ã¯ããšãŸãŒã³ã®ã€ã³ã¹ã¿ã³ã¹ããªã¹ã衚瀺ããããã®ãªã¯ãšã¹ããäœæããŸãã
- `client.list(request=request)`: Compute Engine API ã«ãªã¯ãšã¹ããéä¿¡ããŸãã
- 次ã«ãã³ãŒãã¯ã¬ã¹ãã³ã¹ (pager ãªããžã§ã¯ã) ãå埩åŠçããåã€ã³ã¹ã¿ã³ã¹ã«é¢ããæ å ±ãåºåããŸãã
3. Cloud Functions
Cloud Functions ã¯ããµãŒããŒã¬ã¹å®è¡ç°å¢ãæäŸããŸãã Python ã¯ã©ã€ã¢ã³ãã©ã€ãã©ãªã䜿çšããŠãCloud Functions ããããã€ããã³ç®¡çã§ããŸãã
äŸ: Cloud Function ã®ããã〠(Google Cloud SDK ãå¿ èŠ)
Cloud Function ã®ãããã€ã«ã¯ãå€ãã®å ŽåãGoogle Cloud SDK (gcloud) ãçŽæ¥äœ¿çšããŸãããããè€éãªã·ããªãªã§ã¯ãPython ã¯ã©ã€ã¢ã³ãã©ã€ãã©ãªãä»ã㊠Cloud Functions API ã«ã¢ã¯ã»ã¹ã§ããŸãã ãã®äŸã§ã¯ãåºæ¬ç㪠gcloud ãããã€ã³ãã³ãã瀺ããŸãã ãŸããmain.py ãš requirements.txt ãäœæããŸãã
main.py (äŸ)
def hello_world(request):
return 'Hello, World!'
requirements.txt (äŸ)
functions-framework
ãããã€ã³ãã³ã:
gcloud functions deploy your-function-name --runtime python310 --trigger-http --entry-point hello_world
説æ:
- `gcloud functions deploy your-function-name`: æå®ãããååã§ Cloud Function ããããã€ããŸãã `your-function-name` ã颿°ã®ç®çã®ååã«çœ®ãæããŸãã
- `--runtime python310`: Python ã©ã³ã¿ã€ã ç°å¢ (äŸ: python310ãpython311) ãæå®ããŸãã ãµããŒããããŠããã©ã³ã¿ã€ã ãéžæããŠãã ããã
- `--trigger-http`: HTTP ãªã¯ãšã¹ãã«ãã£ãŠé¢æ°ãããªã¬ãŒãããããã«èšå®ããŸãã
- `--entry-point hello_world`: 颿°ãããªã¬ãŒããããšãã«å®è¡ãã颿°ãæå®ããŸãã ããã¯ã`main.py` ã§å®çŸ©ãããŠãã `hello_world` 颿°ã«å¯Ÿå¿ããŸãã
4. Cloud Run
Cloud Run ã䜿çšãããšãã³ã³ããåãããã¢ããªã±ãŒã·ã§ã³ããµãŒããŒã¬ã¹ç°å¢ã«ãããã€ã§ããŸãã Python ã¯ã©ã€ã¢ã³ãã©ã€ãã©ãªã䜿çšã㊠Cloud Run ãµãŒãã¹ã管çã§ããŸããããããã€ã¯ãGoogle Cloud SDK ãŸã㯠Terraform ã®ãããªã€ã³ãã©ã¹ãã©ã¯ãã£ã»ã¢ãºã»ã³ãŒãããŒã«ã䜿çšããŠè¡ãããããšããããããŸãã
äŸ: Cloud Run ãµãŒãã¹ã®ããã〠(Google Cloud SDK ãš Docker ãå¿ èŠ)
Cloud Run ã®ãããã€ã¯ãå€ãã®å ŽåãDockerfile ããå§ãŸããŸãã
Dockerfile (äŸ):
FROM python:3.10
WORKDIR /app
COPY requirements.txt .
RUN pip install -r requirements.txt
COPY . .
CMD ["gunicorn", "--bind", "0.0.0.0:8080", "main:app"]
main.py (äŸ) - æå°éã® Flask ã¢ããª
from flask import Flask
app = Flask(__name__)
@app.route("/")
def hello_world():
return "Hello from Cloud Run!"
if __name__ == "__main__":
app.run(debug=True, host='0.0.0.0', port=8080)
requirements.txt (äŸ):
flask
gunicorn
ãããã€ã³ãã³ã:
# Docker ã€ã¡ãŒãžããã«ããã
docker build -t gcr.io/your-project-id/cloud-run-image .
# ã€ã¡ãŒãžã Google Container Registry ã«ããã·ã¥ãã
docker push gcr.io/your-project-id/cloud-run-image
# Cloud Run ãµãŒãã¹ããããã€ãã
gcloud run deploy your-cloud-run-service \
--image gcr.io/your-project-id/cloud-run-image \
--platform managed \
--region us-central1 \
--allow-unauthenticated
説æ:
- `docker build`: Dockerfile ãã Docker ã€ã¡ãŒãžããã«ãããŸãã `gcr.io/your-project-id/cloud-run-image` ããç®çã®ã€ã¡ãŒãžåãš Google Container Registry ã®ãã¹ã«çœ®ãæããŸãã
- `docker push`: Docker ã€ã¡ãŒãžã Google Container Registry (GCR) ã«ããã·ã¥ããŸãã GCR ã§èªèšŒããããã« Docker ãæ§æããŠããå¿ èŠããããŸãã
- `gcloud run deploy`: Cloud Run ãµãŒãã¹ããããã€ããŸãã
- `--image`: ãµãŒãã¹ã«äœ¿çšãã Docker ã€ã¡ãŒãžãæå®ããŸãã
- `--platform managed`: ãµãŒãã¹ããã«ãããŒãžã Cloud Run ãã©ãããã©ãŒã ã«ãããã€ããããšãæå®ããŸãã
- `--region`: ãµãŒãã¹ããããã€ãããªãŒãžã§ã³ãæå®ããŸãã
- `--allow-unauthenticated`: èªèšŒãªãã§ãµãŒãã¹ãžã®ã¢ã¯ã»ã¹ãèš±å¯ããŸã (ãã¹ãç®ç)ã æ¬çªç°å¢ã§ã¯ãé©åãªèªèšŒãæ§æããå¿ èŠããããŸãã
5. Cloud SQL
Cloud SQL ã¯ãGCP äžã§ãããŒãžãã®ãªã¬ãŒã·ã§ãã«ããŒã¿ããŒã¹ãæäŸããŸãã Python ã¯ã©ã€ã¢ã³ãã©ã€ãã©ãª (ããã³ PostgreSQL çšã® `psycopg2` ã MySQL çšã® `pymysql` ã®ãããªããŒã¿ããŒã¹åºæã®ã©ã€ãã©ãª) ã䜿çšããŠãCloud SQL ã€ã³ã¹ã¿ã³ã¹ã«æ¥ç¶ãã管çã§ããŸãã
äŸ: Cloud SQL PostgreSQL ã€ã³ã¹ã¿ã³ã¹ãžã®æ¥ç¶
import psycopg2
# Cloud SQL ã€ã³ã¹ã¿ã³ã¹ã®æ¥ç¶åãããŒã¿ããŒã¹åããŠãŒã¶ãŒåããã¹ã¯ãŒãã«çœ®ãæããŸã
INSTANCE_CONNECTION_NAME = "your-project-id:your-region:your-instance-name"
DB_NAME = "your_database_name"
DB_USER = "your_username"
DB_PASS = "your_password"
try:
conn = psycopg2.connect(
f"host=/cloudsql/{INSTANCE_CONNECTION_NAME} dbname={DB_NAME} user={DB_USER} password={DB_PASS}"
)
print("Cloud SQL ãžã®æ¥ç¶ã«æåããŸãã!")
# ããã§ããŒã¿ããŒã¹æäœãå®è¡ããŸã (äŸ: ã¯ãšãªãå®è¡ãã)
cur = conn.cursor()
cur.execute("SELECT version();")
db_version = cur.fetchone()
print(f"ããŒã¿ããŒã¹ããŒãžã§ã³: {db_version}")
except Exception as e:
print(f"Cloud SQL ãžã®æ¥ç¶ãšã©ãŒ: {e}")
finally:
if conn:
cur.close()
conn.close()
print("æ¥ç¶ãéããããŸããã")
説æ:
- `import psycopg2`: Python çšã® PostgreSQL ã¢ããã¿ãŒã§ãã `psycopg2` ã©ã€ãã©ãªãã€ã³ããŒãããŸãã `pip install psycopg2-binary` ã䜿çšããŠã€ã³ã¹ããŒã«ããå¿ èŠããããŸãã
- `INSTANCE_CONNECTION_NAME`: ããã¯ãCloud SQL ã€ã³ã¹ã¿ã³ã¹ãžã®æ¥ç¶æ¹æ³ãæå®ããéèŠãªèå¥åã§ãã Google Cloud Console ã® Cloud SQL ã€ã³ã¹ã¿ã³ã¹ã®è©³çްã§ãã®å€ãèŠã€ããããšãã§ããŸãã
- `psycopg2.connect()` 颿°ã¯ãæå®ããããã©ã¡ãŒã¿ã䜿çšããŠããŒã¿ããŒã¹ãžã®æ¥ç¶ã確ç«ããŸãã
- 次ã«ãã³ãŒãã¯åçŽãªã¯ãšãªãå®è¡ããŠããŒã¿ããŒã¹ããŒãžã§ã³ãååŸããã³ã³ãœãŒã«ã«åºåããŸãã
- `finally` ãããã¯ã¯ããšã©ãŒãçºçããå Žåã§ããããŒã¿ããŒã¹æ¥ç¶ãé©åã«éããããããã«ããŸãã
Python ã§ GCP ã䜿çšããããã®ãã¹ããã©ã¯ãã£ã¹
Python ã§ GCP ã¢ããªã±ãŒã·ã§ã³ãéçºããéã«åŸãã¹ããã¹ããã©ã¯ãã£ã¹ã以äžã«ç€ºããŸãã
- ãµãŒãã¹ã¢ã«ãŠã³ãã䜿çšãã: èªèšŒã«ã¯åžžã«ãµãŒãã¹ã¢ã«ãŠã³ãã䜿çšããŸããç¹ã«æ¬çªç°å¢ã§ã¯ãåžžã«äœ¿çšããŸãã å¿ èŠãªæš©éã®ã¿ãä»äžããŸã (æå°æš©éã®åå)ã
- äŸåé¢ä¿ã管çãã: ã¢ããªã±ãŒã·ã§ã³ã®äŸåé¢ä¿ã管çããã«ã¯ã`requirements.txt` ãã¡ã€ã«ã䜿çšããŸãã ããã«ããããããã€ã®äžè²«æ§ã確ä¿ãããäŸåé¢ä¿ã®ç®¡çãç°¡çŽ åãããŸãã
- ãšã©ãŒãåŠçãã: äŸå€ãé©åã«åŠçããã¢ããªã±ãŒã·ã§ã³ã®ã¯ã©ãã·ã¥ãé²ãããã«ãé©åã«ãšã©ãŒåŠçãå®è£ ããŸãã ãšã©ãŒãçºçããå¯èœæ§ã®ããå Žæããã£ãããããããã°ã®ããã«ãã°ã«èšé²ããã«ã¯ãtry-except ãããã¯ã䜿çšããŸãã
- 广çã«ãã°ãèšé²ãã: ã¢ããªã±ãŒã·ã§ã³ã€ãã³ããšãšã©ãŒããã°ã«èšé²ããã«ã¯ãGCP ã® Cloud Logging ãµãŒãã¹ã䜿çšããŸãã ããã«ãããã¢ããªã±ãŒã·ã§ã³ã®åäœã«é¢ãã貎éãªæŽå¯ãåŸããããã©ãã«ã·ã¥ãŒãã£ã³ã°ã«åœ¹ç«ã¡ãŸãã
- ç°å¢å€æ°ã䜿çšãã: API ããŒãããŒã¿ããŒã¹èªèšŒæ å ±ãªã©ã®æ©å¯æ å ±ã¯ãç°å¢å€æ°ã«ä¿åããŸãã ããã«ãããã³ãŒããžã®ããŒãã³ãŒãã£ã³ã°ãé²ããã»ãã¥ãªãã£ãåäžãããŸãã
- ããã©ãŒãã³ã¹ãæé©åãã: GCP ã¢ããªã±ãŒã·ã§ã³ã®ããã©ãŒãã³ã¹ãåäžãããã«ã¯ããã£ãã·ã³ã°ãéåææäœããã®ä»ã®æé©åææ³ã䜿çšããŸãã ã³ã³ãã³ãé ä¿¡ã«ã¯ãCloud CDN ãªã©ã® GCP ãµãŒãã¹ã®äœ¿çšãæ€èšããŠãã ããã
- ã¢ããªã±ãŒã·ã§ã³ãç£èŠãã: ã¢ããªã±ãŒã·ã§ã³ã®æ£åžžæ§ãšããã©ãŒãã³ã¹ãç£èŠããã«ã¯ãGCP ã® Cloud Monitoring ãµãŒãã¹ã䜿çšããŸãã åé¡ãçºçããå Žåã«éç¥ãããããã«ãã¢ã©ãŒããèšå®ããŸãã
- ãããã€ãèªååãã: Terraform ãªã©ã®ã€ã³ãã©ã¹ãã©ã¯ãã£ã»ã¢ãºã»ã³ãŒãããŒã«ãŸãã¯ãããã€ãã€ãã©ã€ã³ã䜿çšããŠããããã€ããã»ã¹ãèªååããŸãã ããã«ãããäžè²«æ§ããããåçŸæ§ã®ãããããã€ãä¿èšŒãããŸãã
- é©å㪠GCP ãµãŒãã¹ãéžæãã: ã¢ããªã±ãŒã·ã§ã³ã®ããŒãºã«åã£ãé©å㪠GCP ãµãŒãã¹ãéžæããŸãã ã¹ã±ãŒã©ããªãã£ãã³ã¹ããéçšäžã®è€éããªã©ã®èŠçŽ ãèæ ®ããŠãã ããã ããšãã°ãCloud Functions ã¯ã€ãã³ãããªãã³ã®ã¿ã¹ã¯ã«é©ããŠãããCloud Run ã¯ã³ã³ããåãããã¢ããªã±ãŒã·ã§ã³ã®ãããã€ã«æé©ã§ãã
- ãªãœãŒã¹ãã¯ãªãŒã³ã¢ãããã: äžèŠãªã³ã¹ããçºçããªãããã«ãæªäœ¿çšã® GCP ãªãœãŒã¹ãå¿ ãã¯ãªãŒã³ã¢ããããŠãã ããã
- ã©ã€ãã©ãªãææ°ã®ç¶æ
ã«ä¿ã€: ãã°ä¿®æ£ãã»ãã¥ãªãã£ããããæ°æ©èœã®ã¡ãªããã享åããããã«ãPython ã©ã€ãã©ãªã宿çã«æŽæ°ããŸãã ããã±ãŒãžãæŽæ°ããã«ã¯ã`pip` ã䜿çšããŸã: `pip install --upgrade
`ã - ä»®æ³ç°å¢ã䜿çšãã: åãããžã§ã¯ãã®ä»®æ³ç°å¢ãäœæããŠãäŸåé¢ä¿ãåé¢ããããŸããŸãªãããžã§ã¯ãéã®ç«¶åãåé¿ããŸãã
ã°ããŒãã«ãªèæ ®äºé
ã°ããŒãã«ãªãŠãŒã¶ãŒã察象ãšãã GCP ã¢ããªã±ãŒã·ã§ã³ãéçºããå Žåã¯ã次ã®ç¹ãèæ ®ããŠãã ããã
- ããŒã¿ã®æåšå°: 察象å°åã«å¯ŸããããŒã¿ã®æåšå°èŠä»¶ãçè§£ããŸãã ãããã®èŠä»¶ã«æºæ ãã GCP ãªãŒãžã§ã³ãéžæããŸãã
- ã¬ã€ãã³ã·: ãŠãŒã¶ãŒã«å°ççã«è¿ããªãŒãžã§ã³ã«ã¢ããªã±ãŒã·ã§ã³ããããã€ããŠãã¬ã€ãã³ã·ãæå°éã«æããŸãã
- ããŒã«ã©ã€ãº: ããŸããŸãªèšèªãšå°åã«åãããŠãã¢ããªã±ãŒã·ã§ã³ã®ãŠãŒã¶ãŒã€ã³ã¿ãŒãã§ãŒã¹ãšã³ã³ãã³ããããŒã«ã©ã€ãºããŸãã
- éè²šãšæ¯æãåŠç: ã¢ããªã±ãŒã·ã§ã³ã«ééçãªååŒãå«ãŸããå Žåã¯ã察象å°åã§äœ¿çšãããŠããéè²šãšæ¯æãæ¹æ³ããµããŒãããŠããããšã確èªããŸãã
- æ³çããã³èŠå¶äžã®ã³ã³ãã©ã€ã¢ã³ã¹: ããŒã¿ãã©ã€ãã·ãŒæ³ (GDPR ãªã©) ã茞åºç®¡çãªã©ã察象å°åã®æ³çããã³èŠå¶èŠä»¶ãèªèããŠãã ããã
- ã¿ã€ã ãŸãŒã³: ç°ãªãå Žæã«ãããŠãŒã¶ãŒã«å¯ŸããŠãã¢ããªã±ãŒã·ã§ã³ãæ¥ä»ãšæå»ãæ£ç¢ºã«è¡šç€ºããããã«ãã¿ã€ã ãŸãŒã³ãæ£ããåŠçããŸãã `pytz` ãªã©ã®ã©ã€ãã©ãªã䜿çšããŠãã¿ã€ã ãŸãŒã³å€æã管çããŸãã
- æåçãªé æ ®: ã¢ããªã±ãŒã·ã§ã³ã®ãŠãŒã¶ãŒã€ã³ã¿ãŒãã§ãŒã¹ãšã³ã³ãã³ããèšèšããéã«ã¯ãæåçãªéãã«æ³šæããŠãã ããã
äžè¬çãªåé¡ã®ãã©ãã«ã·ã¥ãŒãã£ã³ã°
Python ãš GCP ã䜿çšããéã«çºçããå¯èœæ§ã®ããäžè¬çãªåé¡ãšããããã®ãã©ãã«ã·ã¥ãŒãã£ã³ã°æ¹æ³ã以äžã«ç€ºããŸãã
- èªèšŒãšã©ãŒ: ãµãŒãã¹ã¢ã«ãŠã³ãããŒãã¡ã€ã«ãæå¹ã§ããã`GOOGLE_APPLICATION_CREDENTIALS` ç°å¢å€æ°ãæ£ããèšå®ãããŠããããšã確èªããŸãã ãŸãããµãŒãã¹ã¢ã«ãŠã³ãã« GCP ãªãœãŒã¹ã«ã¢ã¯ã»ã¹ããããã®å¿ èŠãªæš©éãããããšã確èªããŠãã ããã
- ã¢ã¯ã»ã¹èš±å¯ãæåŠããããšã©ãŒ: ãµãŒãã¹ã¢ã«ãŠã³ããŸãã¯ãŠãŒã¶ãŒã¢ã«ãŠã³ãã«å²ãåœãŠãããŠãã IAM ããŒã«ãå確èªããŸãã å®è¡ããããšããŠããæäœã«å¿ èŠãªæš©éããããã«ä»äžãããŠããããšã確èªããŠãã ããã
- ã€ã³ããŒããšã©ãŒ: `pip` ã䜿çšããŠå¿ èŠãª Python ã©ã€ãã©ãªãã€ã³ã¹ããŒã«ãããŠããããšã確èªããŸãã ã©ã€ãã©ãªåãæ£ããããšãšãæ£ããããŒãžã§ã³ã䜿çšããŠããããšã確èªããŠãã ããã
- ãããã¯ãŒã¯æ¥ç¶ã®åé¡: VM ã€ã³ã¹ã¿ã³ã¹ã§ã¢ããªã±ãŒã·ã§ã³ãå®è¡ããŠããå Žåã¯ãVM ã«ã€ã³ã¿ãŒããããšã¢ã¯ã»ã¹ããããšããŠãã GCP ãµãŒãã¹ãžã®ãããã¯ãŒã¯æ¥ç¶ãããããšã確èªããŸãã ãã¡ã€ã¢ãŠã©ãŒã«ã«ãŒã«ãšãããã¯ãŒã¯æ§æã確èªããŸãã
- API ã¬ãŒãå¶é: GCP API ã«ã¯ãä¹±çšãé²ãããã®ã¬ãŒãå¶éããããŸãã ã¬ãŒãå¶éãè¶ ãããšããšã©ãŒãçºçããå¯èœæ§ããããŸãã API ã³ãŒã«ã®æ°ãæžããããã«ãææ°ããã¯ãªããŸãã¯ãã£ãã·ã³ã°ãå®è£ ããŸãã
çµè«
Python ãš Google Cloud Platform ã¯ãã¹ã±ãŒã©ãã«ã§ä¿¡é Œæ§ãé«ããã°ããŒãã«ã«ã¢ã¯ã»ã¹å¯èœãªã¢ããªã±ãŒã·ã§ã³ãæ§ç¯ããã³ãããã€ããããã®åŒ·åãªçµã¿åãããæäŸããŸãã ãã®ã¬ã€ãã§æŠèª¬ãããŠããã¬ã€ãã©ã€ã³ãšãã¹ããã©ã¯ãã£ã¹ã«åŸãããšã§ãPython ã¯ã©ã€ã¢ã³ãã©ã€ãã©ãªã广çã«æŽ»çšã㊠GCP ãµãŒãã¹ã«ã¢ã¯ã»ã¹ãã管çããã°ããŒãã«ãªãŠãŒã¶ãŒã«å¯ŸããŠé©æ°çãªãœãªã¥ãŒã·ã§ã³ãäœæã§ããŸãã
åžžã«ã»ãã¥ãªãã£ãåªå ããããã©ãŒãã³ã¹ãæé©åããã¢ããªã±ãŒã·ã§ã³ã®ã°ããŒãã«ãªåœ±é¿ãèæ ®ããŠãã ããã GCP ã§ Python ã䜿çšããã¯ã©ãŠãéçºã®æè¡ãç¿åŸããã«ã¯ãç¶ç¶çãªåŠç¿ãšå®éšãéèŠã§ãã