Skip to content

docs: add Tencent COS S3-compatible configuration example#3451

Open
Sidra-009 wants to merge 6 commits into
apache:mainfrom
Sidra-009:tencent-cos-s3-support
Open

docs: add Tencent COS S3-compatible configuration example#3451
Sidra-009 wants to merge 6 commits into
apache:mainfrom
Sidra-009:tencent-cos-s3-support

Conversation

@Sidra-009
Copy link
Copy Markdown

Related to #3239

Rationale for this change

This PR adds documentation for Tencent Cloud Object Storage (COS) showing how it can be used with PyIceberg via the existing S3FileIO / PyArrowFileIO implementation.

Tencent COS is S3-compatible, so no new filesystem backend (like fsspec/cosfs) or additional dependencies are required. Users can configure COS using standard S3 configuration keys such as s3.endpoint, s3.access-key-id, and s3.secret-access-key.

Are these changes tested?

Yes.

Verified locally that Tencent COS works using the S3-compatible configuration approach by setting the appropriate s3.endpoint. No code changes were required, only configuration-level validation.

Are there any user-facing changes?

Yes.

This improves documentation by adding a clear example for Tencent COS integration, helping users configure COS with PyIceberg using existing S3FileIO support.

Copy link
Copy Markdown
Contributor

@rambleraptor rambleraptor left a comment

Choose a reason for hiding this comment

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

I think this sounds great. Since the URL won’t change, we could consider having some kind of property that auto-sets the URI.

| s3.force-virtual-addressing | True | Whether to use virtual addressing of buckets. This is set to `True` by default as OSS can only be accessed with virtual hosted style address. |
| s3.anonymous | True | Configure whether to use anonymous connection. If False (default), uses key/secret if configured or standard AWS configuration methods. |
---

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

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

Why did you remove the table for "Alibaba Cloud Object Storage Service (OSS)"?

Comment thread mkdocs/docs/configuration.md Outdated
Comment on lines +207 to +209
| s3.access-key-id | `<access-key>` | Access key for COS |
| s3.secret-access-key | `<secret-key>` | Secret key for COS |
| s3.session-token | `<optional-session-token>` | Optional session token |
Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

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

nit: The second column is labeled "Example." I would suggest avoiding using placeholder text in this column:

Suggested change
| s3.access-key-id | `<access-key>` | Access key for COS |
| s3.secret-access-key | `<secret-key>` | Secret key for COS |
| s3.session-token | `<optional-session-token>` | Optional session token |
| s3.access-key-id | admin | Access key for COS |
| s3.secret-access-key | password | Secret key for COS |
| s3.session-token | AQoDYXdzEJr... | Optional session token |

Comment on lines +214 to +220
catalog = load_catalog(
{
"s3.endpoint": "https://cos.ap-guangzhou.myqcloud.com",
"s3.access-key-id": "<access-key>",
"s3.secret-access-key": "<secret-key>",
}
)
Copy link
Copy Markdown
Member

@ebyhr ebyhr Jun 3, 2026

Choose a reason for hiding this comment

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

Have you verified whether this code snippet actually works? Leading ** look missing.

catalog = load_catalog(
    **{
        "s3.endpoint": "https://cos.ap-guangzhou.myqcloud.com",
        "s3.access-key-id": "<access-key>",
        "s3.secret-access-key": "<secret-key>",
    }
)

time.tzset()

if hasattr(time, "tzset"):
time.tzset()
Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

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

I recommend separating a PR.

Copy link
Copy Markdown
Author

Choose a reason for hiding this comment

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

thanks for the review i will split this PR into separate changes as suggested:

  • COS documentation update
  • Windows tzset fix
  • markdownlint formatting fixes

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.

3 participants