在 Google Cloud NEXT ’26 中大赢:最佳云故事可赢取 1000 美元奖品

发布: (2026年4月29日 GMT+8 09:02)
4 分钟阅读
原文: Dev.to

Source: Dev.to

请提供您希望翻译的正文内容,我将为您翻译成简体中文。

🎯 第一步 – 选一个你用 Google Cloud 解决的真实问题

最好的故事都始于 痛点。想想:“在 GCP 之前,我们有 X 问题。使用 GCP 之后,我们实现了 Y。”

示例

  • 使用 Cloud Run + Cloud SQL 将 API 延迟从 2 秒降低到 200 毫秒
  • 使用 Cloud Functions 和 BigQuery 自动化每月报告
  • 使用 Cloud Storage + Pub/Sub + Cloud Functions 扩展图像处理

轮到你了 – 选择一个真实项目。本文指南中我们使用:

“我使用 Cloud Run、Firestore 和 Firebase Hosting 构建了一个无服务器的 URL 缩短服务——相比 EC2 节省了 70 % 成本。”

💻 第 2 步 – 构建并记录你的项目(含代码)

1. 设置你的环境

# Install Google Cloud CLI
curl https://sdk.cloud.google.com | bash
gcloud init

# Enable required APIs
gcloud services enable run.googleapis.com
gcloud services enable firestore.googleapis.com
gcloud services enable cloudbuild.googleapis.com

2. 创建 Flask 应用 (main.py)

from flask import Flask, request, jsonify, redirect
from google.cloud import firestore
import string, random, os
import logging
import google.cloud.logging

app = Flask(__name__)
db = firestore.Client()

# Enable Cloud Logging
logging_client = google.cloud.logging.Client()
logging_client.setup_logging()

def generate_short_id(length=6):
    return ''.join(random.choices(string.ascii_letters + string.digits, k=length))

@app.route('/shorten', methods=['POST'])
def shorten():
    logging.info("Shorten request received")
    data = request.get_json()
    long_url = data.get('url')
    if not long_url:
        return jsonify({'error': 'URL is required'}), 400

    short_id = generate_short_id()
    doc_ref = db.collection('urls').document(short_id)
    doc_ref.set({'long_url': long_url})

    logging.info(f"Generated short ID: {short_id}")
    return jsonify({'short_url': f"https://your-domain.com/{short_id}"}), 201

@app.route('/')
def redirect_url(short_id):
    doc_ref = db.collection('urls').document(short_id)
    doc = doc_ref.get()
    if doc.exists:
        return redirect(doc.to_dict()['long_url'])
    else:
        return "Not found", 404

if __name__ == '__main__':
    app.run(debug=True, host='0.0.0.0', port=int(os.getenv('PORT', 8080)))

3. 添加 requirements.txt

Flask==2.3.3
google-cloud-firestore==2.13.0
google-cloud-logging==3.5.0

4. 创建 Dockerfile

FROM python:3.11-slim

WORKDIR /app
COPY requirements.txt .
RUN pip install --no-cache-dir -r requirements.txt

COPY . .

CMD ["python", "main.py"]

🚀 第三步 – 部署到 Google Cloud Run

1. 构建并部署

# Set your project ID
gcloud config set project YOUR_PROJECT_ID

# Build and deploy
gcloud run deploy url-shortener \
  --source . \
  --platform managed \
  --region us-central1 \
  --allow-unauthenticated

输出: 您将收到类似 https://url-shortener-abcd-uc.a.run.app 的公共 URL。

2. 测试 API

curl -X POST https://url-shortener-abcd-uc.a.run.app/shorten \
  -H "Content-Type: application/json" \
  -d '{"url": "https://dev.to"}'

预期响应

{
  "short_url": "https://your-domain.com/aB3x9k"
}

访问返回的 short_url 将会重定向到原始站点。

📊 Step 4 – Add Monitoring (Bonus Points!)

Observability strengthens a submission. The example above already integrates Cloud Logging. After deploying, view logs in the Cloud Console Logs Viewer.

🏆 第5步 – 撰写你的案例(模板)

标题

我如何在 GCP 上构建无服务器 URL 缩短服务 — 每月 $5

问题

描述你遇到的痛点(例如,基于 EC2 的方案成本高、可扩展性差)。

解决方案

解释架构(Cloud Run、Firestore、Firebase Hosting)以及它为何能够解决该问题。

实施

包含代码片段、部署步骤以及你使用的任何 CI/CD 流水线。

结果

量化改进(成本降低、延迟、可扩展性)。

经验教训与最佳实践

分享挑战、优化措施以及给其他人的建议。

0 浏览
Back to Blog

相关文章

阅读更多 »