Support object name resolving via tree service #30

Closed
opened 2023-04-06 12:53:22 +00:00 by alexvanin · 1 comment
Owner

HTTP Gateway works great to provide read access to the objects. It is often used together with a S3 Gateway so objects are upload via S3 and available via HTTP. Many web services use AWS S3 to store user's data and provide access to it from the web (e.g. attachment files in the notion.so).

HTTP Gateway now provides a way to access objects using:

  1. bucket name by resolving address in NNS,
  2. object name by searching object via some attribute FileName.

(2) has flaws, because S3 can re-upload object with the same key or store different versions of the same object. HTTP Gateway can't figure it out different versions and uses first FileName attribute match. We can improve it with integration of tree service.

Describe the solution you'd like

Support /get/<bucketname>/<key> scheme and use latest version of the key. Support /get/<cid>/<oid> for backward compatibility.

Describe alternatives you've considered

Use separate endpoint like /s3get/<bucketname>/<key>. However it will be more difficult for nginx proxy to determine which endpoint to use. However regexp might solve this issue?

Additional context

None.

## Is your feature request related to a problem? Please describe. HTTP Gateway works great to provide read access to the objects. It is often used together with a S3 Gateway so objects are upload via S3 and available via HTTP. Many web services use AWS S3 to store user's data and provide access to it from the web (e.g. attachment files in the notion.so). HTTP Gateway now provides a way to access objects using: 1. bucket name by resolving address in NNS, 2. object name by searching object via some attribute `FileName`. (2) has flaws, because S3 can re-upload object with the same key or store different versions of the same object. HTTP Gateway can't figure it out different versions and uses first `FileName` attribute match. We can improve it with integration of tree service. ## Describe the solution you'd like Support `/get/<bucketname>/<key>` scheme and use latest version of the key. Support `/get/<cid>/<oid>` for backward compatibility. ## Describe alternatives you've considered Use separate endpoint like `/s3get/<bucketname>/<key>`. However it will be more difficult for nginx proxy to determine which endpoint to use. However regexp might solve this issue? ## Additional context None.
alexvanin added this to the v0.28.0 milestone 2023-04-06 12:53:22 +00:00
pogpp was assigned by alexvanin 2023-04-12 14:31:39 +00:00
pogpp referenced this issue from a commit 2023-04-28 14:08:26 +00:00
pogpp referenced this issue from a commit 2023-05-02 14:08:41 +00:00
snegurochka added the
discussion
enhancement
labels 2023-05-03 17:14:32 +00:00
pogpp referenced this issue from a commit 2023-05-04 10:37:16 +00:00
pogpp referenced this issue from a commit 2023-05-04 12:40:39 +00:00
pogpp referenced this issue from a commit 2023-05-04 13:10:56 +00:00
pogpp referenced this issue from a commit 2023-05-05 08:19:49 +00:00
Author
Owner

Done in #45

Done in #45
Sign in to join this conversation.
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set.

Reference: TrueCloudLab/frostfs-http-gw#30
No description provided.