Skip to content

Conversation

@jfrench9
Copy link
Member

Summary

This PR enhances the RoboSystemsExtension to support custom S3 endpoint configuration, enabling better compatibility with LocalStack and other S3-compatible services for local development and testing environments.

Key Changes

  • Enhanced S3 Configuration: Added endpoint URL configuration support to the RoboSystemsExtension
  • Improved File Client: Updated the file client to accept and utilize custom S3 endpoints
  • LocalStack Integration: Enables seamless integration with LocalStack's S3 service for local development workflows

Key Accomplishments

  • ✅ Extended configuration options for S3 endpoint customization
  • ✅ Maintained backward compatibility with existing AWS S3 configurations
  • ✅ Improved development environment flexibility for S3-compatible services
  • ✅ Enhanced support for containerized local testing scenarios

Breaking Changes

None. This change is fully backward compatible with existing configurations.

Testing Notes

  • Verify existing S3 functionality remains unchanged when no custom endpoint is specified
  • Test custom endpoint configuration with LocalStack S3 service
  • Validate file upload/download operations work correctly with both AWS S3 and LocalStack endpoints
  • Confirm configuration parsing and validation for new endpoint parameters

Infrastructure Considerations

  • This change enables local development environments to use LocalStack instead of AWS S3
  • Reduces dependency on external AWS services during development and testing
  • Supports containerized development workflows with S3-compatible local services
  • No changes required for production deployments using standard AWS S3

🤖 Generated with Claude Code

Branch Info:

  • Source: feature/improve-localstack-s3-compatibility
  • Target: main
  • Type: feature

Co-Authored-By: Claude noreply@anthropic.com

- Introduced `s3_endpoint_url` to `RoboSystemsExtensionConfig` for optional S3 endpoint overrides, facilitating integration with services like LocalStack.
- Updated `FileClient` to utilize the new `s3_endpoint_url` for overriding upload URLs, enhancing flexibility in file upload operations.

These changes improve the configurability of S3 interactions within the client.
Copy link

@chatgpt-codex-connector chatgpt-codex-connector bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

💡 Codex Review

Here are some automated review suggestions for this pull request.

ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review".

If Codex has suggestions, it will comment; otherwise it will react with 👍.

Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".

Comment on lines +183 to +187
upload_url = urlunparse(
(
override_parsed.scheme or parsed_url.scheme,
override_parsed.netloc,
parsed_url.path,

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

P1 Badge Preserve bucket when overriding presigned S3 endpoint

When s3_endpoint_url is set, the upload URL is rebuilt with the override netloc but keeps only parsed_url.path. For common virtual-host–style presigned URLs (bucket encoded in the hostname), this drops the bucket name when swapping to a LocalStack/alternative endpoint (e.g., https://bucket.s3.amazonaws.com/key becomes http://localhost:4566/key), so the PUT targets the root rather than the bucket and the upload fails with 403/404. This affects any client using virtual-host presigned URLs with a custom endpoint—precisely the LocalStack scenario this change is meant to support.

Useful? React with 👍 / 👎.

@jfrench9 jfrench9 merged commit 336542e into main Nov 27, 2025
3 checks passed
@jfrench9 jfrench9 deleted the feature/improve-localstack-s3-compatibility branch December 15, 2025 01:16
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants