Skip to content

bump aws-sdk-go v1.25.29 to v1.55.8, regen mocks#3783

Open
ntner wants to merge 1 commit intomasterfrom
sdk-bump
Open

bump aws-sdk-go v1.25.29 to v1.55.8, regen mocks#3783
ntner wants to merge 1 commit intomasterfrom
sdk-bump

Conversation

@ntner
Copy link
Copy Markdown
Contributor

@ntner ntner commented Mar 30, 2026

Summary

  • Bump github.com/aws/aws-sdk-go from v1.25.29 (Oct 2019) to v1.55.8 (Jul 2025, final v1.x release)
  • Regenerate CloudFormation, CloudWatch, and CloudWatchLogs mock interfaces for updated SDK
  • Fix TestProcessRunDetached mock to accommodate new SDK idempotency token behavior

Details

The rack has been on aws-sdk-go v1.25.29 for 6+ years, missing hundreds of releases of bug fixes, security patches, endpoint resolution improvements, retry logic fixes, and credential handling updates across all 18 vendored AWS services (acm, autoscaling, cloudformation, cloudwatch, cloudwatchlogs, dynamodb, ec2, ecr, ecs, eventbridge, iam, kms, rds, s3, sns, sqs, ssm, sts).

v1.55.8 is the final v1.x release (AWS SDK Go v1 is now end-of-support). No v1.x breaking changes were found.

Two categories of test fixes were required:

  1. Mock interface regeneration: The SDK added new methods to CloudFormation, CloudWatch, and CloudWatchLogs interfaces. The testify/mockery-generated mocks needed regeneration to satisfy the updated interfaces.
  2. ECS RunTask idempotency token: The new SDK auto-populates a clientToken field on ECS RunTask requests. The TestProcessRunDetached mock used exact body matching and didn't expect this field. Converted to regex body matching (the test framework already supports this pattern).

Backward Compatibility

This is a health/security update to the vendored SDK. All existing API call patterns remain the same. The rack does NOT use ELBv2 Go API calls — all load balancer management goes through CloudFormation templates. No customer-facing behavior changes.

The SDK v1.x maintained strict backward compatibility throughout its lifecycle. The only observable change is the clientToken idempotency field added to ECS RunTask requests, which is harmless (ECS accepts and ignores unknown fields, and idempotency tokens improve retry safety).

Risk

HIGH — every AWS API call in the rack process flows through this SDK. While the SDK maintained backward compatibility, 6 years of accumulated changes across 18 services means integration testing is essential.

Test Plan

  • go build ./... passes
  • go test ./... passes (all packages)
  • TestProcessRunDetached passes consistently (3/3)
  • Deploy to staging rack (AL2 AMI) — exercise all major operations
  • Exercise ECS operations: RunTask, DescribeServices, RegisterTaskDefinition, UpdateService
  • Exercise CloudFormation: UpdateStack, DescribeStacks, DescribeStackResources
  • Exercise S3: PutObject, GetObject (settings, build artifacts)
  • Exercise ECR: GetAuthorizationToken
  • Exercise KMS: Encrypt, Decrypt
  • Exercise DynamoDB: builds/releases table operations
  • Soak on staging for 24-48 hours

@ntner ntner requested a review from nightfury1204 March 30, 2026 20:56
ntner added a commit that referenced this pull request Mar 31, 2026
## Summary
- Bump `github.com/aws/aws-sdk-go` from v1.25.29 (Oct 2019) to v1.55.8 (Jul 2025, final v1.x release)
- Regenerate CloudFormation, CloudWatch, and CloudWatchLogs mock interfaces for updated SDK
- Fix `TestProcessRunDetached` mock to accommodate new SDK idempotency token behavior

## Details
The rack has been on aws-sdk-go v1.25.29 for 6+ years, missing hundreds of releases of bug fixes, security patches, endpoint resolution improvements, retry logic fixes, and credential handling updates across all 18 vendored AWS services (acm, autoscaling, cloudformation, cloudwatch, cloudwatchlogs, dynamodb, ec2, ecr, ecs, eventbridge, iam, kms, rds, s3, sns, sqs, ssm, sts).

v1.55.8 is the final v1.x release (AWS SDK Go v1 is now end-of-support). No v1.x breaking changes were found.

Two categories of test fixes were required:
1. **Mock interface regeneration**: The SDK added new methods to CloudFormation, CloudWatch, and CloudWatchLogs interfaces. The testify/mockery-generated mocks needed regeneration to satisfy the updated interfaces.
2. **ECS RunTask idempotency token**: The new SDK auto-populates a `clientToken` field on ECS `RunTask` requests. The `TestProcessRunDetached` mock used exact body matching and didn't expect this field. Converted to regex body matching (the test framework already supports this pattern).

## Backward Compatibility
This is a health/security update to the vendored SDK. All existing API call patterns remain the same. The rack does NOT use ELBv2 Go API calls — all load balancer management goes through CloudFormation templates. No customer-facing behavior changes.

The SDK v1.x maintained strict backward compatibility throughout its lifecycle. The only observable change is the `clientToken` idempotency field added to ECS RunTask requests, which is harmless (ECS accepts and ignores unknown fields, and idempotency tokens improve retry safety).

## Risk
**HIGH** — every AWS API call in the rack process flows through this SDK. While the SDK maintained backward compatibility, 6 years of accumulated changes across 18 services means integration testing is essential.

## Test Plan
- [x] `go build ./...` passes
- [x] `go test ./...` passes (all packages)
- [x] `TestProcessRunDetached` passes consistently (3/3)
- [ ] Deploy to staging rack (AL2 AMI) — exercise all major operations
- [ ] Exercise ECS operations: RunTask, DescribeServices, RegisterTaskDefinition, UpdateService
- [ ] Exercise CloudFormation: UpdateStack, DescribeStacks, DescribeStackResources
- [ ] Exercise S3: PutObject, GetObject (settings, build artifacts)
- [ ] Exercise ECR: GetAuthorizationToken
- [ ] Exercise KMS: Encrypt, Decrypt
- [ ] Exercise DynamoDB: builds/releases table operations
- [ ] Soak on staging for 24-48 hours
@ntner ntner mentioned this pull request Mar 31, 2026
4 tasks
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant