arch-cloud について
arch-cloudは、サーバーレス、エッジコンピューティング、TerraformによるIaCを中心としたクラウドアーキテクチャ設計スキルです。低遅延またはマルチリージョンのサービスを構築するチームを対象としています。
主な機能
- 01LambdaとWorkersのデプロイ
- 02エッジキャッシュとルーティングの設定
- 03マルチリージョンのフェイルオーバー設計
- 04Terraformによるリソース構成
- 05クラウドコストパターンの分析
活用シーン
- 01サーバーレスAPIのデプロイ
- 02マルチリージョン冗長性の追加
- 03エッジCDNでのメディア配信
- 04クラウドリソース構成の自動化
インストール
コマンドをコピーしてターミナルで実行します。
npx skills add https:/ / github.com/ alphaonedev/ openclaw-graph --skill arch-cloudインストール後、Claude Code で/arch-cloudを入力して読み込まれたか確認します。
詳細
arch-cloud
目的
このスキルは、サーバーレス技術(AWS Lambda、Cloudflare Workers など)、エッジコンピューティング、CDN、高可用性(HA)を実現するマルチリージョン構成、Terraform を使用した Infrastructure as Code(IaC)を中心とするクラウドアーキテクチャの設計と実装を支援します。正確な設定とデプロイをガイドし、スケーラブルで費用対効果の高いソリューションを実現します。
使用する場面
低レイテンシーのエッジ配信、コスト削減を目的としたサーバーレスバックエンド、HA のためのマルチリージョン冗長化、IaC による自動化が必要なアプリケーションに使用します。グローバル API の構築、サーバーレスへの移行、メディア配信用 CDN の最適化などが例です。シンプルなモノリシックアプリやオンプレミス環境には適していません。
主な機能
- サーバーレス関数のデプロイ:イベント駆動型の処理に AWS Lambda または Cloudflare Workers を作成します。
- エッジと CDN の統合:エッジキャッシュとルーティングのために Cloudflare を設定し、レイテンシーを削減します。
- マルチリージョン HA パターン:AWS Route 53 または Cloudflare ロードバランサーを使用して自動フェイルオーバーを設定します。
- Terraform による IaC:再現性を確保できるよう、クラウドリソースを宣言的に定義してプロビジョニングします。
- コスト最適化:Lambda の予約済み同時実行数や Terraform のコストモジュールを使用するパターンなどを分析します。
使用パターン
- サーバーレス API のデプロイ:Terraform を使用して Lambda 関数と API Gateway を定義し、迅速にスケールできるようデプロイします。フェイルオーバー用に Route 53 を追加し、マルチリージョン構成にします。
- エッジコンピューティング CDN の設定:Cloudflare Workers を CDN と統合し、アセットをキャッシュしてエッジでリクエストを処理することで、オリジンサーバーの負荷を軽減します。Terraform と組み合わせて、リージョン間のプロビジョニングを自動化します。
よく使うコマンド/API
- Terraform コマンド:
terraform initで初期化し、terraform plan -out=plan.tfplanで変更を計画してから、terraform apply plan.tfplanで適用します。リージョン固有の変数には-var="region=us-east-1"を使用します。 - Lambda 用 AWS 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環境変数で認証します。JSON ボディ{"id": "myWorker", "content": "addEventListener('fetch', event => event.respondWith(new Response('Hello')));"}を指定して、https://api.cloudflare.com/client/v4/accounts/{account_id}/workers/scriptsに POST し、Worker スクリプトを作成します。 - 設定形式: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のように環境変数に設定します。
統合に関する注意
ワークフローのステップで run: terraform plan -out=plan.out を実行し、GitHub Actions で terraform plan を実行して Terraform を CI/CD と統合します。サーバーレスでは、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 のオリジン設定で Gateway エンドポイントを指定し、Cloudflare から API Gateway 経由で AWS にトラフィックをルーティングします。
エラー処理
Terraform のエラーに対処するには、terraform plan の出力を確認して差分を把握し、内容をレビューしてから 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); }。「region not supported」エラーを避けるため、リージョン設定を必ず検証してください。
具体的な使用例
- マルチリージョンのサーバーレス関数をデプロイする:まず、環境変数を設定します:
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 を設定します。 - 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でデプロイし、Worker エンドポイントに curl を実行してテストします。
グラフの関係
- 関連先:se-architecture クラスター(例:アーキテクチャの設計図を提供する「design-patterns」、ロールアウト手法を提供する「deployment-strategies」)。
- タグによる関連付け:「cloud」は「aws-services」スキルに、「serverless」は「lambda-optimizations」に、「terraform」は「iac-best-practices」に関連付けられています。