Skip to main content

Overview

The GCP Cloud Run provider executes code in fully managed containers on Google Cloud. It offers automatic scaling, pay-per-use billing, and integration with Google Cloud services.

Requirements

  • Google Cloud account with Cloud Run enabled
  • Service account with Cloud Run permissions
  • google-cloud-run package installed

Installation

# Install GCP dependencies
poetry install --extras cloud

# Or install directly
pip install google-cloud-run

Configuration

Environment Variables

# GCP Configuration
GOOGLE_APPLICATION_CREDENTIALS=/path/to/service-account.json
GCP_PROJECT_ID=your-project-id
GCP_REGION=us-central1

# Cloud Run Settings
CLOUD_RUN_SERVICE_PREFIX=nadoo-sandbox-
CLOUD_RUN_TIMEOUT=60
CLOUD_RUN_MEMORY=512Mi
CLOUD_RUN_CPU=1

Service Account Permissions

Required IAM roles:
  • roles/run.invoker - Invoke Cloud Run services
  • roles/run.developer - Deploy and manage services

Usage

Execute on Cloud Run

curl -X POST http://localhost:8002/api/v1/execute \
  -H "X-API-Key: your-api-key" \
  -H "Content-Type: application/json" \
  -d '{
    "code": "print(\"Hello from GCP!\")",
    "language": "python",
    "provider": "gcp_cloud_run"
  }'

Supported Languages

All Sandbox-supported languages work with Cloud Run:
LanguageContainer Image
Pythongcr.io/nadoo-sandbox/python:3.11
JavaScriptgcr.io/nadoo-sandbox/node:18
Gogcr.io/nadoo-sandbox/go:1.21
Javagcr.io/nadoo-sandbox/java:17

Architecture

┌─────────────────┐     ┌─────────────────┐     ┌─────────────────┐
│  Sandbox API    │────▶│   Cloud Run     │────▶│   Container     │
└─────────────────┘     │   Service       │     │   Instance      │
                        └─────────────────┘     └─────────────────┘

Performance Features

Minimum Instances

Keep instances warm to avoid cold starts:
CLOUD_RUN_MIN_INSTANCES=1

Concurrency

Configure concurrent requests per instance:
CLOUD_RUN_CONCURRENCY=10

Cost Optimization

Cloud Run charges based on:
  • CPU allocation time
  • Memory allocation time
  • Number of requests
Tips:
  • Use CPU allocation only during request processing
  • Set appropriate memory limits
  • Configure minimum instances based on traffic patterns

Failover Configuration

Set up Cloud Run as a failover provider:
EXECUTOR_DEFAULT_PROVIDER=local_docker
EXECUTOR_FALLBACK_CHAIN=local_docker,gcp_cloud_run,aws_lambda

Security

Cloud Run provides:
  • Automatic HTTPS
  • IAM-based access control
  • VPC connectivity options
  • Binary authorization for container images