arch-cloud
Compare original and translation side by side
🇺🇸
Original
English🇨🇳
Translation
Chinesearch-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
使用模式
- 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.
- 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.
- 无服务器API部署:使用Terraform定义Lambda函数与API Gateway,然后部署以实现快速扩容。通过添加Route 53配置多区域部署,实现高可用。
- 边缘计算CDN搭建:将Cloudflare Workers与CDN集成,在边缘缓存资源并处理请求,减轻源服务器负载。结合Terraform实现跨区域自动化部署。
Common Commands/API
常用命令/API
- Terraform Commands: Initialize with ; plan changes with
terraform init; apply withterraform plan -out=plan.tfplan. Useterraform apply plan.tfplanfor region-specific vars.-var="region=us-east-1" - AWS CLI for Lambda: Create a function using . Invoke with
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 Endpoints: Authenticate with env var. Create a Worker script via POST to
$CLOUDFLARE_API_KEYwith JSON body:https://api.cloudflare.com/client/v4/accounts/{account_id}/workers/scripts.{"id": "myWorker", "content": "addEventListener('fetch', event => event.respondWith(new Response('Hello')));"} - Config Formats: Use HCL in Terraform files, e.g., . For API keys, set in env vars like
resource "aws_lambda_function" "example" { function_name = "myFunction" runtime = "nodejs14.x" handler = "index.handler" filename = "function.zip" }.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发送POST请求创建Worker脚本,请求体为JSON:https://api.cloudflare.com/client/v4/accounts/{account_id}/workers/scripts。{"id": "myWorker", "content": "addEventListener('fetch', event => event.respondWith(new Response('Hello')));"} - 配置格式:在Terraform文件中使用HCL格式,例如:。对于API密钥,通过环境变量设置,如
resource "aws_lambda_function" "example" { function_name = "myFunction" runtime = "nodejs14.x" handler = "index.handler" filename = "function.zip" }。export AWS_ACCESS_KEY_ID=$AWS_API_KEY
Integration Notes
集成说明
Integrate Terraform with CI/CD by running in GitHub Actions via a workflow step: . For serverless, link Lambda to S3 triggers using Terraform: . Use 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.
terraform planrun: terraform plan -out=plan.outresource "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通过在GitHub Actions的工作流步骤中运行,将Terraform与CI/CD集成:。对于无服务器架构,使用Terraform将Lambda与S3触发器关联:。使用进行远程状态存储。对于边缘服务,通过配置Cloudflare的源站设置为API Gateway端点,将流量从Cloudflare路由至AWS API Gateway。
terraform planrun: terraform plan -out=plan.outresource "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_BUCKETError Handling
错误处理
Handle Terraform errors by checking output for diffs and running only after review; common issues include dependency cycles—fix by ordering resources in .tf files. For Lambda, catch invocation errors with and parse logs via CloudWatch: use . If Cloudflare API returns 401, verify and retry with exponential backoff. In code, wrap API calls in try-catch: . Always validate region configs to avoid "region not supported" errors.
terraform planterraform apply --auto-approveaws lambda invoke --function-name myLambda out.txtaws logs get-log-events --log-group /aws/lambda/myLambda --log-stream latest$CLOUDFLARE_API_KEYtry { const response = await fetch('https://api.cloudflare.com/...'); } catch (error) { console.error(error.message); }通过查看输出的差异来处理Terraform错误,仅在审核后运行;常见问题包括依赖循环——可通过在.tf文件中调整资源顺序来修复。对于Lambda,使用捕获调用错误,并通过CloudWatch解析日志:使用。如果Cloudflare API返回401错误,验证并使用指数退避策略重试。在代码中,将API调用包裹在try-catch块中:。始终验证区域配置,避免出现"区域不支持"错误。
terraform planterraform apply --auto-approveaws lambda invoke --function-name myLambda out.txtaws logs get-log-events --log-group /aws/lambda/myLambda --log-stream latest$CLOUDFLARE_API_KEYtry { const response = await fetch('https://api.cloudflare.com/...'); } catch (error) { console.error(error.message); }Concrete Usage Examples
具体使用示例
- Deploy a Multi-Region Serverless Function: First, set env vars: and
export AWS_REGION=us-east-1. Create a Terraform file:export AWS_ACCESS_KEY_ID=$AWS_API_KEY. Runresource "aws_lambda_function" "globalFn" { ... } resource "aws_route53_record" "failover" { zone_id = "Z1234567890" name = "api.example.com" type = "A" failover_routing_policy { ... } }to deploy Lambda in us-east-1 and set up Route 53 for HA.terraform init && terraform apply - Set Up Edge CDN with Workers: Authenticate Cloudflare with . Use Terraform to provision:
export CLOUDFLARE_API_KEY=your_key. Deploy withresource "cloudflare_worker_script" "edgeScript" { name = "edgeWorker" content = "addEventListener('fetch', event => { ... }); } resource "cloudflare_zone" "example" { zone = "example.com" }, then test by curling the Worker endpoint.terraform apply
- 部署多区域无服务器函数:首先设置环境变量:和
export AWS_REGION=us-east-1。创建Terraform文件:export AWS_ACCESS_KEY_ID=$AWS_API_KEY。运行resource "aws_lambda_function" "globalFn" { ... } resource "aws_route53_record" "failover" { zone_id = "Z1234567890" name = "api.example.com" type = "A" failover_routing_policy { ... } }在us-east-1部署Lambda并配置Route 53实现高可用。terraform init && terraform apply - 搭建带Workers的边缘CDN:通过完成Cloudflare身份验证。使用Terraform部署:
export CLOUDFLARE_API_KEY=your_key。运行resource "cloudflare_worker_script" "edgeScript" { name = "edgeWorker" content = "addEventListener('fetch', event => { ... }); } resource "cloudflare_zone" "example" { zone = "example.com" }部署,然后通过curl访问Worker端点进行测试。terraform apply
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'。