インフラ・DevOps
Fakecloud: 統合テスト用のローカルAWSクラウドエミュレーター
Fakecloud: Local AWS cloud emulator for integration tests (fakecloud.dev)
要約
Fakecloudは、ローカル環境でAWSクラウドの動作をエミュレートするツールです。通常のAWSクライアントやIaCツールを使用しながら、完全にローカルで開発・テストを行うことができます。106のAWSサービスをサポートし、高い互換性を誇ります。アカウントや認証トークン、有料プランなしでコア開発フローをローカルに保てる点が特徴です。
全文翻訳
fakecloud
統合テスト用のローカルAWSクラウドエミュレーター。
通常のAWSクライアントでアプリを実行し、完全にローカルに留まり、テストでより深い可視性が必要な場合はfakecloud SDKを使用します。
106サービス。7,543オペレーション。249,449/249,449 Smithyバリアントが合格 — 真の100%準拠。
はじめに
なぜfakecloudなのか?
fakecloudは、インフラストラクチャのように動作するローカルAWS環境を提供し、モックではありません。アプリは通常のAWS SDK、CLI、IaCツールを使用します。現在のLocalStack Communityセットアップとは異なり、コア開発フローをローカルに保つためだけに、アカウント、認証トークン、または有料プランは必要ありません。
SDKはワークフローをより良くしますが、狭くしません。fakecloudを起動し、実際にデプロイするコードを実行し、後でメール/メッセージ/呼び出しを検査し、オンデマンドで発生する非同期AWSスタイルの動作を強制します。
リアルなローカルテストのために構築
アプリのためのリアルなAPI、テストのための目的構築されたツール。
ワークフロー
アプリが実際に行うことをテストする
localhostに対して通常のAWSクライアントを使用し、ポーリング、フィクスチャ、またはプライベートテストフックを組み合わせる代わりに、fakecloudで効果を検証します。
SDK
ファーストパーティのテストクライアント
TypeScript、Python、Go、PHP、Java、Rust、.NET SDKは、リセット、アサーション、およびアプリが通常のAWS APIを使用した後の非同期プロセッサの手動制御のために/_fakecloud/*エンドポイントをラップします。
カバレッジ
106 AWSサービス
S3、SQS、SNS、EventBridge、EventBridge Pipes、EventBridge Scheduler、Lambda、EC2、DynamoDB、IAM、STS、Organizations、SSM、Secrets Manager、CloudWatch Logs、CloudWatch(メトリクスとアラーム)、KMS、CloudFormation、Cloud Control API、SES、Cognito User Pools、Cognito Identity、Kinesis、Firehose、RDS、RDS Data API、Aurora DSQL、Resource Groups、Resource Groups Tagging API、ElastiCache、MemoryDB、EKS、Cloud Map、Step Functions、API Gateway v1 (REST)、API Gateway v2 (HTTP)、Bedrock、Bedrock Agent、Bedrock Agent Runtime、Bedrock Runtime、ECR、ECS、Elastic Load Balancing v2、CloudFront、Route 53、WAF v2、Application Auto Scaling、Athena、ACM、Glue、その他。
テスト済み
準拠テスト済み
実装されたすべての7,543のAPIオペレーション全体で真の100%準拠:249,449/249,449のSmithyモデル生成テストバリアントがコミットごとに合格し、公式AWS SDKに対するエンドツーエンドテストによってバックアップされています。
実際の動作
クロスサービスフローが配線されています
30以上のサービス間統合:S3通知、SNSファンアウト、EventBridgeターゲット、DynamoDBストリーム、CloudWatch Logsサブスクリプション、Cognitoトリガー、Step Functionsタスク統合、API Gateway → Lambdaなど — すべてが実際のサービスインタラクションを実行します。
シンプル
認証不要、ロックインなし、有料プランなし
単一のバイナリまたはDockerイメージを実行し、任意のダミークレデンシャルを使用し、誰かのプラットフォームにサインインすることなく、ワークフロー全体をローカルに保ちます。
テストアサーション用のSDK
アプリでAWS SDKを使い続けてください。エミュレーター自体の上に可視性と制御が必要な場合は、fakecloud SDKを使用してください。
TypeScript
npm install fakecloud
SESメール、SNSメッセージ、SQSキュー、Lambda呼び出し、Cognito確認コードなどを検査します。
npmで表示
Python
pip install fakecloud
pytestまたはアプリレベルの統合テスト用の非同期および同期クライアント。同じイントロスペクションとシミュレーションカバレッジを備えています。
pypiで表示
Go
get github.com/faiscadev/fakecloud/sdks/go
リセット、イベント履歴、SESインバウンドシミュレーション、およびその他のfakecloudテストサーフェス用のコンテキストフレンドリーなヘルパー。
pkg.go.devで表示
Rust
cargo add fakecloud-sdk
リセット、状態検査、fakecloudイントロスペクションサーフェスへの直接アクセスが必要なテスト用のネイティブRustクライアント。
crates.ioで表示
クイックスタート
fakecloudを起動し、AWSクライアントをlocalhostに向け、何が起こったかをアサートします。
# インストール(CargoまたはDockerは不要)
$ curl -fsSL https://fakecloud.dev/install.sh | bash
# または: brew install fakecloud
$ fakecloud
# アプリはlocalhostに対して通常のAWS SDKを使用します
$ aws --endpoint-url http://localhost:4566 sqs create-queue \
--queue-name my-queue
# テストはfakecloud SDKを通じて状態を検査できます
$ npm install fakecloud
比較
リアルなAWS APIとアカウント要件なしの完全にローカルなワークフローが必要な場合は、fakecloudがそのパスのために構築されています。SDKは追加のテスト上の利点であり、そのポジショニングの代替ではありません。
fakecloud
LocalStack Community
ライセンス
AGPL-3.0
プロプライエタリ
認証が必要
いいえ
はい(アカウント+トークン)
商用利用
無料
有料プランのみ
Dockerが必要
いいえ(スタンドアロンバイナリ)
はい
起動時間
約300ms
約3秒
アイドルメモリ
約10 MiB
約150 MiB
インストールサイズ
約19 MBバイナリ
約1 GB Dockerイメージ
AWSサービス
106サービス(真の100%準拠)
30+(Community以降は有料のみ)
テストアサーションSDK
TypeScript、Python、Go、PHP、Java、Rust、.NET
Python、Java
Cognito User Pools
132オペレーション
有料のみ
SES v2
116オペレーション
有料のみ
SESインバウンドメール
実際の受信ルールアクション
保存されているが実行されていない
RDS
163オペレーション、PostgreSQL/MySQL/MariaDB(Docker経由)、PostgreSQL aws_lambda拡張機能
有料のみ
ElastiCache
75オペレーション、RedisおよびValkey(Docker経由)
有料のみ
MemoryDB
45オペレーション、フルコントロールプレーン
有料のみ
EKS
クラスターコントロールプレーン(バッチ1)
有料のみ
API Gateway v2
103オペレーション、HTTP API + 開発者ポータル + JWT/Lambdaオーソライザー
有料のみ
Bedrock
4つのAPI(Bedrock + Bedrock Runtime + Bedrock Agent + Bedrock Agent Runtime)にわたる216オペレーション
利用不可
サポートされているサービス
実装されたすべてのAPIは、準拠および動作テストでカバーされており、サービスミックスはローカル開発および統合テストに合わせて調整されています。
S3
RESTプロトコル · XML
SQS
Queryプロトコル · XML
SNS
Queryプロトコル · XML
EventBridge
JSONプロトコル
EventBridge Scheduler
JSONプロトコル
SSM
JSONプロトコル
DynamoDB
JSONプロトコル
IAM
Queryプロトコル
STS
Queryプロトコル
Lambda
RESTプロトコル · JSON
Secrets Manager
JSONプロトコル
CloudWatch Logs
JSONプロトコル
KMS
JSONプロトコル
CloudFormation
Queryプロトコル
SES
REST + Queryプロトコル
Cognito User Pools
JSONプロトコル
Kinesis
JSONプロトコル
RDS
Queryプロトコル
ElastiCache
Queryプロトコル
MemoryDB
JSON 1.1プロトコル
EKS
REST-JSONプロトコル
Step Functions
JSONプロトコル
API Gateway v1 (REST)
RESTプロトコル · JSON
API Gateway v2
RESTプロトコル · JSON
Bedrock
RESTプロトコル · JSON
Bedrock Runtime
RESTプロトコル · JSON
Bedrock Agent
RESTプロトコル · JSON
Bedrock Agent Runtime
RESTプロトコル · JSON
ECR
RESTプロトコル · JSON
ECS
JSONプロトコル
Elastic Load Balancing v2
Queryプロトコル
CloudFront
RESTプロトコル · XML
Route 53
RESTプロトコル · XML
ACM
JSONプロトコル
ACM PCA
JSONプロトコル
Application Auto Scaling
JSONプロトコル
WAF v2
JSONプロトコル
Athena
JSONプロトコル
Glue
JSONプロトコル
Cognito Identity
JSONプロトコル
CloudWatch (Metrics & Alarms)
Queryプロトコル
Firehose
JSONプロトコル
EC2
Queryプロトコル · XML
Organizations
JSONプロトコル
Cloud Control API
JSONプロトコル
EventBridge Pipes
RESTプロトコル · JSON
RDS Data API
RESTプロトコル · JSON
Aurora DSQL
RESTプロトコル · JSON
Resource Groups
RESTプロトコル · JSON
Resource Groups Tagging API
JSONプロトコル
fakecloudを使用しているユーザー
初期段階であり、リストは始まったばかりです。CI、ローカル開発、またはテストでfakecloudを使用していますか?GitHubでチームを追加してください。以下の数字はパッケージダウンロード数とスター数であり、ユーザー数ではありません。採用者を見る · チームを追加する