arch-cloud

Compare original and translation side by side

🇺🇸

Original

English
🇨🇳

Translation

Chinese

arch-cloud

arch-cloud

Purpose

用途

This skill helps design and implement cloud architectures focused on serverless technologies (e.g., AWS Lambda, Cloudflare Workers), edge computing, CDNs, multi-region setups for high availability (HA), and Infrastructure as Code (IaC) using Terraform. It ensures scalable, cost-effective solutions by guiding precise configuration and deployment.
本技能可帮助设计和实现聚焦无服务器技术(如AWS Lambda、Cloudflare Workers)的云架构,涵盖边缘计算、CDN、用于高可用(HA)的多区域部署,以及使用Terraform的基础设施即代码(IaC)。它通过指导精准的配置与部署,确保解决方案具备可扩展性与成本效益。

When to Use

使用场景

Use this skill for applications needing low-latency edge delivery, serverless backends to reduce costs, multi-region redundancy for HA, or IaC automation. Examples include building global APIs, migrating to serverless, or optimizing CDN for media delivery. Avoid for simple monolithic apps or on-prem setups.
当应用需要低延迟边缘交付、无服务器后端以降低成本、多区域冗余实现高可用,或需要IaC自动化时,可使用本技能。适用场景包括构建全球API、迁移至无服务器架构、优化媒体交付CDN等。不适合简单单体应用或本地部署场景。

Key Capabilities

核心能力

  • Deploy serverless functions: Create AWS Lambda or Cloudflare Workers for event-driven processing.
  • Edge and CDN integration: Configure Cloudflare for edge caching and routing to reduce latency.
  • Multi-region HA patterns: Set up auto-failover with AWS Route 53 or Cloudflare load balancers.
  • IaC with Terraform: Define and provision cloud resources declaratively for reproducibility.
  • Cost optimization: Analyze patterns like using Lambda's reserved concurrency or Terraform's cost modules.
  • 部署无服务器函数:创建AWS Lambda或Cloudflare Workers用于事件驱动型处理。
  • 边缘计算与CDN集成:配置Cloudflare实现边缘缓存与路由,以降低延迟。
  • 多区域高可用架构模式:通过AWS Route 53或Cloudflare负载均衡器设置自动故障转移。
  • 基于Terraform的IaC:声明式定义并配置云资源,确保可重复性。
  • 成本优化:分析诸如使用Lambda预留并发或Terraform成本模块等模式。

Usage Patterns

使用模式

  1. Serverless API Deployment: Use Terraform to define a Lambda function and API Gateway, then deploy for quick scaling. Ensure multi-region setup by adding Route 53 for failover.
  2. Edge-Computing CDN Setup: Integrate Cloudflare Workers with a CDN to cache assets and handle requests at the edge, reducing origin server load. Combine with Terraform for automated provisioning across regions.
  1. 无服务器API部署:使用Terraform定义Lambda函数与API Gateway,然后部署以实现快速扩容。通过添加Route 53配置多区域部署,实现高可用。
  2. 边缘计算CDN搭建:将Cloudflare Workers与CDN集成,在边缘缓存资源并处理请求,减轻源服务器负载。结合Terraform实现跨区域自动化部署。

Common Commands/API

常用命令/API

  • Terraform Commands: Initialize with
    terraform init
    ; plan changes with
    terraform plan -out=plan.tfplan
    ; apply with
    terraform apply plan.tfplan
    . Use
    -var="region=us-east-1"
    for region-specific vars.
  • AWS CLI for Lambda: Create a function using
    aws lambda create-function --function-name myLambda --zip-file fileb://function.zip --handler index.handler --runtime nodejs14.x --role arn:aws:iam::123456789012:role/lambdaRole
    . Invoke with
    aws lambda invoke --function-name myLambda out.txt
    .
  • Cloudflare API Endpoints: Authenticate with
    $CLOUDFLARE_API_KEY
    env var. Create a Worker script via POST to
    https://api.cloudflare.com/client/v4/accounts/{account_id}/workers/scripts
    with JSON body:
    {"id": "myWorker", "content": "addEventListener('fetch', event => event.respondWith(new Response('Hello')));"}
    .
  • Config Formats: Use HCL in Terraform files, e.g.,
    resource "aws_lambda_function" "example" { function_name = "myFunction" runtime = "nodejs14.x" handler = "index.handler" filename = "function.zip" }
    . For API keys, set in env vars like
    export AWS_ACCESS_KEY_ID=$AWS_API_KEY
    .
  • Terraform命令:使用
    terraform init
    初始化;使用
    terraform plan -out=plan.tfplan
    规划变更;使用
    terraform apply plan.tfplan
    应用变更。使用
    -var="region=us-east-1"
    指定区域变量。
  • AWS Lambda CLI命令:使用
    aws lambda create-function --function-name myLambda --zip-file fileb://function.zip --handler index.handler --runtime nodejs14.x --role arn:aws:iam::123456789012:role/lambdaRole
    创建函数。使用
    aws lambda invoke --function-name myLambda out.txt
    调用函数。
  • Cloudflare API端点:通过环境变量
    $CLOUDFLARE_API_KEY
    进行身份验证。通过向
    https://api.cloudflare.com/client/v4/accounts/{account_id}/workers/scripts
    发送POST请求创建Worker脚本,请求体为JSON:
    {"id": "myWorker", "content": "addEventListener('fetch', event => event.respondWith(new Response('Hello')));"}
  • 配置格式:在Terraform文件中使用HCL格式,例如:
    resource "aws_lambda_function" "example" { function_name = "myFunction" runtime = "nodejs14.x" handler = "index.handler" filename = "function.zip" }
    。对于API密钥,通过环境变量设置,如
    export AWS_ACCESS_KEY_ID=$AWS_API_KEY

Integration Notes

集成说明

Integrate Terraform with CI/CD by running
terraform plan
in GitHub Actions via a workflow step:
run: terraform plan -out=plan.out
. For serverless, link Lambda to S3 triggers using Terraform:
resource "aws_lambda_permission" "allow_s3" { action = "lambda:InvokeFunction" function_name = aws_lambda_function.example.function_name principal = "s3.amazonaws.com" source_arn = aws_s3_bucket.example.arn }
. Use
$TERRAFORM_STATE_BUCKET
for remote state storage. For edge services, route traffic from Cloudflare to AWS via API Gateway by configuring Cloudflare's origin settings with the Gateway endpoint.
通过在GitHub Actions的工作流步骤中运行
terraform plan
,将Terraform与CI/CD集成:
run: terraform plan -out=plan.out
。对于无服务器架构,使用Terraform将Lambda与S3触发器关联:
resource "aws_lambda_permission" "allow_s3" { action = "lambda:InvokeFunction" function_name = aws_lambda_function.example.function_name principal = "s3.amazonaws.com" source_arn = aws_s3_bucket.example.arn }
。使用
$TERRAFORM_STATE_BUCKET
进行远程状态存储。对于边缘服务,通过配置Cloudflare的源站设置为API Gateway端点,将流量从Cloudflare路由至AWS API Gateway。

Error Handling

错误处理

Handle Terraform errors by checking
terraform plan
output for diffs and running
terraform apply --auto-approve
only after review; common issues include dependency cycles—fix by ordering resources in .tf files. For Lambda, catch invocation errors with
aws lambda invoke --function-name myLambda out.txt
and parse logs via CloudWatch: use
aws logs get-log-events --log-group /aws/lambda/myLambda --log-stream latest
. If Cloudflare API returns 401, verify
$CLOUDFLARE_API_KEY
and retry with exponential backoff. In code, wrap API calls in try-catch:
try { const response = await fetch('https://api.cloudflare.com/...'); } catch (error) { console.error(error.message); }
. Always validate region configs to avoid "region not supported" errors.
通过查看
terraform plan
输出的差异来处理Terraform错误,仅在审核后运行
terraform apply --auto-approve
;常见问题包括依赖循环——可通过在.tf文件中调整资源顺序来修复。对于Lambda,使用
aws lambda invoke --function-name myLambda out.txt
捕获调用错误,并通过CloudWatch解析日志:使用
aws logs get-log-events --log-group /aws/lambda/myLambda --log-stream latest
。如果Cloudflare API返回401错误,验证
$CLOUDFLARE_API_KEY
并使用指数退避策略重试。在代码中,将API调用包裹在try-catch块中:
try { const response = await fetch('https://api.cloudflare.com/...'); } catch (error) { console.error(error.message); }
。始终验证区域配置,避免出现"区域不支持"错误。

Concrete Usage Examples

具体使用示例

  1. Deploy a Multi-Region Serverless Function: First, set env vars:
    export AWS_REGION=us-east-1
    and
    export AWS_ACCESS_KEY_ID=$AWS_API_KEY
    . Create a Terraform file:
    resource "aws_lambda_function" "globalFn" { ... } resource "aws_route53_record" "failover" { zone_id = "Z1234567890" name = "api.example.com" type = "A" failover_routing_policy { ... } }
    . Run
    terraform init && terraform apply
    to deploy Lambda in us-east-1 and set up Route 53 for HA.
  2. Set Up Edge CDN with Workers: Authenticate Cloudflare with
    export CLOUDFLARE_API_KEY=your_key
    . Use Terraform to provision:
    resource "cloudflare_worker_script" "edgeScript" { name = "edgeWorker" content = "addEventListener('fetch', event => { ... }); } resource "cloudflare_zone" "example" { zone = "example.com" }
    . Deploy with
    terraform apply
    , then test by curling the Worker endpoint.
  1. 部署多区域无服务器函数:首先设置环境变量:
    export AWS_REGION=us-east-1
    export AWS_ACCESS_KEY_ID=$AWS_API_KEY
    。创建Terraform文件:
    resource "aws_lambda_function" "globalFn" { ... } resource "aws_route53_record" "failover" { zone_id = "Z1234567890" name = "api.example.com" type = "A" failover_routing_policy { ... } }
    。运行
    terraform init && terraform apply
    在us-east-1部署Lambda并配置Route 53实现高可用。
  2. 搭建带Workers的边缘CDN:通过
    export CLOUDFLARE_API_KEY=your_key
    完成Cloudflare身份验证。使用Terraform部署:
    resource "cloudflare_worker_script" "edgeScript" { name = "edgeWorker" content = "addEventListener('fetch', event => { ... }); } resource "cloudflare_zone" "example" { zone = "example.com" }
    。运行
    terraform apply
    部署,然后通过curl访问Worker端点进行测试。

Graph Relationships

关联关系

  • Related to: se-architecture cluster (e.g., 'design-patterns' for architectural blueprints, 'deployment-strategies' for rollout techniques).
  • Connected via tags: 'cloud' links to 'aws-services' skill; 'serverless' to 'lambda-optimizations'; 'terraform' to 'iac-best-practices'.
  • 关联技能:se-architecture集群(如用于架构蓝图的'design-patterns'、用于发布技术的'deployment-strategies')。
  • 标签关联:'cloud'关联'aws-services'技能;'serverless'关联'lambda-optimizations';'terraform'关联'iac-best-practices'。