Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Endpoint resolution & access points #4

Closed
jamesbornholt opened this issue Oct 14, 2022 · 7 comments
Closed

Endpoint resolution & access points #4

jamesbornholt opened this issue Oct 14, 2022 · 7 comments
Assignees
Labels
good first issue Good for newcomers

Comments

@jamesbornholt
Copy link
Member

jamesbornholt commented Oct 14, 2022

Currently our endpoint resolution logic is the very naive:

format!("{}.s3.{}.amazonaws.com", bucket, self.region);

But this doesn't support:

  • Dual-stack endpoints (IPv6)
  • FIPS endpoints
  • Transfer acceleration endpoints
  • Regions that don't end in amazonaws.com (e.g., China regions)
  • Access points
  • PrivateLink endpoints

It doesn't look like the CRT has any built-in support for dealing with these, so we might need to do it ourselves.

@monthonk
Copy link
Contributor

Can we reuse some code from aws sdk rust? I see they have something like endpoint_resolver() in their code, so we don't have to implement it ourselves.

@jamesbornholt
Copy link
Member Author

Oh neat! That will save us from dealing with the other partitions, at least. We still need to figure out access points.

@jamesbornholt jamesbornholt added the good first issue Good for newcomers label Oct 29, 2022
@jamesbornholt jamesbornholt added this to the 1.0 milestone Oct 29, 2022
@jamesbornholt
Copy link
Member Author

Thinking about it a bit more, there's roughly three things we need to do here:

  1. Correct endpoint resolution for regions outside the aws partition
  2. Allow the customer to provide an endpoint URL like the SDKs do—this should enable FIPS, IPv6, Transfer Acceleration, PrivateLink, and Multi-Region Access Points (and we should test these)
  3. Document that (single-region) Access Points can be used via access point aliases

@jamesbornholt
Copy link
Member Author

Also need to test S3 on Outposts here.

@jamesbornholt
Copy link
Member Author

#61 will let us specify custom endpoint URLs. But some of these things work without that:

  • Access points can be specified using bucket aliases
  • Gateway VPC endpoints are a networking-level thing and should just work

I've tested both these and they are working on mainline.

@sauraank sauraank self-assigned this May 22, 2023
@dannycjones
Copy link
Contributor

There's a little bit of experimental code on this branch which may be good to use as a reference point: https://github.com/awslabs/mountpoint-s3/tree/endpoint-rule-engine

@jamesbornholt
Copy link
Member Author

#428 wrapped this one up, except for testing, which is in #417.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
good first issue Good for newcomers
Projects
None yet
Development

No branches or pull requests

4 participants