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形式の機密情報をローカルで扱うアプリケーションの検証に有用
まだコメントはありません。