-
Notifications
You must be signed in to change notification settings - Fork 1
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
CDMI Extensions - S3 Exports #283
Comments
Will also have to look to see if there are any namespace issues (plus security changes) |
Requirements:
Notes:
|
From 2024-01-26 TWG meeting:
There is also wide variability of permitted object names across different S3 implementations. To do:
|
I checked a few OSes. It seems ubuntu bash shells and python do support UNC paths using the asterisk as a wildcard. Windows cmd:
Windows Powershell:
Ubuntu on Windows Bash Shell:
Ubuntu 20 bash shell:
|
In CDMI, a "path based namespace" is defined as: A root path (which is by default "/"), plus "one or more container names that are separated by forward slashes (“/”) and that end with a forward slash (“/”)", plus an optional data object name, plus an optional "?" if the path is a link. We place no restrictions except as documented in section 5.5.6, that "/" and "?" shall not be permitted in an object name. A trailing question mark in a CDMI path refers to a link. This is stripped out by most web libraries, as RFC 3986 says this is a the separator between the path and the query parameters. S3 does allow for object names to include "/" and "?", so we will need to define how these are mapped. So do we need to handle file names with "?", % encoded? Percent encoding would also be used for "/", "*", etc. From RFC 3986, section 2.2, reserved characters in URIs that are precent encoded are:
Gary M. to explore mapping requirements from S3 object names to CDMI object paths.
|
It looks like the bash shell will send the '\.' character sequence to the the file system with esc patterns. The file system does create directories. Make Directory: List Directory (No Path Specifiers) List Directory (Path Specifiers) garym@iyocto:~$ ls -al \\ garym@yocto:~$ ls -al \\. garym@yocto:~$ ls -al \\.\ List Directory (Wildcard Path Specifiers) '\': '\.': '\.': Change Directory: Create File: |
After a review of the above, we have determined that we will need to define a reversible mapping between the allowable S3 object naming restrictions and common file system naming restrictions. E.g. for an S3 objet named "/*?/", etc. |
Proposed capabilities: Cloud storage systemwide capabilities - Add to section 12.2.7, Table 124 "cdmi_containers" - "If present and "true", the CDMI server supports container objects". cdmi_dataobjects_as_containers - "If present and "true", the CDMI server supports accessing data objects as container objects. cdmi_containers_as_dataobjects - "If present and "true", the CDMI server supports accessing container objects as data objects. Data Object Capability - Add to section 12.2.10, Table 127 cdmi_as_container - If present and “true”, this capability indicates that the CDMI server shall support the ability to access the data object as a container. Data Object Capability - Add to section 12.2.11, Table 128 cdmi_as_dataobject - If present and “true”, this capability indicates that the CDMI server shall support the ability to access the container as a data object. |
An open issue we need to discuss: S3 permits the following two separate objects to coexist in a bucket: "a", and "a/", each with a separate value. In CDMI, these would be the same object. Do we need to have a GET as container for "a" return the container object representation for "a/"? |
Latest draft extension: https://github.com/SNIA/CDMI-spec/blob/main/cdmi_extensions/s3_exports/s3_exports_2.0.0.pdf |
AWS S3 ConstraintsData Model:
AWS S3 has three (3) sets of rules/constraints placed on object stores:
Bucket Naming Constraints:
Directory bucket naming ConstraintsDirectory bucket names must:
Object key naming Constraints
- Safe characters:
- Characters that might require special handling:
Characters to avoid:
XML related object key constraints
The following example illustrates the use of an XML entity code as a substitution for a carriage return. This DeleteObjects request deletes an object with the key parameter: /some/prefix/objectwith\rcarriagereturn (where the \r is the carriage return).
|
Extend the CDMI export functionality to allow a CDMI client to specify that a given container within a CDMI namespace should be exported (made available) as a bucket for access by the S3 cloud data access protocols. This is analogous to existing export functionality for CIFS and NFS exports.
Changes to the spec involve:
Also see proposed extension #248 which addresses a data mapping issue between buckets and CDMI's hierarchical data model
The text was updated successfully, but these errors were encountered: