kumo - โปรแกรมจำลองบริการ AWS แบบน้ำหนักเบาที่เขียนด้วย Go
(github.com/sivchari)- สามารถสร้างสภาพแวดล้อมที่เข้ากันได้อย่างรวดเร็วสำหรับการพัฒนาแบบโลคัลและการทดสอบ CI/CD โดยไม่ต้องใช้ AWS จริง
- ใช้ ไบนารีไฟล์เดียว เพื่อตั้งค่าสภาพแวดล้อมทดสอบแบบเบา ๆ ได้ และยังรันบน Docker ได้
- ทำงานได้โดยไม่ต้องยืนยันตัวตน ช่วยลดภาระในการเตรียม AWS credentials ในอัตโนมัติไปป์ไลน์
- รองรับ 76 บริการของ AWS อย่างกว้างขวาง และครอบคลุมส่วนสำคัญอย่าง S3, SQS, DynamoDB, Lambda, IAM, CloudWatch, ECS, RDS
- โดยค่าเริ่มต้นทำงานที่ local AWS-compatible endpoint บน
localhost:4566 - เมื่อตั้งค่า
KUMO_DATA_DIRจะสามารถ เก็บข้อมูลแบบเลือกได้ เป็นไฟล์ JSON แยกตามบริการ และหากไม่ตั้งค่าจะ รันแบบ in-memory ที่สะอาด - บันทึกทุกคำขอพร้อม structured log fields
- INFO: HTTP method, path, status code, latency, request ID, ข้อมูล API target เป็นต้น
- DEBUG: บันทึกได้ถึง request body ทั้งหมด จึงมีประโยชน์กับงานดีบักที่ต้องตรวจดู payload ของคำขอโดยตรง
- มี endpoint เพิ่มเติมสำหรับการทดสอบ ภายใต้
/kumo/- แม้จะไม่ใช่ส่วนหนึ่งของ AWS API อย่างเป็นทางการ แต่มีประโยชน์ในการตรวจสอบการทำงานของแอปพลิเคชันระหว่างการทดสอบ
-
ดูอีเมลที่ส่งผ่าน SES v2
- ใช้
GET /kumo/ses/v2/sent-emailsเพื่อดูรายการอีเมลที่ส่งผ่าน SES v2SendEmailAPI - การตอบกลับมี MessageId, ที่อยู่ผู้ส่ง, ผู้รับ, หัวเรื่อง, เนื้อหา, เวลาที่ส่ง เป็นต้น
- ใช้
-
ดูข้อความที่ส่งผ่าน Pinpoint SMS Voice v2
- ใช้
GET /kumo/pinpointsmsvoicev2/sent-messagesเพื่อดูรายการ SMS ที่ส่งผ่านSendTextMessageAPI ได้ - การตอบกลับมี MessageId, หมายเลขโทรศัพท์ผู้รับ, ตัวระบุผู้ส่ง, เนื้อความ, เวลาที่ส่ง เป็นต้น
- ใช้
- มีประโยชน์อย่างยิ่งในการ ตรวจสอบผลลัพธ์ เวลาทดสอบฟีเจอร์ส่งอีเมลและข้อความ โดยไม่ต้องพึ่งพาบริการภายนอก
- MIT License
บริการที่รองรับ
- รองรับ 76 บริการของ AWS ทั้งหมด
-
Storage
- รองรับ S3, S3 Control, S3 Tables, DynamoDB, ElastiCache, MemoryDB, Glacier, EBS
-
Compute
- รองรับ Lambda, Batch, EC2, Elastic Beanstalk
-
Containers
- รองรับ ECS, ECR, EKS
-
Databases
- รองรับ RDS, Neptune, Redshift
-
Messaging และ Integration
- รองรับ SQS, SNS, EventBridge, Kinesis, Firehose, MQ, Pipes, MSK
-
Security และ ID
- รองรับ IAM, KMS, Secrets Manager, ACM, Cognito, Security Lake, STS, Macie
-
Monitoring และ Logging
- รองรับ CloudWatch, CloudWatch Logs, X-Ray, CloudTrail
-
Networking และ Content Delivery
- รองรับ CloudFront, Global Accelerator, API Gateway, Route 53, Route 53 Resolver, ELBv2, App Mesh, Location
-
Application Integration
- รองรับ Step Functions, AppSync, SES v2, Pinpoint SMS Voice v2, Scheduler, Amplify
-
Management และ Configuration
- รองรับ SSM, Config, CloudFormation, Organizations, Service Quotas, CodeConnections, Backup
-
Analytics และ ML
- รองรับ Athena, Glue, Comprehend, Rekognition, SageMaker, Forecast, Data Exchange, Entity Resolution
-
Developer Tools
- รองรับ CodeGuru Profiler, CodeGuru Reviewer
-
บริการอื่น ๆ
- รองรับ Cost Explorer, DLM, Directory Service, EMR Serverless, FinSpace, GameLift, Resilience Hub
ตัวอย่างการใช้งาน
-
S3
- ใน S3 client ให้ตั้งค่า
BaseEndpointเป็นhttp://localhost:4566และเปิดใช้งานUsePathStyleเพื่อเชื่อมต่อกับ local emulator - สามารถจำลอง การทดสอบ object storage โดยไม่ต้องใช้ AWS จริง ผ่านลำดับการสร้าง bucket ไปจนถึงอัปโหลด object
- ใน S3 client ให้ตั้งค่า
-
SQS
- SQS client ก็ใช้ local endpoint เดียวกัน โดยเป็นลำดับการสร้างคิวแล้วส่งและรับข้อความ
- เหมาะสำหรับตรวจสอบตรรกะ asynchronous messaging ใน local integration test
-
DynamoDB
- สามารถจำลอง NoSQL workflow ได้ผ่านการสร้างตาราง กำหนด key schema และบันทึก item
- ช่วยให้ตรวจสอบตรรกะการเข้าถึงข้อมูลของแอปพลิเคชันได้ง่าย โดยไม่ต้องใช้ทรัพยากรคลาวด์จริง
-
Secrets Manager
- มีตัวอย่างการสร้างและดึงค่าความลับ จึงทดสอบ การเชื่อมต่อกับ secret store ได้
- มีประโยชน์ในการตรวจสอบแอปพลิเคชันที่จัดการข้อมูลอ่อนไหวในรูปแบบ JSON บนเครื่องโลคัล
ยังไม่มีความคิดเห็น