Conversation
Implement native Rust CloudWatch Logs emulator with awsJson1.1 protocol. Model crate auto-generated from Smithy (43 operations, 22 shared types). New crates: - ruststack-logs-model: Smithy-generated types with camelCase serde - ruststack-logs-http: router (Logs_20140328.*), handler, hyper Service - ruststack-logs-core: DashMap-based provider with all 40 operations Phase 0 (10 ops): log group/stream CRUD, PutLogEvents, GetLogEvents, FilterLogEvents Phase 1 (11 ops): retention policies, tags (legacy + ARN), resource policies Phase 2 (7 ops): metric filters, subscription filters (metadata only) Phase 3 (12 ops): destinations, Insights query stubs, query definitions, KMS key association Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Add 8 integration tests using aws-sdk-cloudwatchlogs covering log group CRUD, log stream CRUD, PutLogEvents/GetLogEvents, FilterLogEvents, retention policies, tagging (modern TagResource API), resource policies, and metric filters. Add logs-test.yml CI workflow with AWS CLI-based tests for all CloudWatch Logs operations. Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
- Fix GetLogEvents pagination: encode cursor position in tokens
(f/{index}, b/{index}) instead of random UUIDs
- Fix FilterLogEvents: collect ALL matching events globally before
sort+truncate instead of breaking per-stream
- Fix end_time to be exclusive (< not <=) per AWS docs
- Fix DescribeLogGroups/Streams pagination: use name-based cursor
instead of numeric offset for stability across DashMap mutations
- Fix PutLogEvents: re-sort stream events after appending to maintain
time order across multiple batches
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
AWS CLI --output text returns 'None' for empty/null JMESPath results instead of empty string. Check for both in assertions. Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Add EVENTS_SKIP_SIGNATURE_VALIDATION and LOGS_SKIP_SIGNATURE_VALIDATION to the integration workflow. Reduce SQS wait_time_seconds from 1 to 0 in the non-matching event delivery test to avoid unnecessary delays. Add 10-minute timeout for integration test step. Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
…ence Replace the per-service skip_signature_validation flags with a simpler model: signature validation is enabled when a credential provider is configured (ACCESS_KEY/SECRET_KEY env vars set), disabled otherwise. Changes: - Remove skip_signature_validation from all 8 HttpConfig structs - Remove skip_signature_validation from all 8 service Config structs - Simplify auth check: `if let Some(cred) = &config.credential_provider` - Remove all *_SKIP_SIGNATURE_VALIDATION env vars from 10 CI workflows - Set ACCESS_KEY=test SECRET_KEY=test in all CI server startups - Test clients already use matching test/test credentials This ensures signatures are always validated in CI, catching any auth-related regressions. Local dev without credentials still works (no credential provider = no validation). Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
…ial presence" This reverts commit 525c690.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
awsJson1.1protocol (X-Amz-Target:Logs_20140328.*)camelCaseserde)Operations implemented
Key design decisions
make codegen-logs)camelCasefield naming (unlike most AWS services)endTimeis exclusive (< not <=) per AWS docsTest plan
logs-test.yml) with 9 AWS CLI test stepslogs-testCI job and verify all steps pass🤖 Generated with Claude Code