kumo - Goで書かれた軽量なAWSサービスエミュレーター
(github.com/sivchari)- ローカル開発やCI/CDテストで、実際のAWSがなくても素早く互換環境を構築可能
- 単一バイナリで軽量にテスト環境を用意でき、Dockerベースでの実行にも対応
- 認証なしで動作するため、自動化パイプラインでAWS認証情報を用意する負担を減らせる
- 76のAWSサービスを幅広くサポートし、S3、SQS、DynamoDB、Lambda、IAM、CloudWatch、ECS、RDSといった主要領域をまとめて扱える
- デフォルトでは
localhost:4566で動作する ローカルAWS互換エンドポイント KUMO_DATA_DIRを設定すると、サービスごとのJSONファイルによる 任意のデータ永続化 が可能で、未設定時は クリーンなインメモリ実行- すべてのリクエストを 構造化ログフィールド とともに記録
- INFO: HTTPメソッド、パス、ステータスコード、レイテンシ、リクエストID、APIターゲット情報など
- DEBUG: リクエスト本文全体 まで記録するため、リクエストペイロード自体を確認したいデバッグ作業に便利
/kumo/配下に 追加のテスト用エンドポイント を提供- AWS公式APIの一部ではないが、テスト中のアプリケーション動作を検証するのに有用
-
SES v2送信メールの確認
GET /kumo/ses/v2/sent-emailsにより、SES v2SendEmailAPI で送信されたメール一覧を取得- レスポンスには MessageId、送信元アドレス、宛先、件名、本文、送信時刻などを含む
-
Pinpoint SMS Voice v2送信メッセージの確認
GET /kumo/pinpointsmsvoicev2/sent-messagesにより、SendTextMessageAPI で送信されたSMS一覧を取得可能- レスポンスには MessageId、宛先電話番号、送信者識別子、メッセージ本文、送信時刻などを含む
- メール・SMS送信機能をテストする際、外部サービスに依存せず 結果検証 を行うのに特に便利
- MIT License
対応サービス
- 合計 76のAWSサービス をサポート
-
ストレージ
- S3、S3 Control、S3 Tables、DynamoDB、ElastiCache、MemoryDB、Glacier、EBS に対応
-
コンピュート
- Lambda、Batch、EC2、Elastic Beanstalk に対応
-
コンテナ
- ECS、ECR、EKS に対応
-
データベース
- RDS、Neptune、Redshift に対応
-
メッセージングと統合
- SQS、SNS、EventBridge、Kinesis、Firehose、MQ、Pipes、MSK に対応
-
セキュリティとID
- IAM、KMS、Secrets Manager、ACM、Cognito、Security Lake、STS、Macie に対応
-
モニタリングとロギング
- CloudWatch、CloudWatch Logs、X-Ray、CloudTrail に対応
-
ネットワーキングとコンテンツ配信
- CloudFront、Global Accelerator、API Gateway、Route 53、Route 53 Resolver、ELBv2、App Mesh、Location に対応
-
アプリケーション統合
- Step Functions、AppSync、SES v2、Pinpoint SMS Voice v2、Scheduler、Amplify に対応
-
管理と構成
- SSM、Config、CloudFormation、Organizations、Service Quotas、CodeConnections、Backup に対応
-
分析とML
- Athena、Glue、Comprehend、Rekognition、SageMaker、Forecast、Data Exchange、Entity Resolution に対応
-
開発者ツール
- CodeGuru Profiler、CodeGuru Reviewer に対応
-
その他のサービス
- Cost Explorer、DLM、Directory Service、EMR Serverless、FinSpace、GameLift、Resilience Hub に対応
使用例
-
S3
- S3クライアント では
BaseEndpointをhttp://localhost:4566に設定し、UsePathStyleを有効化してローカルエミュレーターに接続する - バケット作成からオブジェクトアップロードまでの流れにより、オブジェクトストレージのテスト を実際のAWSなしで再現可能
- S3クライアント では
-
SQS
- SQSクライアント も同じローカルエンドポイントを使い、キュー作成後にメッセージの送受信を行う流れ
- 非同期メッセージングロジックを ローカル統合テスト で検証するのに適している
-
DynamoDB
- テーブル作成、キースキーマ定義、アイテム保存の流れを通じて NoSQLワークフロー を再現できる
- 実際のクラウドリソースがなくても、アプリケーションのデータアクセスロジックを確認しやすい
-
Secrets Manager
- シークレット値の作成と取得の例も含まれており、シークレットストア連携 もテスト可能
- JSON形式の機密情報をローカルで扱うアプリケーションの検証に有用
まだコメントはありません。