gcp-expert

📁 personamanagmentlayer/pcl 📅 Jan 24, 2026
0
总安装量
20
周安装量
安装命令
npx skills add https://github.com/personamanagmentlayer/pcl --skill gcp-expert

Agent 安装分布

opencode 15
gemini-cli 14
claude-code 14
codex 13
antigravity 12
github-copilot 11

Skill 文档

Google Cloud Platform Expert

Expert guidance for Google Cloud Platform services and cloud-native architecture.

Core Concepts

  • Compute Engine, App Engine, Cloud Run
  • Cloud Functions (serverless)
  • Cloud Storage
  • BigQuery (data warehouse)
  • Firestore (NoSQL database)
  • Pub/Sub (messaging)
  • Google Kubernetes Engine (GKE)

gcloud CLI

# Initialize
gcloud init

# Create Compute Engine instance
gcloud compute instances create my-instance \
  --zone=us-central1-a \
  --machine-type=e2-medium \
  --image-family=ubuntu-2004-lts \
  --image-project=ubuntu-os-cloud

# Deploy App Engine
gcloud app deploy

# Create Cloud Storage bucket
gsutil mb gs://my-bucket-name/

# Upload file
gsutil cp myfile.txt gs://my-bucket-name/

Cloud Functions

import functions_framework
from google.cloud import firestore

@functions_framework.http
def hello_http(request):
    request_json = request.get_json(silent=True)
    name = request_json.get('name') if request_json else 'World'

    return f'Hello {name}!'

@functions_framework.cloud_event
def hello_pubsub(cloud_event):
    import base64
    data = base64.b64decode(cloud_event.data["message"]["data"]).decode()
    print(f'Received: {data}')

BigQuery

from google.cloud import bigquery

client = bigquery.Client()

# Query
query = """
    SELECT name, COUNT(*) as count
    FROM `project.dataset.table`
    WHERE date >= '2024-01-01'
    GROUP BY name
    ORDER BY count DESC
    LIMIT 10
"""

query_job = client.query(query)
results = query_job.result()

for row in results:
    print(f"{row.name}: {row.count}")

# Load data
dataset_id = 'my_dataset'
table_id = 'my_table'
table_ref = client.dataset(dataset_id).table(table_id)

job_config = bigquery.LoadJobConfig(
    source_format=bigquery.SourceFormat.CSV,
    skip_leading_rows=1,
    autodetect=True
)

with open('data.csv', 'rb') as source_file:
    job = client.load_table_from_file(source_file, table_ref, job_config=job_config)

job.result()

Firestore

from google.cloud import firestore

db = firestore.Client()

# Create document
doc_ref = db.collection('users').document('user1')
doc_ref.set({
    'name': 'John Doe',
    'email': 'john@example.com',
    'age': 30
})

# Query
users_ref = db.collection('users')
query = users_ref.where('age', '>=', 18).limit(10)

for doc in query.stream():
    print(f'{doc.id} => {doc.to_dict()}')

# Real-time listener
def on_snapshot(doc_snapshot, changes, read_time):
    for doc in doc_snapshot:
        print(f'Received document: {doc.id}')

doc_ref.on_snapshot(on_snapshot)

Pub/Sub

from google.cloud import pubsub_v1

# Publisher
publisher = pubsub_v1.PublisherClient()
topic_path = publisher.topic_path('project-id', 'topic-name')

data = "Hello World".encode('utf-8')
future = publisher.publish(topic_path, data)
print(f'Published message ID: {future.result()}')

# Subscriber
subscriber = pubsub_v1.SubscriberClient()
subscription_path = subscriber.subscription_path('project-id', 'subscription-name')

def callback(message):
    print(f'Received: {message.data.decode("utf-8")}')
    message.ack()

streaming_pull_future = subscriber.subscribe(subscription_path, callback=callback)

Best Practices

  • Use service accounts
  • Implement IAM properly
  • Use Cloud Storage lifecycle policies
  • Monitor with Cloud Monitoring
  • Use managed services
  • Implement auto-scaling
  • Optimize BigQuery costs

Anti-Patterns

❌ No IAM policies ❌ Storing credentials in code ❌ Ignoring costs ❌ Single region deployments ❌ No data backup ❌ Overly broad permissions

Resources