Wei-Chiu Chuang created HDDS-16564:
--------------------------------------

             Summary: [Docs] Refresh S3 API user guide to match S3 Gateway 
implementation
                 Key: HDDS-16564
                 URL: https://issues.apache.org/jira/browse/HDDS-16564
             Project: Apache Ozone
          Issue Type: Improvement
          Components: documentation
            Reporter: Wei-Chiu Chuang


h2. Problem

The user guide page *S3 API* 
(https://ozone.apache.org/docs/next/user-guide/client-interfaces/s3/s3-api) and 
in-repo source {{hadoop-hdds/docs/content/interface/S3.md}} are out of date 
compared to the S3 Gateway implementation in {{hadoop-ozone/s3gateway}}. 
Several APIs are implemented but not listed; several notes describe behavior 
that no longer matches the code (or is incomplete).

h2. Scope

* Primary file: {{hadoop-hdds/docs/content/interface/S3.md}} (and {{S3.zh.md}} 
if parity required)
* Cross-check against handler chains in {{BucketEndpoint}} / {{ObjectEndpoint}} 
and audit actions in {{S3GAction}}
* Related design docs: 
[HDDS-13117|https://issues.apache.org/jira/browse/HDDS-13117] (conditional 
requests), lifecycle (HDDS-8342), ozone-sts design doc

h2. Items to update

h3. Correct stale or misleading content

# *Conditional requests*: Remove "planned / HDDS-13117" wording; document 
*partial* support via {{S3ConditionalRequest}} (GET/HEAD 304, CopyObject source 
preconditions, DeleteObject {{If-Match}}, PutObject/CompleteMultipartUpload 
{{If-Match}} and {{If-None-Match: *}} only—not arbitrary ETag on create-only).
# *Lifecycle*: Move out of "roadmap / being implemented"; document 
GET/PUT/DELETE {{?lifecycle}} (expiration, {{AbortIncompleteMultipartUpload}}, 
filters/tags)—not transitions/Glacier.
# *ACLs*: Split bucket vs object—{{GetBucketAcl}}/{{PutBucketAcl}} implemented 
(user grantees; *Group* → NOT_IMPLEMENTED); {{PutObjectAcl}} NOT_IMPLEMENTED; 
{{x-amz-acl}} on PutObject still ignored.
# *GetObject/HeadObject errors*: Re-verify; {{OS3ExceptionMapper}} returns 
structured XML—remove or narrow "generic 404 without XML" note if no longer 
true.
# *DeleteObject*: Fix note—missing key returns *204 No Content* (AWS idempotent 
delete), not a client error; {{If-Match}} on missing key → 412.
# *Multipart auto-abort*: Replace "7 days" global default with OM config 
{{ozone.om.open.mpu.expire.threshold}} (default *30d*); 7 days only via 
lifecycle rule {{DaysAfterInitiation}}.
# *ListBuckets*: Document {{max-buckets}} + {{continuation-token}} pagination 
(unpaginated call still returns all buckets).
# *ListObjects*: Same {{GET /{bucket}}} serves {{list-type=1}} and 
{{list-type=2}}; document {{fetch-owner}} behavior for v2.

h3. Add missing supported APIs (new table rows or sections)

# Get/Put/Delete *BucketTagging* ({{?tagging}})
# Get/Put/Delete *BucketLifecycle* ({{?lifecycle}})
# Get/Put *BucketAcl* ({{?acl}})—with group grantee limitation
# *GetObjectAttributes* ({{?attributes}})—note {{Checksum}} / {{versionId}} 
gaps per {{ObjectAttributesHandler}}
# *UploadPartCopy* (part upload with {{x-amz-copy-source}})
# *ListDirectoryBuckets* (S3 Express SigV4 {{s3express}} scope on root GET)
# *GetObject* with {{partNumber}}; *Range* GET (206)
# FSO directory PUT (trailing {{/}}, zero body; 
{{ozone.s3g.fso.directory.creation.enabled}})
# Link or subsection for *STS* {{AssumeRole}} / {{GetCallerIdentity}} (separate 
endpoint)
# *x-amz-expected-bucket-owner* where enforced

h3. Document explicitly NOT implemented (optional "Unsupported" table)

# {{GetBucketLocation}}, {{GetObjectTorrent}}, {{PutObjectAcl}}
# CORS, bucket policy, website, bucket versioning API, Object Lock, S3 Select, 
SSE-S3/SSE-KMS headers (keep TDE/Ranger KMS pointer)

h3. Site vs repo parity

# Published site includes *Supported AWS CLI Versions* (v1 1.37+, v2 2.23+, 
CRC32 uploads)—add same subsection to {{S3.md}} if missing in repo.
# Repo {{S3.md}} includes *Health check* ({{/health/live}}, {{/health/ready}} 
on admin port)—ensure published docs include it.

h3. Minor polish

# Getting started: mention {{./run.sh -d}} / {{OZONE_DATANODES}} alongside 
{{docker-compose --scale datanode=3}}.

h2. Acceptance criteria

* {{S3.md}} endpoint tables and "Advanced features" block reflect current 
{{s3gateway}} behavior.
* Stale HDDS-13117 "planned" and lifecycle "roadmap" language removed or 
qualified.
* English and Chinese S3 interface pages stay in sync (if project policy 
requires).

h2. References

* Page: 
https://ozone.apache.org/docs/next/user-guide/client-interfaces/s3/s3-api
* Source: {{hadoop-hdds/docs/content/interface/S3.md}}



--
This message was sent by Atlassian Jira
(v8.20.10#820010)

---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to