kumo - โปรแกรมจำลองบริการ AWS แบบน้ำหนักเบาที่เขียนด้วย Go
(github.com/sivchari)- สามารถสร้างสภาพแวดล้อมที่เข้ากันได้อย่างรวดเร็วสำหรับการพัฒนาแบบโลคัลและการทดสอบ CI/CD โดยไม่ต้องใช้ AWS จริง
- ตั้งค่าสภาพแวดล้อมทดสอบได้อย่างเบาด้วย ไบนารีไฟล์เดียว และสามารถรันบน Docker ได้
- ทำงานได้โดยไม่ต้องยืนยันตัวตน จึงช่วยลดภาระในการเตรียม AWS credentials ใน automation pipeline
- รองรับ 76 บริการของ AWS อย่างครอบคลุม และครอบคลุมส่วนสำคัญอย่าง S3, SQS, DynamoDB, Lambda, IAM, CloudWatch, ECS, RDS ได้ในตัว
- โดยค่าเริ่มต้นจะทำงานเป็น local endpoint ที่เข้ากันได้กับ AWS บน
localhost:4566 - เมื่อตั้งค่า
KUMO_DATA_DIRจะสามารถ เก็บข้อมูลแบบเลือกได้ เป็นไฟล์ JSON แยกตามบริการ และหากไม่ตั้งค่าจะ รันแบบ in-memory ที่สะอาด - บันทึกทุกคำขอพร้อม structured log fields
- INFO: HTTP method, path, status code, latency, request ID, ข้อมูลเป้าหมาย API เป็นต้น
- DEBUG: บันทึกได้ถึง request body ทั้งหมด จึงมีประโยชน์กับงานดีบักที่ต้องตรวจ payload ของคำขอโดยตรง
- มี endpoint เพิ่มเติมสำหรับการทดสอบ ภายใต้
/kumo/- แม้จะไม่ใช่ส่วนหนึ่งของ AWS official API แต่มีประโยชน์สำหรับตรวจสอบพฤติกรรมของแอปพลิเคชันระหว่างการทดสอบ
-
การดูอีเมลที่ส่งผ่าน SES v2
- ดูรายการอีเมลที่ส่งผ่าน SES v2
SendEmailAPI ได้ด้วยGET /kumo/ses/v2/sent-emails - การตอบกลับประกอบด้วย MessageId, ที่อยู่ผู้ส่ง, ผู้รับ, หัวข้อ, เนื้อหา, เวลาที่ส่ง เป็นต้น
- ดูรายการอีเมลที่ส่งผ่าน SES v2
-
การดูข้อความที่ส่งผ่าน Pinpoint SMS Voice v2
- ดูรายการ SMS ที่ส่งผ่าน
SendTextMessageAPI ได้ด้วยGET /kumo/pinpointsmsvoicev2/sent-messages - การตอบกลับประกอบด้วย 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
-
ความปลอดภัยและตัวตน
- รองรับ 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 client ให้ตั้งค่า
BaseEndpointเป็นhttp://localhost:4566และเปิดใช้UsePathStyleเพื่อเชื่อมต่อกับ local emulator - สามารถจำลอง การทดสอบ object storage ได้โดยไม่ต้องใช้ AWS จริง ผ่านลำดับการทำงานตั้งแต่สร้าง bucket ไปจนถึงอัปโหลด object
- ใน S3 client ให้ตั้งค่า
-
SQS
- SQS client ก็ใช้ local endpoint เดียวกัน โดยมีลำดับการสร้างคิว ส่งข้อความ และรับข้อความ
- เหมาะสำหรับตรวจสอบ logic การส่งข้อความแบบอะซิงโครนัสใน local integration test
-
DynamoDB
- สามารถจำลอง NoSQL workflow ได้ผ่านการสร้างตาราง กำหนดคีย์สคีมา และบันทึก item
- ทำให้ตรวจสอบ logic การเข้าถึงข้อมูลของแอปพลิเคชันได้ง่าย โดยไม่ต้องใช้ทรัพยากรคลาวด์จริง
-
Secrets Manager
- มีตัวอย่างการสร้างและเรียกดูค่า secret จึงสามารถทดสอบ การเชื่อมต่อกับ secret store ได้
- มีประโยชน์สำหรับตรวจสอบแอปพลิเคชันที่จัดการข้อมูลอ่อนไหวในรูปแบบ JSON บนเครื่องโลคัล
ยังไม่มีความคิดเห็น